<div dir="ltr"><div>Thanks very much for the speedy help, David & Jon.</div><div>Applying the inverse of the landmark transform derived from the points solved the problem.</div><div>I still don't understand why for polydata you apply the landmark transform and for image data you apply the inverse, but that's Ok for now.<br></div><div><br></div><div>I also want to write the transformed nii volume to file. In addition to using SetInformationInput to set the transformed nii volume's spacing, origin, and extent, is there any other information I should be modifying in the transformed Nii's header?</div><div> thank you again,</div><div> -M</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Oct 12, 2018 at 10:31 AM David Gobbi <<a href="mailto:david.gobbi@gmail.com">david.gobbi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Jon,<br>
<br>
The vtkNIFTIImageReader ensures that the vtkImageData that it produces<br>
follows the right-hand-rule, even if the slices were ordered in<br>
reverse in the NIFTI file itself. As the documentation states:<br>
<br>
...if QFac is -1, then the first slice in the VTK image data is the<br>
last slice in the NIFTI file...<br>
<br>
All the details of qfac are documented in the nifti header file:<br>
<a href="https://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1.h" rel="noreferrer" target="_blank">https://nifti.nimh.nih.gov/pub/dist/src/niftilib/nifti1.h</a><br>
<br>
Use of the qform in VTK is optional. Use it if you want to work in<br>
RAS coordinates. But often it is both simpler and more appropriate to<br>
work in VTK data coordinates instead, and to me it sounds like this is<br>
the case for the original question. In any case, vtkImageReslice uses<br>
VTK data coordinates (not VTK world coordinates, nor RAS coordinates).<br>
<br>
I know this isn't a very clear explanation, but unfortunately it's all<br>
I have time for (and all that my brain is capable of right now, given<br>
the tiny amount of sleep I've had over the past few days).<br>
<br>
- David<br>
<br>
<br>
On Fri, Oct 12, 2018 at 7:05 AM Jon Haitz Legarreta Gorroño<br>
<<a href="mailto:jon.haitz.legarreta@gmail.com" target="_blank">jon.haitz.legarreta@gmail.com</a>> wrote:<br>
><br>
> Hi,<br>
> I'd dare to say that the short answer is yes.<br>
><br>
> Long answer is that VTK deals with world coordinates, and according to<br>
> the right hand rule. NIfTI uses RAS convention. According to the<br>
> vtkNIFTIImageReader::GetQFormMatrix documentation, NIfTI does not<br>
> ensure that coordinates are stored following that convention, so you<br>
> should definitely use the matrix given.<br>
><br>
> The following Slicer 3D wiki page and David Gobbi's document be<br>
> helpful to this end:<br>
> <a href="https://www.slicer.org/wiki/Coordinate_systems" rel="noreferrer" target="_blank">https://www.slicer.org/wiki/Coordinate_systems</a><br>
> <a href="http://calgaryimageanalysis.ca/wiki/images/5/52/Image-orientation.pdf" rel="noreferrer" target="_blank">http://calgaryimageanalysis.ca/wiki/images/5/52/Image-orientation.pdf</a><br>
><br>
> May be David himself can chime in and be able to provide a better or<br>
> cleaner explanation.<br>
><br>
> HTH,<br>
> JON HAITZ<br>
><br>
> On Thu, Oct 11, 2018 at 11:05 AM The Merper <<a href="mailto:msmerps@gmail.com" target="_blank">msmerps@gmail.com</a>> wrote:<br>
> ><br>
> > Hi VTK experts,<br>
> > I am trying to using vtkLandmarkTransform to align two nii volumes and am getting puzzling results. I identify the landmarks in the two 3D volumes by visualizing the volumes in VTK and using the GetPickPosition method. The coordinates I get are in units of mm with the origin being one corner of 3D volume.<br>
> > I then use vtkLandmarkTransform to get an affine transformation to align the points. The points align great, but when I apply that same transform to the analogous nii volume via vtkImageReslice, the results are wildly off (e.g., the volume is flipped upside down).<br>
> > Is the qform matrix of each nii file somehow causing this? Do I need to first apply the qform matrix to the landmark points to get them in scanner coordinates before using vtkLandmarkTransform?<br>
> > thank you for any advice you can provide,<br>
> > -Ms. Merps<br>
</blockquote></div>