[vtk-developers] The ImageStencil Issue

David Gobbi dgobbi at atamai.com
Tue Aug 22 23:36:36 EDT 2006


Karthik Krishnan wrote:
> 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.

This would be awesome.  It is something that I had hoped to do when I 
first wrote the stencil code.  I notice that you already added some code 
to vtkImageStencilData to help with the "union" operation.

> 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.

This is something that I have been thinking about recently, too.  I'd 
been thinking of calling the subclass vtkImageLabelData, since my main 
goal was to store multiple image segmentation labels efficiently.

 - David

>
> 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
>>
>
> _______________________________________________
> 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