Я читаю образ из SimpleITK, но получаю эти результаты в vtk любую помощь? Я не уверен, где все происходит неправильно.mangle images of vtk from itk
См. Изображение here.
####
CODE
def sitk2vtk(img):
size = list(img.GetSize())
origin = list(img.GetOrigin())
spacing = list(img.GetSpacing())
sitktype = img.GetPixelID()
vtktype = pixelmap[sitktype]
ncomp = img.GetNumberOfComponentsPerPixel()
# there doesn't seem to be a way to specify the image orientation in VTK
# convert the SimpleITK image to a numpy array
i2 = sitk.GetArrayFromImage(img)
#import pylab
#i2 = reshape(i2, size)
i2_string = i2.tostring()
# send the numpy array to VTK with a vtkImageImport object
dataImporter = vtk.vtkImageImport()
dataImporter.CopyImportVoidPointer(i2_string, len(i2_string))
dataImporter.SetDataScalarType(vtktype)
dataImporter.SetNumberOfScalarComponents(ncomp)
# VTK expects 3-dimensional parameters
if len(size) == 2:
size.append(1)
if len(origin) == 2:
origin.append(0.0)
if len(spacing) == 2:
spacing.append(spacing[0])
# Set the new VTK image's parameters
#
dataImporter.SetDataExtent (0, size[0]-1, 0, size[1]-1, 0, size[2]-1)
dataImporter.SetWholeExtent(0, size[0]-1, 0, size[1]-1, 0, size[2]-1)
dataImporter.SetDataOrigin(origin)
dataImporter.SetDataSpacing(spacing)
dataImporter.Update()
vtk_image = dataImporter.GetOutput()
return vtk_image
###
END CODE
Hi siavashk, спасибо за ответ. как я заметил в списке vtk-users ... Я нашел виновника! Я передавал список имен файлов, вычисленных за пределами ImageSeriesReader, в ImageSeriesReader. Я думал, что он будет сортировать имена файлов для меня, но это не так. Теперь я использую dcm_series_filenames = reader.GetGDCMSeriesFileNames (dcm_dir, seriesUID), а затем reader.SetFileNames (dcm_series_filenames), так как я уже получил serialUID и список файлов – user1301295