<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>evilsocket.net &#187; Biometria</title>
	<atom:link href="http://www.evilsocket.net/category/programmazione/biometria/feed" rel="self" type="application/rss+xml" />
	<link>http://www.evilsocket.net</link>
	<description>If you can't understand it, it doesn't mean it's wrong ...</description>
	<lastBuildDate>Wed, 21 Jul 2010 00:16:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Pubblicato Eigetron</title>
		<link>http://www.evilsocket.net/197/pubblicato-eigetron.html</link>
		<comments>http://www.evilsocket.net/197/pubblicato-eigetron.html#comments</comments>
		<pubDate>Sun, 31 May 2009 18:12:55 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=197</guid>
		<description><![CDATA[Come anticipato nell&#8217;articolo di ieri, ho realizzato un sistema di riconoscimento facciale che ora ho pubblicato . Eigetron Ã¨ un sistema di riconoscimento facciale completamente scritto da zero che utilizza l&#8217;algoritmo delle facce di Eigen per un matching abbastanza preciso rispetto ad un database precedentemente calcolato . Per la decomposizione degli eigenvalues e eigenvectors ho [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/191/pubblicato-bioidentify.html' rel='bookmark' title='Permanent Link: Pubblicato BioIdentify'>Pubblicato BioIdentify</a></li>
<li><a href='http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html' rel='bookmark' title='Permanent Link: Eigen Fast Decomposition : Work in progress :D'>Eigen Fast Decomposition : Work in progress :D</a></li>
<li><a href='http://www.evilsocket.net/181/adotta-un-hacker-d.html' rel='bookmark' title='Permanent Link: Adotta un hacker ! :D'>Adotta un hacker ! :D</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.eeel.nist.gov/oles/images/biomface.jpg" alt="" width="65" height="88" />Come anticipato nell&#8217;<a href="http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html" target="_blank">articolo di ieri</a>, ho realizzato un sistema di riconoscimento facciale che ora ho pubblicato .</p>
<p>Eigetron Ã¨ un sistema di riconoscimento facciale completamente scritto da zero che utilizza l&#8217;algoritmo delle <a href="http://en.wikipedia.org/wiki/Eigenface" target="_blank">facce di Eigen</a> per un matching abbastanza preciso rispetto ad un database precedentemente calcolato . Per la decomposizione degli eigenvalues e eigenvectors ho utilizzato l&#8217;algoritmo di Jacobi che rende la procedura, su matrici simmetriche, molto molto veloce .</p>
<p><span id="more-197"></span><a href="http://github.com/evilsocket/Eigetron/tree/master" target="_blank">Pagina del progetto su github</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=197">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=197&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/191/pubblicato-bioidentify.html' rel='bookmark' title='Permanent Link: Pubblicato BioIdentify'>Pubblicato BioIdentify</a></li>
<li><a href='http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html' rel='bookmark' title='Permanent Link: Eigen Fast Decomposition : Work in progress :D'>Eigen Fast Decomposition : Work in progress :D</a></li>
<li><a href='http://www.evilsocket.net/181/adotta-un-hacker-d.html' rel='bookmark' title='Permanent Link: Adotta un hacker ! :D'>Adotta un hacker ! :D</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/197/pubblicato-eigetron.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Eigen Fast Decomposition : Work in progress :D</title>
		<link>http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html</link>
		<comments>http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html#comments</comments>
		<pubDate>Sun, 31 May 2009 04:07:59 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[Programmazione]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=193</guid>
		<description><![CDATA[Come avrete ormai capito, sono un fissato della biometria e computer vision in generale &#8230; cosÃ¬, dopo aver studiato come un matto ed implementato un sistema di riconoscimento delle impronte digitali, ora passo allo studio per la realizzazione di un sistema di riconoscimento facciale . Il metodo che per adesso sto studiando Ã¨ abbastanza vecchiotto [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/197/pubblicato-eigetron.html' rel='bookmark' title='Permanent Link: Pubblicato Eigetron'>Pubblicato Eigetron</a></li>
<li><a href='http://www.evilsocket.net/191/pubblicato-bioidentify.html' rel='bookmark' title='Permanent Link: Pubblicato BioIdentify'>Pubblicato BioIdentify</a></li>
<li><a href='http://www.evilsocket.net/185/come-creare-finestre-su-x11.html' rel='bookmark' title='Permanent Link: Come creare finestre su X11'>Come creare finestre su X11</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Come avrete ormai capito, sono un fissato della biometria e computer vision in generale &#8230; cosÃ¬, dopo aver studiato come un matto ed implementato un sistema di riconoscimento delle impronte digitali, ora passo allo studio per la realizzazione di un sistema di riconoscimento facciale <img src='http://www.evilsocket.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  .</p>
<p>Il metodo che per adesso sto studiando Ã¨ abbastanza vecchiotto a dire la veritÃ , ma tutt&#8217;ora sembra essere uno dei piÃ¹ precisi ed efficienti, trattasi del metodo per decomposizione di Eigen .</p>
<p><span id="more-193"></span>In pratica Ã¨ un metodo che &#8220;scompone&#8221; un segnali basilari una faccia e studia, basandosi sulla distribuzione probabilistica dei tratti umani, quanto essa ha in comune con un database precedentemente calcolato .</p>
<p>Il software Ã¨ quasi realizzato, ma in realtÃ  la prima versione che ho scritto Ã¨ troppo lenta, cosÃ¬ sto studiando il metodo di <a href="it.wikipedia.org/wiki/Carl_Jacobi" target="_blank">Jacobi</a> per un estrazione veloce degli valori di eigen partendo da una matrice di covarianza, metodo che velocizzerÃ  notevolmente i tempi di creazione del database <img src='http://www.evilsocket.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  .</p>
<p>Ho trovato estremamente interessante ed esaustivo <a href="http://onionesquereality.wordpress.com/2009/02/11/face-recognition-using-eigenfaces-and-distance-classifiers-a-tutorial/" target="_blank">questo articolo </a>che, nonostante presenti un esposizione formale in linguaggio matematico, Ã¨ facilmente comprensibile, inoltre <a href="http://www.face-rec.org/algorithms/PCA/jcn.pdf" target="_blank">questo pdf </a>mi sta aiutando allo stesso modo .</p>
<p>Avrei potuto utilizzare il framework opencv e realizzare il tutto in una decina di righe di codice, ma cosÃ¬ non avrei imparato un bel niente e non mi sarei divertito XD .</p>
<p>Stay tuned <img src='http://www.evilsocket.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=193">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=193&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/197/pubblicato-eigetron.html' rel='bookmark' title='Permanent Link: Pubblicato Eigetron'>Pubblicato Eigetron</a></li>
<li><a href='http://www.evilsocket.net/191/pubblicato-bioidentify.html' rel='bookmark' title='Permanent Link: Pubblicato BioIdentify'>Pubblicato BioIdentify</a></li>
<li><a href='http://www.evilsocket.net/185/come-creare-finestre-su-x11.html' rel='bookmark' title='Permanent Link: Come creare finestre su X11'>Come creare finestre su X11</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Pubblicato BioIdentify</title>
		<link>http://www.evilsocket.net/191/pubblicato-bioidentify.html</link>
		<comments>http://www.evilsocket.net/191/pubblicato-bioidentify.html#comments</comments>
		<pubDate>Fri, 29 May 2009 23:28:43 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=191</guid>
		<description><![CDATA[Dopo qualche mese dalla sua stesura ho deciso di pubblicare e condividere il mio primo progetto open che include tutte le funzioni necessarie al fine di elaborare delle impronte digitali . BioIdentify (o bioid) Ã¨ un applicazione da riga di comando che consente di estrarre le features dalle impronte digitali e salvarle in un file [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/197/pubblicato-eigetron.html' rel='bookmark' title='Permanent Link: Pubblicato Eigetron'>Pubblicato Eigetron</a></li>
<li><a href='http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html' rel='bookmark' title='Permanent Link: Eigen Fast Decomposition : Work in progress :D'>Eigen Fast Decomposition : Work in progress :D</a></li>
<li><a href='http://www.evilsocket.net/207/iphone-hacking-with-pirni-aggiornamento.html' rel='bookmark' title='Permanent Link: iPhone Hacking with Pirni (aggiornamento !)'>iPhone Hacking with Pirni (aggiornamento !)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dopo qualche mese dalla sua stesura ho deciso di pubblicare e condividere il mio primo progetto open che include tutte le funzioni necessarie al fine di elaborare delle impronte digitali .</p>
<p>BioIdentify (o bioid) Ã¨ un applicazione da riga di comando che consente di estrarre le features dalle impronte digitali e salvarle in un file &#8220;BIR&#8221; (<strong>B</strong>iometric<strong> I</strong>dentification <strong>R</strong>ecord), eseguire matching tra due impronte o identificare il padrone di un impronta all&#8217;interno di un database di BIRs precedentemente elaborato dall&#8217;applicazione stessa .</p>
<p><span id="more-191"></span></p>
<p>C&#8217;Ã¨ ancora un bel po da fare, non tanto nella fase di estrazione che si puÃ² dire pressochÃ¨ completa (a parte qualche accorgimento qua e la che devo fare), ma piÃ¹ che altro nella parte di matching, che ha una precisione di circa l&#8217;88% (meglio alzarla no ? ^^) e nell&#8217;efficienza complessiva .</p>
<p><a href="http://github.com/evilsocket/BioIdentify/tree/master" target="_blank">Pagina github del progetto</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=191">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=191&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/197/pubblicato-eigetron.html' rel='bookmark' title='Permanent Link: Pubblicato Eigetron'>Pubblicato Eigetron</a></li>
<li><a href='http://www.evilsocket.net/193/eigen-fast-decomposition-work-in-progress-d.html' rel='bookmark' title='Permanent Link: Eigen Fast Decomposition : Work in progress :D'>Eigen Fast Decomposition : Work in progress :D</a></li>
<li><a href='http://www.evilsocket.net/207/iphone-hacking-with-pirni-aggiornamento.html' rel='bookmark' title='Permanent Link: iPhone Hacking with Pirni (aggiornamento !)'>iPhone Hacking with Pirni (aggiornamento !)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/191/pubblicato-bioidentify.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Voxifera : Riconoscimento vocale &amp; esecuzione comandi</title>
		<link>http://www.evilsocket.net/154/voxifera-riconoscimento-vocale-esecuzione-comandi.html</link>
		<comments>http://www.evilsocket.net/154/voxifera-riconoscimento-vocale-esecuzione-comandi.html#comments</comments>
		<pubDate>Sun, 24 May 2009 15:42:13 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>
		<category><![CDATA[comandi vocali]]></category>
		<category><![CDATA[dct]]></category>
		<category><![CDATA[discrete cousine transform]]></category>
		<category><![CDATA[dsp]]></category>
		<category><![CDATA[fourier]]></category>
		<category><![CDATA[microfono]]></category>
		<category><![CDATA[riconoscimento vocale]]></category>
		<category><![CDATA[speech recognition]]></category>
		<category><![CDATA[vocal]]></category>
		<category><![CDATA[voxifera]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=154</guid>
		<description><![CDATA[Chi di voi segue il sito di blacklight, saprÃ  che ultimamente sta lavorando sul software Voxifera (il vecchio nome era vocal, ma era troppo banale stando a quello che dice lui XD) . In pratica Ã¨ un software che interfacciandosi al microfono, registra la vostra voce ed esegue una serie di elaborazioni . In seguito [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Chi di voi segue il sito di blacklight, saprÃ  che ultimamente sta lavorando sul software Voxifera (il vecchio nome era vocal, ma era troppo banale stando a quello che dice lui XD) .</p>
<p><span id="more-154"></span>In pratica Ã¨ un software che interfacciandosi al microfono, registra la vostra voce ed esegue una serie di elaborazioni .</p>
<p>In seguito a queste elaborazioni potrete associare un comando a quella parola, comando che sarÃ  eseguito dal software ogni qual volta pronuncerete quella determinata parola .</p>
<p>Dato che il sorgente ha bisogno di parecchie ottimizzazioni (se non uno stravolgimento totale dell&#8217;algoritmo XD) abbiamo deciso di lavorarci insieme, quindi da questo momento sono diventato co-autore di Voxifera ^^ .</p>
<p><a href="http://github.com/BlackLight/Voxifera/tree/master" target="_blank">Voxifera su github.com</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=154">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=154&type=feed" alt="" />

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/154/voxifera-riconoscimento-vocale-esecuzione-comandi.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estrazione delle features dalle impronte digitali</title>
		<link>http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html</link>
		<comments>http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html#comments</comments>
		<pubDate>Thu, 21 May 2009 18:12:56 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[Papers]]></category>
		<category><![CDATA[biometry]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[etropy]]></category>
		<category><![CDATA[extraction]]></category>
		<category><![CDATA[feature extraction]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[finger matching]]></category>
		<category><![CDATA[fingerprints]]></category>
		<category><![CDATA[gabor]]></category>
		<category><![CDATA[impronte digitali]]></category>
		<category><![CDATA[msp]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=135</guid>
		<description><![CDATA[Introduzione Innanzitutto mi sembra doveroso inizare dando un infarinaturaÂ  generale per quanto riguarda la terminologia e la teoria dell&#8217;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 [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html' rel='bookmark' title='Permanent Link: MSP &#8211; Multi-Dimensional Space Processing Library'>MSP &#8211; Multi-Dimensional Space Processing Library</a></li>
<li><a href='http://www.evilsocket.net/72/sobel-edge-detection.html' rel='bookmark' title='Permanent Link: Sobel Edge Detection'>Sobel Edge Detection</a></li>
<li><a href='http://www.evilsocket.net/54/cc-function-pointers.html' rel='bookmark' title='Permanent Link: C/C++ Function Pointers'>C/C++ Function Pointers</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h2>Introduzione</h2>
<p>Innanzitutto mi sembra doveroso inizare dando un infarinaturaÂ  generale per quanto riguarda la terminologia e la teoria dell&#8217;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 .</p>
<p><span id="more-135"></span></p>
<p>L&#8217;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 &#8220;isole&#8221; ovvero punti isolati, biforcazioni e cosÃ¬ via che, considerate globalmente, rendono l&#8217;impronta unica per ogni individuo .</p>
<p>Per l&#8217;estrazione da un immagine di partenza, si usano diversi algoritmi di digital image processing, algoritmi che generano ad ogni &#8220;step&#8221; della catena l&#8217;input dell&#8217;algoritmo successivo, e cosÃ¬ fino alla fine dell&#8217;estrazione .</p>
<p>In <a href="http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html" target="_blank">questo articolo </a>ho presentato la mia libreria MSP che implementa gli algoritmi necessari per il nostro scopo, nonchÃ¨ un <a href="http://www.evilsocket.net/sources/msp_ex3.cpp.txt" target="_blank">programma di esempio </a>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 .</p>
<p><strong>Immagine iniziale</strong></p>
<p>Nel programma di esempio uso l&#8217;immagine finger.png, un png 189&#215;256 in scala di grigi che rappresenta il nostro input iniziale .</p>
<p><img class="aligncenter size-full wp-image-136" title="finger" src="http://www.evilsocket.net/wp-content/uploads/2009/05/finger.png" alt="finger" width="189" height="256" /></p>
<h2><strong>Stage 1 : Softening </strong></h2>
<p>La prima elaborazione che viene applicata all&#8217;immagine Ã¨ il cosiddetto softening (letteralmente &#8220;ammorbidimento&#8221;), tramite il quale viene ridotto il contrasto dell&#8217;immagine allo scopo di eliminare eventuali disturbi ditali, una sorta di pulizia dell&#8217;immagine iniziale quindi .</p>
<h2><img class="aligncenter size-full wp-image-137" title="soften" src="http://www.evilsocket.net/wp-content/uploads/2009/05/soften.png" alt="soften" width="189" height="256" /><strong><br />
</strong></h2>
<h2><strong>Stage 2: Orientation Mask</strong></h2>
<p>Il passo successivo consiste nell&#8217;estrarre una &#8220;maschera&#8221; di orientamento, ovvero una maschera nella quale si determina letteralmente l&#8217;orientamento geometrico delle porzioni dell&#8217;immagine che contengono delle informazioni utili, tale elaborazione si ottiene tramite l&#8217;applicazione in cascata di una serie di filtri passa basso .</p>
<p><img class="aligncenter size-full wp-image-138" title="orientation" src="http://www.evilsocket.net/wp-content/uploads/2009/05/orientation.png" alt="orientation" width="189" height="256" /></p>
<h2><strong>Stage 2 : Frequency Mask</strong></h2>
<p>Dopo la maschera di orientamento, si estrae la mappa delle frequenze dell&#8217;immagine, vale a dire una maschera che determina in questo caso l&#8217;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 .</p>
<h2><strong>Stage 3 : Entropy Mask</strong></h2>
<p>Questo passaggio Ã¨ fondamentale ai fini della nostra estrazione finale, poichÃ¨ il calcolo della maschera dell&#8217;<a href="http://it.wikipedia.org/wiki/Entropia_(teoria_dell%27informazione)" target="_blank">entropia </a>ci consente di determinare con estrema precisione in quale &#8220;quadrante&#8221; dell&#8217;impronta si trovano le informazioni utili, escludendo dall&#8217;immagine tutte le parti che per un motivo o per un altro (es. disturbi, porzioni vuote, etc) non servono .</p>
<h6 style="text-align: center;"><img class="aligncenter size-full wp-image-139" title="entropy" src="http://www.evilsocket.net/wp-content/uploads/2009/05/entropy.png" alt="entropy" width="189" height="256" />(Come vedete Ã¨ stata esclusa dall&#8217;immagine tutta la porzione esterna.)</h6>
<h2 style="text-align: left;"><strong>Stage 4: Gabor Filter Enhancement</strong></h2>
<p>Tramite la maschera di orientamento e la maschera delle frequenze, Ã¨ possibile applicare all&#8217;immagine il filtro di <strong>Gabor</strong>, il cui operatore fondamentale Ã¨ definito con<br/></p>
<p><img class="alignleft" src="http://upload.wikimedia.org/math/7/f/7/7f773702458b003fdc813e4dc76f74e1.png" alt="" width="482" height="51" /><br/><br/><br />
dove<br/></p>
<p><img class="alignleft" src="http://upload.wikimedia.org/math/d/6/8/d68e7c786c169ceabfc606f06fdf00be.png" alt="" width="169" height="22" /><br/></p>
<p>e<br/></p>
<p><img class="alignleft" src="http://upload.wikimedia.org/math/1/3/0/130935c72889358f1b37019ad92ac035.png" alt="" width="184" height="22" /><br/></p>
<p>Questa elaborazione, che diminuisce drasticamente i disturbi sull&#8217;immagine e ne intensifica le caratteristiche fondamentali, utilizza le due maschere precedentemente create per determinare se un determinato quadrante dell&#8217;immagine Ã¨ un disturbo e quindi va eliminato, o se si tratta di un informazione che rischia di andare persa e quindi va &#8220;incrementata&#8221; (aumentandone il contrasto) .</p>
<p><img class="aligncenter size-full wp-image-141" title="gabor" src="http://www.evilsocket.net/wp-content/uploads/2009/05/gabor.png" alt="gabor" width="189" height="256" /></p>
<h2><strong>Stage 5: Binarization</strong></h2>
<p>Come ultimo filtro per ripulire l&#8217;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&#8217;applicazione del filtro di Gabor.</p>
<p><img class="aligncenter size-full wp-image-143" title="binarize" src="http://www.evilsocket.net/wp-content/uploads/2009/05/binarize.png" alt="binarize" width="189" height="256" /></p>
<h2>Stage 6: Thinning</h2>
<p>Arriviamo ora alla pre-elaborazione piÃ¹ importante, il thinning dell&#8217;immagine binarizzata e ripulita .</p>
<p>Il thinning consiste nel ridurre tutti i bordi attivi dell&#8217;immagine (le righe per capirci), a linee di un pixel di spessore, creando cosÃ¬ uno scheletro vero e proprio dell&#8217;impronta, scheletro che viene calcolando tramite l&#8217;<a href="http://fourier.eng.hmc.edu/e161/lectures/morphology/node4.html" target="_blank">algoritmo hit-n-miss</a> il quale fondamentalmente applica 4 matrici di convoluzione ad ogni pixel, eliminando quelli &#8220;in piÃ¹&#8221; .</p>
<p><img class="aligncenter size-full wp-image-144" title="thin" src="http://www.evilsocket.net/wp-content/uploads/2009/05/thin.png" alt="thin" width="189" height="256" /></p>
<h2>Stage 7: Feature Extraction</h2>
<p>Siamo giunti allo stage finale della catena, l&#8217;estrazione vera e propria che, utilizzando le maschere precedentemente elaborate, identifica le features nello scheletro dell&#8217;impronta, calcolando i &#8220;neighbours pixels&#8221; (pixel adiacenti) per ogni pixel e in tal modo determinando se si tratta di una feature o di una normale linea da ignorare .</p>
<h6 style="text-align: center;"><img class="aligncenter size-full wp-image-145" title="featured" src="http://www.evilsocket.net/wp-content/uploads/2009/05/featured.png" alt="featured" width="189" height="256" />(Immagine finale con dei quadrati bianchi che segnalano le features.)</h6>
<p style="text-align: left;">La biometria Ã¨ un campo dell&#8217;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&#8217;impatto che ha sull&#8217;immagine iniziale .</p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=135">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=135&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html' rel='bookmark' title='Permanent Link: MSP &#8211; Multi-Dimensional Space Processing Library'>MSP &#8211; Multi-Dimensional Space Processing Library</a></li>
<li><a href='http://www.evilsocket.net/72/sobel-edge-detection.html' rel='bookmark' title='Permanent Link: Sobel Edge Detection'>Sobel Edge Detection</a></li>
<li><a href='http://www.evilsocket.net/54/cc-function-pointers.html' rel='bookmark' title='Permanent Link: C/C++ Function Pointers'>C/C++ Function Pointers</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSP &#8211; Multi-Dimensional Space Processing Library</title>
		<link>http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html</link>
		<comments>http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html#comments</comments>
		<pubDate>Tue, 19 May 2009 00:03:36 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>
		<category><![CDATA[biometry]]></category>
		<category><![CDATA[blurring]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[convolution]]></category>
		<category><![CDATA[deviance]]></category>
		<category><![CDATA[edge detection]]></category>
		<category><![CDATA[edges]]></category>
		<category><![CDATA[entropy]]></category>
		<category><![CDATA[fingerprints]]></category>
		<category><![CDATA[frequency map]]></category>
		<category><![CDATA[gabor]]></category>
		<category><![CDATA[histogram]]></category>
		<category><![CDATA[hit n miss]]></category>
		<category><![CDATA[impronte]]></category>
		<category><![CDATA[lowpass filter]]></category>
		<category><![CDATA[mask]]></category>
		<category><![CDATA[msp]]></category>
		<category><![CDATA[Multi-Dimensional Space Processing Library]]></category>
		<category><![CDATA[orientation]]></category>
		<category><![CDATA[prewitt]]></category>
		<category><![CDATA[retina]]></category>
		<category><![CDATA[softening]]></category>
		<category><![CDATA[thinning]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=122</guid>
		<description><![CDATA[Uno dei rami che mi affascina di piÃ¹ della programmazione Ã¨ la biometria, ovvero detto in parole povere, quella scienza informatica che studia i metodi di interazione tra mondo reale e mondo virtuale . Scanner dell&#8217;impronta digitale, della retina, rilevatori di movimento &#8230; tutti questi concetti fanno parte della biometria . PiÃ¹ volte mi sono [...]


Related posts:<ol><li><a href='http://www.evilsocket.net/1004/redis-client-library-for-hybris.html' rel='bookmark' title='Permanent Link: Redis client library for Hybris'>Redis client library for Hybris</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
<li><a href='http://www.evilsocket.net/12/neural-network.html' rel='bookmark' title='Permanent Link: Neural Network'>Neural Network</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Uno dei rami che mi affascina di piÃ¹ della programmazione Ã¨ la biometria, ovvero detto in parole povere, quella scienza informatica che studia i metodi di interazione tra mondo reale e mondo virtuale .</p>
<p>Scanner dell&#8217;impronta digitale, della retina, rilevatori di movimento &#8230; tutti questi concetti fanno parte della biometria .</p>
<p><span id="more-122"></span>PiÃ¹ volte mi sono trovato a dover implementare diversi algoritmi in proposito, anche molto complessi, per poi archiviare il pezzo di codice e lasciarlo li come un piccolo file a se stante .</p>
<p>CosÃ¬ ho pensato di scrivere un unica grande classe C++ che racchiudesse la maggiorparte degli algoritmi biometrici o cmq dell&#8217;analisi digitale dei segnali, rappresentando l&#8217;oggetto principale come uno spazio N-dimensionale a discrezione di colui che usa la libreria .</p>
<p>In questa classe template, oltre alle normali operazioni matriciali/vettoriali, ho implementato tra i tanti i seguenti algoritmi :</p>
<ul>
<li>Applicazione di maschere di sottrazione o addizione .</li>
<li>Caricamento e salvataggio sia di matrici &#8220;raw&#8221; che di qualsiasi formato immagine .</li>
<li>Redimensionamento adattivo e/o selettivo .</li>
<li>Filtering passa basso e passa alto .</li>
<li>Filtering della maschera di orientamento .</li>
<li>Operatore di Gabor .</li>
<li>Calcolo dell&#8217;entropia .</li>
<li>Rilevatore di bordi tramite algoritmo di Prewitt .</li>
<li>Thinning tramite l&#8217;algoritmo Hit-and-miss .</li>
<li>Calcolo della mappa delle frequenze e dell&#8217;istogramma associato allo spettro dei colori .</li>
<li>Blurring e softening .</li>
<li>Dilatazione matriciale .</li>
<li>Erosione matriciale .</li>
<li>Media, variazione, etc .</li>
<li>Binarizzazione e normalizzazione della matrice .</li>
<li>Trasposizione della matrice .</li>
<li>Integralizzazione della matrice .</li>
<li>Calcolo delle &#8220;features&#8221; di un impronta digitale .</li>
</ul>
<p>La classe, contenuta in un unico file .hpp, Ã¨ totalmente documentata seguendo lo standard doxy cosÃ¬ da poter essere facilmente implementabile .</p>
<p><strong>Scarica</strong> <strong><a href="http://www.evilsocket.net/sources/msp.hpp.txt" target="_blank">msp.hpp</a></strong></p>
<p>Inoltre vi fornisco tre programmi di esempio, tanto per farvi capire le potenzialitÃ  di questa classe .</p>
<ol>
<li><a href="http://www.evilsocket.net/sources/msp_ex1.cpp.txt" target="_blank">Creazione di una rete neurale a perceptron e relativa fase di training su un pattern noto .</a></li>
<li><a href="http://www.evilsocket.net/sources/msp_ex2.cpp.txt" target="_blank">Acquisizione video da una webcam e sensore di movimento nell&#8217;inquadratura .</a></li>
<li><a href="http://www.evilsocket.net/sources/msp_ex3.cpp.txt" target="_blank">Calcolo delle features di un impronta digitale e preparazione al matching con un database noto .</a></li>
</ol>
<p>Spero che vi piaccia <img src='http://www.evilsocket.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=122">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=122&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/1004/redis-client-library-for-hybris.html' rel='bookmark' title='Permanent Link: Redis client library for Hybris'>Redis client library for Hybris</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
<li><a href='http://www.evilsocket.net/12/neural-network.html' rel='bookmark' title='Permanent Link: Neural Network'>Neural Network</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sobel Edge Detection</title>
		<link>http://www.evilsocket.net/72/sobel-edge-detection.html</link>
		<comments>http://www.evilsocket.net/72/sobel-edge-detection.html#comments</comments>
		<pubDate>Wed, 13 May 2009 07:35:35 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Papers]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[biometry]]></category>
		<category><![CDATA[edge detection]]></category>
		<category><![CDATA[sobel]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=72</guid>
		<description><![CDATA[Nella biometria l&#8217;algoritmo di Sobel Ã¨ uno dei piÃ¹ famosi ed utilizzati per determinare quali sono i contorni di una data immagine e successivamente eseguire altre elaborazioni. Scarica Related posts:MSP &#8211; Multi-Dimensional Space Processing Library Estrazione delle features dalle impronte digitali


Related posts:<ol><li><a href='http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html' rel='bookmark' title='Permanent Link: MSP &#8211; Multi-Dimensional Space Processing Library'>MSP &#8211; Multi-Dimensional Space Processing Library</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Nella biometria l&#8217;algoritmo di Sobel Ã¨ uno dei piÃ¹ famosi ed utilizzati per determinare quali sono i contorni di una data immagine e successivamente eseguire altre elaborazioni.</p>
<p><a href="http://www.evilsocket.net/papers/sobel.pdf" target="_blank">Scarica</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=72">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=72&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html' rel='bookmark' title='Permanent Link: MSP &#8211; Multi-Dimensional Space Processing Library'>MSP &#8211; Multi-Dimensional Space Processing Library</a></li>
<li><a href='http://www.evilsocket.net/135/estrazione-delle-features-dalle-impronte-digitali.html' rel='bookmark' title='Permanent Link: Estrazione delle features dalle impronte digitali'>Estrazione delle features dalle impronte digitali</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/72/sobel-edge-detection.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Neural Network</title>
		<link>http://www.evilsocket.net/12/neural-network.html</link>
		<comments>http://www.evilsocket.net/12/neural-network.html#comments</comments>
		<pubDate>Wed, 13 May 2009 06:17:37 +0000</pubDate>
		<dc:creator>evilsocket</dc:creator>
				<category><![CDATA[Biometria]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Sorgenti]]></category>
		<category><![CDATA[ann]]></category>
		<category><![CDATA[back propagation]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[neural network]]></category>
		<category><![CDATA[rete neurale]]></category>

		<guid isPermaLink="false">http://www.evilsocket.net/?p=12</guid>
		<description><![CDATA[Una classe che rappresenta, object-oriented-parlando, una rete neurale a back propagation piÃ¹ un insieme di altre classi di supporto come i pattern di allenamento . Scarica Related posts:MSP &#8211; Multi-Dimensional Space Processing Library SmartSocket WebAgent PHP Class


Related posts:<ol><li><a href='http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html' rel='bookmark' title='Permanent Link: MSP &#8211; Multi-Dimensional Space Processing Library'>MSP &#8211; Multi-Dimensional Space Processing Library</a></li>
<li><a href='http://www.evilsocket.net/7/smartsocket.html' rel='bookmark' title='Permanent Link: SmartSocket'>SmartSocket</a></li>
<li><a href='http://www.evilsocket.net/128/webagent-php-class.html' rel='bookmark' title='Permanent Link: WebAgent PHP Class'>WebAgent PHP Class</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Una classe che rappresenta, object-oriented-parlando, una rete neurale a back propagation piÃ¹ un insieme di altre classi di supporto come i pattern di allenamento .</p>
<p><a href="http://www.evilsocket.net/sources/nnet.rar" target="_blank">Scarica</a></p>

                            <div id="aspdf">
                                <a href="http://www.evilsocket.net/wp-content/plugins/as-pdf/generate.php?post=12">
                                    <span> </span>
                                </a>
                            </div>
                        <img src="http://www.evilsocket.net/?ak_action=api_record_view&id=12&type=feed" alt="" />

<p>Related posts:<ol><li><a href='http://www.evilsocket.net/122/msp-multi-dimensional-space-processing-library.html' rel='bookmark' title='Permanent Link: MSP &#8211; Multi-Dimensional Space Processing Library'>MSP &#8211; Multi-Dimensional Space Processing Library</a></li>
<li><a href='http://www.evilsocket.net/7/smartsocket.html' rel='bookmark' title='Permanent Link: SmartSocket'>SmartSocket</a></li>
<li><a href='http://www.evilsocket.net/128/webagent-php-class.html' rel='bookmark' title='Permanent Link: WebAgent PHP Class'>WebAgent PHP Class</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.evilsocket.net/12/neural-network.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
