Czy ktoś zna jakiekolwiek badania / dokumenty / oprogramowanie do identyfikacji śladu (jako linii lub krzywej punkt-punkt) na obrazie sceny leśnej (z perspektywy kamery stojącej gdzieś na szlaku)?
Próbuję znaleźć algorytm, który mógłby wykonać zdjęcie takie jak:
i stworzyć maskę identyfikującą prawdopodobny „ślad”, taki jak:
Jak widać, oryginalny obraz jest nieco rozmazany, co jest celowe. Źródło obrazu nie może zagwarantować idealnej ostrości, więc muszę być w stanie poradzić sobie z rozsądną ilością szumu i rozmycia.
Moją pierwszą myślą było zastosowanie rozmycia gaussowskiego i podzielenie obrazu na bloki, porównując sąsiednie bloki w poszukiwaniu ostrych różnic kolorów (wskazując ślad „krawędzi”). Szybko jednak zdałem sobie sprawę, że cienie i inne zmiany w oświetleniu łatwo to odrzucają.
Myślałem o wyodrębnieniu funkcji SURF, ale odniosłem sukces z SURF / SIFT tylko wtedy, gdy obraz jest idealnie wyraźny i spójny z oświetleniem.
Próbowałem również skalować obrazy i maski do znacznie mniejszych rozmiarów (np. 100 x 75), przekształcając je w wektory 1xN i wykorzystując je do trenowania sieci neuronowej opartej na FANN (gdzie obraz jest wejściem, a maska jest pożądana wydajność). Nawet przy tak małym rozmiarze, z 1 ukrytą warstwą o 75% wielkości wektora wejściowego, trenowanie zajęło 6 godzin i nadal nie można było przewidzieć żadnych masek w zestawie testowym.
Czy ktoś może zasugerować inne metody lub dokumenty na ten temat?
Odpowiedzi:
Samo to może nie być wystarczające, ale ponieważ jeden z problemów dotyczy zmian oświetlenia, etap wstępnego przetwarzania usuwania cienia może pomóc. Technikę, o której myślę, opisano w następującym artykule:
Pierwsza część procesu daje niezmienny obraz w skali szarości, który prawdopodobnie jest tym, czego chcesz w tym przypadku. Oto przykład podanego przez nich przykładu:
(źródło: datageist.com )
W rzeczywistości przejście o jeden krok dalej w celu uzyskania obrazu „chromatyczności” może być tym, czego potrzebujesz, aby dokładnie rozróżnić żywe i martwe liście. Jeszcze raz przykład z pracy:
(źródło: datageist.com )
Problem polega jednak na tym, że najpierw kamera musi zostać skalibrowana. Zakładając, że to możliwe, pewna kombinacja opisywanych reprezentacji prawdopodobnie zwiększy skuteczność innych metod, których używasz.
źródło
Nie wierzę, że masz wystarczającą ilość informacji w obrazie źródłowym, aby stworzyć obraz maski. Możesz zacząć od podziału na kolory, tzn. Zielony to nie ślad, szary / brązowy to. Istnieją jednak szare / brązowe obszary na „granicach szlaku”, które nie są reprezentowane w masce. (Zobacz lewą dolną ćwiartkę obrazu źródłowego.)
Maska, którą podajesz, implikuje ograniczenia strukturalne niewidoczne na obrazie źródłowym: na przykład być może twoje ścieżki mają stałą szerokość - wtedy możesz użyć tych informacji, aby ograniczyć wstępną maskę zwróconą przez moduł rozpoznający wzór.
Kontynuując temat struktury: Czy szlaki łączą się z innymi? Czy szlaki są wytyczone z pewnymi cechami gleby / żwiru? Jako człowiek (co jest dość dobre w rozpoznawaniu wzorów!), Rzucają mi wyzwanie cechy pokazane w lewym dolnym kwadrancie: widzę szare / brązowe regiony, których nie mogę zlekceważyć jako „szlak”. Być może mógłbym to zrobić ostatecznie, gdybym miał więcej informacji: mapę i nieznaną lokalizację, osobiste doświadczenia na tym szlaku, a może sekwencję zdjęć prowadzących do tego punktu - być może ten widok nie jest tak dwuznaczny, jeśli osoba rozpoznająca „wie” „co doprowadziło do tej sceny.
Kolekcja zdjęć jest moim zdaniem najciekawszym podejściem. Kontynuując tę myśl: jeden obraz może nie zawierać wystarczającej ilości danych, ale panoramiczny widok może ujednoznacznić scenę.
źródło
Nie ma jednego algorytmu, który magicznie wykrywa ślady na losowym obrazie. Będziesz musiał wdrożyć procedurę opartą na uczeniu maszynowym i „szkolić” ją w wykrywaniu szlaków. Bez wchodzenia w zbyt wiele szczegółów, oto ogólny zarys tego, co zrobiłbyś w ramach nadzorowanego uczenia się.
Za pomocą tego testujesz swój obraz (ponownie, dzieląc go na mniejsze części) i obliczasz prawdopodobieństwo z tyłu. Korzystając z teorii decyzji Bayesa, zdefiniowałbyś binarne (w tym przypadku) kryteria wyboru coś w rodzaju
Zauważ, że jest to bardzo uproszczony przegląd tego podejścia. Jest kilka rzeczy, które należy wziąć pod uwagę, a najważniejszą z nich jest wybór odpowiedniego zestawu funkcji dla twojego problemu. Możesz także robić bardziej skomplikowane rzeczy, takie jak używanie modeli mieszanin i szacowanie gęstości na podstawie jądra, ale wszystko to jest zbyt szczegółowe i czasochłonne, aby napisać odpowiedź.
Dla motywacji i potwierdzenia, że takie podejście jest warte wypróbowania, oto przykład z czegoś, co zrobiłem dawno temu jako zadanie domowe, które jest bardzo podobne do tego, co próbujesz osiągnąć. Celem było wykrycie zwierzęcia z roślinności w tle (lewy obraz). Rysunek po prawej stronie pokazuje maskę binarną uzyskaną po „uczeniu się” rozróżniania pierwszego planu i tła.
Aby dowiedzieć się więcej o uczeniu maszynowym, możesz zajrzeć do kilku podręczników. Jednym z dobrze znanych i często polecanych podręczników w tej dziedzinie jest:
który jest teraz dostępny jako bezpłatny plik PDF pod podanym linkiem. Kolejna przyzwoita książka to:
źródło
Czy to Cię interesuje?
Wykrywanie powierzchni w czasie rzeczywistym przez fuzję przestrzeni kolorów i analizę czasową
źródło
Wygląda to na problem z segmentacją tekstur (nie z segmentacją kolorów) Istnieje wiele metod,
często używają falek Gabora, takich jak ten http://note.sonots.com/SciSoftware/GaborTextureSegmentation.html
Segmentacja oparta na superpikselach http://ttic.uchicago.edu/~xren/research/superpixel/
i podobna segmentacja cięcia wykresów http://en.wikipedia.org/wiki/Graph_cuts_in_computer_vision
tutaj jest przegląd wiki http://en.wikipedia.org/wiki/Segmentation_(image_processing)
źródło