[vtkusers] Announcement: New image rendering classes for VTK

Aashish Chaudhary aashish.chaudhary at kitware.com
Mon Jun 27 08:55:10 EDT 2011


Hi David,

What Aaron said  +  Awesome!! (one more time)

Looking at the features list, I think our project will be greatly
benefited by your work. Thanks for sharing your work.

Regards,
Aashish


On Mon, Jun 27, 2011 at 8:47 AM, Aaron Boxer <boxerab at gmail.com> wrote:
> Awesome!!! Nice work; can't wait to use these classes.
>
> Aaron
>
> On Sun, Jun 26, 2011 at 6:15 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>> I'm pleased to announce that I have finally completed my work on several new
>> image rendering classes for VTK.  They are in the VTK git development tree,
>> and a few of you have already tried them out (if you are one of those
>> people, note that several feature and performance enhancements were added
>> last week).  More info can be found at the following wiki page:
>>
>> http://www.vtk.org/Wiki/VTK/Image_Rendering_Classes
>>
>> In brief, these classes replace vtkImageActor and provide a much higher
>> level of functionality.  They are new VTK actor and mapper classes
>> specifically meant for image viewing.  What they are not: they are not
>> widgets or viewers, although they provide machinery that can be used to
>> write widget and viewer classes.  In other words, they are meant for people
>> who like to roll their own image viewers.
>>
>> The three new classes that I recommend for people to use are the following:
>> vtkImageSlice - the new actor class for images
>> vtkImageResliceMapper - mapper for drawing images for MPR viewers
>> vtkImageProperty - for controlling lookup tables, window/level, opacity, etc
>>
>> Typical use cases:
>>
>> 1) For an MPR viewer, use vtkInteractorStyleImage and set it to your desired
>> view orientation. Then set the following properties in
>> vtkImageResliceMapper:
>> mapper->SliceFacesCameraOn()
>> mapper->SliceAtFocalPointOn()
>> The interactor will then allow you to pan, zoom, window/level, and (in 3D
>> mode) rotate and slice.  See
>> VTK/Examples/ImageProcessing/ImageInteractorReslice.py for an example.
>>
>> 2) For a 3D ortho object, use multiple vtkImageResliceMapper objects, and
>> for each one make a vtkPlane that describes the normal and position of the
>> slice to extract. Then call these methods:
>> mapper->SetSlicePlane(plane)
>> mapper->ResampleToScreenPixelsOff()
>> Turning the "ResampleToScreenPixels" option Off makes rotation faster, so it
>> is recommended when rotations are going to be common operations.  Example:
>> VTK/Rendering/Testing/Cxx/TestImageResliceMapperOffAxis.cxx
>>
>> Features:
>> 1) oblique views (obviously!)
>> 2) nearest-neighbor, linear, and cubic interpolation
>> 3) modify image orientation with respect to world coords by setting
>> vtkImageSlice's UserMatrix
>> 4) fully multi-threaded reslicing and color mapping operations
>> 5) streaming, i.e. only pulls the data needed for rendering
>> 6) works well with very large images (as long as they fit in memory)
>> 7) LOD-style interaction (switches to faster rendering for interaction)
>> 8) blend images by adding multiple vtkImageSlice objects to a vtkImageStack
>> 9) checkerboard images by setting "CheckerboardOn" in the vtkImageProperty
>> 10) thick-slab views (see vtkImageResliceMapper for details)
>> 11) works with vtkCellPicker for picking image voxels as points or cells
>>
>> For large image viewing, on a 4GB computer (64-bit OS X) I've displayed
>> images up to 3GB in size with full interactivity, but YMMV.  As long as the
>> mapper's ResampleToScreenPixels option is On, the mapper will never try to
>> load the full image onto the GPU (which is what causes the vtkImageActor to
>> be slow for large images).  The size of the images that you can display is
>> limited only by main memory, I have displayed stacks of RGB images that are
>> 10000x10000 pixels in size.
>>
>> I do not plan to push these into the VTK 5.8 release (even if Kitware were
>> to give me the go-ahead), because the VTK development tree has diverged too
>> far from the VTK 5.8 release tree.  These new image classes are only
>> possible due to recent improvements that I've made to the picker, lookup
>> table, and image reslice classes and they probably depend on a handful of
>> recent changes made by other people, as well.
>>
>>  - David
>> _______________________________________________
>> 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
>



-- 
| Aashish Chaudhary
| R&D Engineer
| Kitware Inc.
| www.kitware.com



More information about the vtkusers mailing list