【发布时间】:2019-06-17 03:37:17
【问题描述】:
我想检测图像中的特征(视网膜扫描)。该图像由黑色背景矩形框内的视网膜扫描组成。
我正在使用 Python 3.6,并且我正在使用 Canny Edge Detection 来检测图像中的特征。我了解精明边缘检测的算法使用边缘梯度来查找边缘。虽然 Canny 边缘检测为我提供了视网膜扫描内的特征,以便正确选择阈值,但它始终保持视网膜扫描和输出图像中的黑色背景之间的圆形边缘。
在输出图像中,我只想拥有图像内部的特征(视网膜扫描),而不是外缘。我该怎么做? 我正在寻找使用 Python 的解决方案。如果它们有助于完成所需的任务,我也愿意使用除 Canny 边缘检测以外的技术。
下面是实际图像,以及我从 Canny Edge Detection 获得的输出图像。
下面是我所说的圆形边缘(以红色突出显示。)
下面是预期的输出图像:
我的代码如下:
import cv2
import matplotlib.pyplot as plt
from matplotlib.pyplot import imread as imread
plt.figure(1)
img_DR = cv2.imread('img.tif',0)
edges_DR = cv2.Canny(img_DR,20,40)
plt.subplot(121),plt.imshow(img_DR)
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(edges_DR,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
plt.show()
您可以找到此代码中使用的图像here。
提前致谢。
【问题讨论】:
-
检测后移除不需要位置的特征,例如使用预先计算的掩码。
-
感谢您的帖子,米卡。您能否详细说明我如何在上述问题中实施您的建议?
-
您能否详细说明预期的输出应该是什么?您是否尝试仅提取视网膜扫描(灰色部分)作为单独的图像并移除黑色外部背景?
-
感谢您的帖子,内森西。 :) 我现在添加了预期的输出图像。
标签: python opencv image-processing computer-vision