Misura statistica per se un'immagine è costituita da regioni separate spazialmente connesse


14

Considera queste due immagini in scala di grigi:

fiume casuale

La prima immagine mostra un modello di fiume tortuoso. La seconda immagine mostra un rumore casuale.

Sto cercando una misura statistica che posso usare per determinare se è probabile che un'immagine mostri un modello di fiume.

L'immagine del fiume ha due aree: fiume = valore alto e ovunque = valore basso.

Il risultato è che l'istogramma è bimodale:

inserisci qui la descrizione dell'immagine

Pertanto un'immagine con uno schema di fiume dovrebbe presentare una varianza elevata.

Comunque anche l'immagine casuale qui sopra:

River_var = 0.0269, Random_var = 0.0310

D'altra parte l'immagine casuale ha una bassa continuità spaziale, mentre l'immagine fluviale ha un'alta continuità spaziale, che è chiaramente mostrato nel variogramma sperimentale: inserisci qui la descrizione dell'immagine

Allo stesso modo in cui la varianza "riassume" l'istogramma in un numero, sto cercando una misura di continuità spaziale che "sintetizzi" il variogramma sperimentale.

Voglio che questa misura "punisca" l'alta semivarianza con piccoli ritardi più intensi che con grandi ritardi, quindi ho escogitato:

 Svun'r=Σh=1nγ(h)/h2

Se aggiungo solo da ritardo = 1 a 15 ottengo:

River_svar = 0.0228, Random_svar = 0.0488

Penso che un'immagine fluviale dovrebbe avere una varianza elevata, ma una varianza spaziale bassa, quindi introduco un rapporto di varianza:

 run'tioo=vun'r/Svun'r

Il risultato è:

River_ratio = 1.1816, Random_ratio = 0.6337

La mia idea è di usare questo rapporto come criterio decisionale per se un'immagine è un'immagine fluviale o no; alto rapporto (es.> 1) = fiume.

Qualche idea su come posso migliorare le cose?

Grazie in anticipo per le risposte!

EDIT: Seguendo il consiglio di whuber e Gschneider ecco i Morani I delle due immagini calcolate con una matrice di peso a distanza inversa 15x15 usando la funzione Matlab di Felix Hebeler :

River_M Random_M

Devo riassumere i risultati in un numero per ogni immagine. Secondo Wikipedia: "I valori vanno da −1 (che indica la dispersione perfetta) a +1 (correlazione perfetta). Un valore zero indica un modello spaziale casuale." Se riassumo il quadrato dei Morani I per tutti i pixel ottengo:

River_sumSqM = 654.9283, Random_sumSqM = 50.0785 

C'è una grande differenza qui, quindi Morans mi sembra un'ottima misura della continuità spaziale :-).

Ed ecco un istogramma di questo valore per 20.000 permutazioni dell'immagine fluviale: istogramma di permuazioni

Chiaramente il valore River_sumSqM (654.9283) è improbabile e l'immagine del fiume non è quindi spazialmente casuale.


4
Domanda interessante. Un consiglio che viene subito in mente è quello di concentrarsi sulla parte a corto raggio del variogramma: questa è la parte cruciale e farà il miglior lavoro distinguendo coppie di immagini come queste. (Statistiche strettamente correlate sono I di Moran e Geary C. ) È difficile dare consigli specifici, tuttavia, a meno che tu non possa caratterizzare più chiaramente il tipo di immagini che prevedi di elaborare.
whuber

2
+1 whuber, Moran's Mi sembra un buon inizio in questo caso. Quindi forse considera un test di permutazione per vedere quanto è "estrema" la tua immagine.
Gschneider,

