Python - 从3D数组中写出三维图像

时间:2017-08-08 13:55:57

标签: python numpy itk simpleitk

我试图从3D阵列中获取图像并将其转换为TIF 3D。我使用简单的ITK但它不起作用。我收到了以下错误消息:'在方法' WriteImage'中,参数1类型' itk :: simple :: Image const&'

这是我的代码:

import numpy as np
import SimpleITK as sitk

test = np.ones((20,20,20))

sitk.WriteImage(test,'test.tif')

-------------------- EDIT LATER ------------------------- ---

我尝试使用" GetImageFromArray"它似乎工作,因为我保持相同的大小,最后我尝试保存但错误:

" itk ::错误:TIFFImageIO(0x43e8740):TIFF支持unsigned / signed char,unsigned / signed short和float"

这是我的代码:

test2 = sitk.GetImageFromArray(test)
test2.GetSize()
(20, 20, 20)
sitk.WriteImage(test2, "prout.tif")

1 个答案:

答案 0 :(得分:4)

看起来你的 sitk :: Image 像素类型不受TIFF ImageIO支持。您需要转换为列出的其中一种像素类型,即 sitk.UInt8 sitk.UInt16 sitk.Float32

您可以使用以下内容检查当前像素类型:

print("pixel id: {0} ({2})".format(test2.GetPixelID(), test2.GetPixelIDTypeAsString())

然后您可以转换图像的像素类型:

test2 = sitk.Cast(test2, sitk.Float32)

test2 = sitk.Cast(test2, sitk.UInt16)

等...