Wykrywanie meandrujących rzek na obrazach

14

Mam powierzchni: z i ( x , y ) ze zmierzonym atrybutem (zmienną) na każdej powierzchni: a i ( x , y ) . Większość powierzchni będzie miała losowy rozkład atrybutu na całej powierzchni, ale niektóre powierzchnie (interesujące) pokażą meandrujący wzór rzeki:nzja(x,y)zaja(x,y)

wprowadź opis zdjęcia tutaj

Potrzebuję twojej pomocy w opracowaniu miary, która powie nam, która z powierzchni najprawdopodobniej ma taki wzór.n

Istnieje wiele możliwych map z tym samym histogramem, jak pokazano poniżej; więc środek musi „nagradzać” ciągłość przestrzenną. Aby to zilustrować, stworzyłem losowy obraz z prawie takim samym histogramem jak obrazek rzeki: wprowadź opis zdjęcia tutaj

Tak więc statystyki obrazu ala entropia mogą być tylko częścią rozwiązania.

Oto przykład obrazu bez meandrującego wzoru rzeki: wprowadź opis zdjęcia tutaj

Moje obrazy są syntetyczne (wykonane w Matlabie). W rzeczywistości obraz bez wzoru może mieć nieco więcej ciągłości przestrzennej w postaci małych plam o podobnej wartości.

Oto obrazy w skali szarości:

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

Andy
źródło
1
Czy możesz publikować rzeczywiste obrazy (bez osi, palety, histogramu, abyśmy mogli wypróbować różne algorytmy?). Ponadto: Czy „meandrująca rzeka” jest sinussem, czy może mieć jakiś kształt?
Niki Estner
1
Cześć Nikie. W moim przykładzie (dane syntetyczne wykonane w Matlabie) rzeka jest sinusoidą. W prawdziwym życiu jest to „sinusoidalne”; czasami idzie szeroko od linii środkowej, czasem nie.
Andy

Odpowiedzi:

13

Bardzo prostym miernikiem byłoby porównanie każdego wiersza na obrazie z rzędem nad nim, umożliwiając pewne przesunięcie w poziomie.

Zhakowałem razem ten prosty algorytm w Mathematica:

Mean[MapThread[
  Function[{line1, line2},
   Min[Table[Norm[line1 - RotateLeft[line2, shift]], {shift, -5, 5}]]
   ], {s[[2 ;;]], s[[;; -2]]}]]

Po prostu bierze każdą parę sąsiednich rzędów, obraca jeden z rzędów o -5..5 pikseli i przyjmuje najmniejszą odległość euklidesową. To daje jedną odległość euklidesową dla każdej pary rzędów. Po prostu przyjmuję średnią (ale w zależności od twoich rzeczywistych danych, skrócona średnia lub mediana może być bardziej niezawodna).

Są to wyniki, które otrzymuję dla próbek generowanych sztucznie (Wzór: Normalizuj (szum losowy * (współczynnik 1) + współczynnik sygnału *))

wprowadź opis zdjęcia tutaj

Jeśli wykreślę wynik względem siły sygnału, algorytm wydaje się dość dobrze mierzyć „siłę meandrującej rzeki”:

wprowadź opis zdjęcia tutaj

EDYCJA : Zapomniałem znormalizować próbki wejściowe. Naprawiono przesłanie nowych zdjęć wyników

Niki Estner
źródło
Dobra odpowiedź. Myślę jednak, że twoja miara może zostać oszukana przez kolejne ciągłe krzywe, takie jak linia prosta. Poprawiłbym to trochę, zmieniając ostatni krok, aby dopasować sinus do punktów (x, y), które znalazłeś, z pewną amplitudą, fazą i częstotliwością. Następnie amplituda może służyć jako pomiar „siły rzeki”.
Andrey Rubshtein
4

Histogram wydaje się być na dobrej drodze. Jeśli jest to reprezentatywny obraz z próbki, wówczas histogram pokazuje, że obrazy, na których obecny jest meandrujący wzór, można wykryć, sprawdzając, czy zawierają wartości powyżej określonego progu.

Poza tym możesz spróbować uzyskać entropię każdego obrazu. To da ci jedną liczbę na zdjęcie, która charakteryzuje jego losowość. Następnie możesz uzyskać histogram entropii swoich zdjęć. Jeśli masz pewność, że obrazy są wyraźnie podzielone na „całkowicie losowe” i „losowe z meandrem” (tj. Mniej losowe), histogram entropii będzie bimodalny. Tryb lewy będzie odpowiadał obrazom o niższej entropii, a tym samym mniejszej losowości (bardziej prawdopodobne, że będzie zawierał meandrujący wzór) i odwrotnie dla trybu prawego.

(BTW MATLAB zawiera odpowiednią funkcję )

EDYCJA: W odpowiedzi na komentarze PO i kolejne przesyłanie dodatkowych informacji o problemie, oto dodatkowy punkt do tej odpowiedzi:

Entropia nadal działałaby, ale nie zwykły prosty przypadek bez pamięci opisany wzorem Shannona (gdzie zakłada się, że każda próbka szeregu czasowego jest niezależna od poprzednich).

Jako prostszą alternatywę możesz spróbować zbadać cechy autokorelacji obrazu .

A_A
źródło
Cześć A_A. Myślę, że statystyki obrazu są częścią rozwiązania, ale trzeba w jakiś sposób ważyć sąsiednie piksele, aby nagrodzić ciągłość przestrzenną (patrz mapa losowego atrybutu powyżej).
Andy
Witam, zgadzam się i poszerzyłem odpowiedź.
A_A