如何对头部CT的DICOM图像进行骨骼区域掩膜处理?
头部CT骨骼区域提取的正确处理方式
你当前的方法存在核心问题:直接用DICOM像素数组的数值(200)作为阈值是不准确的,因为DICOM文件里的pixel_array存储的是原始像素存储值,并非CT图像的标准HU(亨氏单位)值——水对应的0HU需要通过DICOM元数据转换得到,和像素数组里的0不是一回事。
正确步骤说明
将像素值转换为HU值
CT图像的HU值需要通过DICOM标签里的RescaleSlope(重新缩放斜率)和RescaleIntercept(重新缩放截距)计算,公式为:HU = 像素存储值 * RescaleSlope + RescaleIntercept
这一步是必须的,只有HU值才能准确对应人体组织的密度(水=0HU,骨骼通常在200HU以上,皮质骨可达1000-3000HU)。设置HU阈值提取骨骼
根据需求选择合适的HU阈值:- 若要包含松质骨和皮质骨,可使用
HU > 200作为阈值 - 若仅需提取高密度的皮质骨,可将阈值提高到
HU > 1000
- 若要包含松质骨和皮质骨,可使用
修正后的代码
import pydicom import numpy as np # 读取DICOM文件 dcm_img = pydicom.dcmread("0000200.dcm") dcm_arr = dcm_img.pixel_array # 获取HU转换参数 slope = dcm_img.RescaleSlope intercept = dcm_img.RescaleIntercept # 转换为HU值 hu_arr = dcm_arr * slope + intercept # 生成骨骼掩膜:HU>200的区域保留原始值,其余设为0 masked_arr = np.where(hu_arr > 200, hu_arr, 0)
补充说明
- 如果你的DICOM文件没有
RescaleSlope和RescaleIntercept标签(极少数情况),可以默认slope=1,intercept=0,但这种情况非常少见。 - 若需要更精准的骨骼分割,还可以结合形态学操作(比如膨胀、腐蚀)来去除噪声,或者使用专门的医学图像分割库(如SimpleITK、MONAI)。
内容的提问来源于stack exchange,提问作者kodhoi
相关产品推荐
相关产品推荐

