Dicom图像去tag标签 版本1(完整代码)

本文介绍了一种去除DICOM图像中设备商标签的方法,避免标签的高灰度值影响图像归一化,采用图像修复算法确保结构不变。通过阈值定位标签并应用基于快速行进方法的修复算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候拿到的Dicom图像是设备商打上tag标签的,这种标签的灰度值明显高于或者低于人体组织,在后续的算法中如果需要对图像进行归一化或者规范化处理,如果不能去掉这个标签,因为其灰度值的差异会显著影响归一化的结果从而导致最终的结果异常(这一点本人在深度学习模型上测试过)。标签如下图所示:这个R就是典型的标签

去除标签的目的,不仅仅在于将这个值改为一个别的什么值,还需要确保这个区域的更改不能引起图像结构上的变化,如果造成结构上剧烈的变化(如果简单的采用填充某些值的话,在实际测试过程中本人确实观察到结构的变化,即在填充处出现模糊块或者暗色块),那么得不偿失。这里的解决思路是将其看做image inpainting的问题,目前常用的算法来源于这样一篇文章(An Image Inpainting Technique Based on the Fast Marching Method,  后续文档会进行该文章的解释)

如上所述:解决去标签后不显著改变图像结构的具体思路可以分为两部分:1. 找到需要修改的地方,即标签所在位置 2. 使用上文所记载的算法进行图像修复。现在将两部分的代码公布如下:

需要支出的是,现在的这种版本只能对付按照dicom规定的标准打上标签的情况,在实际情况中存在不按照dicom标准打私签的情况,这种图像的去标签放在下一篇博客讨论。

# 第一部分白色标签阈值ds为dcm读入的dcm数据,使用pydicom读入
whitetag = pow(2, ds[0x0028, 0x0101].value) - 1
whitetagwide = 5

pos = np.where(img > (whitetag - whitetagwide))

 

# 第二部分,生成mask指定修改位置,以及使用论文算法进行修复
mask = np.zeros((img.shape[0], img.shape[1]), dtype=np.uint8)

for i, j in zip(pos[0], pos[1]):
    mask[i, j] = 1
img = img.astype(np.uint16)
img_new = cv2.inpaint(img, mask, 3, cv2.INPAINT_TELEA)

return img_new

 

修复后的结果以及mask图如下所示,可以看到标签被去掉,并且没有改变图像结构:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值