Python OpenCV - обнаружение границ Canny - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь извлечь границы образца (см. Рисунок ниже). Градиент между ним и воздухом кажется важным, поэтому я попытался использовать функцию OpenCV Canny, но результат не удовлетворяет (вторая цифра) ... Как я могу улучшить результат?

Вы можете найти картинку здесь: https://filesender.renater.fr/?s=download&token=887799f6-f580-4579-8f75-148be4270cb0

enter image description here

import numpy as np
import cv2
from scipy import signal

median_optic_decentre = cv2.imread('median_plot.tiff',0)

edges = cv2.Canny(median_optic_decentre,10,60,apertureSize = 3)

1 Ответ

1 голос
/ 10 апреля 2020

Другой метод получения ребер - использование оператора Лапласа (описан в документации OpenCV здесь ). Если вы примените оператор Лапласа с последующими морфологическими операциями , в частности морфологическим открытием , результаты будут выглядеть немного лучше (если я правильно понимаю ваш вопрос):

import cv2
import matplotlib.pyplot as plt


img = cv2.imread('median_plot.tiff')
laplacian = cv2.Laplacian(img,cv2.CV_64F)
S = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
morph_opened_laplacian = cv2.dilate(cv2.erode(laplacian, S), S)
plt.subplot(1,3,1)
plt.gray()
plt.title("Original")
plt.imshow(img)
plt.subplot(1,3,2)
plt.title("Laplacian")
plt.imshow(laplacian)
plt.subplot(1,3,3)
plt.title("Opened Laplacian")
plt.imshow(morph_opened_laplacian)
plt.show()

Вывод:

enter image description here

...