我正在尝试使用itk
将numpy
卷保存为NRRD
文件格式,以便以后与Matlab
一起使用,如果可能的话,我希望将文件导出为Boolean
或logical
数据类型
该操作对于int16
数据类型非常有效(但结果文件很大):
itkVol = itk.GetImageFromArray(npVol.astype(np.int16))
imageType = itk.Image[itk.SS, 3]
writerType = itk.ImageFileWriter[imageType]
writer = writerType.New()
writer.SetFileName('/home/user/Desktop/test.nrrd')
writer.SetInput(itkVol)
writer.Update()
原始类型的npVol
(numpy
3D数组)是float64
,我的问题是我不知道如何保存它是logical
或bool
数据类型来保存内存(我必须导出其中的许多文件,它们是大文件)
我尝试将类型强制转换为bool
类型,并将其传递给itk
中的ImageFileWriter()
,但出现了一个错误:
代码如下:
itkVol = itk.GetImageFromArray(npVol.astype(np.bool))
imageType = itk.Image[itk.B, 3]
下面是错误:
TemplateTypeError: itk.ImageFileWriter is not wrapped for input type `itk.Image[itk.B,3]`.
关于ImageFileWriter()
不支持这种类型的错误消息非常简单,它给出了支持的输入类型的列表(其中没有一个是logical
或类型bool
):
Supported input types:
itk.Image[itk.UC,2]
itk.Image[itk.UC,3]
itk.Image[itk.RGBPixel[itk.UC],2]
itk.Image[itk.RGBPixel[itk.UC],3]
itk.Image[itk.RGBAPixel[itk.UC],2]
itk.Image[itk.RGBAPixel[itk.UC],3]
itk.Image[itk.Vector[itk.F,2],2]
itk.Image[itk.Vector[itk.F,2],3]
itk.Image[itk.Vector[itk.F,3],2]
itk.Image[itk.Vector[itk.F,3],3]
itk.Image[itk.Vector[itk.F,4],2]
itk.Image[itk.Vector[itk.F,4],3]
itk.Image[itk.CovariantVector[itk.F,2],2]
itk.Image[itk.CovariantVector[itk.F,2],3]
itk.Image[itk.CovariantVector[itk.F,3],2]
itk.Image[itk.CovariantVector[itk.F,3],3]
itk.Image[itk.CovariantVector[itk.F,4],2]
itk.Image[itk.CovariantVector[itk.F,4],3]
itk.Image[itk.SS,2]
itk.Image[itk.SS,3]
itk.Image[itk.US,2]
itk.Image[itk.US,3]
itk.Image[itk.F,2]
itk.Image[itk.F,3]
itk.Image[itk.complex[itk.F],2]
itk.Image[itk.complex[itk.F],3]
itk.VectorImage[itk.SS,2]
itk.VectorImage[itk.UC,2]
itk.VectorImage[itk.US,2]
itk.VectorImage[itk.F,2]
itk.VectorImage[itk.SS,3]
itk.VectorImage[itk.UC,3]
itk.VectorImage[itk.US,3]
itk.VectorImage[itk.F,3]
我该怎么做?
附言:我对python和itk都是新手
二进制掩码经常需要
bool
的映像,但我看到的所有实际解决方案都使用整数类型。0=false,nonzero=true,通常为8位无符号int。NumPy的名称可能是uint8,ITK的名称是UC(unsigned char)。绕过这个很难但是可以很容易地完成的是通过
writer.SetUseCompression(True)
或writer.UseCompressionOn()
压缩输出文件。如果您的“true”值是一致的(例如,始终为1或始终为255),则这些文件应该能够很好地压缩。如果您的图像是一个二进制标签映射,您可以期望压缩到原始大小的1%-2%相关问题 更多 >
编程相关推荐