8

Mam docelowy obraz do wyszukania krzywej wzdłuż jej krawędzi i obrazu szablonu zawierającego krzywą. To, co muszę osiągnąć, to znaleźć najlepsze dopasowanie krzywej w obrazie szablonu w obrazie docelowym i na podstawie wyniku, aby dowiedzieć się, czy istnieje dopasowanie, czy nie. Obejmuje to również obracanie i zmianę rozmiaru krzywej. Obraz docelowy może być wyjściem detektora Canny Edge, jeśli to ułatwia.Dopasowywanie wzoru krzywej do krawędzi obrazu

Rozważam użycie OpenCV (używając Pythona lub Processing/Java lub jeśli mają one ograniczony dostęp do wymaganych funkcji, a następnie za pomocą C), aby uczynić rzeczy praktycznymi i wydajnymi, jednak nie mogłem się dowiedzieć, czy mogę użyć dowolnego funkcje (lub ich kombinację) w OpenCV, które są przydatne do wykonywania tej pracy. Przeczytałem dokumentację OpenCV i początkowo pomyślałem, że Contours może wykonać tę pracę, jednak wszystkie przykłady pokazują zamknięte kształty w przeciwieństwie do mojego przypadku, w którym muszę dopasować otwartą krzywą do części krawędzi.

Czy istnieje sposób, aby to zrobić, używając OpenCV lub dowolnego znanego kodu lub algorytmu, który sugerowałbyś?

Oto kilka zdjęć do zilustrowania problemu:

Template image containing the curve to be searched for

Input image to be searched for the template curve and to be matched to its edges; this can also be an edge-image, the output of a Canny Edge detector rather than the unprocessed input image

Resulting match - includes rotation and resizing

Odpowiedz

2

Moja pierwsza myśl była Generalized Hough Transform. Jednak nie znam żadnej dobrej implementacji.

Najpierw spróbuję SIFT lub SURF na sprytnym obrazie krawędzi. Zazwyczaj służy do odnajdywania obszarów 2d, a nie konturów 1d, ale jeśli weźmiesz minimalne pole ograniczające wokół konturu i użyjesz go jako wzorca wyszukiwania, to powinno działać.

OpenCV ma implementację że: Features2D + Homography to find a known object

Problemem może być uzyskanie dobrej krawędzi obrazu, te czarne kształty w plecy mogłyby rozpraszać.

zobaczyć także ten StackOverflow odpowiedź: Image Processing: Algorithm Improvement for 'Coca-Cola Can' Recognition

+0

Dzięki, spróbuję je i wróć tutaj, aby dać informacje o wynikach lub ustaleń. – ali

+1

Powodzenia, Ali? Zobacz także to pytanie, które odnosi się do Ciebie: http://stackoverflow.com/questions/14530790/image-processing-match-curves-from-one-image-to-another – Rethunk

+0

Dzięki Rehunk, nie widziałem komentuj aż do teraz; dawno temu ... Nie miałem prawdziwego rozwiązania, ale częściowego, które w tamtym czasie wykonywało pracę coraz mniej; powolne i bez rotacji: użyłem prostego dopasowywania korelacji, zmieniając rozmiar szablonu na różne rozmiary, ale nie bezpośrednio z krzywą na obrazie, ale na kolorowym obrazie krawędzi, gdzie każdy punkt krawędzi miał odpowiedni kolor dla jego nachylenia, podobnie krzywa szablonu była kodowana kolorami w oparciu o nachylenie krzywej dla każdego punktu. Następnie porównałem te kolory przez korelację, a wyniki były w porządku dla ograniczonego/praktycznego rozwiązania ... – ali

Powiązane problemy