我想检测图像中的特征(视网膜扫描)。图像由视网膜扫描组成,矩形框内有黑色背景。在
我正在使用python3.6,并使用Canny Edge Detection来检测图像内部的特征。我知道canny边缘检测算法使用边缘梯度来寻找边缘。Canny边缘检测在视网膜扫描中给我提供了一个合适的阈值选择的特征,但它总是在视网膜扫描和输出图像的黑色背景之间保持环形边缘。在
在输出图像中,我只想要图像内部的特征(视网膜扫描),而不是外边缘。我该怎么做?我正在寻找使用Python的解决方案。我也愿意使用精明的边缘检测以外的技术,如果它们有助于完成所需的任务。在
下面是实际的图像,以及我从Canny边缘检测得到的输出图像。在
下面是我所说的圆形边缘(用红色突出显示)
下面给出的是预期的输出图像:
我的代码如下: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。在
提前谢谢。在