Serena Papi Esercitazione laboratorio -Matematica computazionale 2008/2009 1 Problemi Inversi Malposti Consideriamo il sistema lineare A x = b (1) dove la matrice A è nxn, ma è molto mal condizionata. Il problema (1) viene detto problema inverso mal posto. Pertanto la soluzione del sistema (1) è estremamente sensibile a perturbazioni, anche relativamente piccole, sul termine noto b. Consideriamone la versione con termine noto perturbato ε ε = b b ; avremo allora che il sistema da risolvere è ε ε b Ax = . Approccio SVD alla Soluzione Poiché siamo in presenza anche di rumore occorre filtrare la soluzione. Sia A una matrice nxn si definisce SingularValueDecomposition di A A = UΣV T dove U T U = V T V = I n Σ = diag(σ 1 , …, σ n ) con σ 1 ≥ σ 2 … σ n ≥ 0 Tutti i valori singolari decadono gradualmente e l’indice di condizionamento di A cond(A)= σ 1 / σ n
25
Embed
Problemi Inversi Malposti - dm.unibo.itmontelau/html/Problemi Inversi Malposti.pdf · Problemi Inversi Malposti Consideriamo il sistema lineare A x = b (1) dove la matrice A è nxn,
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
dove la matrice A è nxn, ma è molto mal condizionata. Il problema (1) viene
detto problema inverso mal posto. Pertanto la soluzione del sistema (1) è
estremamente sensibile a perturbazioni, anche relativamente piccole, sul termine
noto b.
Consideriamone la versione con termine noto perturbato εε += bb ; avremo
allora che il sistema da risolvere è
εε bAx = .
Approccio SVD alla Soluzione Poiché siamo in presenza anche di rumore occorre filtrare la soluzione. Sia A una matrice nxn si definisce SingularValueDecomposition di A
A = UΣVT dove UTU = VTV = In Σ = diag(σ1, …, σn) con
σ1 ≥ σ2 … σn ≥ 0 Tutti i valori singolari decadono gradualmente e l’indice di condizionamento di A
La matrice A di distorsione è una matrice di Toeplitz molto sparsa generata da una stringa di valori che rappresentano il campionamento di una gaussiana sul suo supporto
Metodi di Regolarizzazione 1. Approccio TSVD alla Soluzione TSVD: Un semplice approccio per ridurre il rumore in ricostruzione è quello di
scartare tutte le componenti della SVD che sono dominate dal rumore.
Questo porta al soluzione mediante TSVD:
xk = .,1
Nkvbu
i
k
i i
Ti <∑
= σ
Nonostante la sua semplicità questo metodo può lavorare abbastanza bene se si
riesce a determinare il giusto parametro k di troncamento.
Tornando all’esempio la soluzione che si ottiene è
x_sol=zeros(N,1); %inserire k il numero dei valori singolari da considerare k=128; for i=1:k x_sol=x_sol+((U(:,i)'*ye)/S(i,i))*V(:,i); end figure plot(x_sol)
Tale scelta è buona quando l’immagine esatta è per lo più nulla ai bordi come spesso accade per le immagini astronomiche. Sfortunatamente questa scelta ha un brutto effetto su quelle immagini che invece non sono nulle vicino ai bordi. Infatti spesso appaiono alcuni artefatti neri ai bordi oppure degli anelli ai bordi causati dalla grossa differenza tra i valori dentro e fuori dal bordo.
Le due condizioni ai bordi che seguono impongono un modello più realistico sul comportamento delle immagini ai bordi facendo uso solo delle informazioni disponibili, ovvero delle informazioni dell’ immagine vicino al bordo.
Il rumore Oltre alla distorsione le immagini osservate solo solitamente presentano anche il rumore. Il rumore dipende da differenti sorgenti e può essere lineare, nonlineare, moltiplicativo o additivo. Solitamente si considera un modello di rumore additivo di tipo gaussiano che caratterizza i sistemi di conversione analogico-digitale. La funzione Matlab che realizza il rumore gaussiano è ‘randn’ E = 0.01*randn(n,n); E è una matrice n x n che contiene gli elementi di rumore gaussiano con media 0 e standard deviation 0.01. Perciò il modello finale risulta:
Bnoisy = Bext + E
Il corrispondente modello di deblurring ora diviene B = (A0 + ABC)X + E Nell’image processing toolbox vi è la funzione imnoise che data un’immagine gli applica rumore permettendo di scegliere il tipo di rumore e la quantità: Bnoisy =imnoise(B, type, parameters); Bnoisy =imnoise(B, ‘gaussian’, mean, variance);