用MatLab去除图像中物体的背景

oyjwcjzk  于 2022-11-15  发布在  Matlab
关注(0)|答案(4)|浏览(455)

我有一个带有噪音的图像。我想从图像中删除所有的背景变化,并想要一个普通的图像。我的图像是视网膜图像,我只想保留血管和视网膜环。我怎么做?1图像是我的原始图像,2图像是我想要的样子。
这是我的带有噪点

的复杂图像

gajydyqb

gajydyqb1#

视网膜图像中血管的提取有多种方法。
您可以在Review of Blood Vessel Extraction Techniques and Algorithms中找到不同方法的全面概述。它涵盖了许多方法的杰出作品。
正如马丁提到的,我们有Frangi等人的基于黑森语的Multiscale Vessel Enhancement Filtering。这已经被证明在2D和3D中对许多血管状结构都很好地工作。有一个处理2D血管图像的MatLab实现,FrangiFilter2D。概述没有提到Frangi,但涵盖了使用基于Hessian的方法的其他作品。我仍然推荐尝试Frangi的“血管”方法,因为它既强大又简单。
除了基于Hesisan的方法之外,我还建议研究基于形态的方法,因为MatLab为形态运算提供了很好的基础。An Automatic Hybrid Method for Retinal Blood Vessel Extraction中提出了一种这样的方法。它使用了一种具有开口/闭合的形态方法以及顶帽变换。然后,它通过模糊聚类和一些后处理来补充形态方法。我没有尝试复制他们的方法,但结果看起来很可靠,论文可以在网上免费获得。

nfg76nw0

nfg76nw02#

这不是一件容易的事。
检测血管边界-尝试edge( I, 'canny' ),玩阈值参数,看看你能得到什么。
更高级的选择是使用this method for detecting faint curves in noisy images
一旦有了相当好的血管边缘,就可以使用分水岭/NCuts或边界敏感版本的MeanShift进行分割。
以下是一些建议:
-血管似乎具有相对相同的厚度,很像文本笔画。您会考虑使用Stroke Width Transform (SWT)来识别它们吗?可以在here中找到SWT的Mex实现。
-如果您有相当好的边界,您可以考虑使用这种方法进行分割。
祝好运。

dgiusagp

dgiusagp3#

我认为使用基于管子的过滤器会更好地为您服务。有一种过滤器是基于一位名叫Frangi的人所做的工作,这种过滤器通常被称为Frangi过滤器。这可以帮助你识别视网膜中的血管系统。该过滤器已经为MatLab编写,公共版本可用here。如果你想阅读有关基础研究的内容,请搜索:Frangi(1998)的《多尺度血管增强》。另一组在同一领域做过工作的人是佐藤等人。很抱歉在上一篇文章中没有链接,我只能在这台电脑上找到付费站点来查看研究论文。
希望这能有所帮助

5jvtdoz2

5jvtdoz24#

这就是我要做的。基本上是用传统的图像算法提取背景,然后从输入图像中减去背景。这将在没有背景的情况下为您提供所需的结果。以下是步骤:
1.使用大核中值滤波作为第一步。这将估计背景。
1.将输入图像与步骤1的输出[可能需要将分母稍微平移(+1)]相除,以避免除以0。
1.根据原始图像的位数对8位或n位整数进行量化。
1.上述步骤3的输出为背景。从原始图像中减去它,就可以得到想要的结果。这也会剪裁所有的负值。

相关问题