【问题标题】:Remove small blood vessels in retina image with morphological erosion using OpenCV使用 OpenCV 去除视网膜图像中具有形态学侵蚀的小血管
【发布时间】:2020-01-04 06:19:43
【问题描述】:

我有眼底图像,这些图像是已经处理过的视网膜图片,我正在观察并尝试使用形态学侵蚀去除较小的血管。这似乎在我读过的几篇论文中都有效,但没有包括确切运算符的详细信息。

我尝试了各种方法,形态打开,形态侵蚀然后关闭,我做了一点点命中或未命中。我所有的工作都是使用 openCV2 python 库完成的。

这是原图。

def erode(image):
    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,2))
    erosion = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel, iterations=1)
    erosion = cv2.erode(erosion, kernel, iterations=1)
    return erosion

形态侵蚀开裂后:

我希望去除更多的血管,同时保留较粗的血管,有没有人有什么好主意让我试试?或者我可能不正确地接近形态?

【问题讨论】:

  • 你如何定义“噪音”?侵蚀做一种特定的数学运算,它不会创造。它确实会留下一些您不想要的像素,您可以将其移除。
  • 例如,您可以在腐蚀之后和匹配膨胀之前删除小的连接组件。这将是一种开口,在这种情况下可能比您尝试过的结构开口更好。
  • 在侵蚀到您可以容忍的极限后,使用等高线找到并去除小的残留物。
  • 我可能应该措辞更好,我的意思是它会通过留下我不想要的像素来引起噪音。 @CrisLuengo,我将如何删除那些较小的连接组件? fmw42 您是否有任何资源来说明如何做到这一点,因为这是我第一次听到这个建议。
  • 使用区域开口移除小的连接组件。

标签: python opencv image-processing computer-vision image-morphology


【解决方案1】:

我认为你有正确的方法,但只需要应用额外的过滤。侵蚀后,您可以找到轮廓并使用轮廓区域进行过滤。如果该区域小于某个阈值区域,您可以在轮廓中着色以有效去除较小的血管。可以调整内核大小、cv2.morphologyEx() 中的迭代和阈值区域以移除更多或更少的血管。但要注意不要过多地增加内核维度,因为这是一个权衡:内核越大,删除的细节越多

import cv2

image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 120, 255, cv2.THRESH_BINARY)[1]
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3,3))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)

cnts = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
    area = cv2.contourArea(c)
    if area < 100:
        cv2.drawContours(opening, [c], -1, (0,0,0), -1)

cv2.imshow('thresh', thresh)
cv2.imshow('opening', opening)
cv2.waitKey()

【讨论】:

    【解决方案2】:

    尝试增加侵蚀迭代的次数,以便完全去除较小的血管。然后通过相同次数的迭代执行形态扩张,以便将剩余的大血管调整回(大约)它们的原始大小。

    【讨论】:

    • 这是一个开场白。 OP 说他们试过了,结果不喜欢。
    • 开口是紧随其后的膨胀。我的建议是反复腐蚀N次,然后才膨胀N次。这是不同的,因为较小的粒子会被完全侵蚀,并且不会出现在膨胀后的最终图像上。
    • N 次侵蚀与具有较大结构元素的一次侵蚀相同。
    • 感谢 jfaccioni 的及时响应,但我尝试了这个,它导致图像非常倾斜,因为它确实具有 cris 解释的行为。大的形态腐蚀会破坏图像的结构,这不是我们可以通过膨胀来解决的。
    猜你喜欢
    • 1970-01-01
    • 2014-09-17
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多