ELABORAZIONE ELETTRONICA DI SEGNALI E IMMAGINI

 

Studente: Argenton Marco

Data: 9 Luglio 2001

"Rimozione di rumore Speckle da immagini"

Introduzione

Questa tesina si propone l’implementazione di varie tecniche di filtraggio di immagini, atte alla rimozione del rumore di tipo "Speckle": questo è un disturbo che affligge tipicamente i sistemi di telerilevamento SAR (radar ad apertura sintetica). Si tratta di un rumore prodotto da fenomeni di interferenza che si generano ogniqualvolta immagini di oggetti complessi vengano acquisite mediante l’utilizzo di onde altamente coerenti. La caratteristica principale di questo rumore è il fatto di essere di tipo "moltiplicativo", risultando quindi dipendente dal segnale stesso a cui va a sovrapporsi; ecco allora che le zone ad alta luminanza risultano più "corrotte" delle zone scure.

Immagini disturbate da questo tipo di interferenza, inoltre, presentano una tipica "granulosità", dovuta alla irregolarità delle superfici che vengono illuminate dagli impulsi di energia elettromagnetica: i percorsi dei vari raggi sono pertanto differenti e comportano delle significative variazioni di fase in ricezione. Ecco spiegato il motivo per cui possiamo definirlo un "rumore di fase" e perché, quindi, va a sovrapporsi in maniera moltiplicativa alle immagini.

Il mio lavoro si propone di evidenziare un confronto tra alcuni algoritmi, mostrando la bontà di una tecnica adattativa rispetto ai non apprezzabili risultati ottenuti con filtraggi di tipo, per esempio, passabasso.

Descrizione delle metodologie adottate

Il lavoro è stato completamente sviluppato in ambiente Matlab, sfruttando le potenzialità del toolbox dedicato al Image Processing, che mi ha permesso di simulare il rumore in oggetto.

Ho pensato di mettere a confronto quattro diverse tecniche di filtraggio. Per un’analisi oggettiva dei risultati conseguiti ho fatto riferimento, come indice di qualità, al calcolo del PSNR (Peak Signal Noise Ratio).

Passabasso

Ho predisposto un m-file per l’implementazione di un passabasso sfruttando la modalità di mascheratura della FFT2 e successiva antitrasformazione per la ricostruzione dell’immagine.

Successivamente, però, ho notato che il progetto effettivo di filtri FIR-2D portava a risultati migliori rispetto alla tecnica succitata. Ho applicato la tecnica di progetto di un filtro FIR1-D per poi passare in 2-D attraverso una trasformazione in frequenza (in particolare, la trasf. di McClellan). Ho scelto questa tecnica per ottenere un filtro a simmetria circolare, dato che lo spettro dell’immagine si presenta concentrato (come, del resto, per quasi tutte le immagini) attorno alle basse frequenze, in maniera piuttosto circolare.

Sono state poi effettuate delle prove con tecniche di campionamento in frequenza e con funzioni finestra, ma i risultati sono del tutto confrontabili se non sensibilmente inferiori in termini di PSNR.

Come risulterà dalle tabelle seguenti, questa metodologia porta ad una riduzione del rumore e ad un conseguente miglioramento del indice di qualità adottato, ma le immagini filtrate risultano, come è prevedibile, piuttosto sfuocate, dato che i dettagli di un immagine sono dati dalle "alte frequenze" che in questo modo vengono "tagliate".

Mediano

Questa tecnica risulta molto valida per la rimozione di rumore di tipo impulsivo, proprio per la sua caratteristica di operare una media fra i valori di pixel adiacenti da cui la capacità di eliminare i "picchi" dovuti a quel tipo di disturbo. In questo caso però i risultati non sono per nulla accettabili, risultando uguali o addirittura peggiori di quelli ottenuti con la modalità sopra esposta: anche questo dato era prevedibile a priori dato che un’operazione di "media" è direttamente associabile ad un’azione passabasso.

Wiener

