SimpleITK无法使用任何数据类型,无论是3D还是2D

时间:2018-11-13 16:12:06

标签: python python-3.x multidimensional-array itk simpleitk

我正在使用SimpleITK加载分层的tiff图像,该图像是具有30个平面/切片的体积图像。

在与result = query("<update query>") skimage进行了大量的实验之后,我发现imageio是处理体积图像的最佳方法,但问题是这些功能似乎都不适用我的图片。

SimpleITK

读入图像后,我可以轻松地将其转换为img = sitk.ReadImage(path) ,甚至可以使用numpy显示它,以便正确加载。但是我在上面使用的任何功能,例如:

sitk.Show()

给出警告:

  

sitk :: ERROR:像素类型:16位无符号整数的向量不是   3D byclass itk :: simple ::

支持

我也尝试过强制转换为其他任何数据类型,但我仍然不断收到错误消息:

img_s = sitk.CurvatureFlow(img, 0.125, 5)
# or
sitk.IntensityWindowing(img)
# or
img_m = sitk.ConnectedThreshold(img, (257,419,7))
  

sitk :: ERROR:过滤器不支持根据的转换向量进行转换   16位无符号整数到32位浮点数

我也尝试了上述方法的2D变体:

img2 = sitk.Cast(img, sitk.sitkFloat32)

但是这次我得到了错误:

  

sitk :: ERROR:像素类型:2D不支持64位浮点矢量   按类别itk :: simple :: ConnectedThresholdImageFilter

任何想法可能是什么原因造成的?

P.S。我已经读过一个问题:SimpleITK N4BiasFieldCorrection, not working with any data type,并且我相信这不是重复的,因为他的问题可以通过投射解决,而我的问题甚至对于投射都不起作用。

谢谢

1 个答案:

答案 0 :(得分:1)

您的图像似乎具有矢量像素类型。许多滤镜不适用于矢量像素。您需要选择向量的一个特定元素才能应用此类过滤器。

您可以使用VectorIndexSelectionCastImageFilter或VectorIndexSelectionCast函数将向量的特定通道提取到标量图像中。