Come posso calcolare numericamente una funzione dal suo gradiente rumoroso?


8

Ho il modello  s(x,y)=x2+y2,0x1,0y1.

Invece di osservare direttamente il modello osservo le derivate del modello + un po 'di rumore (e):

 p(x,y)=sx+e,q(x,y)=sy+e

Dalle misurazioni di p (x, y e q (x, y) voglio stimare s (x). Di 'che so che s (0,0) = 0.

Secondo il teorema del gradiente:  s(x,y)=(0,0)(x,y)[sx,sy]dr

indipendentemente da quale percorso integriamo.

Come piccolo esperimento (in Matlab) ho aggiunto un normale rumore distribuito, N (0,1), a p = 2x e q = 2y. Quindi ho integrato prima lungo x seguito da lungo y: SXY. Successivamente ho integrato prima lungo y seguito da x: SYX.

I risultati mostrano che il teorema del gradiente non regge in questo caso (a causa del rumore):

S

SXY

SYX

Gli errori quadrati medi radice relativi al modello sono:

ErmsXY =
    0.1125
ErmsYX =
    0.0920

Come posso trovare una stima migliore (meno errori RMS e più fluidi) di s da p e q?

MODIFICARE:

Da quello che ho letto; l'utilizzo dell'integrale della curva viene definito integrazione locale. Esistono anche metodi di integrazione globale in cui si cerca invece di scegliere una S (x, y) che minimizzi:

 0101[|SxP|2+|SyQ|2]dxdy

I metodi di integrazione globale dovrebbero dare risultati migliori quando il gradiente è rumoroso, ma come faccio in pratica?

EDIT 2:

Un approccio che ho usato è questo:

per prima cosa introduciamo operatori di derivazione lineare:  sx=Dxs,sy=Dys.

Il risultato è il seguente sistema di equazioni lineari:

 Dxs=p,Dys=q

Quindi trova una soluzione dell'errore del minimo quadrato a queste equazioni. Una soluzione LSE a queste equazioni dovrebbe essere equivalente a minimizzare l'integrale dall'alto. Come può essere mostrato?

I risultati sono buoni: inserisci qui la descrizione dell'immagine

L'errore RMS è circa 1/5 di quello di SXY e SYX e anche la soluzione è più fluida.

Tuttavia ci sono alcuni svantaggi di questo approccio:

  1. è difficile da attuare; deve usare differenze centrali e "appiattire" la matrice 2D nel vettore ecc.

  2. Le matrici di derivazione sono molto grandi e sparse, quindi possono consumare molta RAM.

Un altro approccio che sembra potenzialmente più semplice da codificare, che richiede meno RAM e più veloce è utilizzare FFT. Nello spazio di Fourier questi punti diventano un'equazione algebrica. Questo è noto come algoritmo Frankot-Chellappa, ma sfortunatamente non riesco a farlo funzionare sui miei dati di esempio.

Risposte:


1

Puoi filtrare il gradiente stesso o il risultato, s. Dovresti conoscere abbastanza bene le caratteristiche dei gradienti reali per sapere qual è la larghezza di banda della frequenza. A quel punto è possibile progettare un filtro passa-basso che preservi il segnale ma elimini il rumore ad alta frequenza.


Grazie Jim. Quindi, ad esempio, posso prendere SXY e sostituire ogni valore SXY (xi, yj) con una somma ponderata sul valore e sui suoi vicini, dove i pesi possono essere ad esempio un gaussiano 2D?
Andy,

Scusa Jim. Avevo dimenticato di sottolineare che voglio anche un piccolo errore RMS rispetto al modello. Ho modificato la mia domanda per tenerne conto. Il livellamento dà un risultato più uniforme, ma non un errore RMS più piccolo?
Andy,

@Andy Sì, "una somma ponderata sul valore e sui suoi vicini" è una descrizione piuttosto succinta del filtro, e un gaussiano 2D è una forma di filtro passa-basso.
Jim Clay,

@Andy Per errori più piccoli stimerei la larghezza di banda di FFT usando più "clean" (nessun rumore aggiunto) srisultati e vedere dove si trova il rolloff di frequenza più elevata (suppongo che non siano tutti uguali). Progetta un LPF con lo stesso rolloff - il Matlab "fdatool" può aiutarti in questo - e quindi usa quel filtro. Dovrebbe migliorare il tuo RMS. Ci saranno ancora errori, ovviamente, ma dovrebbe essere ridotto.
Jim Clay,

Grazie Jim. Ma non c'è modo di combinare i risultati di SXY e SYX per ottenere un errore RMS più piccolo?
Andy,
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.