Elaborazione Delle Immagini Digitali
Short Description
Download Elaborazione Delle Immagini Digitali...
Description
ELABORAZIONE DELL’IMMAGINE DIGITALE L’utilizzo di un sistema di visione comporta la necessità di elaborare le immagini acquisite in modo da eliminarne gli effetti indesiderati come il rumore, lo scarso contrasto e la scarsa definizione dei dettagli, per poter effettuare misure e controlli con un notevole grado di precisione. Le elaborazioni possono essere classificate in tre tipi: puntuali, locali e globali. Nelle puntuali il valore di uscita di ciascun pixel dipende solo dal valore di ingresso di quel pixel, nelle locali dipende dai valori di ingresso di un (piccolo) intorno di esso, nelle globali il valore di uscita di ciascun pixel dipende da tutta l’immagine di ingresso. Nel nostro caso vengono prese in esame solo le elaborazioni locali. Queste fanno uso delle cosiddette maschere spaziali, dette anche maschere di convoluzione o filtri spaziali. Il filtraggio è considerato un’operazione di elaborazione delle immagini, con lo scopo di metterne in evidenza o di attenuarne alcune caratteristiche. L’elaborazione delle immagini avviene mediante l’utilizzo di maschere di convoluzione, ovvero matrici quadrate o rettangolari da far convoluire con l’immagine stessa. Possiamo avere filtraggi lineari, dove ad ogni pixel è associato un valore che è la combinazione lineare dei valori pesati dei pixel che lo circondano, e filtraggi non lineari, dove il valore di ogni pixel dipende dai valori dei pixel adiacenti ma non secondo una combinazione lineare.
Convoluzioni di Kernel Una convoluzione di Kernel è un filtro 2D che è possibile applicare ad un’immagine in scala di grigi ed i cui coefficienti ne definiscono le caratteristiche. Il sistema disponibile al laboratorio offre la possibilità di utilizzare maschere di Kernel standard oppure di crearle ad hoc in base alle necessità. Il valore filtrato di un pixel è rappresentato da una combinazione ponderata del suo valore originale e dei valori dei pixel ad esso vicini. La dimensione della maschera di Kernel determina il numero di pixel che contribuiscono al valore del pixel in esame ed i coefficienti definiscono il contributo di ciascun pixel.
Come si può osservare dalla precedente figura, nella prima contribuiscono al valore finale del pixel nero 8 pixel adiacenti, mentre nel secondo caso ben 24. Nell’applicazione di questi filtri bisogna prendere in considerazione il problema del filtraggio dei pixel che si trovano vicino ai bordi dell’immagine. Infatti può capitare che nell’elaborare l’immagine parte della maschera cada fuori dall’immagine stessa, come nella seguente figura:
Il software disponibile in laboratorio crea automaticamente una regione di confine profonda 3 pixel e con valori pari a zero, in modo da avere comunque pixel per poter elaborare l’immagine. Fornisce, inoltre, anche la possibilità di definire manualmente tale regione. Bisogna tenere presente che i valori dei pixel sul bordo dell’immagine saranno comunque errati.
Filtraggio spaziale Come detto i filtri possono essere di due tipi: lineari (detti anche di convoluzione) e non lineari. Una convoluzione è un algoritmo che consiste nel ricalcolare il valore di un pixel tramite combinazione lineare del valore del pixel di origine e dei valori dei pixel ad esso vicini, pesati tramite opportuni coefficienti. Il valore ottenuta è poi diviso per il valore dato dalla somma dei coefficienti dei singoli pixel coinvolti nell’elaborazione. Non esistono limiti sulla dimensione della maschera di convoluzione di Kernel, che può essere quadrata o rettangolare. I filtri spaziali servono per una varietà di scopi, come la determinazione dei bordi dell’immagine, la riduzione del rumore, la messa in evidenza dei dettagli o la riduzione del contrasto o sfocamento dell’immagine. Il filtraggio spaziale, in altre parole, altera i valori dei pixel in base alle variazioni dell’intensità luminosa nelle regioni ad essi adiacenti. I filtri spaziali possono essere ulteriormente suddivisi in due categorie: Filtri Highpass, enfatizzano le variazioni di intensità luminosa. Sono utilizzati per la determinazione dei bordi dell’oggetto
Filtri Lowpass, attenuano le variazioni di intensità luminosa, riducono il contrasto sfocando i bordi ed eliminando i dettagli La seguente tabella contiene le diverse tipologie di filtri spaziali: TIPO DI FILTRO Lineare
FILTRI
Highpass
Gradiente, Laplaciano
Lowpass Non lineare
Smoothing, Gaussiano
Highpass
Gradiente, Roberts, Sobel, Prewitt, Differenziazione, Sigma
Lowpass
Mediano, Nth Order, Lowpass
Filtri Lowpass Questi filtri, come detto, sono usati per la sfocatura dell’immagine attraverso una riduzione del contrasto (operazione detta blurring) e per la riduzione del rumore (operazione detta noise clearing). Tramite la riduzione del contrasto vengono eliminati piccoli dettagli inutili al fine dell’elaborazione dell’immagine e vengono compensate alcune piccole imperfezioni come le interruzioni che si verificano sui bordi. I principali filtri Lowpass sono: Filtro media Filtro mediano Filtro gaussiano Filtro media Questa tipologia di filtri sostituisce ad ogni pixel la media dei valori dei pixel dell’intorno considerato. L’effetto di Smoothing, cioè di evidenziazione degli elementi significati ed attenuazione del rumore, dipende dai valori dei pixel del contorno e tanto più quest’ultimo è esteso tanto più marcato è l’effetto prodotto. Una condizione da rispettare nell’impiego di tali filtri è che la somma dei pesi della maschera sia sempre uguale ad 1, in modo che l’uscita del filtraggio su di una regione a valore costante non vari l’immagine. Esempi di filtro media sono i seguenti:
Si noti come è presente il fattore di divisione che è sempre pari alla sommatoria dei pesi, in modo da rispettare la condizione prima enunciata. Inoltre l’effetto di pulitura dal rumore è decrescente da sinistra a destra (basta osservare il contributo percentuale del punto centrale). Questo tipo di elaborazione ha il difetto di provocare uno sfocamento dell’immagine, facendo perdere di definizione i contorni. Filtro mediano È un filtro non lineare attraverso il quale si sostituisce il valore del pixel il valore mediano dell’intorno considerato (tipicamente 3x3). Da tener presente che il mediano di un insieme di valori è tale che una metà dei valori sia minore di esso e l’altra metà sia maggiore. L’effetto che si ha è quello di forzare i pixel ad assumere un valore uguale a quello di uno dei pixel del contorno. Questo tipo di filtraggio è molto efficace per un rumore di tipo impulsivo, non offusca i contorni e non introduce livelli di grigio che non sono presenti nell’immagine originale. Un esempio di filtro mediano è il seguente:
Filtro Gaussiano Un filtro gaussiano è un filtro lineare che attenua le variazioni di intensità luminosa in prossimità di un pixel. È simile ad un filtro media ma l’effetto di sfocatura dell’immagine è più contenuto. In questo caso si sostituisce ad ogni pixel la media pesata dei valori dei pixel del contorno considerato. La maschera ha la seguente struttura:
Con a, b, c, d interi e positivi e x>1.
a
d
c
b
x
b
c
d
a
I coefficienti di questa maschera rappresentano la migliore approssimazione possibile di una curva gaussiana, con numeri interi. Poiché i coefficienti sono tutti positivi, dopo l’elaborazione ogni pixel assume il valore della media pesata dei suoi vicini, con il pixel con più peso che ha la maggiore influenza sul nuovo valore del pixel centrale. Inoltre, dato che il coefficiente centrale di un filtro gaussiano è maggiore di 1, il valore originale di un pixel viene moltiplicato per un peso superiore a quello dei pixel ad esso vicini. Di conseguenza un maggior valore del coefficiente centrale corrisponde ad un più delicato effetto di smoothing, mentre una dimensione più grande della maschera corrisponde ad un effetto di smoothing maggiore. Un esempio è il seguente:
Filtri highpass Sono filtri, come detto, utilizzati per aumentare il contrasto locale dell’immagine e per mettere in evidenza i contorni degli oggetti, pertanto le differenze tra pixel vicini sono aumentate. Sono filtri passa-alto che mettono in evidenza il contenuto delle componenti ad alta frequenza spaziale nell’immagine. Questi filtri sono detti di sharpening e generalmente il loro utilizzo provoca un aumento del rumore nell’immagine, quindi è opportuno limitare tale problema utilizzando anche un filtro di smoothing. Loro caratteristica è che il coefficiente centrale della maschera utilizzata ha segno opposto rispetto a quello dei pesi vicini. Le maschere più adatte ad evidenziare i contorni sono quelle con somma dei pesi pari a zero, che produce un’uscita nulla dove non sono presenti differenze di livello di grigio. L’effetto prodotto dai filtri passa-alto è di tipo derivativo, cioè un’immagine filtrata passa-alto può essere pensata come differenza tra l’immagine originale e una versione passa-basso dell’immagine stessa. È per questo motivo che lo sviluppo delle tecniche di sharpening si è basato su operazioni di derivazione, in particolare attraverso l’uso di operatori di derivata prima o seconda. I primi producono bordi più spessi, mentre i secondi accentuano di più i dettagli fini, compreso il rumore. Possiamo definire la derivata prima di una funzione discreta f(x) come:
Mentre la definizione di derivata seconda di una funzione discreta come:
La prima grande distinzione dei filtri di sharpening è tra quelli basati sul gradiente, operatore di derivata prima, e quelli basati sul laplaciano, operatore di derivata seconda.
Filtri basati sul laplaciano
Il modo più semplice per effettuare l’operazione di derivata seconda di una f(x,y) in un punto è quello di calcolare il laplaciano in quel punto, definito come segue: L( x, y ) = ∇2 f =
∂2 f ∂2 f + ∂x 2 ∂y 2
Il laplaciano è un operatore isotropo, quindi la sua risposta è indipendente dalla direzione delle discontinuità presenti nell’immagine. Il modo più semplice di definire il laplaciano nel caso discreto consiste nel calcolare le derivate seconde rispetto alle due direzioni e sommare i risultati. Si ottiene la seguente espressione:
Il filtro Laplaciano ha due effetti diversi, a seconda che il coefficiente centrale è uguale o superiore alla somma dei valori assoluti dei coefficienti esterni: Se il coefficiente centrale è pari alla somma dei valori assoluti degli altri coefficienti, il filtro di Laplace estrae i pixel dove ci sono significative variazioni di intensità luminosa. Si perde completamente l’informazione dello sfondo, ottenendo un’immagine con contorni bianchi su sfondo nero, come nell’esempio seguente:
Se il coefficiente centrale è maggiore della somma dei valori assoluti degli altri coefficienti, il filtro laplaciano rileva le stesse variazioni viste prima ma ci sovrappone l’immagine di
origine, ottenendo un’immagine come quella di partenza ma con tutte le variazioni di intensità luminosa messe in evidenza, come nel seguente caso:
Si noti che il laplaciano #4 può essere scomposto come segue:
La maschera a destra altro non fa che riprodurre l’immagine originale, infatti il termine centrale resterebbe uguale a se stesso perché moltiplicato per 1, mentre gli altri verrebbero moltiplicati per zero. Si somma ai bordi estratti dell’immagine l’immagine stessa. Filtri basati sul gradiente
Un filtro basato sul gradiente, a differenza del laplaciano, non ha componenti isotrope ed evidenzia le variazioni di intensità luminosa lungo una direzione specifica, mettendo in risalto i bordi e la struttura dell’immagine. Il modello di Kernel utilizzato è il seguente:
con a,b,c,d interi e x=0 oppure x=1. Si nota che questo Kernel ha un asse di simmetria che tra i coefficienti positivi e quelli negativi passando per l’elemento centrale e questo asse dà l’orientamento dei bordi da mettere in evidenza. Quindi per una data direzione sarà possibile progettare un filtro basato sul gradiente in grado di evidenziare o scurire i bordi lungo una specifica direzione. Assegnata la direzione che va dai coefficienti negativi verso quelli positivi, il filtro evidenzia i pixel dove l’intensità luminosa aumenta lungo la direzione, mentre scurisce i pixel dove l’intensità della luce decresce. I filtri basati sul gradiente sono di due differenti tipi, a seconda se il coefficiente centrale è zero oppure pari ad uno:
Se pari a zero, il filtro mette in evidenza i pixel dove ci sono variazioni dell’intensità della luce lungo la direzione specificata dai coefficienti ed il risultato è un’immagine con bordi bianchi su sfondo nero Se pari ad uno, il filtro produce lo stesso effetto di prima ed in più sovrappone al risultato ottenuto precedentemente l’immagine originale, la quale dunque risulterà con i dettagli messi in evidenza I principali filtri basati sul gradiente sono i filtri di Prewitt, di Sobel e di Roberts. Filtri di Roberts L’operatore di Roberts è il più semplice edge detector che sia possibile realizzare: si basa sull’idea di derivata lungo direzioni ortogonali e consiste nell’applicazione di due maschere di convoluzione 2x2. Gli operatori di Roberts sono definiti nel modo seguente:
Solitamente nelle applicazioni vengono utilizzate maschere 3x3, poiché la piccolezza di queste maschere si traduce in un’alta sensibilità al rumore. Il pixel preso in esame assume il massimo valore assoluto tra la differenza con il suo vicino in alto a sinistra e la differenza tra gli altri 2 pixel vicini, come segue:
Filtri di Prewitt Insieme a quelli di Sobel sono i filtri più diffusi. Gli operatori di Prewitt sono filtri passa-alto non lineari che estraggono i contorni esterni dell’immagine, rilevando significative variazioni dell’intensità luminosa lungo gli assi orizzontali e verticali, utilizzando maschere del seguente tipo:
Realizzano una differenziazione lungo una direzione e contemporaneamente una media spaziale lungo la direzione ortogonale.
A ciascun pixel è assegnato il massimo valore del gradiente orizzontale e verticale:
Per i filtri di Prewitt si possono avere le seguenti maschere 3x3, dove le notazioni Ovest(W), Sud (S), Est(E) e Nord (N) indicano i bordi che variano, mentre se l’elemento centrale è pari ad uno vuol dire che ci sovrappone anche l’immagine originale:
Filtri di Sobel Come gli operatori di Prewitt, i filtri di Sobel sono tra i più diffusi per la loro capacità di effettuare simultaneamente la differenziazione lungo una direzione e una media spaziale lungo la direzione ortogonale. Come i precedenti, questi filtri sono utilizzati per evidenziare i bordi dell’immagine rilevando significative variazioni dell’intensità luminosa lungo determinati assi, con la differenza che i filtri di Sobel assegnano un peso maggiore ai pixel vicini a quello centrale. Le maschere sono del seguente tipo:
A ciascun pixel è assegnato il massimo valore del gradiente orizzontale e verticale
Per i filtri di Sobel si possono avere le seguenti maschere 3x3, dove, come per quelli di Prewitt le notazioni Ovest(W), Sud (S), Est(E) e Nord (N) indicano i bordi che variano, mentre se l’elemento centrale è pari ad uno vuol dire che ci sovrappone anche l’immagine originale:
Per i filtri che si basano sul gradiente, come quelli di Prewitt e Sobel, possiamo avere maschere più grandi 5x5 oppure 7x7 il cui funzionamento è del tutto simile a quello appena descritto.
Filtri Differenziali
Sono filtri passa-alto di tipo non lineare. Essi producono contorni continui dell’immagine evidenziando ogni pixel dove si riscontra una variazione di intensità luminosa tra il pixel stesso ed i suoi tra vicini in alto a sinistra. Il valore assunto dal pixel dopo l’elaborazione è il valore assoluto della massima differenza tre esso ed i suoi vicini in alto a sinistra:
Filtri Sigma
Sono filtri passa-alto non lineari. Essi evidenziano i contorni ed i dettagli settando i pixel al valore medio dell’intorno considerato, se la loro deviazione da questo valore non è significativa. Opera secondo il seguente criterio:
Filtri di ordine n-esimo
E’ un’estensione del filtro mediano. È un filtro non lineare che assegna ad ogni pixel il valore n-esimo del suo contorno (quando ordinato in ordine crescente). Il valore N specifica l’ordine del filtro, che si può usare per moderare l’effetto del filtro sull’intensità totale dell’immagine. Un ordine più basso corrisponde a una immagine più scura ; un ordine più alto corrisponde ad una immagine più brillante. Supponiamo di avere la seguente situazione:
Si ordinano i valori dei pixel in maniera crescente ed in base all’ordine del filtro avrò il nuovo valore che assumerà il pixel. La tabella seguente mostra cosa accade nell’esempio precedente in base all’ordine del filtro:
Per un filtro di taglia f, l’ordine n-esimo può andare da 0 a f2-1. Si possono avere le seguenti situazioni: Se N (f2-1)/2, il filtro ha la tendenza a dilatare le regioni chiare Se N=(f2-1), ogni pixel è sostituito con il massimo valore locale
View more...
Comments