<div dir="ltr"><div><div>Hi Padraig,</div><div><br></div><div>Can you show us the raw qform and sform fields from the NIFTI header itself? In VTK, you can do this as follows:</div><div><br></div><div>>>> print(reader.GetNIFTIHeader())<br></div><div><br></div><div>The difference you see between nibabel, ITK, and VTK has to do with differences in the way these packages deal with the pixdim and the qfac of the nifti file.  If you print the Direction from the ITK image you might find that it differs from nibabel, too.</div><div><br></div><div>For VTK, you can read all the gory details here:</div><div><br></div><div><a href="http://gitlab.kitware.com/vtk/vtk/blob/v7.0.0/IO/Image/vtkNIFTIImageReader.cxx#L738">http://gitlab.kitware.com/vtk/vtk/blob/v7.0.0/IO/Image/vtkNIFTIImageReader.cxx#L738</a></div></div><div><br></div><div> - David</div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Nov 12, 2016 at 6:10 AM, padraig <span dir="ltr"><<a href="mailto:padraig.looney@gmail.com" target="_blank">padraig.looney@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  

    
  
  <div bgcolor="#FFFFFF">
    <div class="gmail-m_-103140333611607564moz-text-flowed" style="font-family:-moz-fixed;font-size:12px" lang="x-unicode">I have noticed some
      inconsistencies in how NIFTI images are handled in VTK, ITK, and
      NiBabel. ITK and NiBabel are in agreement with each other and
      differ with VTK on the position of the volume. The VTK output for
      a file is below.
      <br>
      <br>
      vtkNIFTIImageReader (0x1de67d0)
      <br>
        Debug: Off
      <br>
        Modified Time: 91
      <br>
        Reference Count: 2
      <br>
        Registered Events: (none)
      <br>
        Executive: 0x1de7720
      <br>
        ErrorCode: Success
      <br>
        Information: 0x1de6ad0
      <br>
        AbortExecute: Off
      <br>
        Progress: 1
      <br>
        Progress Text: (None)
      <br>
        FileName:
      /home/padraig/Desktop/59674/<wbr>Seeding/I0000003_59674_sn.nii
      <br>
        FileNames: 0
      <br>
        FilePrefix: (none)
      <br>
        FilePattern: %s.%d
      <br>
        FileNameSliceOffset: 0
      <br>
        FileNameSliceSpacing: 1
      <br>
        DataScalarType: unsigned char
      <br>
        NumberOfScalarComponents: 1
      <br>
        File Dimensionality: 3
      <br>
        File Lower Left: On
      <br>
        Swap Bytes: Off
      <br>
        DataIncrements: (1, 1)
      <br>
        DataExtent: (0, 223, 0, 152, 0, 51)
      <br>
        DataSpacing: (0.9195, 1.40018, 2.89048)
      <br>
        DataOrigin: (0, 0, 0)
      <br>
        HeaderSize: 352
      <br>
        Internal File Name: (none)
      <br>
        TimeAsVector: Off
      <br>
        TimeDimension: 1
      <br>
        TimeSpacing: 1
      <br>
        RescaleSlope: 1
      <br>
        RescaleIntercept: 0
      <br>
        QFac: -1
      <br>
        QFormMatrix: -1 0 0 102.536 0 -1 0 106.413 0 0 1 -117.265 0 0 0
      1
      <br>
        SFormMatrix: -1 0 -0 102.536 0 -1 -0 106.413 0 0 1 -117.265 0 0
      0 1
      <br>
        NIFTIHeader:
      <br>
        PlanarRGB: Off
      <br>
      <br>
      the qform given by nibabel is
      <br>
      <br>
      >>> ni_ob.get_qform()
      <br>
      array([[  -0.91949999,    0.        ,    0.        , 
      102.53600311],
      <br>
             [   0.        ,   -1.40017998,    0.        , 
      106.41300201],
      <br>
             [   0.        ,    0.        ,    2.89048004,  
      30.14909935],
      <br>
             [   0.        ,    0.        ,    0.        ,    1. ]])
      <br>
      <br>
      <br>
      ITK has the origin at
      <br>
      <br>
      [-102.536, -106.413, 30.1491] <br></div></div></blockquote></div></div></div>