SimpleITK 读取图像的一部分
SimpleITK reading a slice of an image
大家好。
我的 HDD (9.7 Gb) 上恰好有一个非常大的 .mha 文件,它是大脑的 3D 图像。我知道这张图片的形状,为了报告的需要,我想提取它的一部分,以获得可以保存为 .png 的 2D 图片。
问题是我的 16 Gb RAM 计算机不允许我加载完整的图像,因此我想知道是否有一种方法可以在不将整个图像加载到 RAM 的情况下提取该图像的二维切片.对于较小的图像,我使用 sitk.GetArrayFromImage(sitk.ReadImage(fileName))
并将其提供给 pyplot.imshow()
但这意味着要加载我想要避免的整个图像。
我想了一段时间使用 numpy.memmap
来创建一个临时的 .npy
文件,我可以在其中存储整个数组然后获取它的一部分,但是我在分配时遇到了问题使用 sitk.GetArrayFromImage(sitk.ReadImage(fileName))
.
从图像到它的数组
有人知道怎么做吗?
提前致谢!
使用 SimpleITK,您可以读取图像的 header,以获取其尺寸信息(以及其他 meta-data)。然后您可以告诉 ImageFileReader 只读取图像的 sub-section。
以下示例演示了如何操作:
https://simpleitk.readthedocs.io/en/master/link_AdvancedImageReading_docs.html
关键是先调用ImageFileReader的ReadImageInformation方法。这将获取所有 header 信息。然后调用 SetExtractIndex 和 SetExtractSize 指定 sub-region 在调用 Execute 读取图像之前加载
大家好。
我的 HDD (9.7 Gb) 上恰好有一个非常大的 .mha 文件,它是大脑的 3D 图像。我知道这张图片的形状,为了报告的需要,我想提取它的一部分,以获得可以保存为 .png 的 2D 图片。
问题是我的 16 Gb RAM 计算机不允许我加载完整的图像,因此我想知道是否有一种方法可以在不将整个图像加载到 RAM 的情况下提取该图像的二维切片.对于较小的图像,我使用 sitk.GetArrayFromImage(sitk.ReadImage(fileName))
并将其提供给 pyplot.imshow()
但这意味着要加载我想要避免的整个图像。
我想了一段时间使用 numpy.memmap
来创建一个临时的 .npy
文件,我可以在其中存储整个数组然后获取它的一部分,但是我在分配时遇到了问题使用 sitk.GetArrayFromImage(sitk.ReadImage(fileName))
.
有人知道怎么做吗?
提前致谢!
使用 SimpleITK,您可以读取图像的 header,以获取其尺寸信息(以及其他 meta-data)。然后您可以告诉 ImageFileReader 只读取图像的 sub-section。
以下示例演示了如何操作:
https://simpleitk.readthedocs.io/en/master/link_AdvancedImageReading_docs.html
关键是先调用ImageFileReader的ReadImageInformation方法。这将获取所有 header 信息。然后调用 SetExtractIndex 和 SetExtractSize 指定 sub-region 在调用 Execute 读取图像之前加载