<div dir="ltr">Hi Greg,<div><br></div><div>Part of the problem is this line of code:</div><div><br></div><div>    dataImporter.SetDataOrigin(origin)<br></div><div><br></div><div>The VTK image origin and the ITK image origin are not the same.  They have the same name, but they have different definitions.  Numerically, they will have the same value only if the ITK orientation matrix is the identity matrix.</div><div><br></div><div>My approach to dealing with oriented images in VTK is to store both the orientation and the offset in a 4x4 matrix (a vtkMatrix4x4), since the orientation cannot be stored in the vtkImageData itself.  Because I store the offset (i.e. the ITK origin) in the 4x4 matrix, I must set the VTK image origin to zero.</div><div><br></div><div>In general, when moving images between ITK and VTK, I suggest always setting the VTK image origin to zero unless you are certain that all of your images have no orientation (i.e. identity orientation matrix).</div><div><br></div><div> - David  </div><div><br></div><div><br></div><div><br></div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jun 12, 2015 at 1:05 PM, gregthom992 <span dir="ltr"><<a href="mailto:gregthom992@gmail.com" target="_blank">gregthom992@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><<a href="http://vtk.1045678.n5.nabble.com/file/n5732315/manglesimages.png" rel="noreferrer" target="_blank">http://vtk.1045678.n5.nabble.com/file/n5732315/manglesimages.png</a>><br>
<br>
Hi, I am reading an image from SimpleITK but I get these results in vtk any<br>
help ?<br>
<br>
####<br>
CODE<br>
def sitk2vtk(img):<br>
<br>
    size     = list(img.GetSize())<br>
    origin   = list(img.GetOrigin())<br>
    spacing  = list(img.GetSpacing())<br>
    sitktype = img.GetPixelID()<br>
    vtktype  = pixelmap[sitktype]<br>
    ncomp    = img.GetNumberOfComponentsPerPixel()<br>
<br>
    # there doesn't seem to be a way to specify the image orientation in VTK<br>
<br>
    # convert the SimpleITK image to a numpy array<br>
    i2 = sitk.GetArrayFromImage(img)<br>
    #import pylab<br>
    #i2 = reshape(i2, size)<br>
<br>
    i2_string = i2.tostring()<br>
<br>
    # send the numpy array to VTK with a vtkImageImport object<br>
    dataImporter = vtk.vtkImageImport()<br>
<br>
    dataImporter.CopyImportVoidPointer( i2_string, len(i2_string) )<br>
<br>
    dataImporter.SetDataScalarType(vtktype)<br>
<br>
    dataImporter.SetNumberOfScalarComponents(ncomp)<br>
<br>
    # VTK expects 3-dimensional parameters<br>
    if len(size) == 2:<br>
        size.append(1)<br>
<br>
    if len(origin) == 2:<br>
        origin.append(0.0)<br>
<br>
    if len(spacing) == 2:<br>
        spacing.append(spacing[0])<br>
<br>
    # Set the new VTK image's parameters<br>
    #<br>
    dataImporter.SetDataExtent (0, size[0]-1, 0, size[1]-1, 0, size[2]-1)<br>
    dataImporter.SetWholeExtent(0, size[0]-1, 0, size[1]-1, 0, size[2]-1)<br>
<br>
    dataImporter.SetDataOrigin(origin)<br>
    dataImporter.SetDataSpacing(spacing)<br>
<br>
    dataImporter.Update()<br>
<br>
    vtk_image = dataImporter.GetOutput()<br>
    return vtk_image<br>
###<br>
END CODE<br></blockquote></div></div></div></div>