I have a vtkImageData called img that I want to use the vtkImageReslice algorithm on.
I want to reslice this image data to create a subimage that has its voxels aligned to a different coordinate system.
To do this i am using the following code:
reslice = vtk.vtkImageReslice()
reslice.SetInterpolationModeToLinear()
reslice.SetResliceAxes(get_subimg_rotation_matrix4x4())
reslice.SetResliceAxesOrigin(get_subimg_origin())
reslice.SetOutputOrigin(get_subimg_origin())
dims = get_subimg_dimensions()
reslice.SetOutputExtent(0, dims[0]-1, 0, dims[1]-1, 0, dims[2]-1)
reslice.SetOutputSpacing(get_subimg_spacing())
transform = vtk.vtkTransform()
transform .SetMatrix(get_subimg_rotation_matrix4x4())
reslice.SetResliceTransform(transform.GetInverse())
reslice.SetInputData(img)
reslice.Update()
subimg = reslice.GetOutput()
Here, get_subimg_rotation_matrix4x4() just returns a rotation matrix that defines the reslice axes, like:
[
  [cos(theta), -sin(theta), 0.0, 0.0],
  [sin(theta), cos(theta), 0.0, 0.0],
  [0.0, 0.0, 1.0, 0.0],
  [0.0, 0.0, 0.0, 1.0]
]
When theta=0, i.e. the reslice axes are  the identity matrix and therefore aligned with img, it works.
However, even when theta is nonzero, the subimg is not aligned with these reslice axes. Its as if the reslice axes were again the identity matrix.
Anyone have an example that can accomplish what I am trying to do?