SimpleITK不适用于任何数据类型,无论是3D还是2D



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

在玩了很多skimageimageio之后,我发现SimpleITK是处理体积图像的最佳方式,但问题是这些功能似乎都不适用于我的图像。

img = sitk.ReadImage(path)

在读取图像后,我可以很容易地将其转换为numpy,甚至可以使用sitk.Show()显示它,以便正确加载。但我在上面使用的任何功能,例如:

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

发出警告:

sitk::错误:像素类型:16位无符号整数的矢量不是在3D中按类别支持itk::simple::

我也尝试转换为任何其他数据类型,但我再次出现错误:

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

sitk::错误:筛选器不支持从的强制转换向量强制转换16位无符号整数到32位浮点

我尝试了上面的2D变体:

img_m = sitk.ConnectedThreshold(img2[:,:,7], [(257,419)])

但这次我得到了错误:

sitk::错误:像素类型:2D中不支持64位浮点矢量byclass itk::simple::ConnectedThresholdImageFilter

知道是什么原因造成的吗?

附言:我读过这个问题:SimpleITK N4BiasFieldCorrection,不适用于任何数据类型,我相信这不是重复的,因为他的问题是通过铸造解决的,而我的问题甚至不适用于铸造。

感谢

看起来您的图像具有矢量像素类型。许多过滤器不适用于矢量像素。您需要选择向量的一个特定元素来应用这样的过滤器。

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

最新更新