[vtkusers] Inclusiveness of Rasterization

David Gobbi david.gobbi at gmail.com
Wed Jul 2 17:16:38 EDT 2014


Have you tried adjusting the Tolerance on vtkPolyDataToImageStencil?
You can try setting it to a large value like 0.5, which gives half a pixel
in tolerance.  That should guarantee that the contour is fully inside of
the result.

  David


On Wed, Jul 2, 2014 at 2:46 PM, Bryan Cool <bryan at radialogica.com> wrote:

> Thanks for the quick reply, David.  You're right: I'm in need of
> inclusivity on both ends.  I'm voxelizing contours using
> vtkPolyDataToImageStencil and I want to ensure that the resulting stencil
> fully encapsulates the contours.  Are there any tricks to compensate that
> wouldn't require me to modify my points directly?  I guess I could just
> dilate my result, but it would be nice to have it as tight around the
> contours as possible.
>
>
>
> Thanks,
>
> Bryan
>
>
>
> *From:* David Gobbi [mailto:david.gobbi at gmail.com]
> *Sent:* Wednesday, July 2, 2014 2:50 PM
> *To:* Bryan Cool
> *Cc:* VTK Users
> *Subject:* Re: [vtkusers] Inclusiveness of Rasterization
>
>
>
> Hi Bryan,
>
>
>
> Do you mean inclusive on both ends?  Exclusive on both ends would
>
> just make it worse...
>
>
>
> The behavior of the rasterization is 100% intentional.  In order for
>
> rasterization to work when there are adjacent areas that are being
>
> rasterized, it must be exclusive on one end and inclusive on the
>
> other end.  Otherwise, adjacent areas could end up with either a
>
> gap between them or with an overlap.
>
>
>
> The exclusitivity can be compensated for by subtracting a small
>
> tolerance at the lower end or by using other tricks.
>
>
>
> What is your use case?
>
>
>
>   - David
>
>
>
>
>
> On Wed, Jul 2, 2014 at 1:18 PM, Bryan Cool <bryan at radialogica.com> wrote:
>
> Hi everyone,
>
> I noticed that vtkImageStencilRaster has code like the following in
> InsertLine and FillStencilData, for both the x and y directions:
>
> if (x1 >= xmin)
>      {
>      r1 = vtkMath::Floor(x1) + 1;
>      }
> if (x2 < xmax)
>      {
>      r2 = vtkMath::Floor(x2);
>      }
>
> Correct me if I'm wrong, but it looks like the lower side is exclusive,
> while the upper end is inclusive.  The upshot of this is that the only way
> to stencil the first pixel is to have a line intersect the row on the
> negative side of the first pixel (in the extents).  On the other hand, to
> stencil the last pixel a line only need intersect anywhere past the
> second-to-last pixel (in the extents).
>
> Assuming that's true, it seems a bit asymmetric.  Is there any way to have
> exclusive behavior on both ends?
>
> Thanks,
> Bryan
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20140702/8706a1c7/attachment-0001.html>


More information about the vtkusers mailing list