python – 删除dicom图像中的像素注释
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 删除dicom图像中的像素注释,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2787字,纯文字阅读大概需要4分钟。
内容图文
![python – 删除dicom图像中的像素注释](/upload/InfoBanner/zyjiaocheng/735/bba754bb042249739b207f0f11fa3b4b.jpg)
我正在分析医学图像.所有图像都有一个带位置的标记.看起来像这样
它是此图像中的“TRH RMLO”注释,但在其他图像中可能有所不同.尺寸也各不相同.图像被裁剪,但您看到组织正在右侧开始.
我发现这些标记的存在会扭曲我的分析.
我该如何删除它们?
我像这样在python中加载图像
import dicom
import numpy as np
img = dicom.read_file(my_image.dcm)
img_array = img.pixel_array
然后图像是一个numpy数组.白色文本总是被大的黑色区域包围(黑色值为零).标记在每个图像中处于不同的位置.
如何在不伤害组织数据的情况下删除白色文本.
UPDATE
添加了第二张图片
UPDATE2:
这是两个原始的dicom文件.所有个人信息均已删除.编辑:已删除
解决方法:
查看您提供的图像的实际像素值,您可以看到标记几乎是(99.99%)纯白色,这不会出现在图像的其他位置,因此您可以使用简单的99.99%阈值将其隔离.
我更喜欢命令行中的ImageMagick,所以我会这样做:
convert sample.dcm -threshold 99.99% -negate mask.png
convert sample.dcm mask.png -compose darken -composite result.jpg
当然,如果样本图像不具代表性,您可能需要更加努力.我们来看看……
如果简单的阈值对你的图像不起作用,我会看“命中和错过形态学”.基本上,您将图像阈值设置为纯黑色和白色 – 大约90%说,然后您查找特定形状,例如标签上的角标记.因此,如果我们想要在黑色背景上查找白色矩形的左上角,我们使用0表示“此像素必须为黑色”,1表示“此像素必须为白色”,并表示“我们不在乎”,我们会使用这种模式:
0 0 0 0 0
0 1 1 1 1
0 1 - - -
0 1 - - -
0 1 - - -
希望你能在那里看到一个白色矩形的左上角.在终端中就是这样的:
convert sample.dcm -threshold 90% -morphology HMT '5x5:0,0,0,0,0 0,1,1,1,1 0,1,-,-,- 0,1,-,-,- 0,1,-,-,-' result.png
现在我们还想查找右上角,左下角和右下角,因此我们需要旋转模式,ImageMagick在添加>时会轻松地执行此操作.旗:
convert sample.dcm -threshold 90% -morphology HMT '5x5>:0,0,0,0,0 0,1,1,1,1 0,1,-,-,- 0,1,-,-,- 0,1,-,-,-' result.png
希望你现在可以看到划分徽标角落的点,所以我们可以让ImageMagick修剪所有无关黑色的图像,然后留下白点,然后告诉我们边界框:
cconvert sample.dcm -threshold 90% -morphology HMT '5x5>:0,0,0,0,0 0,1,1,1,1 0,1,-,-,- 0,1,-,-,- 0,1,-,-,-' -format %@ info:
308x198+1822+427
所以,如果我现在在这些坐标周围绘制一个红色框,你可以看到标签被检测到的位置 – 当然在实践中我会画一个黑盒子来覆盖它,但我在解释这个想法:
convert sample.dcm -fill "rgba(255,0,0,0.5)" -draw "rectangle 1822,427 2130,625" result.png
如果你想让脚本自动执行,我会使用类似的东西,将其保存为HideMarker:
#!/bin/bash
input="$1"
output="$2"
# Find corners of overlaid marker using Hit and Miss Morphology, then get crop box
IFS="x+" read w h x1 y1 < <(convert "$input" -threshold 90% -morphology HMT '5x5>:0,0,0,0,0 0,1,1,1,1 0,1,-,-,- 0,1,-,-,- 0,1,-,-,-' -format %@ info:)
# Calculate bottom-right corner from top-left and dimensions
((x1=x1-1))
((y1=y1-1))
((x2=x1+w+1))
((y2=y1+h+1))
convert "$input" -fill black -draw "rectangle $x1,$y1 $x2,$y2" "$output"
然后你会这样做,使其可执行:
chmod +x HideMarker
并运行它:
./HideMarker someImage.dcm result.png
内容总结
以上是互联网集市为您收集整理的python – 删除dicom图像中的像素注释全部内容,希望文章能够帮你解决python – 删除dicom图像中的像素注释所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。