Miara statystyczna określająca, czy obraz składa się z oddzielnych przestrzennie połączonych regionów

14

Rozważ te dwa obrazy w skali szarości:

rzeka losowy

Pierwsze zdjęcie pokazuje meandrujący wzór rzeki. Drugi obraz pokazuje losowy szum.

Szukam miary statystycznej, której mogę użyć do ustalenia, czy prawdopodobne jest, że obraz pokazuje wzór rzeki.

Obraz rzeki ma dwa obszary: rzeka = wysoka wartość i wszędzie indziej = niska wartość.

W rezultacie histogram jest bimodalny:

wprowadź opis zdjęcia tutaj

Dlatego obraz o wzorze rzeki powinien mieć dużą wariancję.

Jednak powyższy losowy obraz również:

River_var = 0.0269, Random_var = 0.0310

Z drugiej strony losowy obraz ma niską ciągłość przestrzenną, podczas gdy obraz rzeki ma wysoką ciągłość przestrzenną, co wyraźnie pokazano na wariogramie eksperymentalnym: wprowadź opis zdjęcia tutaj

W ten sam sposób, w jaki wariancja „podsumowuje” histogram w jednej liczbie, szukam miary ciągłości przestrzennej, która „podsumowuje” eksperymentalny wariogram.

Chcę, aby ten środek „karał” wysoką półwariancję przy małych opóźnieniach mocniej niż przy dużych opóźnieniach, dlatego opracowałem:

 svar=h=1nγ(h)/h2

Jeśli dodam tylko od lag = 1 do 15, otrzymam:

River_svar = 0.0228, Random_svar = 0.0488

Myślę, że obraz rzeki powinien mieć dużą wariancję, ale niską wariancję przestrzenną, dlatego wprowadzam współczynnik wariancji:

 ratio=var/svar

Wynik to:

River_ratio = 1.1816, Random_ratio = 0.6337

Moim pomysłem jest wykorzystanie tego współczynnika jako kryterium decyzyjnego dla tego, czy obraz jest obrazem rzeki, czy nie; wysoki stosunek (np.> 1) = rzeka.

Jakieś pomysły na to, jak mogę coś ulepszyć?

Z góry dziękuję za wszelkie odpowiedzi!

EDYCJA: Zgodnie z radą Whuber i Gschneider tutaj są Morans I z dwóch obrazów obliczonych za pomocą macierzy odwrotnej masy 15x15 przy użyciu funkcji Matlaba Felixa Hebelera :

River_M Random_M

Muszę podsumować wyniki w jednym numerze dla każdego obrazu. Według wikipedii: „Wartości mieszczą się w zakresie od -1 (wskazując idealne rozproszenie) do +1 (idealna korelacja). Wartość zero wskazuje losowy wzór przestrzenny.” Jeśli zsumuję kwadrat Moransa I dla wszystkich pikseli, otrzymam:

River_sumSqM = 654.9283, Random_sumSqM = 50.0785 

Jest tutaj ogromna różnica, więc Morans wydaje mi się bardzo dobrą miarą ciągłości przestrzennej :-).

A oto histogram tej wartości dla 20 000 permutacji obrazu rzeki: histogram permuacji

Oczywiście wartość River_sumSqM (654,9283) jest mało prawdopodobna, dlatego obraz rzeki nie jest przestrzennie losowy.

Andy
źródło
4
Interesujące pytanie. Jedna rada, która przychodzi mi do głowy od razu, to skupienie się na części wariogramu bliskiego zasięgu: jest to kluczowa część i wykona najlepsze zadanie, rozróżniając pary takich zdjęć. (Blisko spokrewnione statystyki to Moran's I i Geary's C. ) Trudno jednak udzielić konkretnej porady, chyba że można wyraźniej scharakteryzować rodzaje obrazów, które spodziewamy się przetworzyć.
whuber
2
+1 Whuber, Moran's Wydaje mi się, że to dobry początek w tym przypadku. Następnie może rozważyć test permutacji, aby zobaczyć, jak „ekstremalny” jest twój obraz.
Gschneider
@Gschneider Test permutacji to fajny pomysł, zwłaszcza że nie trzeba przeprowadzać żadnych permutacji! Łatwo jest obliczyć rozkład wariogramu (lub I Morana, C Geary'ego itp.) Na podstawie permutacji wartości na obrazie: istnieje tak wiele wartości, że stosuje się CLT. (Np. Wariogram będzie wyglądał jak zielone punkty; dwukrotność ich stałej wysokości jest wariancją wartości obrazu.) Problem staje się trudniejszy, gdy wzór „rzeki” należy odróżnić od innych wzorów, takich jak „jezioro” lub „rzeki” mogą mieć bardzo różne szerokości.
whuber
Przepraszam, ale nie jestem pewien, czy podążam za tym: czy mówisz mi, aby w dowolny losowy sposób permutować testowany obraz piksel na piksel, a następnie porównać wartość I Morana permutowanego obrazu z wartością testowanego obrazu?
Andy
To, co miałem na myśli, to najpierw zdefiniować jakąś (prawdopodobnie prostą) strukturę sąsiedztwa i obliczyć Morana I. Następnie można obliczyć K, powiedzmy 200 000, możliwych permutacji pikseli, obliczając I Morana dla każdej permutacji. Kiedy zdobędziesz 200 000 Morana, zobacz, gdzie leży twoja obserwowana statystyka. Ale metoda Whubera brzmi łatwiej :).
Gschneider

Odpowiedzi:

1

Myślałem, że rozmycie gaussowskie działa jak filtr dolnoprzepustowy, pozostawiając strukturę na dużą skalę i usuwając komponenty o wysokiej liczbie fal.

