[vtkusers] going from binary images to 2D contours

Mark Roden mmroden at gmail.com
Thu Mar 1 11:18:00 EST 2012


Hi Jothy,

I really don't want to mess with ITK and VTK in the same project.  Not
only that, but that project also cannot be called as a routine, but
must instead be run as a two-step process with arbitrarily
size-limited temporary files written out to disk.  I can't put that
kind of routine in production code.

The gdcm version of writing out vtkPolyDatas to disk is a much more
straightforward solution for my needs.

Thanks though,
Mark

On Thu, Mar 1, 2012 at 1:33 AM, Jothybasu Selvaraj <jothybasu at gmail.com> wrote:
> Will this help you
>
> http://www.insight-journal.org/browse/publication/316
>
> Jothy
>
> On Thu, Mar 1, 2012 at 4:17 AM, Mark Roden <mmroden at gmail.com> wrote:
>>
>> Hi David,
>>
>> Maybe I should just send you my data :)  I don't think that my problem
>> has to do with being near boundaries, as my objects are away from the
>> edges of the image (but not in z-- that's solved that by padding the
>> image by a plane in either direction in z).
>>
>> The problem I'm having is that, somewhere along the way, the contours
>> are being transformed from 'proper' contours, in the case of the
>> larger mask, to ones with extra connections.
>>
>> The binarization is done via the process we discussed on the other
>> thread; that is, the contour is binarized by first following that
>> function to translate polygons to lines, then
>> vtkPolyDataToImageStencil, then vtkImageStencil.  The reverse, from
>> binary to contour (which actually appears on the image), is done by
>> vtkMarchingCubes.  This output has extra lines.
>>
>> I would love to be able to intercept the binary mask in transit, but
>> unfortunately, some way that I have vtkImageViewer2 set up isn't
>> allowing me to see it.  However, you can see the body mask from the
>> contour image 'body lines.png' I've attached, and then from the second
>> overlay image 'body with strange lines.png' the extra lines on a
>> single plane when overlaid with the data.
>>
>> Have you seen this kind of behavior before in either method?  That
>> this behavior appeared either when I ran the old extrusion method or
>> with the new line-based method suggests to me that it's a problem with
>> the marching squares approach.  Hence my original question.
>>
>> Thanks,
>> Mark
>>
>> On Wed, Feb 29, 2012 at 4:10 PM, David Gobbi <david.gobbi at gmail.com>
>> wrote:
>> > My own experience is that vtkMarchingSquares is the best way to
>> > contour a 2D image.  It is the only 2D contouring filter I'm aware of
>> > that correctly orients the contours, i.e. so that you can be sure what
>> > is "inside" and what is "outside."
>> >
>> > But vtkMarchingSquares generates open contours whenever the contour
>> > reaches the bounds of the image... that might be the cause of the
>> > failures that you are seeing.  Because of this problem, I've written
>> > my own version of marching squares that always produces closed
>> > contours, you can find the code here:
>> >
>> > https://github.com/dgobbi/ToolCursor/blob/master/vtkImageToROIContourData.cxx
>> >
>> >  - David
>> >
>> >
>> > On Wed, Feb 29, 2012 at 4:43 PM, Mark Roden <mmroden at gmail.com> wrote:
>> >> Hi all,
>> >>
>> >> After a length conversation over on the developer list, I've now got a
>> >> very fast way to convert 2D contours from DICOM rtstructs into binary
>> >> data.  Now I need to do the reverse.  I already have a method, but
>> >> this approach is failing for large images-- and by 'failing', I mean
>> >> producing contours that do not look like the binary data.
>> >>
>> >> I need contours in the xy, xz, and yz planes.  It's also possible to
>> >> have multiple contours in any given plane.
>> >>
>> >> Right now, I'm using vtkMarchingSquares, but as I said, this is not
>> >> working for larger contours, and produces spurious results.
>> >>
>> >> I note that there's also vtkContourFilter, vtkMarchingContourFilter,
>> >> vtkSliceCubes, vtkImageMarchingCubes, etc.  Is there any reason to
>> >> choose one of these over the other?  What would I need for my
>> >> particular case?
>> >>
>> >> Thanks,
>> >> Mark
>>
>> _______________________________________________
>> 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
>>
>
>
>
> --
> Jothy
>



More information about the vtkusers mailing list