Elaborazione Delle Immagini Digitali

17
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.

Transcript of Elaborazione Delle Immagini Digitali

Page 1: Elaborazione Delle Immagini Digitali

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.

Page 2: Elaborazione Delle Immagini Digitali

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

Page 3: Elaborazione Delle Immagini Digitali

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 FILTRI

Lineare

Highpass

Lowpass

Gradiente, Laplaciano

Smoothing, Gaussiano

Non lineare

Highpass

Lowpass

Gradiente, Roberts, Sobel, Prewitt, Differenziazione, Sigma

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.

Page 4: Elaborazione Delle Immagini Digitali

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:

a d c

b x b

c d a

Page 5: Elaborazione Delle Immagini Digitali

Con a, b, c, d interi e positivi e x>1.

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.

Page 6: Elaborazione Delle Immagini Digitali

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:

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:

Page 7: Elaborazione Delle Immagini Digitali

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.

Page 8: Elaborazione Delle Immagini Digitali

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:

Page 9: Elaborazione Delle Immagini Digitali

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.

Page 10: Elaborazione Delle Immagini Digitali

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.

Page 11: Elaborazione Delle Immagini Digitali

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:

Page 12: Elaborazione Delle Immagini Digitali

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 scure

Se N=0, ogni pixel è sostituito con il minimo valore locale

Se N=(f2-1)/2, ogni pixel è sostituito dal suo valore mediano locale. Verranno in pache

parole eliminati i pixel più scuri ed i pixel più chiari.

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