@Gschneider Il test di permutazione è una buona idea, soprattutto perché non è necessario effettuare permutazioni! È semplice calcolare la distribuzione del variogramma (o Moran's I o Geary C o altro) in base alle permutazioni dei valori nell'immagine: ci sono così tanti valori che il CLT si applica. (Ad esempio, il variogramma apparirà come i punti verdi; due volte la loro altezza costante è la varianza dei valori dell'immagine.) Il problema diventa più difficile quando un modello "fiume" deve essere distinto da altri modelli come un "lago" o i "fiumi" possono avere larghezze ampiamente variabili.
whuber

Scusate ma non sono sicuro di seguirlo: mi state dicendo di permutare l'immagine testata pixel per pixel in qualche modo casuale e quindi confrontare il valore I di Moran dell'immagine permutata con quello dell'immagine testata?
Andy,

Quello che avevo in mente era innanzitutto definire una sorta di (probabilmente semplice) struttura di quartiere e calcolare I. di Moran. Quindi puoi calcolare K, diciamo 200.000, possibili permutazioni dei pixel, calcolando l'I di Moran per ogni permutazione. Una volta che hai questi 200.000 Moran's I, vedi dove si trova la tua statistica osservata. Ma il metodo di Whuber sembra più facile :).
Gschneider,

Risposte:


1

Pensavo che una sfocatura gaussiana fungesse da filtro passa-basso lasciando indietro la struttura su larga scala e rimuovendo i componenti ad alto numero d'onda.

Potresti anche guardare la scala delle wavelet richieste per generare l'immagine. Se tutte le informazioni vivono nelle wavelet su piccola scala, allora probabilmente non è il fiume.

Potresti considerare una sorta di auto-correlazione di una linea del fiume con se stessa. Quindi, se prendi una fila di pixel del fiume, anche con rumore, e trovi la funzione di correlazione incrociata con la riga successiva, allora potresti trovare sia la posizione che il valore del picco. Questo valore sarà molto più alto di quello che otterrai con il rumore casuale. Una colonna di pixel non produrrà gran parte del segnale a meno che non si scelga qualcosa dalla regione in cui si trova il fiume.

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

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


1
Alcune idee interessanti qui! Potrei convincerti a perfezionare questa risposta applicando uno o più dei tuoi approcci alle immagini di esempio per (1) mostrare come funzionano i tuoi metodi e (2) valutare il loro rendimento?
whuber

1
È dalla mia tesi. (Ingegneria meccanica) Ho messo una sfocatura gaussiana sulla posizione di un pendolo non lineare, quindi ho usato il metodo di convoluzione per ritrarre la posizione da un'immagine e confrontarla con l'analitica. L'ho provato con diversi livelli di rumore. Finché il rumore era al di sotto di una soglia correlata alle dimensioni del gaussiano, la ricostruzione era molto buona. link La Figura 11 era il grafico rilevante per la ricostruzione. La figura 6 e l'equazione 2 indicano la risposta al rumore.
EngrStudent - Ripristina Monica

Grazie! Quindi sembra che tu sia in un'ottima posizione per dare una risposta a questa risposta e dimostrare quanto sia realmente efficace. :-)
whuber

Ci scusiamo per il doppio commento. Penso che sia "intelligente" usare parte di un oggetto come pseudo "madre-wavelet" per se stesso. Sembra autoreferenziale, ma anche poetico. Autoaggiunto.
EngrStudent - Ripristina Monica

1

È un po 'tardi, ma non posso resistere a un suggerimento e un'osservazione.

In primo luogo, credo che un approccio più "di elaborazione delle immagini" possa essere più adatto dell'analisi dell'istogramma / variogramma. Direi che il suggerimento "smoothing" di EngrStudent è sulla buona strada, ma la parte "sfocatura" è controproducente. Ciò che viene richiesto è un sistema più uniforme per preservare i bordi , come un filtro bilaterale o un filtro mediano . Questi sono più sofisticati dei filtri a media mobile, poiché sono necessariamente non lineari .

Ecco una dimostrazione di cosa intendo. Di seguito sono riportate due immagini che si avvicinano ai tuoi due scenari, insieme ai loro istogrammi. (Le immagini sono ciascuna 100 per 100, con intensità normalizzate).

Immagini grezze immagini grezze

Per ciascuna di queste immagini applico un filtro mediano 5 per 5 15 volte *, che leviga i motivi preservando i bordi . I risultati sono mostrati sotto.

Immagini levigate immagini levigate

(* L'uso di un filtro più grande manterrebbe comunque il forte contrasto tra i bordi, ma ne uniformerebbe la posizione.)

Nota come l'immagine "fluviale" abbia ancora un istogramma bimodale, ma ora è ben divisa in 2 componenti *. Nel frattempo, l'immagine del "rumore bianco" ha ancora un istogramma unimodale monocomponente. (* Facilmente impostabile tramite, ad esempio il metodo di Otsu , per creare una maschera e finalizzare la segmentazione.)


In secondo luogo, l'immagine è certamente non è un "fiume"! A parte il fatto che è troppo anisotropico (allungato nella direzione "x"), nella misura in cui i fiumi tortuosi possono essere descritti da una semplice equazione, la loro geometria è in realtà molto più vicina a una curva generata da seno che a una curva di seno (es. vedi qui o qui ). Per ampiezze basse si tratta approssimativamente di una curva sinusoidale, ma per ampiezze più elevate gli anelli diventano "rovesciati" (Xf[y]), che in natura alla fine porta al taglio .

(Mi dispiace per il rant ... la mia formazione era come geomorfologo, in origine)


In una nota a margine, è generalmente una buona idea essere molto cauti nell'applicare i "metodi variogram" alle immagini naturali, che in genere non sono fisse. Questo è toccato nella mia risposta qui .
GeoMatt22,

0

Un suggerimento che potrebbe essere una vittoria rapida (o potrebbe non funzionare affatto, ma può essere facilmente eliminato) - hai provato a guardare il rapporto tra media e varianza degli istogrammi dell'intensità dell'immagine?

Prendi l'immagine del rumore casuale. Supponendo che sia generato da fotoni emessi casualmente (o simili) che colpiscono una telecamera, e ogni pixel ha la stessa probabilità di essere colpito, e che hai le letture grezze (cioè i valori non sono riscalati o sono riscalati in un modo noto che puoi annullare) , quindi il numero di letture in ciascun pixel dovrebbe essere distribuito in modo errato; stai contando il numero di eventi (fotoni che colpiscono un pixel) che si verificano in un periodo di tempo fisso (tempo di esposizione) più volte (su tutti i pixel).

Nel caso in cui ci sia un fiume con due diversi valori di intensità, hai una miscela di due distribuzioni di Poisson.

Un modo davvero rapido per testare un'immagine potrebbe quindi essere quello di esaminare il rapporto tra media e varianza delle intensità. Per una distribuzione di poisson la media sarà approssimativamente uguale alla varianza. Per una miscela di due distribuzioni di poisson, la varianza sarà maggiore della media. Finirai per dover testare il rapporto tra i due e una soglia prestabilita.

È molto rozzo. Ma se funziona, sarai in grado di calcolare le statistiche sufficienti necessarie con un solo passaggio su ogni pixel dell'immagine :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.