Możesz także spojrzeć na skalę falek wymaganych do wygenerowania obrazu. Jeśli wszystkie informacje żyją w falach małej skali, prawdopodobnie nie jest to rzeka.

Można rozważyć pewien rodzaj autokorelacji jednej linii rzeki ze sobą. Więc jeśli weźmiesz rząd pikseli rzeki, nawet z hałasem, i znajdziesz funkcję korelacji krzyżowej z następnym rzędem, możesz zarówno znaleźć lokalizację, jak i wartość piku. Ta wartość będzie znacznie wyższa niż w przypadku losowego hałasu. Kolumna pikseli nie wytworzy większego sygnału, chyba że wybierzesz coś z regionu, w którym znajduje się rzeka.

http://en.wikipedia.org/wiki/Gaussian_blur

http://en.wikipedia.org/wiki/Cross-correlation

EngrStudent
źródło
1
Kilka ciekawych pomysłów tutaj! Czy mogę przekonać cię do przedstawienia tej odpowiedzi, stosując jedno lub więcej podejść do przykładowych obrazów, aby (1) pokazać, jak działają twoje metody i (2) ocenić ich skuteczność?
whuber
1
To z mojej tezy. (Inżynieria mechaniczna) Umieściłem rozmycie gaussowskie na pozycji wahadła nieliniowego, a następnie zastosowałem metodę splotu, aby wycofać pozycję z obrazu i porównać ją z analityczną. Próbowałem z kilkoma poziomami hałasu. Dopóki hałas był poniżej progu związanego z wielkością gaussa, rekonstrukcja była bardzo dobra. link Rysunek 11 był odpowiednim wykresem dla rekonstrukcji. Rycina 6 i równanie 2 wskazują reakcję na hałas.
EngrStudent
Dzięki! Wygląda więc na to, że jesteś w stanie udzielić odpowiedzi i pokazać, jak naprawdę jest skuteczna. :-)
whuber
Przepraszamy za podwójny komentarz. Myślę, że „sprytne” jest używanie części obiektu jako pseudo „falki matki” dla siebie. Wydaje się samoreferencyjne, ale także poetyckie. Samodostosowujący się.
EngrStudent
1

Jest trochę późno, ale nie mogę się oprzeć jednej sugestii i jednej obserwacji.

Po pierwsze, uważam, że bardziej „podejście do przetwarzania obrazu” może być bardziej odpowiednie niż analiza histogramu / wariogramu. Powiedziałbym, że sugestia „wygładzania” EngrStudent jest na dobrej drodze, ale część „rozmycia” przynosi efekt przeciwny do zamierzonego. Wymagany jest wygładzacz zachowujący krawędzie , taki jak filtr dwustronny lub filtr środkowy . Są one bardziej wyrafinowane niż filtry średniej ruchomej, ponieważ z konieczności są nieliniowe .

Oto demonstracja tego, co mam na myśli. Poniżej znajdują się dwa zdjęcia przybliżające dwa scenariusze wraz z ich histogramami. (Obrazy są 100 na 100, ze znormalizowanymi intensywnościami).

Surowe obrazy surowe obrazy

Do każdego z tych obrazów stosuję 15-krotnie * filtr środkowy 5 na 5, który wygładza wzory, zachowując krawędzie . Wyniki przedstawiono poniżej.

Wygładzone obrazy wygładzone obrazy

(* Użycie większego filtra nadal utrzymałoby ostry kontrast na krawędziach, ale wygładziłoby ich położenie).

Zwróć uwagę, że obraz „rzeki” nadal ma bimodalny histogram, ale teraz jest ładnie podzielony na 2 elementy *. Tymczasem obraz „białego szumu” nadal ma jednokomponentowy unimodalny histogram. (* Łatwo progowane, np . Metodą Otsu , aby utworzyć maskę i sfinalizować segmentację.)


xf[y]

(Przepraszam za rant ... pierwotnie mój trening był geomorfologiem)

GeoMatt22
źródło
Na marginesie, ogólnie dobrym pomysłem jest zachowanie ostrożności przy stosowaniu „metod wariogramu” do naturalnych obrazów, które zwykle nie są nieruchome. Jest to poruszone w mojej odpowiedzi tutaj .
GeoMatt22,
0

Sugestia, która może być szybką wygraną (lub może wcale nie działać, ale można ją łatwo wyeliminować) - czy próbowałeś spojrzeć na stosunek średniej do wariancji histogramów intensywności obrazu?

Zrób losowy obraz szumu. Zakładając, że jest generowany przez przypadkowo emitowane fotony (lub podobne) uderzające w kamerę, a każdy piksel jest równie prawdopodobne, że zostanie trafiony, i że masz surowe odczyty (tj. Wartości nie są przeskalowywane lub są przeskalowywane w znany sposób, który można cofnąć) , wówczas liczbę odczytów w każdym pikselu należy rozłożyć poissona; zliczasz liczbę zdarzeń (fotony uderzające w piksel), które mają miejsce w ustalonym okresie czasu (czas ekspozycji) wiele razy (we wszystkich pikselach).

W przypadku, gdy istnieje rzeka o dwóch różnych wartościach natężenia, masz mieszaninę dwóch rozkładów Poissona.

Naprawdę szybkim sposobem przetestowania obrazu może być spojrzenie na stosunek średniej do wariancji intensywności. Dla rozkładu Poissona średnia będzie w przybliżeniu równa wariancji. Dla mieszanki dwóch rozkładów Poissona wariancja będzie większa niż średnia. W końcu będziesz musiał przetestować stosunek dwóch w stosunku do pewnego z góry ustalonego progu.

To bardzo prymitywne. Ale jeśli to zadziała, będziesz w stanie obliczyć niezbędne wystarczające statystyki za pomocą tylko jednego przejścia na każdy piksel obrazu :)

Poklepać
źródło