其实Github上有很多这样的库和脚本,但是都大同小异,掌握关键那部分代码就可以。
- 要明确一点,SimpleITK不支持对
DICOM-RT struct 格式 - 大部分脚本都是用
pydicom 读取,然后再用numpy等进行切片等操作。
1. 使用MIScnn库来完成转换
安装
sudo pip install miscnn
pip install miscnn --user
使用
from miscnn.data_loading.interfaces.dicom_io import DICOM_interface
structure_dict = {"Lung_L": 1, "Lung_R": 1}
interface = DICOM_interface(structure_dict = structure_dict, classes=2, annotation_tag="1.000000-.simplified")
from miscnn.data_loading.data_io import Data_IO
data_io = Data_IO(interface, data_path)
sample_list = data_io.get_indiceslist()
sample_list.sort()
sample_list=[i for i in sample_list if "LICENSE" not in i ]
single_mask_path="../NiiGZ/label255/Test-S1-101.nii.gz"
mask_img=sitk.ReadImage(single_mask_path)
origin = mask_img.GetOrigin()
spacing = mask_img.GetSpacing()
direction = mask_img.GetDirection()
for i in sample_list[:3]:
sample = data_io.sample_loader(i)
segmentations = sample.seg_data
mask_img_convert=sitk.GetImageFromArray(segmentations)
mask_img_convert.SetOrigin(origin)
mask_img_convert.SetSpacing(spacing)
mask_img_convert.SetDirection(direction)
name="../NiiGZ/lunglabel/"+i[6:]+'.nii.gz'
print(name)
sitk.WriteImage(mask_img_convert,name)
原图,DICOM格式的图像 + DICOM-RT Struct格式的mask 。 转换后的图像,Nii.gz的图像格式+Nii.gz的标记格式
2. 现有转换库
|