Как я могу подсчитать количество ребер после применения обнаружения ребер Canny?

У меня есть изображение, и я применяю к нему алгоритм feature.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, 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

Итак, на изображении с обнаружением краев я хочу подсчитать количество краев. Я не совсем уверен, как это сделать, поэтому любая помощь будет отличной!


person MOA    schedule 23.01.2019    source источник
comment
интересно посмотреть, было ли найдено решение для этого?   -  person user14578710    schedule 03.03.2021
comment
@user14578710 user14578710 Это было давно, но это stackoverflow.com/questions/ 54889712/gradient-of-edges-python помог понять, как это сделать.   -  person Oam    schedule 06.03.2021


Ответы (1)


Вы можете просто использовать количество подключенных компонентов.

Но любое измерение количества краев будет очень плохим, особенно в текстурированных изображениях, поскольку обнаружение краев является некорректной задачей, и в зависимости от уровня шума и настроек детектора вы можете получить очень разные результаты для одной и той же сцены.

Лично я бы никогда не использовал этот параметр.

person Yves Daoust    schedule 26.01.2019