[vtkusers] vtkImageReslice: what do I fill in for SetResliceAxesDirectionCosines.?

Martin Gardner mglistmail at totalise.co.uk
Fri Apr 25 05:35:44 EDT 2003


Hi Nico

Nico Vermaas wrote:
> Hi,
> 
> I try to get a slice from my vtkImageData cube, but I do not understand the documentation of SetResliceAxesDirectionCosines. 
> 
> Q1:
> Say, my cube is: 0..100,0..100,0..100 and I want a slice that runs from 10..20,0..100,0.100. So a slice of 10 thick in the Y/Z plane. 

Well I would expect vtkExtractVOI to work for this. Perhaps my earlier 
advice was wrong.
> Q2: Why is vtkImageReslice better than vtkExtractVOI?
>
It can handle 0D, 1D or 2D slices of data better than vtkExtractVOI 
which in your earlier question vtk was complaining about one of the 
dimensions being zero
i.e.
 > vtkImageData (0x80957c8): Update extent is: 0, 63, 0, 90, 10, 10
						            ^^^^^^^
Z dimension is zero

 > vtkImageData (0x80957c8): Whole extent is: 0, 63, 10, 10, 0, 144
                                                     ^^^^^^
Y dimension is zero

vtkImageReslice would handle this without an error.

I think I assumed that this was what you wanted.
However if it is not then something could be messing up vtkExtractVOI so 
that one if its dimesions is zero.

Sorry for my previous advice

Martin

PS for reference I set it up using SetResliceAxes with a vtkMatrix4x4

In this code snippet I have specified the reslicing axes using two 
vecotrs v1 and v2 that lie on the reslicing plane, an origin for the 
plane (bottom left corner) and the normal of the plane.


   # axesTransform matrix to resample the volume
   #	based on the orientation of the sampling plane
   #
   # Homogonous(sic) matrix columns
   # |x axis vector|y axis vector|z axis vector |origin |

	#x axis column
	vtkMatrix4x4 axesTransform
	#Set inital state of matrix to identity
	axesTransform Identity
	#x axis column
	axesTransform SetElement 0 0 $v1_xn
	axesTransform SetElement 1 0 $v1_yn
	axesTransform SetElement 2 0 $v1_zn
	axesTransform SetElement 3 0 0.0
	#y axis column
	axesTransform SetElement 0 1 $v2_xn
	axesTransform SetElement 1 1 $v2_yn
	axesTransform SetElement 2 1 $v2_zn
	axesTransform SetElement 3 1 0.0
	#z axis column
	axesTransform SetElement 0 2 $norm_x
	axesTransform SetElement 1 2 $norm_y
	axesTransform SetElement 2 2 $norm_z
	axesTransform SetElement 3 2 0.0
	#origin column
	axesTransform SetElement 0 3 $origin_x
	axesTransform SetElement 1 3 $origin_y
	axesTransform SetElement 2 3 $origin_z
	axesTransform SetElement 3 3 1.0

	$slicer SetResliceAxes AxesTransform




More information about the vtkusers mailing list