Rilevamento di fiumi tortuosi nelle immagini


14

Ho superfici: con un attributo misurato (variabile) su ciascuna superficie: . La maggior parte delle superfici avrà una distribuzione casuale dell'attributo su tutta la superficie, ma alcune superfici (quelle interessanti) mostreranno un modello di fiume tortuoso:nzio(X,y)un'io(X,y)

inserisci qui la descrizione dell'immagine

Ho bisogno del tuo aiuto per trovare una misura che ci dirà quali delle superfici hanno più probabilità di avere un tale schema.n

Esistono molte mappe possibili con lo stesso istogramma mostrato di seguito; quindi la misura deve "premiare" la continuità spaziale. Per illustrare questo ho creato un'immagine casuale con quasi lo stesso istogramma dell'immagine del fiume: inserisci qui la descrizione dell'immagine

Pertanto, le statistiche sull'immagine dell'entropia possono essere solo una parte della soluzione.

Ecco un esempio di un'immagine senza un modello di fiume tortuoso: inserisci qui la descrizione dell'immagine

Le mie immagini sono sintetiche (realizzate in Matlab). Nella vita reale l'immagine senza il modello può avere una continuità spaziale leggermente più grande sotto forma di piccole chiazze di valore simile.

Ecco le immagini in scala di grigi:

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


1
Puoi pubblicare immagini reali (senza asse, tavolozza, istogramma, così possiamo provare diversi algoritmi?). Inoltre: il "fiume serpeggiante" è in realtà un seno o può avere qualche forma?
Niki Estner,

1
Ciao nikie Nel mio esempio (dati sintetici realizzati in Matlab) il fiume è un seno. Nella vita reale è "sinusoidale"; a volte si allontana dalla linea centrale, a volte no.
Andy,

Risposte:


13

Una misura molto semplice sarebbe quella di confrontare ogni riga nell'immagine con la riga sopra di essa, consentendo uno spostamento orizzontale.

Ho hackerato insieme questo semplice algoritmo in Mathematica:

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

Prende semplicemente ciascuna coppia di file adiacenti, ruota una delle righe di -5..5 pixel e prende la minima distanza euclidea. Ciò produce una distanza euclidea per ogni coppia di file. Prendo semplicemente la media (ma a seconda dei tuoi dati effettivi, una media troncata o mediana potrebbe essere più solida).

Questi sono i risultati che ottengo per campioni generati artificialmente (Formula: Normalizza (rumore casuale * (fattore 1) + fattore segnale *))

inserisci qui la descrizione dell'immagine

Se tracciamo il risultato in base alla potenza del segnale, l'algoritmo sembra misurare abbastanza bene la "potenza del segnale del fiume tortuoso":

inserisci qui la descrizione dell'immagine

EDIT : ho dimenticato di normalizzare i campioni di input. Risolto il problema con il caricamento di nuove immagini dei risultati


Buona risposta. Tuttavia, penso che la tua misura possa essere ingannata da altre curve continue, come una linea retta. Lo migliorerei un po 'modificando l'ultimo passaggio per adattare un seno ai punti (x, y) che hai trovato, con ampiezza, fase e frequenza. Quindi, l'ampiezza può servire come misura della "forza del fiume".
Andrey Rubshtein,

4

Sembra che tu sia sulla strada giusta con quell'istogramma. Se questa è un'immagine rappresentativa del tuo campione, quell'istogramma mostra che le immagini in cui è presente il modello tortuoso potrebbero essere rilevate solo esaminando se contengono valori al di sopra di una certa soglia.

Oltre a questo, puoi provare a ottenere l' entropia di ogni immagine. Questo ti darà un numero per immagine che ne caratterizza la casualità. Successivamente puoi ottenere un istogramma delle entropie delle tue immagini. Se sei sicuro che le immagini siano chiaramente suddivise in "totalmente casuale" e "casuale con un meandro" (cioè meno casuale), l'istogramma delle entropie sarà bimodale. La modalità sinistra corrisponderà alle immagini con entropia inferiore e quindi meno casualità (più probabilità di contenere un modello tortuoso) e viceversa per la modalità destra.

(BTW MATLAB include una funzione pertinente )

EDIT: come risposta ai commenti del PO e al successivo caricamento di ulteriori informazioni sul problema, ecco un ulteriore punto a questa risposta:

L'entropia funzionerebbe comunque, ma non il semplice semplice caso senza memoria descritto dalla formula di Shannon (in cui si presume che ogni campione di una serie temporale sia indipendente dai precedenti).

Come alternativa più semplice, allora si potrebbe provare esaminando caratteristiche dell'immagine autocorrelazione .


Ciao A_A. Penso che le statistiche sulle immagini facciano parte della soluzione, ma in qualche modo bisogna ponderare i pixel vicini per premiare la continuità spaziale (vedere la Mappa degli attributi casuali sopra).
Andy,

Ciao, sono d'accordo e ho aumentato la risposta.
A_A
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.