5

Poszukuję określonego obiektu na moim zdjęciu:Najlepsze podejście do konkretnego zadania Object/Image Recognition?

Obiekt: Zarys prostokąta z X na środku. Wygląda jak prostokątne pole wyboru. To wszystko. Więc bez wypełnienia, tylko linie. Prostokąt będzie miał takie same proporcje długości do szerokości, ale może mieć dowolny rozmiar lub dowolny obrót na zdjęciu.

Spojrzałem na cały szereg podejść do rozpoznawania obrazu. Ale staram się określić najlepsze dla tego konkretnego zadania. Co najważniejsze, obiekt składa się z linii i nie jest wypełnionym kształtem. Nie ma również zniekształceń perspektywy, więc prostokątny obiekt zawsze będzie miał kąty proste na zdjęciu.

Wszelkie pomysły? Mam nadzieję na coś, co mogę wdrożyć dość łatwo.

Dzięki wszystkim.

+0

Płaszczyzna X będzie zawsze równoległa do płaszczyzny obrazu, jak zakładam? Więc nie ma zniekształcenia perspektywy X? –

+0

Zaktualizowane pytanie, patrz wyżej. (Bez zniekształceń, punkt widzenia będzie idealnie ortogonalny do obiektu, mam nadzieję, że terminologia jest poprawna, ale myślę, że wiesz co mam na myśli). – Ryan

Odpowiedz

0

Możesz użyć funkcji lokalnych, aby zidentyfikować obiekt na obrazie. Feature detection wiki

Na przykład można obliczyć funkcje na obrazie referencyjnym, który zawiera tylko obiekt, którego szukasz, i zapisać wyniki, powiedzmy, w pliku tekstowym. Następnie możesz wyszukać obiekt, porównując nowo wyliczone funkcje (na obrazach z niektórymi złożonymi scenami zawierającymi obiekt) z odpowiednikami.

Oto niektóre dobrym źródłem informacji na temat lokalnych cech: Local Invariant Feature Detectors: A Survey

3

można spróbować przy użyciu detektora narożny (np Harris), aby znaleźć narożniki okna, końce i przecięcie X. To upraszcza problem do znalezienia punktów we właściwej konfiguracji.

Edit (odpowiedź na komentarz):

Jestem zakładając można znaleźć punkty narożne w obrazie, 4 rogi prostokąta końca linii 4 X i środek X, plus kilka innych rogów obrazu z powodu szumu lub obiektów w tle. Upraszcza to problem, aby znaleźć zestaw 9 punktów we właściwej konfiguracji, z danego zestawu punktów.

Moja pierwsza próba to przyjrzenie się każdemu punktowi narożnemu A. Następnie przejdę przez punkty B zbliżone do A. Teraz, jeśli założę, że (np.) A to lewy górny róg prostokąta, a B to w prawym dolnym rogu mogę łatwo obliczyć, gdzie spodziewam się, że inne punkty narożne znajdują się na obrazie. Użyłbym jakiegoś wyszukiwania najbliższego sąsiada (lub biblioteki takiej jak FLANN), aby sprawdzić, czy są miejsca, w których bym ich oczekiwał. Jeśli uda mi się znaleźć zestaw punktów odpowiadających tym oczekiwanym pozycjom, wiem, gdzie byłby symbol, jeśli jest obecny na obrazie.

Musisz spróbować, jeśli jest to wystarczająco dobre dla twojej aplikacji. Jeśli masz zbyt wiele fałszywych alarmów (zestawy rogów innych obiektów, które przypadkowo tworzą prostokąt + X), możesz sprawdzić, czy są tam linie (tj. Wysoki kontrast we właściwym kierunku), gdzie można by się tego spodziewać. I możesz sprawdzić, czy jest niski kontrast, gdy nie ma linii we wzorze. Powinno to być stosunkowo proste, gdy znasz punkty na obrazie, które odpowiadają końcom narożników/linii w obiekcie, którego szukasz.

+0

Czy mógłbyś wyjaśnić nieco więcej, jak przeprowadzić "wyszukiwanie" po wykryciu rogu lub krawędzi. Ponieważ zaimplementowałem oba i widzę, że zdecydowanie podnosi funkcje obiektu. Ale jaki jest mój kolejny krok w możliwości uruchomienia algorytmu i zwrócenia go true lub false, że obiekt znajduje się na tym zdjęciu, czy nie. Właściwa funkcja "szukaj" jest tym, na czym się chwieję. Dzięki. – Ryan

1

Polecam Generalized Hough Transform. Wygląda na to, że masz dość prosty, ustalony kształt. Uogólniona transformacja Hough powinna być w stanie wykryć ten kształt przy dowolnym obrocie lub skali obrazu. Wielu z was musi próg oryginalnego obrazu lub wstępnie go przetworzyć, aby ta metoda była użyteczna.