Ho il modello .
Invece di osservare direttamente il modello osservo le derivate del modello + un po 'di rumore (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:
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):
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:
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: .
Il risultato è il seguente sistema di equazioni lineari:
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:
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:
è difficile da attuare; deve usare differenze centrali e "appiattire" la matrice 2D nel vettore ecc.
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.