Passando ora a tecniche di tipo adattativo ho pensato di sfruttare la routine Matlab che implementa questo tipo di filtro. Senza approfondire molto la teoria che sta alla base di questa metodologia si può comunque dire che essa risulta ottima per la rimozione di rumori di "additivo". Tuttavia, sebbene il problema in oggetto non rientri in questa categoria, i risultati sono abbastanza apprezzabili, sia in termini di PSNR (valori sensibilmente più alti di quelli ottenuti in precedenza) sia per quanto riguarda un’analisi visiva.

Filtro Razionale

Si tratta di un algoritmo non lineare che permette di filtrare un’immagine distorta da rumore preservandone allo stesso tempo i dettagli. Ciò e possibile grazie a questa semplice relazione:

x0=x0+S i(xi-x0)/(k*(xi-x0)2+A) con i=1,…,8

dove x0 è il pixel di interesse in ingresso, al centro di una finestra 3x3 circondato dagli 8 pixel xi

 

 

 

X1

X2

X3

X4

X0

X5

X6

X7

X8

X0

K ed A sono parametri del filtro; in particolare per k=0 ci si riconduce al caso lineare (se A=9 il filtro esegue un’operazione di media). Per valori intermedi di K, invece, è possibile sfruttare la non linearità.

Infatti il termine (xi-x0)2 a denominatore della sommatoria può essere considerato come un "sensore per i bordi" dato che, in loro presenza, il contributo di tale termine diventa significativo andando a ridurre l’azione passabasso del filtro. Un bordo, infatti, è caratterizzato da pixel adiacenti aventi valori abbastanza diversi: trovandosi il "sensore" a denominatore, si capisce come il contributo alla sommatoria sia piccolo.

Vista però la caratteristica del rumore Speckle di essere proporzionale al valore locale del segnale, ha senso modificare il "sensore" per migliorare l’azione di controllo del denominatore.

Ecco allora che se il sensore diventa (xi-x0)2/(xi+x0+1)2 l’azione del filtro risulta più lieve nelle aree a bassa luminanza (dove il denominatore del sensore è piccolo) e diviene più intensa nelle zone chiare.

Risultati conseguiti

Premessa: le varie prove sono state fatte su tre immagini corrispondenti a tre diversi valori di varianza del rumore. Nella seguente tabella mostro i valori di PSNR relativi all’immagine corrotta nei 3 casi. Per l’analisi dei successivi risultati si faccia quindi riferimentio a questi dati.

VARIANZA

0.01

0.04

0.07

PSNR

27.14

21.20

18.89

Passabasso

Varianza

Fc (freq.taglio)

N (ordine filtro)

PSNR

0.01

0.5

4

30.35

0.04

0.45

6

27.32

0.07

0.45

8

25.99

Ho notato dalle prove fatte, che i risultati migliori si ottengono con valori relativamente bassi per quanto riguarda l’ordine del filtro; se si cerca di salire con tali valori, inoltre, ho notato che, oltre ad un calo del PSNR, si verifica la presenza sull’immagine di pixel "bianchi" o comunque aventi valore completamente alterato: suppongo che ciò sia dovuto alle pesanti oscillazioni in banda attenuata che si hanno nei filtri con ordine oltre al 10.

Si noti comunque che, al crescere della varianza del rumore, i risultati migliori si ottengono per N via via più alti.

Un’altra osservazione che mi sento di fare è la seguente: sono riuscito ad ottenere valori di PSNR praticamente uguali a quelli sopra riportati anche filtrando a frequenze più basse, a scapito però di una decisa sfocatura dell’immagine; cosa che non si verifica in maniera accentuata per Fc=0.4-0.5. Suppongo che ciò sia dovuti al fatto che la maggior parte del contenuto spettrale dell’immagine analizzata stia appunto all’interno di questi ultimi valori di Fc, quindi pur rimanendo invariato il rapporto segnale/rumore (anche filtrando a frequenze diverse) se ci si limita ad un "taglio" alla frequenza normalizzata 0.4 si riescono almeno a mantenere i dettagli. Questo dimostrerebbe che il rumore Speckle non ha componenti spettrali "privilegiate", essendo bensì un rumore di fase.

