vtkImageReslice not working properly? ResliceAxes are set, but have no effect?

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()
dims = get_subimg_dimensions()
reslice.SetOutputExtent(0, dims[0]-1, 0, dims[1]-1, 0, dims[2]-1)
transform = vtk.vtkTransform()
transform .SetMatrix(get_subimg_rotation_matrix4x4())
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?

vtkImageReslice can be used in a few distinct ways and it is hard to figure out which combination of inputs and outputs are valid. It also matters in what order you set your inputs. For example, if you set reslice axes but then later set a reslice transform then your reslice axes inputs may be discarded.

To see valid usages of the filter, you can have a look at VTK examples, VTK tests, and VTK-based applications (for example some commonly used image resampling functions in 3D Slicer are available here).