jak wykryć środek rozmytego koła za pomocą opencv

10

Mam następujący obraz:

wprowadź opis zdjęcia tutaj

Na zdjęciu są krzywe. Chciałbym znaleźć środek okręgów zawierających krzywe.

Próbowałem przekształcić OpenCV i Hough Circle, ale nie przyniosłem rezultatów.

JingKe
źródło
czy wszystkie krzywe są koncentryczne? czy odstępy między nimi są zmienne?
endolith,
tak, są koncentryczni. i brak odstępów jest stały.
JingKe,

Odpowiedzi:

3

Najpierw musisz poprawić kontrast obrazu, a następnie mocno go przefiltrować, aby usunąć szum. ponieważ okręgi są „grube” (rozmyte), możesz dość dużo filtrować bez niszczenia struktury kręgów.

Następnie zastosowałbym algorytm wykrywania krawędzi, aby uzyskać binarny obraz krawędzi, który może być przetwarzany przez Circular Hough Transform.

Otrzymuję następujący obraz krawędzi z twojego obrazu: wprowadź opis zdjęcia tutaj

Za pomocą następujących poleceń MATLAB:

 % x is the input grayscale image. First we adaptively improve the contrast over the image
 y= adapthisteq(x);

 % next we use the Canny edge detector with a strong Gaussian lowpass filter
 ee=edge(y, 'canny', [], 5);
nimrodm
źródło