Psnr dell’immagine corrotta pari a 18.89dB

e quello dell’immagine filtrata 25.73dB (Fc=0.1): si noti però come ne risulti sfuocata.

Mediano

Sebbene l’esecuzione degli m-file preveda un menù interattivo con la possibilità di scegliere anche questo tipo di filtraggio, come ho detto in precedenza, i risultati non sono significativi, pertanto preferisco non appesantire la presentazione con ulteriori tabelle relative a questo caso.

Wiener

varianza

 

PSNR

 

Maschera 3x3

Maschera 5x5

0.01

31.18

29.46

0.04

26.25

26.48

0.07

24.00

24.65

Una sola osservazione a riguardo, che comunque resta valida anche per le tecniche fino a questo punto esposte. L’immagine filtrata risulta visivamente migliorata soprattutto nelle zone scure, rimanendo invece piuttosto corrotta da un’evidente granulosità nelle zone chiare. Dettaglio questo assolutamente prevedibile sulla base delle premesse fatte riguardo la natura moltiplicativa di questo rumore.

Razionale

Per ottenere risultati significativi e sfruttare a pieno le potenzialità di questa tecnica, è opportuno effettuare più "passate" sull’immagine corrotta, estendendo così l’azione del filtro.

Facciamo riferimento alla versione modificata dell’algoritmo.

Empiricamente, valori significativi per i parametri del filtro sono risultati K=700-1100 ed A=4-6 (si noti che se invece si decidesse di usare la versione di partenza dell’algoritmo i valori per K devono essere molto piccoli).

Varianza=0.01 K=700 A=6

Passate

1

2

3

PSNR

32.03

33.11

32.21

Varianza=0.04 K=700 A=6

Passate

1

2

3

4

5

PSNR

23.69

26.47

28.78

29.60

29.50

Varianza=0.07 K=700 A=6

Passate

1

2

3

4

5

6

7

8

PSNR

20.51

22.36

24.37

26.27

27.54

28.02

28.03

27.83

Sebbene abbia fatto molte prove su tutte e tre le immagini con svariati valori di K ed A, i risultati migliori sono sempre stati ottenuti con la stessa combinazione di dati. Notare che più l’immagine e corrotta più aumenta il numero di filtraggi che occorre eseguire.

Le prove eseguite con il filtro razionale "non-modificato" hanno portato ogni volta a dei valori di PSNR di un paio di dB inferiori.

 

 

 

 

Esempio di filtraggio di un immagine rumorosa (varianza del rumore pari a 0.07) con 6 passate del filtro razionale modificato (K=700 , A=4)

Conclusioni

I risultati hanno quindi messo in evidenza quanto già si era detto a proposito delle varie tecniche.

Il rumore in oggetto è forse il più insidioso da trattare tra quelli che si possono simulare con l’uso di Matlab, ma è certamente anche il più reale. Com’è si è visto, per ottenere risultati apprezzabili non solo in termini di PSNR, ma anche per quanto riguarda la gradevolezza dell’immagine elaborata, si è dovuti ricorrere a tecniche di tipo adattativo, come spesso succede, appunto, nelle applicazioni reali. Queste comunque non sono le uniche: la mia ricerca sull’argomento ha portato alla conoscenza del fatto che esistono tecniche basate sulle wavelets (troppo complesse da un punto di vista computazionale, però, per essere utilizzate in applicazioni "real time") ed altre che, sfruttando trasformazioni di tipo logaritmico, riconducono un problema "moltiplicativo", quale quello in oggetto, in uno "additivo".

Bibliografia

IEEE signal processing letters, vol.4, no.3, March 1997

Inoltre in rete:

http://imagets10.univ.trieste.it/ipl/theses.html