21
mag
Estrazione delle features dalle impronte digitali
Postato da il 21-05-2009 alle ore 19:12:56


Introduzione

Innanzitutto mi sembra doveroso inizare dando un infarinatura  generale per quanto riguarda la terminologia e la teoria dell’argomento che voglio introdurre in questo paper, ovvero le tecniche di estrazione delle feature (termine che andremo ad analizzare tra poco) dalle impronte digitali, feature che vengono successivamente utilizzate per confrontare due impronte e determinare se appartengono allo stesso individuo .

L’estrazione delle features, consiste nel determinare quali sono, dove sono e dove si trovano alcune caratteristiche fondamentali (chiamate appunto features) in una determinata impronta . Tali caratteristiche non sono altro che, ad esempio, i punti di intersezione di due o più righe dell impronta, delle “isole” ovvero punti isolati, biforcazioni e così via che, considerate globalmente, rendono l’impronta unica per ogni individuo .

Per l’estrazione da un immagine di partenza, si usano diversi algoritmi di digital image processing, algoritmi che generano ad ogni “step” della catena l’input dell’algoritmo successivo, e così fino alla fine dell’estrazione .

In questo articolo ho presentato la mia libreria MSP che implementa gli algoritmi necessari per il nostro scopo, nonchè un programma di esempio che usando tale libreria estrae le features da un impronta, ed è proprio questo programma che andrò ad analizzare passo passo, con i relativi output, spiegando il significato di ogni elaborazione applicata .

Immagine iniziale

Nel programma di esempio uso l’immagine finger.png, un png 189×256 in scala di grigi che rappresenta il nostro input iniziale .

finger

Stage 1 : Softening

La prima elaborazione che viene applicata all’immagine è il cosiddetto softening (letteralmente “ammorbidimento”), tramite il quale viene ridotto il contrasto dell’immagine allo scopo di eliminare eventuali disturbi ditali, una sorta di pulizia dell’immagine iniziale quindi .

soften

Stage 2: Orientation Mask

Il passo successivo consiste nell’estrarre una “maschera” di orientamento, ovvero una maschera nella quale si determina letteralmente l’orientamento geometrico delle porzioni dell’immagine che contengono delle informazioni utili, tale elaborazione si ottiene tramite l’applicazione in cascata di una serie di filtri passa basso .

orientation

Stage 2 : Frequency Mask

Dopo la maschera di orientamento, si estrae la mappa delle frequenze dell’immagine, vale a dire una maschera che determina in questo caso l’intensità delle informazioni nelle zone evidenziate dalla maschera precedente . In questo caso non posso inserire un immagine poichè la maschera fondamentalmente è un vettore monodimensionale difficilmente rappresentabile in 2D .

Stage 3 : Entropy Mask

Questo passaggio è fondamentale ai fini della nostra estrazione finale, poichè il calcolo della maschera dell’entropia ci consente di determinare con estrema precisione in quale “quadrante” dell’impronta si trovano le informazioni utili, escludendo dall’immagine tutte le parti che per un motivo o per un altro (es. disturbi, porzioni vuote, etc) non servono .

entropy(Come vedete è stata esclusa dall’immagine tutta la porzione esterna.)

Stage 4: Gabor Filter Enhancement

Tramite la maschera di orientamento e la maschera delle frequenze, è possibile applicare all’immagine il filtro di Gabor, il cui operatore fondamentale è definito con




dove


e


Questa elaborazione, che diminuisce drasticamente i disturbi sull’immagine e ne intensifica le caratteristiche fondamentali, utilizza le due maschere precedentemente create per determinare se un determinato quadrante dell’immagine è un disturbo e quindi va eliminato, o se si tratta di un informazione che rischia di andare persa e quindi va “incrementata” (aumentandone il contrasto) .

gabor

Stage 5: Binarization

Come ultimo filtro per ripulire l’immagine, viene applicata una semplice binarizzazione, ovvero vengono rimossi tutti i pixel il cui colore non è puro nero (o cmq non è superiore ad una determinata soglia), questo per eliminare tutti gli eventuali disturbi residui in seguito all’applicazione del filtro di Gabor.

binarize

Stage 6: Thinning

Arriviamo ora alla pre-elaborazione più importante, il thinning dell’immagine binarizzata e ripulita .

Il thinning consiste nel ridurre tutti i bordi attivi dell’immagine (le righe per capirci), a linee di un pixel di spessore, creando così uno scheletro vero e proprio dell’impronta, scheletro che viene calcolando tramite l’algoritmo hit-n-miss il quale fondamentalmente applica 4 matrici di convoluzione ad ogni pixel, eliminando quelli “in più” .

thin

Stage 7: Feature Extraction

Siamo giunti allo stage finale della catena, l’estrazione vera e propria che, utilizzando le maschere precedentemente elaborate, identifica le features nello scheletro dell’impronta, calcolando i “neighbours pixels” (pixel adiacenti) per ogni pixel e in tal modo determinando se si tratta di una feature o di una normale linea da ignorare .

featured(Immagine finale con dei quadrati bianchi che segnalano le features.)

La biometria è un campo dell’informatica in continua evoluzione e di giorno in giorno ci sono centinaia di ricercatori in tutto il mondo che ottimizzano gli algoritmi già esistenti o ne inventano di completamente nuovi e più efficienti e/o accurati dei predecessori, di conseguenza quello che vi ho appena illustrato e che ho implementato della libreria MSP è solo uno dei tanti metodi attualmente possibili, tutta via, presentando vari stage ben distinti tra di loro, si presta bene alla natura didattica di questo articolo in quanto è facile, come vedete voi stessi, capire lo scopo di ogni singolo passaggio e l’impatto che ha sull’immagine iniziale .

Popularity: 5% [?]

Ti potrebbe interessare:

  1. MSP – Multi-Dimensional Space Processing Library Uno dei rami che mi affascina di più della programmazione...
  2. Sobel Edge Detection Nella biometria l’algoritmo di Sobel è uno dei più famosi...
  3. C/C++ Function Pointers In questo paper spiego cosa sono i function pointers, o...
  4. GitHub : Sarà meglio di sourceforge ? E’ da un po di giorni che sto studiando github,...
  5. C/C++ Code Optimization Alcune semplici regole da seguire per scrivere codice C/C++ ottimizzato...
blog comments powered by Disqus