Permuting the axes of a volume
    David Gobbi 
    dgobbi at irus.rri.on.ca
       
    Sat Oct 30 10:34:39 EDT 1999
    
    
  
Hi Ron,
Here is a brief summary of my experience in extracting 
axial/sagittal/coronal slices from a volume.
- don't use vtkImageReader->SetTransform, it is broken (someone
  correct me if I'm wrong here).  It is not used in any of the 
  regression tests. 
- a vtkImagePermute followed by a vtkImageFlip is the easiest
  solution.  This is the best bet.
- vtkImageReslice will allow you to do many tricks which are
  not possible with other filters, e.g. you can extract oblique
  slices, do a zoom with tricubic interpolation, pad the output
  image up to the nearest power of two for texture mapping, etc.
  Unfortunately, using vtkImageReslice does require a little bit
  of extra math (see contrib/examplesPython/TextureReslice.py or
  contrib/examplesPython/TextureReslice.tcl).  If you are using
  Tcl, the math becomes very cumbersome very quickly.
  - David
On Sat, 30 Oct 1999, Ron Inbar wrote:
> Hi all!
> 
> I have a bunch of CT slices and a the coordinates of a point in the
> resulting volume.  I need to display the axial, coronal and sagittal slices
> cutting through this point (I'm assuming the point doesn't fall between two
> slices).  Currently I am doing the following:
> 
> vtkVolume16Reader read
> ...
> vtkImageReslice axialReslice
> axialReslice SetInput [read GetOutput]
> axialReslice SetResliceAxes axialAxes
> ...
> vtkImageReslice coronalReslice
> coronalReslice SetInput [read GetOutput]
> coronalReslice SetResliceAxes coronalAxes
> ...
> vtkImageReslice sagittalReslice
> sagittalReslice SetInput [read GetOutput]
> sagittalReslice SetResliceAxes sagittalAxes
> ...
> vtkImageViewer axialView
> axialView SetInput [axialReslice GetOutput]
> ...
> vtkImageViewer coronalView
> coronalView SetInput [axialReslice GetOutput]
> ...
> vtkImageViewer coronalView
> coronalView SetInput [axialReslice GetOutput]
> 
> Then I use SetZSlice for each viewer to get the right slice.  This approach
> has several drawbacks:
> 1. To ensure that the transformed volume doesn't exceed the all-positive
> octant, the matrices coronalAxes and sagittalAxes have to contain a
> translation which depends on the dimensions of the original volume.
> 2. It takes 3 times the memory to represent the same volume.
> 
> I'm looking for a better way to do it.  I considered the following ideas,
> but each one has its own problems:
> 
> 1. vtkImagePermute: can it handle reversed axes, e.g., (x, y, z) -> (x, -z,
> y)?
> 2. vtkImageReader::SetTransform: but then I'll have to read the volume 3
> times, each time with a different transform.  This could take a LOT of time,
> quite unnecessarily.
> 3. vtkExtractVOI or vtkImageClip with an extent of just one slice along the
> relevant axis: but I still have to permute the axes in order to display it
> in the viewer (otherwise I just see a single line of pixels).
> 
> I would very much like to hear what you think is the best way to go about
> this.
> 
> Thanks in advance,
> 
> Ron
> 
> 
> 
> 
> 
> 
> -----------------------------------------------------------------------------
> This is the private VTK discussion list.  Please keep messages on-topic.
> Check the FAQ at: <http://www.automatrix.com/cgi-bin/vtkfaq>
> To UNSUBSCRIBE, send message body containing "unsubscribe vtkusers" to
> <majordomo at gsao.med.ge.com>.  For help, send message body containing
> "info vtkusers" to the same address.     Live long and prosper.
> -----------------------------------------------------------------------------
> 
-----------------------------------------------------------------------------
This is the private VTK discussion list.  Please keep messages on-topic.
Check the FAQ at: <http://www.automatrix.com/cgi-bin/vtkfaq>
To UNSUBSCRIBE, send message body containing "unsubscribe vtkusers" to
<majordomo at gsao.med.ge.com>.  For help, send message body containing
"info vtkusers" to the same address.     Live long and prosper.
-----------------------------------------------------------------------------
    
    
More information about the vtkusers
mailing list