[Insight-users] Hint: Tapping into ITK pipelines to visualize intermediate result s with VTK

Miller, James V (Research) millerjv@crd.ge.com
Wed, 13 Nov 2002 13:49:51 -0500


I has not yet been added.  Will and Luis are structuring the Examples
section to follow an outline we have for a text.  I am not sure whether 
this fits into that outline yet.  If not, I'll put in the Applications
section.



> -----Original Message-----
> From: Christian Uehara [mailto:cuehara@uh.edu]
> Sent: Wednesday, November 13, 2002 1:27 PM
> To: insight-users@public.kitware.com
> Subject: RE: [Insight-users] Hint: Tapping into ITK pipelines to
> visualize intermediate result s with VTK
> 
> 
> Regarding this post originally to the developers list, was 
> this example
> ever added to the Applications directory? It would be useful 
> to be able
> to visualize intermediate pipeline results.
> 
> Christian
> _____________________________________________
> christian uehara, research associate
> visual computing lab, dept of computer science
> univ of houston
> em: cuehara@uh.edu
> ph: (713)743-1268 (ofc) / (713)302-5546 (cell)
> fx: (713)743-1250
> 
> 
> -----Original Message-----
> 
> From: insight-users-admin@public.kitware.com
> [mailto:insight-users-admin@public.kitware.com] On Behalf Of Miller,
> James V (Research)
> Sent: Thursday, October 17, 2002 11:50 AM
> To: Insight-developers (E-mail); Insight-users (E-mail)
> Subject: [Insight-users] Hint: Tapping into ITK pipelines to visualize
> intermediate result s with VTK
> 
> 
> Several of ITK's filters are designed so at the end of each 
> iteration in
> the algorithm, the output of the filter contains the "results so far".
> For example, the finite difference filters (level sets, etc.) 
> trigger an
> IterationEvent as well as a ProgressEvent() so that you can 
> tap into the
> output of the current iteration as the filter is executing.
> 
> I put together a little application that shows a levelset 
> expanded over
> an image.  To do this, I originally tied the output of the levelset
> filter to a VTK pipeline to run MarchingSquares to extract the zero
> level set and display the original image. This used the standard
> Exporter/Importer facilities of VTK and ITK and wired the pipeline
> methods together so Update() would propagate between VTK and ITK
> filters.
> 
> I tied a callback to the IterationEvent that told my VTK viewer to
> render.  
> 
> Unfortunately, telling a VTK viewer to render causes an Update() to
> propagate up the pipeline.  But since the pipeline is already updating
> (since the level set code was running), the update mechanism 
> aborted and
> not data was drawn.
> 
> To address this, I separated the two pipelines.  The ITK pipeline read
> the data, preprocessed the data, and ran the level set algorithm.  A
> separate pipeline was used to export data from ITK to VTK and to
> visualize the data.  To separate the pipelines, I created an 
> itk::Image
> and essentially "grafted" the output of the levelset filter into this
> image.  (This copied the regions, spacing, origin, and passed a
> reference to the pixel container from the output of the level to this
> separate image).  I then passed this extra image through the standard
> ITK exporters and VTK importers. This extra image did not have to copy
> the bulk pixel data (since I just passed a reference to the pixel
> container) but it also did not have a "source" so the VTK 
> pipeline could
> run asynchronously with the ITK pipeline.
> 
> Now in my iteration callback, I reconfigured this extra image (copying
> regions, spacing, origin, and reference to the pixel container), and
> told VTK to render.
> When the examples/applications reconfiguration is complete, I'll put
> this application in as an example.    
> 
> Jim Miller 
> 
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
>