Wykrywanie szlaku w obrazach leśnych


30

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:

alternatywny tekst

i stworzyć maskę identyfikującą prawdopodobny „ślad”, taki jak:

alternatywny tekst

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?


1
Nie wspomniałeś o tym nic, ale kontrolujesz akwizycję aparatu / obrazu? W podobnej sytuacji ludzie używają wskaźnika wegetacji przy użyciu obrazów bliskiej podczerwieni (rozważ obliczenie zasięgu lasu z satelity). Jeśli masz w pobliżu podczerwieni, problem jest prosty do rozwiązania.
carlosdc

Trochę tak. Robię zdjęcia za pomocą taniej kamery jednookularowej (kamery internetowej / telefonu komórkowego), ale nie sądzę, że przechowują one podczerwień.
Cerin

Prawdopodobnie pomocne byłoby zastosowanie wielu kolorów filtrów, które mogą rozróżniać widma roślinności i brudu
endolith,

Jestem ciekawy, czy próbowałeś bayesowskiego podejścia do treningu i wykrywania. Miałem odpowiedź, którą napisałem kilka dni temu, ale potem ją usunąłem, ponieważ myślałem, że odrzuciłeś ją po próbie. Jeśli jeszcze nie rozważałeś tej opcji, chętnie ją cofnę.
Lorem Ipsum

@yoda, Co rozumiesz przez podejście bayesowskie? Znam tylko Bayesian w zastosowaniu do dyskretnej klasyfikacji i sieci logicznych. Nie jestem zaznajomiony z tym, że ma zastosowanie do CV. Nie pamiętam żadnych twoich postów.
Cerin

Odpowiedzi:


13

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:

„On the Removing of Shadows From Images”, GD Finlayson, SD Hordley, C. Lu i MS Drew, IEEE Pattern Analysis and Machine Intelligence (PAMI), tom 28, nr 1, styczeń 2006, str. 59- 68 http://www.cs.sfu.ca/~mark/ftp/Pami06/pami06.pdf

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:

Usuwanie cienia
(ź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:

Chromatyczność
(ź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.


12

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ę.


Tak, szlaki łączą się z innymi. I tak, szlaki są wyznaczone przez cechy gleby / żwiru, w taki sposób, że cechy te powinny być odrębne od obszarów bez śladu. Zgadzam się, że obraz może być trudny w niektórych sekcjach, ale nadal uważam, że jest wystarczająco dużo informacji, aby dość dobrze zgadnąć, gdzie jest szlak. Chociaż nie znasz tego szlaku, wygląda na to, że nie miałeś z nim problemu (z wyjątkiem obszaru lewej dolnej dłoni, co jest zrozumiałe).

Rzeczywiście potrafię odgadnąć granice szlaku. Ale obawiam się, że polegam na większej ilości informacji niż przedstawiono na obrazie źródłowym. „Wiem”, czym jest szlak - przypuszczalnie dlatego, że skonstruowałem model lub szablon istotnych cech obejmujących szlak: poprzez bezpośrednie doświadczenie lub oglądanie dobrze zdefiniowanych szlaków na zdjęciach itp. Podsumowując: w rozpoznawaniu szlaku w obraz źródłowy, czerpię z czegoś więcej niż to, co obserwuję na obrazie źródłowym.

Istnieją pewne cechy szlaku, które może wykorzystać system wizyjny: przypuszczalnie możemy założyć, że szlak reprezentuje wolną, żeglowną przestrzeń. Zatem elementy drzew, krzewów i skał można sklasyfikować jako „bez śladu”. Być może analiza tekstur może pomóc w ich rozpoznaniu? Nie jestem jednak pewien: ziemia pod drzewami (środkowa do lewej u góry) wygląda dość podobnie do szlaku.

Moim pierwszym pomysłem byłoby nawiązanie do transformacji LU lub Eigen, które dają wysoką odpowiedź, gdy tekstura jest bardzo szorstka. Jednak tutaj główną cechą odróżniającą szlak / brak śladu jest kolor. Może więc przekształcenie go w przestrzeń kolorów HSV i utworzenie maski z pikseli o „ziemistym” odcieniu - brązowawym lub ochrowym - dałoby przybliżoną ocenę.
AruniRC

12

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ę.

  1. Będziesz potrzebował zestawu „przykładów treningowych”, przez co mam na myśli kilka zdjęć szlaków w różnych środowiskach, w których ty (przełożony) oznaczyłeś to, co liczy się jako „szlak”, a co to tło „las”. Dzielimy obrazy na mniejsze sekcje (zwykle 8 x 8) i przekształcamy je w „przestrzeń cech”, biorąc DCT (dyskretną transformację kosinusową) bloków. DCT każdego bloku w tym przypadku daje 64-punktowy „wektor cech”.
  2. XxYy1=traily2=forest

    • klasowe rozkłady warunkowe
      • PX|Y(x|trail)trail
      • PX|Y(x|forest)forest
    • prawdopodobieństwa klasowe lub wcześniejsze
      • PY(trail)trail
      • PY(forest)forest
  3. 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

    y~i(x)=argmaxyiPX|Y(x|yi) PY(yi)

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.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

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:

T. Hastie, R. Tibshirani i J. Friedman, Elementy uczenia statystycznego: eksploracja danych, wnioskowanie i przewidywanie. 2nd Ed., Springer-Verlag (2008)

który jest teraz dostępny jako bezpłatny plik PDF pod podanym linkiem. Kolejna przyzwoita książka to:

RO Duda, PE Hart i DG Stork, Pattern Classification , 2nd Ed., John Wiley & Sons (2001)


1
W tym względzie chciałbym wskazać ml-class.org, który jest doskonałym wprowadzeniem do uczenia maszynowego.
bjoernz

Ciekawa metoda. Jeśli jednak mówisz, że Py (szlak) i Py (las) są „prawdopodobieństwem znalezienia szlaku na całym obrazie”, czy masz na myśli prawdopodobieństwo znalezienia ich w bloku 8x8, czy całego obrazu? Jeśli cały obraz, wyobrażam sobie, oba z nich byłyby w 100%, ponieważ wszystkie obrazy treningowe będą miały gdzieś oba.
Cerin,

@Cerin: Przepraszam, przez Py (trail) mam na myśli prawdopodobieństwo znalezienia go w bloku. To byłaby suma wszystkich bloków, które mają ślad według całkowitej liczby bloków na całym obrazie. Zredagowałem to, aby to poprawić
Lorem Ipsum,

Jak zdefiniowałbyś przestrzeń cech X? Czy zastosowałbyś coś w rodzaju grupowania K-średnich, aby zmniejszyć wymiarowość 64-punktowych wektorów cech do około 10 obiektów?
Cerin

@Cerin Tak, K-oznacza jest jednym z powszechnych podejść do zmniejszenia wymiarów.
Lorem Ipsum


5

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)


segmentacja tekstur gabor wydaje się być przyjemna!
nkint
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.