我正在使用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,并且我相信这不是重复的,因为他的问题可以通过投射解决,而我的问题甚至对于投射都不起作用。
谢谢
答案 0 :(得分:1)
您的图像似乎具有矢量像素类型。许多滤镜不适用于矢量像素。您需要选择向量的一个特定元素才能应用此类过滤器。
您可以使用VectorIndexSelectionCastImageFilter或VectorIndexSelectionCast函数将向量的特定通道提取到标量图像中。