[vtk-developers] The ImageStencil Issue

Karthik Krishnan Karthik.Krishnan at kitware.com
Tue Aug 22 23:19:12 EDT 2006


Hi David,

I find stencils very useful. I've been using them as a data structure 
for representing segmentations.

One of the things I would like to contribute to stencils is minkowski 
operators or "set" operations on stencils. For instance union of two 
stencils, stencilA-stencilB, intersection of stencils etc.. The need for 
these arises when a 3D volume has a few disconnected hand-drawn 
segmentations and as a user, I would like to discard a segment etc.. 
I've been using these separately in a derived class, but I could move 
them to the vtkImageStencilData class itself.

Another addition, I would hope to see would be grayscale stencils for 
fuzzy segmentations. Imagine a brush widget dabbing a fuzzy / dithered 
stroke and you would like to use the stencildata to represent opacity. 
It would be great if the stencils could store a DataArray in addition to 
maintaining the ExtentLists. This could possibly be done in a sublcass.

Thanks
-karthik


David Gobbi wrote:
> Hi All,
>
> I'd like to redress some ugliness that I introduced to VTK a few years 
> back.
>
> The vtkImageStencilSource class requires the Spacing and Origin of 
> whichever image eventually uses the stencil to be propagated the wrong 
> way along the pipeline.  Ouch!
>
> Obviously the vtkImageStencilSource should actually take an Image as 
> an input and should then use that image to get the Spacing and Origin 
> to use for the stencil.  This is a fairly minor change.  For VTK 5.2, 
> I can then make VTK produce a deprecation warning if people don't set 
> an input.
>
> I would call the method SetInformationInput() to make it clear that 
> only the information (the Spacing, Origin, and WholeExtent) of the 
> data would be used.  Also, vtkPolyDataToImageStencil() needs it 
> SetInput() method for the polydata input.
>
> For example:
>
> stencilSource = vtkImplicitFunctionToImageStencil()
> stencilSource.SetInput(vtkSphere())
> stencilSource.SetInformationInput(input)
>
> histogram = vtkImageAccumulate()
> histogram.SetStencil(stencilSource.GetOutput())
> histogram.SetInput(input)
>
> Do people think this is a good change?  Are there many people out 
> there who even use stencils in VTK?  How many people know what a 
> stencil is?  (Hint: it is an image mask stored in an efficient 
> run-length format instead of vtkImageData format).
>
> Also, I'm not sure what the methods should be named in light of the 
> VTK 5 pipeline changes.   Maybe I should name them as follows:
>
> SetInformationInputConnection(vtkAlgorithmInput *) instead of 
> SetInformationInput(vtkImageData *)
> SetStencilInputConnection(vtkAlgorithmInput *) instead of 
> SetStencil(vtkImageStencilData *)
>
> I'd like to get this right, and I think that only small changes are 
> necessary to do so.
>
> Also, of course, I'd like to see more of the filters in Imaging 
> utilizing stencils.  Right now only a handful do (Blend, Reslice, 
> Stencil, Accumulate).  The potential here is very high... a stencil 
> allows you to perform an operation only within a specified region of 
> interest, where the shape of the region can be whatever you desire.  
> The ROI can even be described by a vtkPolyData mesh or by a 
> vtkImplicitFunction, since these types can be converted efficiently 
> into vtkImageStencilData.
>
> - David
>
>
>
>
>
>
>
> _______________________________________________
> vtk-developers mailing list
> vtk-developers at vtk.org
> http://www.vtk.org/mailman/listinfo/vtk-developers
>




More information about the vtk-developers mailing list