应用Canny边缘检测后如何计算边缘数量?

时间:2019-01-23 12:27:57

标签: python count edge-detection canny-operator

我有一个图像,并且对它应用feature.canny算法以获取图像的边缘。

original image(left) vs edge detection(right)

现在,我要计数图像中的边缘以获得单个数字。

有人可以帮忙吗?

这是显示图像的代码:

def canny_detection(image):

    # Convert to grayscale and convert the image to float
    RGB = img_as_float(color.rgb2gray(image))

    # Apply Canny edge detection algorithm
    edge_canny = feature.canny(RGB, 2)

    # Plot results
    plt.figure(figsize=(15,5))
    plt.subplot(121)
    plt.imshow(RGB, cmap=cm.gist_gray)
    plt.title('Original image')
    plt.subplot(122)
    plt.imshow(edge_canny, cmap=cm.gist_gray)
    plt.title('Canny edge map')`

如果有帮助,我还有一些应用Canny的代码,然后从图像中提取数组:

def canny_detection(image):

# Convert to grayscale and convert the image to float
RGB = img_as_float(color.rgb2gray(image))

# Apply Canny edge detection algorithm
edge_canny = feature.canny(RGB,3)
#print(edge_canny)
edge_canny = edge_canny.astype(int)
#print(edge_canny)

#Get output array
canny_arr = np.array(edge_canny)

# Flatten output array
canny_flat = canny_arr.flatten()
#print(np.count_nonzero(canny_flat))   #to see if the matrix is all zeros

return canny_flat

因此,从具有边缘检测功能的图像中,我想计算边缘的数量。我不确定如何执行此操作,因此任何帮助都将非常有用!

1 个答案:

答案 0 :(得分:0)

您可以仅使用所连接组件的数量。

但是边缘数量的任何度量都将非常差,特别是在带纹理的图像中,因为边缘检测是一个不适当地的问题,并且根据噪声水平和检测器设置,您可以在同一场景中获得非常不同的结果。

我个人不会使用此参数。