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