[vtkusers] vtkPolyDataToImageStencil with partial volume
Jonathan Morra
jonmorra at gmail.com
Thu Feb 24 12:09:48 EST 2011
Actually, after setting the marching squares value to 0.5 and changing the
linear extrusion filter it's working now. Thanks!!!
On Thu, Feb 24, 2011 at 9:02 AM, Bill Lorensen <bill.lorensen at gmail.com>wrote:
> Also, the stencil algorithm and marching squares use different
> criteria to determine whether a "pixel" is inside or outside.
>
> For the stencil, the pixel is considered a point and checked within a
> tolerance for inside/outside. I'm guessing here).
> For marching squares, a "square" is composed of four pixels. If at
> least one of the four pixels is of the opposite state(inside/outside)
> then a contour will be generated.
>
> On Thu, Feb 24, 2011 at 11:53 AM, Bill Lorensen <bill.lorensen at gmail.com>
> wrote:
> > Definitely set the isovalue to .5 if you have binary 0/1 images.
> >
> > On Wed, Feb 23, 2011 at 2:59 PM, David Gobbi <david.gobbi at gmail.com>
> wrote:
> >> I've never used marching squares, but I have a guess as
> >> to what the problem might be. If your binary image has
> >> values "0" and "1" then you should contour it at "0.5".
> >>
> >> - David
> >>
> >>
> >> On Wed, Feb 23, 2011 at 12:27 PM, Jonathan Morra <jonmorra at gmail.com>
> wrote:
> >>> If that's the case, then maybe I could have issues on the other side
> >>> (converting binary images to contours, I do both). For this I'm using
> >>> vtkMarchingSquares followed by vtkStripper
> >>> int[] extent = binaryOrgan.GetExtent();
> >>> switch (orientation) {
> >>> case OrthoPanel.ORIENTATION_XY:
> >>> extent[4] = slice;
> >>> extent[5] = slice;
> >>> break;
> >>> case OrthoPanel.ORIENTATION_XZ:
> >>> extent[2] = slice;
> >>> extent[3] = slice;
> >>> break;
> >>> case OrthoPanel.ORIENTATION_YZ:
> >>> extent[0] = slice;
> >>> extent[1] = slice;
> >>> break;
> >>> }
> >>> vtkMarchingSquares marching = new vtkMarchingSquares();
> >>> marching.SetInput(binaryOrgan);
> >>> marching.SetImageRange(extent);
> >>> marching.SetValue(0, 1);
> >>> marching.Update();
> >>> vtkPolyData marchingOutput = marching.GetOutput();
> >>> vtkStripper stripper = new vtkStripper();
> >>> stripper.SetInput(marchingOutput);
> >>> stripper.Update();
> >>> Does anything look like it could be causing my issues there?
> >>> On Wed, Feb 23, 2011 at 11:18 AM, David Gobbi <david.gobbi at gmail.com>
> wrote:
> >>>>
> >>>> The value "1e-6" is a common tolerance because it is larger than
> >>>> most roundoff errors that are likely to occur in the calculations,
> >>>> but still small enough that it won't appreciably increase size of the
> >>>> region.
> >>>>
> >>>> Setting the tolerance to zero does exactly what you noted. If the
> >>>> pixel is exactly on the edge, then it is considered to be inside if
> the
> >>>> edge is a leading edge, or outside if the edge is a trailing edge.
> >>>> This is done so that if you have two contours which are adjacent
> >>>> (i.e. share an edge), the edge voxels will be considered to be in
> >>>> just one of the two contours instead of in both. If the tolerance is
> >>>> set larger than zero, then the edge pixels would always be considered
> >>>> to be in both contours.
> >>>>
> >>>> If you are dealing with rectangular contours, then the contour
> >>>> lines should be made so that they lie halfway between pixels, instead
> >>>> of lying directly on top of the pixels. Then there is no uncertainty
> >>>> about whether a pixel lies inside or outside.
> >>>>
> >>>> - David
> >>>>
> >>>>
> >>>> On Wed, Feb 23, 2011 at 11:58 AM, Jonathan Morra <jonmorra at gmail.com>
> >>>> wrote:
> >>>> > I had the tolerance set to 0, and setting it to 1e-6 didn't fix the
> >>>> > problem.
> >>>> > How did you come up with that number? What's wrong with setting it
> to
> >>>> > 0?
> >>>> > In my case usually the left and top side of the vtkImageData is
> being
> >>>> > eroded, such that if I call the filter many times, the vtkImageData
> will
> >>>> > eventually be blank because it will all be eroded. However,
> sometimes
> >>>> > the
> >>>> > bottom and right grow in size, I haven't figured out which
> situations
> >>>> > cause
> >>>> > which.
> >>>> >
> >>>> > On Wed, Feb 23, 2011 at 10:54 AM, David Gobbi <
> david.gobbi at gmail.com>
> >>>> > wrote:
> >>>> >>
> >>>> >> Hi Jonathan,
> >>>> >>
> >>>> >> Whether a pixel is set depends on whether the center of the pixel
> >>>> >> is inside or outside the contour, irregardless of what proportion
> of
> >>>> >> the pixel's volume is inside or outside.
> >>>> >>
> >>>> >> The only adjustment is the Tolerance, which should be set to
> >>>> >> around 1e-6 so that pixels right on the edge of the contour
> >>>> >> are considered to be inside. The tolerance cannot be negative.
> >>>> >>
> >>>> >> - David
> >>>> >>
> >>>> >>
> >>>> >> On Wed, Feb 23, 2011 at 11:22 AM, Jonathan Morra <
> jonmorra at gmail.com>
> >>>> >> wrote:
> >>>> >> > I am currently using vtkPolyDataToImageStencil to successfully
> >>>> >> > convert
> >>>> >> > contours represented as vtkPolyData to binary vtkImageData's.
> >>>> >> > However,
> >>>> >> > I'm
> >>>> >> > noticing a problem with the output sometimes. Sometimes the
> >>>> >> > resulting
> >>>> >> > binary images are slightly smaller or slightly bigger than the
> poly
> >>>> >> > data
> >>>> >> > they were made from. I assume this is the result of partial
> volume
> >>>> >> > effects.
> >>>> >> > I would like to know 2 things
> >>>> >> > 1. How does vtkPolyDataToImageStencil handle partial volume.
> >>>> >> > 2. Is there a way to tune partial volume in
> >>>> >> > vtkPolyDataToImageStencil?
> >>>> >> > For
> >>>> >> > instance, a parameter which says if the contour includes less
> than x
> >>>> >> > percentage of the pixel then that pixel is 0.
> >>>> >> > Thanks,
> >>>> >> > Jon
> >>>> >> > PS If my assumption about partial volume effects is wrong, please
> let
> >>>> >> > me
> >>>> >> > know.
> >>>> >> > _______________________________________________
> >>>> >> > Powered by www.kitware.com
> >>>> >> >
> >>>> >> > Visit other Kitware open-source projects at
> >>>> >> > http://www.kitware.com/opensource/opensource.html
> >>>> >> >
> >>>> >> > Please keep messages on-topic and check the VTK FAQ at:
> >>>> >> > http://www.vtk.org/Wiki/VTK_FAQ
> >>>> >> >
> >>>> >> > Follow this link to subscribe/unsubscribe:
> >>>> >> > http://www.vtk.org/mailman/listinfo/vtkusers
> >>>> >> >
> >>>> >> >
> >>>> >
> >>>> >
> >>>
> >>>
> >> _______________________________________________
> >> Powered by www.kitware.com
> >>
> >> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> >>
> >> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
> >>
> >> Follow this link to subscribe/unsubscribe:
> >> http://www.vtk.org/mailman/listinfo/vtkusers
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110224/a5d868cb/attachment.htm>
More information about the vtkusers
mailing list