对医学图像处理不熟悉。如何使用python或c ++将3D DICOM医学图像转换为数字矩阵格式?
答案 0 :(得分:0)
您可以在python中使用pydicom软件包。您可以通过以下方式在python中安装它:
pip install pydicom
这是读取DICOM图像并将其转换为numpy数组的简单示例:
import os
import pydicom
import numpy as np
dicom_dir = your_dicom_folder_of_slices
file_names = os.listdir(dicom_dir)
file_names.sort()
dicom_data = []
for name in file_names:
path = os.path.join(dicom_dir, name)
dicom_data.append(pydicom.read_file(path))
array = [data.pixel_array for data in dicom_data]
array = np.stack(array, axis=-1) # or 0 if 'channel_first'
这是详细的example。
答案 1 :(得分:0)
另一种选择是,如果您确实想要“ 3D” dicom图像支持(即CT / MR / NM / PET 3d系列-与纯2D图像处理相反),并且您想做任何与3d相关和/或更复杂的事情,您可能想签出simple ITK。
这为您提供了非常强大的真实3d处理功能,并且速度很快(它被包裹在已编译的C中)。例如,它包括完整的3D图像配准以及各种滤镜/工具等。
它可以一次读取整个系列,并自动为您创建一个完全了解空间的3D numpy数组(即,它可以为您处理所有dicom 3D空间方向/间距等标记)
但是,由于它比pydicom强大得多,因此它的学习曲线也更陡峭-但是确实有很多示例和在线jupyter笔记本教程。
...因此,根据您的需求,可能对您有好处。但是,如果您只想要基本的一次2D图像类型处理,那么pydicom是可行的方法。
答案 2 :(得分:0)
我更喜欢使用 SimpleElastix 进行医学图像处理。它有许多分割方法和许多其他有用的方法。它在 python 和 C++ 中都可用。根据我的经验,SimpleElastix 比其他包更好地处理 DICOMS 和 niftis。