Jak wyodrębnić znaki drogowe ze zdjęcia?

15

Jakich technik analizy obrazu mogę użyć do wyodrębnienia znaków drogowych z obrazu, takiego jak ten poniżej?

Z zewnątrz strzał z wielkomiejskiej drogi

Edytować:

Po dyfuzji anizotropowej: tło, którego nie chcę, jest trochę usuwane

wprowadź opis zdjęcia tutaj

Po dylatacji:

wprowadź opis zdjęcia tutaj

Progowanie po rozproszeniu: Nie można ustalić najlepszego progu dla tego celu

wprowadź opis zdjęcia tutaj

Jednak nie jestem w stanie dowiedzieć się, jak usunąć tło?

Edycja: chcę tylko te części mojego obrazu

wprowadź opis zdjęcia tutaj

Robienie kolejnego obrazu wejściowego:

wprowadź opis zdjęcia tutaj

Stosowanie filtrowania mediany i wykrywania krawędzi:

wprowadź opis zdjęcia tutaj

Po filtrowaniu dolnego kapelusza:

wprowadź opis zdjęcia tutaj

Jak wyodrębnić znaki drogowe, proszę o pomoc?

vini
źródło
Dla mnie „sygnał drogowy” oznacza zapalone urządzenie justsymbol.com/images/traffic-signal-sign-6.png , a nie znak. Masz na myśli tylko znaki?
endolith
Tak, tylko znaki
vini
Jakie podejście próbowałeś sam?
Maurits,
Tak mam szablony
Vini
Edytowałem @mauritis
vini

Odpowiedzi:

17

Czy próbowałeś czegoś prostego, takiego jak korelacja?

( EDYCJA ). Ideą korelacji jest użycie szablonu (w twoim przypadku wyszkolonej próbki znaku drogowego) i porównanie jej z każdą pozycją na obrazie testowym. Operacja porównania, której użyłem do wygenerowania poniższych obrazów, nazywa się znormalizowaną korelacją krzyżową . Z grubsza mówiąc, standaryzujesz (średnia = 0, odchylenie standardowe = 1) piksele w szablonie i część obrazu, którą chcesz dopasować, mnożymy je piksel po pikselu i obliczasz średnią wartość produktów. W ten sposób otrzymujesz „wynik dopasowania”, tj. Miarę podobieństwa między szablonem a obrazem testowym w każdej pozycji obrazu testowego. Pozycja z najlepszym dopasowaniem (najwyższa korelacja) jest najbardziej prawdopodobnym kandydatem na pozycję znaku drogowego. (Właściwie użyłem funkcji MathematicaKorelacja Odległość do wygenerowania obrazu poniżej, który wynosi 1 - (znormalizowana korelacja). Najciemniejsze miejsce na obrazie dopasowania odpowiada najlepszemu dopasowaniu).

Nie mam żadnych innych szablonów, więc po prostu wyciąłem znak z drugiego opublikowanego zdjęcia:

wprowadź opis zdjęcia tutaj

Mimo że szablon jest lekko obrócony, korelacja krzyżowa nadal wydaje się użyteczna

wprowadź opis zdjęcia tutaj

i najlepsze dopasowanie znajduje się na właściwej pozycji:

wprowadź opis zdjęcia tutaj

(Oczywiście potrzebujesz wielu skalowanych wersji każdego szablonu, aby wykryć znaki w dowolnym rozmiarze)

Niki Estner
źródło
1
@nikie: Czy możesz wyjaśnić proces, którego użyłeś?
smokris
Tak, to by trochę pomogło. Pomysł wydaje się dobry
vini
@vini Jeśli masz szablony i próbujesz znaleźć ich wystąpienia na swoim obrazie, korelacja krzyżowa jest najbardziej naturalnym podejściem i powinna być jedną z pierwszych metod, które wypróbujesz. Oto odpowiedź tutaj (kod Mathematica) i kolejna na SO (kod MATLAB), gdzie używam tego podejścia.
Lorem Ipsum
7

Podczas moich studiów projekt, w który zaangażowany był mój przełożony, polegał na wykrywaniu i rozpoznawaniu różnego rodzaju sygnalizacji ruchu w sekwencjach wideo (np. Wykrywanie drogi, wykrywanie linii środkowej drogi, ale także wykrywanie i rozpoznawanie znaków drogowych ). Klatki wideo, nad którymi pracowaliśmy, są pod wieloma względami podobne do twoich przykładowych obrazów.

Chociaż osobiście nie pracowałem na znakach drogowych, myślę, że najlepsze wyniki uzyskano przy użyciu algorytmu Viola-Jonesa (papier) . Krótko mówiąc, jest to algorytm, który wykorzystuje kaskadę słabych klasyfikatorów (z dokładnością nieco wyższą niż w przypadku algorytmu losowego), aby zbudować silny klasyfikator, który jest solidny nawet w trudnych zadaniach.

Projekt nazwano MASTIF (mapowanie i ocena stanu infrastruktury ruchu) i wykonał naprawdę dobrą robotę. Strona publikacji projektu może być bardzo przydatna, ponieważ zawiera linki do wszystkich opublikowanych prac związanych z projektem. Aby dać ci pomysł, pozwól mi wyróżnić niektóre publikacje (w kolejności chronologicznej):

Po raz kolejny osobiście nie pracowałem nad znakami drogowymi, ale myślę, że można tu znaleźć wiele przydatnych materiałów. Proponuję również przejrzeć cytowane odniesienia w artykułach, ponieważ mogą one również pomóc.

Penelopa
źródło
6

Cóż, Google road way signs detectiondaje mnóstwo dobrych artykułów na ten temat.

Niektóre wykorzystują segmentację kolorów ze względu na szczególne kolory niebieski, zielony, czerwony itp.

Niektórzy stosują najpierw wygładzanie Gaussa, a następnie wykrywanie krawędzi kanciastej i wyszukiwanie konturu, aby wyodrębnić tablicę znaków.

Spróbuj użyć dwóch linków: Link 1 , Link 2

Abid Rahman K.
źródło
martwe linki, niestety
CharlesB
Właściwie oba linki działają dla mnie.
Abid Rahman K
@CharlesB: Linki są aktualizowane :)
Anoop KP
5

Zdecydowanie nie jestem tutaj ekspertem, ale możesz zacząć od wykrywania krawędzi (np. Sprytnego), a następnie przekształcić Hougha, aby wykryć koła, prostokąty, kwadraty lub trójkąty (na podstawie znaku, który chcesz wykryć), a następnie możesz zrobić szablon dopasowanie lub dopasowanie histogramu, jeśli kolory są wystarczająco wyraźne (nad kandydatami zwróconymi przez transformację Hougha).

Pierwszym krokiem (wykrywanie kandydatów za pomocą transformacji Hougha) jest trudniejszy. Mogę wymyślić wiele sposobów wykrycia, czy ten kandydat jest znakiem, czy nie. To zabawny problem. Miłego rozwiązywania :)

Nawiasem mówiąc, jestem pewien, że można znaleźć dobre artykuły badawcze, które są ze sobą ściśle powiązane

Roronoa Zoro
źródło