Università degli Studi di Bologna Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Architetture digitali per l'elaborazione dei segnali STUDIO E SVILUPPO DI ALGORITMI PER L'ANALISI DI IMMAGINI DELLA PELLE ACQUISITE TRAMITE UN SENSORE CAPACITIVO Tesi di laurea di: SIMONE PARCA Relatore: Prof. Ing. ROBERTO GUERRIERI Correlatori: Dott. ALESSANDRO BEVILACQUA Ing. ALESSANDRO GHERARDI Sessione estiva Anno accademico 2003-2004 ii Parole chiave image processing, image segmentation, capacitance image, skin ageing, medical imaging iv Indice Introduzione 1 Motivazioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Metodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Struttura della tesi . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1 La pelle: Struttura e morfologia 7 1.1 La Struttura della pelle . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Ricerche sulla pelle . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3 Invecchiamento della pelle . . . . . . . . . . . . . . . . . . . . 9 1.3.1 1.4 Trattamenti della pelle . . . . . . . . . . . . . . . . . . 12 Analisi di immagini: elementi di morfologia . . . . . . . . . . . 14 1.4.1 Proprietà e alcune denizioni . . . . . . . . . . . . . . 14 1.4.2 Apertura e Chiusura con ricostruzione . . . . . . . . . 15 1.4.3 Operatore H-max . . . . . . . . . . . . . . . . . . . . . 16 1.4.4 Segmentazione Watershed . . . . . . . . . . . . . . . . 17 1.4.5 Granulometria . . . . . . . . . . . . . . . . . . . . . . . 20 1.4.6 Limiti dell'approccio morfologico . . . . . . . . . . . . 21 2 Esame della letteratura 2.1 Analisi delle immagini della pelle acquisite con altri strumenti 2.1.1 2.2 23 23 Mountain Technology . . . . . . . . . . . . . . . . . . . 24 Analisi con sensore Capacitivo . . . . . . . . . . . . . . . . . . 26 2.2.1 Impronte digitali . . . . . . . . . . . . . . . . . . . . . 26 2.2.2 Analisi della pelle . . . . . . . . . . . . . . . . . . . . . 28 v vi INDICE 2.3 Studi ARCES . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.3.1 Il lavoro precedente a questa tesi . . . . . . . . . . . . 30 2.3.2 Altre considerazioni . . . . . . . . . . . . . . . . . . . . 32 3 Acquisizione dei dati 35 3.1 Lo strumento di acquisizione: TouchChip . . . . . . . . . . . . 35 3.2 Il metodo di acquisizione . . . . . . . . . . . . . . . . . . . . . 36 3.2.1 Il protocollo di acquisizione . . . . . . . . . . . . . . . 37 3.3 I campioni ottenuti . . . . . . . . . . . . . . . . . . . . . . . . 38 3.4 Analisi del rumore . . . . . . . . . . . . . . . . . . . . . . . . 39 3.5 3.4.1 Rumore dovuto alle caratteristiche del sensore . . . . . 39 3.4.2 Rumore dovuto alle caratteristiche dell'immagine . . . 41 Commenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4 L'algoritmo di analisi delle immagini 47 4.1 Normalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2 Filtraggi basati sul rilevamento di linee . . . . . . . . . . . . . 48 4.3 La segmentazione . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.3.1 Segmentazione a soglia H Variabile . . . . . . . . . . . 56 4.4 Granulometrie . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.5 L'estrazione di features . . . . . . . . . . . . . . . . . . . . . . 66 4.6 4.5.1 Granulometria H-min . . . . . . . . . . . . . . . . . . . 67 4.5.2 Granulometria basata sull'Area di immagini binarie . . 67 4.5.3 La deviazione standard locale . . . . . . . . . . . . . . 69 Altri algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.6.1 Sogliatura a doppia soglia . . . . . . . . . . . . . . . . 70 4.6.2 Etichettatura delle rughe . . . . . . . . . . . . . . . . . 71 5 Risultati 81 5.1 Granulometrie estratte da segmentazione Watershed . . . . . . 82 5.2 Granulometria H-min . . . . . . . . . . . . . . . . . . . . . . . 90 5.3 Deviazione standard locale . . . . . . . . . . . . . . . . . . . . 91 6 Conclusioni e lavori futuri 93 INDICE vii A Momenti e distribuzioni 95 B Regressioni lineari 97 C Note, Curiosità e Bug di Matlab 99 D Implementazione Matlab degli algoritmi usati 101 D.1 Normalizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . 101 D.2 Algoritmi di ltraggio . . . . . . . . . . . . . . . . . . . . . . . 102 D.3 Scelta automatica del parametro H . . . . . . . . . . . . . . . 105 D.4 Granulometrie . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 D.5 Linelabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 D.6 Altre funzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Bibliograa 133 viii INDICE Introduzione Motivazioni L'informatica e l'elettronica hanno fatto, negli ultimi decenni, enormi passi in avanti, le ripercussioni sono evidenti in tutti gli aspetti della vita quotidiana. Uno dei campi che ha compiuto grandi progressi grazie alle nuove tecnologie è quello medico: grazie alla disponibilità di attrezzature sempre più avanzate è possibile eseguire analisi e diagnosi più precise; di pari passo crescono le conoscenze sul nostro corpo e sul suo funzionamento. Il risultato è una migliore prevenzione e cura delle malattie. La pelle, oltre ad essere l'organo più esteso del corpo umano, è anche uno dei più importanti e l'interesse della comunità scientica nei suoi confronti sta crescendo. Il problema dei danni causati dai raggi solari, e del crescente numero di tumori e altre malattie della pelle, sta allarmando l'intera società: la cura della pelle non è più solo un problema estetico, ma un problema di salute e benessere. La comunità scientica dispone di numerosi strumenti per l'analisi della topograa della pelle, ma la maggior parte di questi strumenti sono costosi e dicili da usare, e l'acquisizione dei campioni è complessa e richiede l'esecuzione in un laboratorio specializzato. L'uso di un sensore capacitivo può risolvere tutti questi problemi, e potrebbe permettere la realizzazione di uno strumento portatile e utilizzabile da tutti, dal laboratorio di ricerca all'utente domestico. Lo studio presentato in questa tesi tenta di risolvere i precedenti problemi con l'uso di un dispositivo capacitivo per la caratterizzazione topograca 1 2 INDICE della pelle. Verrà usato un sensore capacitivo disponibile in commercio e normalmente usato per acquisire impronte digitali. Questo dispositivo è stato usato precedentemente per misurare caratteristiche non topograche come l'idratazione, ottenendo buoni risultati. Gli studi saranno incentrati sulla caratterizzazione della supercie della pelle e di come dierenti features siano correlate con l'età. Analizzare il degrado della pelle con il passare degli anni ha una grande importanza nell'industria cosmetica e nella ricerca medica. I campi applicativi possono riguardare: • eetto di creme e cosmetici sulla pelle • analisi del deterioramento della pelle per individuare trattamenti specici • analisi degli eetti solari sulla pelle • determinazione del rischio di tumori (le persone con più di 65 anni con pelli deteriorate hanno il 20% di probabilità in più di contrarre un tumore della pelle) Questo è uno dei primi tentativi compiuti nell'applicazione di questo dispositivo per questo tipo di analisi. Per adesso lo studio è limitato all'analisi di pelli sane, ma si spera in futuro di estendere lo studio a pelli danneggiate o malate. Questa tesi fa parte di una linea globale di investigazione, e si concentrerà sullo studio e la ricerca di algoritmi per elaborazione di immagini della pelle umana acquisite tramite un sensore capacitivo, in particolare sulle operazioni necessarie per il ltraggio e l'estrazione di features correlate con l'età. Il punto di partenza sarà le immagini acquisite con un sensore capacitivo, che ha i seguenti vantaggi: • Permette di ottenere un'immagine della microstruttura della pelle con una buona risoluzione e denizione. • Mette bene in risalto la texture che caratterizza la pelle, fatta di rughe (micro-solchi della pelle) e celle (le aree delineate dalle rughe). INDICE 3 • Il sensore non è inuenzato dall'illuminazione dell'ambiente di acquisizione, essendo capacitivo. • Il dispositivo è economico, di facile utilizzo, compatto e utilizzabile su qualsiasi personal computer. • Viene usato in applicazioni simili (impronte digitali, studi sull'idratazione) • L'acquisizione avviene velocemente ma presenta anche diversi inconvenienti: • La tonalità di grigio è inuenzata da fattori non controllabili, quali la pressione esercitata sul sensore durante l'acquisizione, lo stato di idratazione della pelle, il sottile strato di grasso presente sulla supercie della pelle. • La pressione inuenza anche la larghezza delle rughe: aumentando la pressione le rughe si schiacciano e tendono ad assottigliarsi o scomparire. • Un movimento durante l'acquisizione può produrre immagini scadenti: un errore umano durante la procedura di acquisizione può portare a immagini ingannevoli. • La presenza di peli genera grosse aree bianche curvilinee, che ingannano sulla reale struttura delle rughe. • Non è mai stato usato per studiare la struttura delle rughe e delle celle. 4 INDICE Obiettivi I nostri intenti sono: • Pre-elaborare i campioni per ridurre il rumore, metterne in risalto la struttura morfologica e ottenere immagini di qualità omogenea. • Estrarre informazioni dalle immagini ltrate • Segmentare le immagini per poter caratterizzare le strutture presenti. • Individuare ed estrarre features correlate con l'età. • Delineare il processo complessivo che porta dai campioni no alle features. Metodo Il punto di partenza sarà dato dagli studi sviluppati in contesti analoghi: analisi della pelle e acquisizione tramite sensore capacitivo, oltre agli studi preliminari già svolti nel centro di ricerca ARCES. Lo studio di algoritmi e le prove sperimentali verranno eseguite in ambiente Matlab, per i seguenti motivi: • disponibilità dell'Images Processing Toolbox [1], che ore i principali strumenti di elaborazione e visualizzazione necessari per le immagini • possibilità di implementare algoritmi velocemente • ambiente interpretato, possibilità di eseguire elaborazioni a riga di comando in modo essibile • possibilità di creare interfacce grache, con l'aiuto del framework GUI builder Ovviamente usare un ambiente interpretato implica una perdita di velocità nei calcoli, ma si è ritenuta più utile la possibilità di implementare algoritmi di prova rapidamente. INDICE 5 Struttura della tesi Il capitolo 1 è un'introduzione agli aspetti strutturali e morfologici della pelle tratta da diversi siti web ([2], [3], [4]), descrive le caratteristiche generali della pelle e le sue patologie, e inne richiama alcuni elementi sulla morfologia come teoria matematica. il capitolo 2 spiega e commenta il lavoro già svolto da altri in contesti analoghi, illustra tutti i lavori che si è ritenuto utile prendere in considerazione, e delinea il lavoro svolto nei laboratori ARCES, di cui questa tesi fa parte. Nel capitolo 3 si illustra il processo di generazione dei dati che è stato l'input di questa tesi, soermandosi sulla metodologia di acquisizione e facendo delle considerazioni preliminari legate alle immagini acquisite. Il capitolo 4 illustra il processo complessivo di elaborazione che dalle immagini porta no alla generazione delle features, illustrando le modalità d'uso di algoritmi già noti e denendo alcuni algoritmi pensati specicamente per risolvere i problemi individuati. Il capitolo 5 Illustra e commenta i risultati ottenuti con le tecniche denite nel capitolo precedente. 6 INDICE Capitolo 1 La pelle: Struttura e morfologia 1.1 La Struttura della pelle La pelle è l'organo più esteso del corpo, sia come supercie, ma anche come peso. E' usato come isolamento, per la produzione della vitamina D, sensazioni, ed escrezione tramite sudore. La pelle regolarmente esposta alla luce del sole ha una pigmentazione che assorbe le radiazioni potenzialmente dannose. I peli servono principalmente come ulteriore isolamento. La pelle è divisa in tre strati, ognuna con una funzione precisa (gura 1.1). Figura 1.1: Sinistra: Anatomia della pelle. dell'invecchiamento. 7 Destra: eetto 8 CAPITOLO 1. Epidermide LA PELLE: STRUTTURA E MORFOLOGIA Questo sottile strato esterno è composto da cellule che ven- gono continuamente rimpiazzate. La supercie più esterna è fatta di cellule morte. Le cellule di base, che producono nuove cellule, sono nella parte inferiore dell'epidermide. Derma Il derma, che si trova sotto l'epidermide, dà il contributo maggiore allo spessore della pelle. Contiene una densa struttura di collageni e bre elastiche, due tipi di proteine. Questa struttura sostiene la linfa e vasi sanguigni, nervi, celle muscolari, ghiandole sudoripare e oleose, e follicoli dei peli. Le bre collagene ed elastina danno alla pelle forza ed elasticità. Tessuto Sottocutaneo Sotto l'epidermide e il derma giace lo strato sotto- cutaneo composto prevalentemente da grasso. questo strato della pelle isola e protegge gli organi interni e aiuta a dare alla pelle resistenza. La pelle può essere classicata in sottile e spessa. Quella spessa è presente sulla suola del piede e sul palmo della mano. Ha un largo strato corneo con alto contenuto di Cheratina. su questo tipo di pelle non crescono peli. La sua funzione è aiutare l'aderenza. La pelle sottile è presente sul resto del corpo e ha uno strato corneo più piccolo. Può avere peli ed è più elastica. 1.2 Ricerche sulla pelle La ricerca sta studiando sempre di più come la pelle si conserva in salute e giovane. Gli obiettivi sono migliorarne la salute e prevenire le malattie. Le linee di ricerca hanno condotto a: • migliori prodotti per proteggere dall'acne e creme solari • trattamenti per molte malattie della pelle: allergie, punture, dermatiti, herpes, lebbra, leucemia, rosolia, tumori e funghi. • nuove conoscenze su come i ricettori del dolore ricevono e trasmettono segnali alla colonna vertebrale e al cervello. 1.3. INVECCHIAMENTO DELLA PELLE 9 • identicazione di geni e proteine che regolano la crescita di melanociti sia normali che abnormali (cellule che producono il pigmento melanina) • conoscenze sui fattori che causano invecchiamento della pelle e su come prevenirli. 1.3 Invecchiamento della pelle Cominciamo a invecchiare nel momento in cui nasciamo, e gli eetti dell'invecchiamento sono evidenti sul nostro corpo. Superati i 20 anni, i più evidenti eetti dell'invecchiamento cominciano a svilupparsi. Dopo questa età gli eetti dell'invecchiamento cominciano a essere visibili sulla pelle. L'invecchiamento programmato geneticamente causa cambiamenti biochimici nel collagene e nell'elastina, i tessuti connettivi che danno alla pelle resistenza ed elasticità. La pelle rimpiazza le cellule più lentamente, e le cellule si riparano meno ecacemente. Questo può produrre una rigenerazione e una guarigione delle ferite più lenta. Il programma genetico è diverso per ogni persona, quindi la perdita di elasticità e resistenza cambia da un'individuo all'altro. Con l'età (vedi anche gura 1.1 e [5], [6]): • Lo strato più esterno (l'epidermide) si assottiglia anche se il numero di strati di cellule rimane lo stesso. • Il numero di cellule contenenti pigmenti (melanociti) decresce, ma i rimanenti melanociti crescono di dimensioni. Pelli vecchie appaiono quindi più sottili, pallide e traslucide. Ampie macchie pigmentate (macchie dell'età e lentiggini) possono comparire nelle aree della pelle esposte al sole. • Cambiamenti nel tessuto connettivo riducono la resistenza e l'elasticità della pelle. Questo fenomeno causa l'aspetto della pelle comune a contadini, marinai e altre persone che hanno passato molto tempo all'aperto. 10 CAPITOLO 1. LA PELLE: STRUTTURA E MORFOLOGIA • I vasi sanguigni del derma diventano più fragili, causando ecchimosi, macchie sotto la pelle e cose simili. • Le ghiandole sebacee producono meno oli con l'invecchiamento. Gli uomini manifestano un decremento minimo, normalmente dopo gli 80 anni; le donne gradualmente producono meno oli a cominciare dalla menopausa. Questo può rendere dicile mantenere la pelle umida, con il risultato di secchezza e prurito. • Lo strato di grasso sottocutaneo, che produce isolamento e riempimento, si assottiglia, aumentando il rischio di ferite e diminuendo la capacità di mantenere la temperatura corporea. Avendo meno isolamento naturale, in caso di freddo si può avere ipotermia. • Le ghiandole sudoripare producono meno sudore. Questo rende più dicile il rareddamento, incrementando i rischi di surriscaldamento e colpi di calore. • Crescite di foruncoli, verruche e altre imperfezioni sono più comuni negli anziani. Con il tempo, i raggi ultravioletti danneggiano le elastine. La rottura di queste bre causa la perdita nella pelle della capacità di ritirarsi dopo essere stata distesa. Come risultato si formano le rughe. Anche la gravità ha il suo eetto, causando il cedimento della pelle soprattutto sul volto, collo e parte superiore delle braccia. Anche il fumo contribuisce alle rughe. Le persone che fumano tendono ad avere più rughe dei non fumatori della stessa età, carnagione ed esposizione al sole. La ragione della dierenza non è chiara; forse il fumo contribuisce a danneggiare l'elastina. Le rughe aumentano con il numero di sigarette e di anni passati fumando. L'invecchiamento per esposizione solare interagisce con l'invecchiamento cronologico e sembra accelerarlo. Infatti l'esposizione solare è responsabile della maggior parte dei cambiamenti associati all'età: pelle chiazzata, rugosità, rughe sottili che scompaiono quando la pelle è distesa, macchie sulle mani e 1.3. INVECCHIAMENTO DELLA PELLE 11 vasi dilatati. Esposizione cronica al sole è il maggior fattore di rischio per tumori della pelle, carcinoma e melanoma. Con l'invecchiamento della pelle e con l'accumularsi di danni solari, un certo numero di lesioni diventano comuni. queste includono: • chiazze brunastre e dell'età (lentiggini): Aree marroni con contorni arrotondati, dislocate di solito sulla faccia, mani, schiena e piedi. Sono correlate con l'età e con l'esposizione solare, nché sono invisibili non sono pericolose. • Cheratosi attinica: Escrescenze spesse, verrucose, ruvide, rossastre su zone della pelle esposte al sole. Possono essere i precursori di carcinomi cellulari squamosi. • Cheratosi seborroica: Macchie in rilievo nere o marroni, simili a verruche che sembrano essere attaccati alla supercie della pelle. Non sono cancerose o precancerose, e possono essere rimosse facilmente. • Angiomi a ciliegia: Innocui, piccole e brillanti cupolette rosse create da vasi sanguigni dilatati. Si formano in più dell'85% delle persone di mezza età no agli anziani, di solito sul corpo. • Telengiectasia (capillari rotti): Vasi sanguigni del viso dilatati, normalmente legati all'esposizione solare. • Ecchimosi: Spesso un risultato di aver perso il riempimento grasso della pelle e di essere più soggetto a lesioni. Alcuni farmaci possono causare emorragie sottocutanee. • Rughe: Cambiamenti nel tessuto elastico dovute all'esposizione al sole, agli eetti della gravità o fattori dovuti al movimento della pelle. • Malattie della pelle più diuse negli anziani includono herpes e dermatiti seborroiche. Alcuni tumori sono più comuni con l'invecchiamento della pelle. La causa scatenante dei tumori della pelle nelle persone anziane sono spesso i danni 12 CAPITOLO 1. LA PELLE: STRUTTURA E MORFOLOGIA accumulati in troppi anni di eccessiva esposizione al sole. In alcuni casi ci può essere una predisposizione generica, o un'eredità del tipo di pelle che incrementa il rischio. Tutti i tumori della pelle possono essere curati con successo se scoperti e trattati presto. Tutti possono potenzialmente deturpare la pelle e possono potenzialmente essere fatali se si diondono ad altre parti del corpo. Le tre forme più comuni di tumori sono: • Carcinoma delle cellule di base: Si sviluppano in 300000-400000 persone ogni anno negli Stati Uniti. • Carcinoma delle cellule squamose: Si sviluppano in 80000-100000 persone ogni anno negli Stati Uniti. • Melanoma: Sono diagnosticati 45000-50000 nuovi casi ogni anno negli Stati Uniti. Si tratta del tumore più letale: 6 persone su 7 muoiono. 1.3.1 Trattamenti della pelle Ci sono molti tipi di trattamenti per evitare l'invecchiamento della pelle. L'industria cosmetica e dermatologica ha eseguito molte ricerche su questa materia. I trattamenti vengono fatti per motivi di salute ed estetici. Trattamenti locali sono di solito più ecaci se le manifestazioni dell'invecchiamento sono superciali e moderate: • Tretinoina, una sostanza della famiglia della vitamina A, si è visto che riduce le rughe sottili, pigmentazione a macchie e pelli ruvide associate all'esposizione cronica al sole. Le creme basate su questo principio attivo allo 0.02% e 0.05% sono le uniche approvate dalla legge. Altre forme di Tretinoina sono indicate per il trattamento dell'acne. • Acidi alfa-idrossilici: Possono essere usati da soli o unitamente a tretinoina per trattare pelli mediamente danneggiate. Derivano dalla frutta e dai latticini. 1.3. INVECCHIAMENTO DELLA PELLE 13 • Innumerevoli prodotti contenenti retinolo (della famiglia delle vitamine A), antiossidanti e agenti idratanti possono migliorare temporaneamente l'aspetto di linee sottili e rughe. • antiossidanti topici, specialmente vitamina C e E, aiutano la riparazione delle celle danneggiate dalle radiazioni ultraviolette e dal fumo. 14 CAPITOLO 1. LA PELLE: STRUTTURA E MORFOLOGIA 1.4 Analisi di immagini: elementi di morfologia La morfologia può essere denita come una teoria per l'analisi delle strutture spaziali, da essa deriva un insieme di strumenti e di tecniche molto completo, in grado di arontare problematiche di ltraggio, segmentazione, analisi delle texture, estrazione di features, ecc. Essendo la morfologia basata sull'analisi spaziale dell'immagine, molte denizioni in morfologia si applicano a immagini binarie, ma quasi tutte possono essere estese al caso di immagini in toni di grigio. La teoria che tratta questi argomenti è ampia e non completamente consolidata, e per una trattazione teorica più esauriente si può far rifermento a1 [7], [8], [9], [10] (in particolare vol. 2, capitolo 21) [11], [12], [13] [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24]; per applicazioni della morfologia in domini simili a quello preso in considerazione si può far rifermento a [25], [26], [27], [28], [29]. Si ritene tuttavia utile riprendere e sottolineare alcuni aspetti teorici meno banali per comprendere meglio le scelte, le tecniche e le metodologie usate. 1.4.1 Proprietà e alcune denizioni dato due operatori Ψ e Φ, L'operatore identità I e delle immagini x, y, si deniscono le seguenti proprietà: Relazione d'ordine Siano i, j le coordinate di un'immagine, si dice che x<y se ∀i, j, x(i, j) < y(i, j). Per due operatori, si dice che Ψ < Φ se ∀x, y, x < y, Ψ(x) < Φ(y). Analoghe le denizioni per >, ≤ e ≥. Idempotenza ΨΨ = Ψ Estensività I ≤ Ψ Anti-estensività I ≥ Ψ 1 Le opere sono citate in ordine, da quelle più sintetiche e introduttive a quelle più speciche e complete, no alle pubblicazioni più aggiornate sugli ultimi sviluppi 1.4. ANALISI DI IMMAGINI: ELEMENTI DI MORFOLOGIA 15 Monotonia ∀x, y, x ≤ y ⇒ Ψ(x) ≤ Ψ(y) Principio di sovrapposizione Operando una sogliatura di un'immagine in toni di grigio con tutti i possibili valori di soglia, si ottiene un insieme di immagini binarie legate da una relazione d'ordine. Applicando un operatore morfologico monotono si ottiene ancora un insieme di immagini legata da relazione d'ordine. A questo punto è possibile sommare le immagini binarie e ottenere un'immagine in toni di grigio ltrata. Questo principio permette di estendere operatori monotoni deniti su immagini binarie a caso dei toni di grigio. Per esempio, applicando questo principio all'erosione e dilatazione binaria, si può dimostrare che si ritrovano le denizioni di questi operatori per le immagini in toni di grigio, basate su massimo/minimo. L'estensione degli operatori morfologici binari, che avviene sostituendo operazioni di minimo e massimo alle operazioni di AND e OR, può essere anche pensata come un passaggio dalla logica tradizionale a una logica fuzzy, in cui il i toni di grigio rappresentano dei valori fuzzy su cui vengono applicate delle operazioni logiche: infatti l'operazione di minimo, massimo e complemento sono alla base della più diusa delle logiche fuzzy. Aperture Algebriche Le denizioni di apertura (chiusura) morfologiche godono delle proprietà di idempotenza, anti-estensività (estensività) e monotonia. Per generalizzazione, qualsiasi operatore che goda di queste proprietà si dice che è un'apertura (chiusura) algebrica. Una interessante apertura algebrica è l'area-open: vengono rimossi gli oggetti di un'immagine binaria di area inferiore a un certo valore. Per il principio di sovrapposizione si può generalizzare al caso in toni di grigio. Un'altra interessante famiglia di aperture può essere denita con l'operatore di ricostruzione. 1.4.2 Apertura e Chiusura con ricostruzione L'operazione di apertura permette di rimuovere oggetti in base allo structure element usato, ma ha il limite di non preservare le altre strutture, che 16 CAPITOLO 1. LA PELLE: STRUTTURA E MORFOLOGIA vengono comunque modicate. Questo limite viene completamente superato da un'operatore simile, l'apertura con ricostruzione [13], che opera nel seguente modo: l'immagine viene erosa con lo structure element come per l'apertura normale, ma invece di far seguire una dilatazione, si opera una ricostruzione usando l'immagine originale come maschera, e l'immagine erosa come marker. Le gure 1.2, 1.3, 1.4 mettono a confronto le due operazioni2 , evidenziando il miglioramento indiscutibile nei risultati. Figura 1.2: Chiusura normale (Sinistra) e con ricostruzione (Destra) Usando uno structure element a forma di diamante di raggio 1 1.4.3 Operatore H-max Se si pensa all'immagine come a una mappa in rilievo in cui l'intensità del colore denisce la quota3 , a ogni minimo può essere associato un valore, detto dinamica, pari alla quota che bisogna risalire prima di arrivare da un 2 Per generare gli esempi sono state usate le operazioni duali di chiusura perché più adatte per le immagini prese in considerazione, ovviamente la sostanza dei fatti non cambia 3 questo modo di interpretare le immagini è detto DEM (digital elevation map) 1.4. ANALISI DI IMMAGINI: ELEMENTI DI MORFOLOGIA 17 Figura 1.3: Chiusura normale (Sinistra) e con ricostruzione (Destra) Usando uno structure element a forma di quadrato di lato 2 minimo alla cresta più bassa. Operando una ricostruzione tra immagine originale e l'immagine decrementata di un valore H, si ottiene l'operatore H-max. si tratta di un'apertura algebrica interessante perché ha la caratteristica di rimuovere tutti i minimi che hanno dinamica minore del valore sottratto all'immagine originale. Questo operatore e il suo complementare, detto H-min, ha notevole importanza nel processo di segmentazione watershed. 1.4.4 Segmentazione Watershed La segmentazione Watershed [11], [12], [26], [27], [15], implementa l'approccio morfologico al problema della segmentazione. Pensando l'immagine come a un DEM, si può pensare alla segmentazione watershed come a una simulazione in cui vengono progressivamente allagati 18 CAPITOLO 1. LA PELLE: STRUTTURA E MORFOLOGIA Figura 1.4: Chiusura normale (Sinistra) e con ricostruzione (Destra) Usando uno structure element a forma di quadrato di lato 3 1.4. ANALISI DI IMMAGINI: ELEMENTI DI MORFOLOGIA 19 i bacini4 . Quando due bacini si riempiono e si dovrebbero unire, viene alzato lungo le creste uno spartiacque per tenerli separati. Quando il processo di allagamento è nito, gli spartiacque identicano una segmentazione. Il problema principale di questa tecnica è che per ogni minimo viene generato un oggetto, causando una eccessiva segmentazione. Una denizione alternativa di watershed fa partire il processo di allagamento solo da alcuni punti specici, (watershed controllata da marker); in questo modo è possibile decidere in anticipo quanti oggetti produrrà la segmentazione. E' possibile dimostrare che le due modalità sono equivalenti, infatti è possibile passare dall'una all'altra con un processo automatico. Per passare dalla segmentazione watershed semplice a quella con marker basta scegliere come marker tutti i minimi dell'immagine, mentre per il passaggio inverso basta imporre i minimi identicati dai marker con un'operazione di ricostruzione morfologica tra i marker e l'immagine. Per un uso corretto della segmentazione watershed è stato denito uno schema generale di utilizzo che prevede i seguenti punti: • Si denisce un modello che permetta di generare i marker partendo dall'immagine originale • Si denisce un modello per generare i contorni degli oggetti partendo dall'immagine originale. • Si impongono i minimi identicati dal marker sull'immagine per generare i contorni. • Si esegue la segmentazione watershed. Il processo usa una watershed controllata da marker. I due approcci sarebbero perfettamente equivalenti, ma questa tecnica permette di separare concettualmente le problematiche di segmentazione, permettendo di identicare meglio i problemi. 4 Un altro denizione di watershed si basa sulla teoria dei gra, In proposito si veda la bibliograa già citata 20 CAPITOLO 1. LA PELLE: STRUTTURA E MORFOLOGIA Una tecnica utile nella scelta dei marker è l'identicazione e selezione dei punti di massimo/minimo, visto l'importante signicato che hanno questi punti per la segmentazione watershed. Per questo hanno un ruolo importante nella denizione dei marker le operazioni di apertura/chiusura algebrica: è possibile dimostrare, infatti, che hanno la proprietà di garantire che non verranno generati nuovi massimi/minimi, limitandosi eventualmente a rimuoverne o unirne alcuni. Il tipo di apertura denisce il criterio di rimozione e unione; quindi la denizione di un modello per selezionare i minimi corrisponde alla denizione di un'apertura algebrica adeguata. 1.4.5 Granulometria Una granulometria è denita da un ltro Φ il cui risultato dipende da un parametro λ e con le seguenti proprietà: • anti-estensivo • monotono • assorbimento : dati due valori del parametro λ, a e b, Φa Φb = Φb Φa = Φmax(a,b) . Tramite questo ltro si ottiene una sequenza di immagini, ottenute ltrando l'immagine originale facendo variare il parametro λ, e da ognuna di queste immagini viene estratta una proprietà numerica che viene gracata in funzione del parametro λ. Le proprietà numeriche normalmente usate per immagini binarie sono: • numero di oggetti • aree degli oggetti • diminuzione dell'area degli oggetti. Per le immagini in toni di grigio, le misure di area vengono di solito sostituite da misure di volume. Nulla vieta di andare a misurare altre features 1.4. ANALISI DI IMMAGINI: ELEMENTI DI MORFOLOGIA 21 dall'insieme di immagini ottenute. 1.4.6 Limiti dell'approccio morfologico L'uso di operazioni di massimo e minimo impongono un limite all'ecacia degli operatori morfologici; nel caso di dati aetti da rumore, infatti, i risultati possono essere alterati sensibilmente: basta che un solo valore sia sensibilmente alterato per modicare sensibilmente i risultati, e di fatto il rumore in un solo punto altera negativamente i risultati dei punti vicini. Questo inconveniente ha portato alla denizione degli operatori morfologici Soft [23] [24], più tolleranti rispetto al rumore. Il rovescio della medaglia, però, è che vengono perse alcune importanti e cruciali proprietà degli operatori morfologici, quali le proprietà delle aperture/chiusure algebriche nei confronti dei minimi. La rigidità dell'approccio morfologico si ripercuote anche nella segmentazione watershed, che di fatto non può essere usata senza gestire il problema dell'over-segmentazione. 22 CAPITOLO 1. LA PELLE: STRUTTURA E MORFOLOGIA Capitolo 2 Esame della letteratura Verrà fatta una rassegna della letteratura usata per questa tesi. L'argomento è molto innovativo e non esiste letteratura scritta su questi specici argomenti. Ci sono diversi studi compiuti per la caratterizzazione della topograa della pelle ma non molti correlati ai nostri specici obiettivi. Ci sono diverse compagnie che commercializzano strumenti per estrarre immagini della pelle, come Identiprint, che vende materiale per generare repliche della pelle (gura 2.1), Scantron [30], che produce prolometri usati per l'analisi della supercie della pelle, e ST Microelectionics [31] che vende sensori capacitivi per l'analisi delle impronte digitali e della pelle. In questa tesi vengono usate immagini generate con sensore capacitivo, ma è bene analizzare anche i risultati generati con altri strumenti. 2.1 Analisi delle immagini della pelle acquisite con altri strumenti La caratterizzazione della topograa della pelle è stata realizzata usando prolometri e repliche della pelle per ottenere alcune misure correlate sia al prolo tridimensionale che delle rughe [32]. Edward, Heggie e Marks (2003) con questo metodo hanno studiato le dierenze nella ruvidità della pelle tra pelli esposte al sole e non [33]. Lagardie Rouvrais, Black Diridollou e Gall 23 24 CAPITOLO 2. ESAME DELLA LETTERATURA (2001) hanno usato un metodo basato sulla prolometria delle proiezioni delle frange di interferenza per descrivere le caratteristiche della pelle [34]. Gniadecka e Jemec (1998) hanno usato ultrasonograa a 20Mhz [35] per avere una valutazione quantitativa dell'invecchiamento cronologico e dovuto all'esposizione luminosa studiando l'ecogenicità e lo spessore della pelle [36]. Un lavoro più vecchio (1987) di Nominè, Vincent e altri [25], studia la pelle come una rete di micro-depressioni da cui si ricava un'immagine binaria, mettendo in evidenza che la pelle è caratterizzata da rughe principali e secondarie, che si diversicano con l'aumentare degli anni; inoltre è interessante l'approccio morfologico nel ltraggio di questo tipo di immagini. Sono stati identicati alcuni articoli come gli studi L'Oreal e Mountain soft- Figura 2.1: Sinistra: Campione acquisito con il metodo Identiprint. Destra: Immagine di una ruga ottenuta con il software Mountain. ware research, più correlati con le nostre applicazioni. Attualmente si può considerare questi due studi come lo stato dell'arte sulla caratterizzazione delle rughe con un dispositivo capacitivo. Vengono inoltre presi in considerazione gli studi eettuati nell'estrazione di features biometriche (impronte digitali). 2.1.1 Mountain Technology Mountain Prole [37] è un potente strumento per analizzare i proli misurati con qualsiasi tipo di strumento. Include tecnologia all'avanguardia 2.1. 25 ANALISI DELLE IMMAGINI DELLA PELLE ACQUISITE CON ALTRI STRUMENTI nell'analisi e visualizzazione, compresi metodi e parametri standardizzati. La piattaforma funziona su Windows ed è rivolto ai produttori di strumentazione per la metrologia delle superci. Permette l'analisi di: • tessitura della supercie 2D (prolometria) e 3D (topograa) • errori nelle forme 2D (contorni) e 3D (appiattimento, volume, curvatura...) • immagini di scansioni con sonde microscopiche • numerose applicazioni per disciplina: cosmetica, plastica, documenti, lamine di acciaio... Lo studio della pelle viene eseguito come un'analisi delle depressioni delle montagne (gura 2.1). In questo modo il software può misurare: la profondità media delle rughe, il volume e l'area. La tecnologia è stata applicata all'analisi della pelle per diversi studi: rughe, invecchiamento, assottigliamento cellulare, punti neri e acne, borse degli occhi, labbra, lucentezza delle unghie e altro. Gli studi dell'invecchiamento eettuati hanno rilevato che le rughe, invecchiando, diventano più grandi e orientate (gura 2.2). Quando la rete delle rughe diventa meno densa e la pelle meno soce, le rughe sembrano più profonde. Anche altri fattori hanno inuenza: per esempio negli uomini, l'uso giornaliero di rasoi introduce una parziale distruzione della rete delle microrughe. L'analisi dei rilievi micro-cutanei permette di determinare diversi parametri della tessitura che rappresentano la base oggettiva di molti prodotti anti invecchiamento e idratanti. Ci sono molte altre applicazioni in cui si può usare questo software: • Creme fondotinta (riempimento di buchi, aspetto più levigato della supercie cutanea) • Prodotti per la cura della pelle: l'aspetto irregolare e rugoso delle pelli deteriorate può essere migliorato usando prodotti, applicati sulla 26 CAPITOLO 2. ESAME DELLA LETTERATURA Figura 2.2: Risultati del software Mountain per campioni con 25 e 65 anni. pelle, che aiutano a ripristinarne l'equilibrio e la sua ristrutturazione. Applicazioni: dopobarba, prodotti anti-acne, maschere idratanti. • Tolleranza: i rilievi cutanei di pelli sane vengono danneggiati dall'applicazione di prodotti cosmetici irritanti. • Ecacia di prodotti esfolianti (riduzione di picchi, arrotondamento della supercie, riduzione della ruvidità) • Ecacia di prodotti con eetto opacizzante. 2.2 Analisi con sensore Capacitivo Il principale uso dei sensori capacitivi è l'acquisizione di impronte digitali. Si tratta di un settore ben sviluppato e ricco di studi, e data la forte correlazione di questo tipo di immagini con quelle che andremo ad analizzare, è stata fatta un'analisi della letteratura disponibile. 2.2.1 Impronte digitali Le impronte digitali sono le features biometriche più usate oggigiorno per l'identicazione personale (gura 2.3). Una descrizione completa dello stato dell'arte no al 1999 è stata fatta da Jain e Pankanti [38]. La maggior parte dei sistemi automatici per il confronto delle impronte sono basati sulla corrispondenza di punti caratteristici: discontinuità locali nel pattern che 2.2. ANALISI CON SENSORE CAPACITIVO 27 rappresentano terminazioni e biforcazioni. La terminazione di una cresta è denita come il punto dove una cresta nisce bruscamente. La biforcazione di una cresta è denita come il punto dove diverge in più creste. Un sistema automatico per estrarre i punti caratteristici in modo adabile Figura 2.3: Immagine di un'impronta digitale. è un passo critico nella classicazione delle impronte digitali. E' necessario un passo precedente che migliora la struttura delle creste e dei solchi per permettere una rilevazione migliore, ottenibile con diverse tecniche, che possono essere divise in due classi. Metodi basati su binarizzazione In molti casi il processo di binarizza- zione è preceduto da un'operazione di smoothing, basato sulla convoluzione con una maschera gaussiana, per rendere più regolare l'immagine di partenza. Shlomo e Mayer [39] hanno proposto un metodo ottenuto usando un'equalizzazione locale dell'istogramma, ltraggio di Wiener e binarizzazione. Questo processo combina tecniche di ltraggio e riduzione del rumore sia per tecniche di pre che di post-elaborazione. 28 CAPITOLO 2. ESAME DELLA LETTERATURA Approcci basati su miglioramento diretto in toni di grigio Si è fatto molto relativamente alla riduzione del rumore e all'incremento del contrasto tra creste e valli nelle immagini delle impronte digitali in toni di grigio. Alcune tecniche sono implementate nel dominio del tempo, altre nel domino della frequenza. O'Gorman e Nickerson (1989) e Mehtre (1993) hanno sviluppato una tecnica basata su un ltro direzionale, Maio e Maltoni (1998) hanno usato una rete di neuroni nel ltraggio delle minuzie; Almasa e Lindeberg (2000), Greenberg e altri (2000) e Jiang (2001) hanno fatto uso di ltri anisotropi e ltri passa basso orientati per ridurre il rumore. Invece Sherlock e altri (1994), Willis e Myers (2000), Kemei e Mizoghchi (1995) hanno ltrato le immagini nel dominio della frequenza. Ci sono vantaggi e svantaggi in entrambi gli approcci. Il ltro di Gabor è uno strumento utile da tutti e due i punti di vista [40], ed è stato usato da Hong (1998) [41] per migliorare le immagini, ed è stato osservato che si possono raggiungere buoni risultati. In seguito Yang (2003) [42] e Tai (2003) [43] hanno ulteriormente migliorato i risultati ottenuti con il ltro di Gabor. Esistono anche altri approcci che non basano il confronto su punti caratteristici, ma sul confronto di un' `impronta' estratta dall'immagine con opportuni ltraggi. Anche in questo caso si è mostrato ecace l'uso del ltro di Gabor. In [44] l'immagine viene ltrata con un ltro di Gabor relativo a 8 orientazioni principali, e dal risultato si generano delle mappe di 15x15 pixel. Le 8 mappe così ottenute sono prese come un vettore di features, confrontabili con una semplice distanza euclidea. Un principio analogo viene usato in [45], dove il risultato viene confrontato con i metodi basati su punti caratteristici, concludendo che questa tecnica è meno precisa, ma più veloce, proponendo anche un approccio combinato per compensare i limiti di entrambe le tecniche. 2.2.2 Analisi della pelle Gli studi condotti da Levecque e Querleux [46] hanno mostrato le ottime caratteristiche di SkinChip per investigare la supercie della pelle. La 2.2. ANALISI CON SENSORE CAPACITIVO 29 STMicroelectronics ha adattato un strumento usato per acquisire le impronte digitali e misurare le proprietà della supercie cutanea. Analogamente è stato modicato il software per ottenere in modo sistematico immagini della supercie cutanea in diverse parti del corpo. Le immagini permettono precise osservazioni sulla topograa della pelle che possono essere facilmente quanticate in termini di densità delle linee e orientazione. Hanno sviluppato del software per la rivelazione automatica delle orientazioni principali delle rughe principali, e la densità delle linee è espressa attraverso la ricorrenza di intersezioni con le rughe principali. La rivelazione delle orientazioni è ottenuta in tre passi: Prima l'immagine viene pre-elaborata, poi un metodo di clustering riduce i toni di grigio da 256 a 5; successivamente viene calcolata la matrice di correlazione per diversi angoli. I coecienti principali sono gracati in funzione dell'angolo, e i picchi sono rappresentativi delle direzioni principali. Il parametro di densità delle rughe è calcolato dall'immagine pre-elaborata. Dopo aver fatto una sogliatura al valore 170, un processo di thinning viene eseguito prima del rilevamento degli `angoli' negli incroci delle rughe. L'idratazione della pelle è stimata con un'analisi statistica dei livelli di grigio nella regione di interesse. A causa della risoluzione del sensore (50µm) queste immagini capacitive rappresentano una mappa molto dettagliatata della topograa della supercie cutanea, così come del contenuto d'acqua nello strato corneo. La conclusione dei loro studi è stata che stimare l'idratazione cutanea con SkinChip è almeno equivalente a un metodo basato su Corneometro. In più le immagini ottenute con SkinChip permettono di gracare una mappa dell'idratazione che ragura l'omogeneità dell'idratazione nell'area della pelle investigata. Questo nuovo metodo, basato su nuove tecnologie, è semplice e ricco di risultati. 30 CAPITOLO 2. ESAME DELLA LETTERATURA 2.3 Studi ARCES Gli argomenti trattati in questa tesi fanno rifermento a parte del lavoro svolto presso il centro di ricerca ARCES, che ha iniziato le sperimentazioni su immagini della pella acquisite tramite sensore capacitivo nella seconda metà del 2003. Sono stati presi in considerazione i lavori precedenti relativi alla caratterizzazione dell'età della pelle basati su immagini acquisite con altre tecniche, e i lavori precedenti relativi alle immagini acquisite tramite sensori capacitivi (prevalentemente nel campo delle impronte digitali). La prima incoraggiante pubblicazione prodotta nel centro di ricerca [47] individua una feature fortemente correlata con l'età, ricavata considerando le dimensioni delle celle della pelle. Parallelamente sono stati svolti lavori per caratterizzare le rughe [48]. In particolare è utile sottolineare che i risultati confermano un'ipotesi su cui è basato tutto il lavoro svolto in questa tesi: la pelle è caratterizzata da una texture composta da tante rughe che si intersecano delineando delle celle. Con l'invecchiamento della pelle alcune rughe diventano più marcate, altre si aevoliscono, delineando così una struttura composta da rughe principali e micro-rughe che frammentano le celle. Visivamente si delineano delle celle principali, sempre più grandi al crescere dell'età (Vedi gura 2.4). Almeno per ora non sono noti studi che hanno permesso di caratterizzare l'età della pelle con risultati accettabili per le applicazioni pratiche. 2.3.1 Il lavoro precedente a questa tesi Il principale risultato ottenuto nel lavoro precedente [47] consiste nella denizione di una feature correlata con l'età. Per il calcolo della feature è necessario misurare l'area delle celle contenute nell'immagine, che va quindi segmentata. Per la segmentazione viene usata la tecnica watershed, come pre-ltraggio una normalizzazione e un'operazione H-min. Successivamente è stato aggiunto un pre-ltraggio Gaussiano, che ha migliorato i risultati. Il problema di questo approccio è che la soglia usata come parametro per 2.3. 31 STUDI ARCES Figura 2.4: Evoluzione della pelle con l'età. Le immagini sono rispettivamente quelle di un Bambino di 3 anni, un adulto di 46 e un vecchio di 94. la trasformazione H-min va determinato manualmente per ogni singola immagine, vericando ad occhio la correttezza della segmentazione. Di seguito vengono descritte le varie fasi del processo in dettaglio. La pre-elaborazione Si tratta di una normalizzazione adattativa: vengono calcolate media e deviazione standard localmente (l'intorno preso in considerazione è un quadrato di lato 15 pixel) e in base a questi valori viene calcolata la luminosità di ogni singolo punto secondo la seguente formula: N (x, y) = σ0 I(x, y) − µw (x, y) + µ0 σw (x, y) N rappresenta l'immagine normalizzata, I l'immagine originale, µw e σw sono rispettivamente la media e la deviazione standard locale, µ0 e σ0 sono due parametri dell'algoritmo. Gli eetti di bordo sono gestiti allargando l'immagine con una copia speculare dell'immagine stessa. Questa operazione non serve solo a migliorare l'illuminazione e il contrasto delle immagini: con i valori dei parametri usati, causa anche una saturazione nei toni di grigio dell'immagine che ha merito di eliminare parte del rumore 32 CAPITOLO 2. ESAME DELLA LETTERATURA tipico di questo tipo di immagini e descritto in dettaglio più avanti (3.4.1). I parametri σ0 e µ0 di fatto determinano le modalità con cui la saturazione taglia l'istogramma dei toni di grigio. Il risultato è stato migliorato ltrando l'immagine con un ltro gaussiano con σ = 0.7. La segmentazione La segmentazione avviene tramite Watershed, che è la tecnica standard nell'elaborazione morfologica di immagini. La segmentazione è stata eseguita usando il parametro di connettività 8, valore predenito in Matlab. Per ovviare al problema dell'over-segmentazione si è usato un ltraggio basato su H-min. La scelta del parametro H si è rivelata critica, e per ottenere una buona segmentazione si è scelto manualmente un valore di H, diverso per ogni immagine, controllando a occhio la correttezza della segmentazione ottenuta. Questo è il grande limite del metodo usato: il processo è solo parzialmente automatico, e necessita di un operatore umano che sia in grado di giudicare la correttezza della segmentazione. L'immagine ottenuta viene ritagliata con una nestra di 200x200 pixel. L'estrazione di features Una volta segmentata l'immagine, viene misurata l'area di ogni cella, ottenendo una distribuzione cumulativa del numero di celle in funzione dell'area. Come feature viene usato il numero di celle calcolato sul punto P della distribuzione cumulativa a pendenza unitaria. Di fatto questo approccio implementa il calcolo eciente di una granulometria basata su area-open, applicata su un'immagine binaria. 2.3.2 Altre considerazioni Sono in corso ulteriori studi per caratterizzare le orientazioni dominanti, le rughe, e per ottenere segmentazioni migliori o altre features, eventualmente 2.3. STUDI ARCES 33 basare su altri approcci. Uno studio al momento non ancora pubblicato [49] individua una caratterizzazione delle rughe basata sul contrasto locale, mentre in [48] viene fatto uno studio approfondito delle rughe basato sul ltro di Gabor, e vengono proposte delle features che caratterizzano le rughe e le orientazioni dominanti, senza però individuare evidenti correlazioni con l'età. 34 CAPITOLO 2. ESAME DELLA LETTERATURA Capitolo 3 Acquisizione dei dati 3.1 Lo strumento di acquisizione: TouchChip Il TouchChip, prodotto dalla ST Microelectronics è basato su un microchip al silicio basato su una tecnologia a rilevazione attiva brevettata, che produce risultati più accurati e immagini di qualità superiore rispetto a altri prodotti che usano solo una tecnologia passiva. Si tratta di un dispositivo pensato per l'acquisizione di impronte digitali, ma ne è stata modicata la sensibilità di acquisizione e l'aspetto sico per permettere una migliore acquisizione di immagini della pelle in zone diverse dalle dita. Il sensore campiona un'area di 12.8x18mm e produce immagini di 256x360 pixel; la risoluzione è quindi di 50µm/pixel. Essendo un sensore capacitivo le immagini prodotte sono in scala di grigio, con 256 possibili sfumature. Ogni cella del sensore contiene un circuito attivo con retroazione la cui capacità eettiva di retroazione è modulata dal contatto con la pelle vicina al sensore; quando la pelle è molto vicina al sensore la capacità è massimizzata (celle) e diminuisce man mano che la pelle è meno vicina alla supercie del sensore (rughe). L'elettronica di condizionamento è integrata sulla stessa scheda, mentre una seconda scheda integra il controller USB che permette il collegamento diretto alla maggior parte dei computer. 35 36 CAPITOLO 3. ACQUISIZIONE DEI DATI Figura 3.1: Sinistra: principio di funzionamento del sensore. Destra: aspetto esteriore del dispositivo. L'immagine è una mappa della capacità della pelle. La supercie su cui si appoggia la pelle è fatta di uno strato di SiO2 che protegge il micro-sensore da contaminazioni, gra e scariche elettrostatiche. Il software usato è un programma progettato appositamente per questo dispositivo, una applicazione graca che rende tutto molto semplice: una nestra permette di vedere l'immagine che verrà acquisita in tempo reale, un primo pulsante fa partire l'acquisizione, un'altro la ferma. Il vantaggio del programma è che permette di visualizzare il risultato prima di salvarlo. Per una descrizione più dettagliata del dispositivo si veda [46]. 3.2 Il metodo di acquisizione Le immagini sono acquisite in tempo reale poggiando il dispositivo sulla regione di interesse, ma non può essere controllata la pressione esercitata dalla pelle sul dispositivo. I livelli di grigio delle celle sono più scuri di quelli delle rughe, ma non saranno omogenei a causa della curvatura della pelle e altri fattori siologici, come l'idratazione e lo strato di grasso della pelle. Per questi motivi si è scelto di concentrarsi solo sugli aspetti morfologici, trascurando quelli fotometrici. I campioni sono stati acquisiti nella parte interna del braccio perché in questo punto la struttura della pelle è ben denita ed è abbastanza protetta dalle 3.2. IL METODO DI ACQUISIZIONE 37 radiazioni solari e tutti gli altri fattori che potrebbero modicare il processo di invecchiamento della pelle [50]; inoltre è una zona dove di solito sono presenti pochi peli, che degradano la qualità dell'immagine. 3.2.1 Il protocollo di acquisizione Si è denito un protocollo per ridurre al massimo i problemi e gli errori che possono vericarsi durante l'acquisizione. questo protocollo è pensato per essere usato in un ospedale dove due persone si occupano dell'acquisizione dei campioni. 1. La persona 1 deve lavorare al computer con il software di acquisizione. La seconda si deve occupare di prendere il campione dal paziente. 2. Nella stanza dove avviene l'acquisizione devono esserci almeno due pazienti. La temperatura e l'umidità sono le principali caratteristiche a cui bisogna stare attenti. Per questo, mentre si acquisisce il campione dal paziente 1, il paziente 2 attenderà seduto nella stessa stanza rilassandosi e ambientandosi. In questo periodo di tempo il paziente 2 si adeguerà alla temperatura della stanza, si calmerà e ridurrà la sua sudorazione. 3. La persona 2 spiegherà ai pazienti come verrà fatta l'acquisizione, è necessario accedere alle braccia, per cui potrebbe essere necessario togliersi i vestiti. 4. La persona 2 farà sedere il paziente e comincerà l'acquisizione. 5. Il paziente 1 posizionerà il braccio in una posizione comoda per permettere alla persona 2 di prendere il campione. La persona 2 pulirà delicatamente la supercie della pelle per eliminare il sudore. L'acquisizione va fatta nella parte con meno peli. 6. La persona 2 poggia il TouchChip sul braccio del paziente. La pressione deve essere quanto più possibile simile per ogni paziente. A questo punto può iniziare un dialogo tra le persone 1 e 2. 38 CAPITOLO 3. ACQUISIZIONE DEI DATI 7. La persona 1 preme il pulsante di inizio acquisizione e osserva l'immagine sullo schermo. 8. Se l'immagine è corretta (non ci sono peli o sudore, e il dispositivo è tenuto fermo) la persona 1 sceglierà il momento migliore per l'acquisizione. 9. Una volta acquisita l'immagine, va salvata usando la seguente sintassi per il nome: <Nome>:==<Numero del campione>_[M|F]_<Età>_<Parte del corpo>_<Tipo di persona> con il seguente signicato: • <Numero del campione> Indica un numero identicativo incrementato progressivamente. • M o F indicano il sesso • <Età> indica l'età, rappresentata con 3 cifre • <Parte del corpo> identica la zona da dove l'immagine è stata acquisita. BRAC indica il braccio. • <Tipo di persona> indica la razza: CAU indica caucasian, ovvero razza bianca. Esempio: 0041_F_025_BRAC_CAU 10. Alla ne viene chiamato un altro paziente. 3.3 I campioni ottenuti Durante il periodo di svolgimento del lavoro le immagini disponibili sono andate via via aumentando no al valore attuale, superiore a 400. L'acquisizione delle immagini è tuttavia ancora in corso, e un numero maggiore di immagini permetterà non solo di scegliere meglio i campioni su cui eseguire i test, ma permetterà anche di ottenere statistiche più signicative. Nonostante i campioni siano già molti, si dispone di pochi campioni acquisiti su 3.4. ANALISI DEL RUMORE 39 pazienti di età inferiore a 20 e maggiore di 90 e un numero maggiore di immagini sarebbe auspicabile per avere statistiche signicative anche per ogni singola fascia di età. Tutti i campioni considerati nora sono stati presi dal braccio di persone di razza bianca. Per il momento si è scelto come insieme di verica un gruppo di 90 immagini, sucientemente ampio per confermare la qualità dei risultati, ma non troppo grande, per eseguire i test velocemente: alcuni algoritmi, infatti, possono richiedere tempi di calcolo non trascurabili se applicati a un gruppo di immagini troppo grande. Questa prima scrematura ha anche permesso di scartare alcune immagini di qualità scadente. 3.4 Analisi del rumore 3.4.1 Rumore dovuto alle caratteristiche del sensore Rumore `sale e pepe' A causa della natura capacitiva del sensore, gocce di sudore sulla pelle causano delle macchie nere e sature in alcune immagini. Nell'istogramma del colore provocano un picco estremamente ben localizzato a un suo estremo e separato dal resto dello spettro. L'area delle macchie va da un pixel isolato no a un massimo di 6-7 pixel di diametro (vedi Figura 3.2). Poiché causano dei minimi molto profondi potrebbero indurre una segmentazione errata, specialmente se sovrapposti alle rughe. tuttavia l'analisi delle immagini mostra che queste macchie tendono a localizzarsi per lo più sulle isole: evidentemente il sudore, per adesione, tende a muoversi verso i punti di contatto tra pelle e sensore: le celle, appunto. Questo tipo di rumore può aumentare il numero dei minimi di ogni isola causando over-segmentazione, ma non necessariamente: a volte, `avvolgendo' l'isola, la delinea meglio. Gli eetti di questo disturbo sono attenuati sensibilmente dalla normalizzazione, quanto basta per non incidere in modo signicativo sui risultati nali. Un analogo rumore di saturazione, molto più raro, è quello opposto: piccole macchie bianche di area non superiore a pochi pixel, localizzati in posizio- 40 CAPITOLO 3. ACQUISIZIONE DEI DATI ni per lo più casuali. Probabilmente si tratta di polvere o altre sostanze estranee con caratteristiche elettriche diverse dalla pelle. La normalizzazione le elimina quasi completamente e comunque, causando massimi, non hanno particolare inuenza sulla trasformazione watershed e l'identicazione delle celle. 1400 1200 1200 1000 1000 800 800 600 600 400 400 200 200 0 0 0 50 100 150 200 250 0 50 100 150 200 250 Figura 3.2: Immagini con molto rumore di saturazione. Le frecce evidenziano i picchi causati dal rumore `sale e pepe' 3.4. ANALISI DEL RUMORE Pressione 41 Un altro disturbo di carattere globale è la variabilità della pres- sione, che tende a dilatare le isole (e in modo duale, ad assottigliare le rughe) dove è più alta, rendendo inattendibile la relazione tra lo spessore della ruga reale e nell'immagine. La trasformazione watershed di fatto minimizza lo spessore delle rughe, ma se da un lato questo signica perdere l'informazione sulle rughe, dall'altro permette di ottenere un'informazione meno sensibile alla pressione. Rumore casuale Diventa rilevante nella watershed perché provoca piccoli minimi locali. analizzando un'immagine catturata a vuoto (con 256 toni di grigio) si misura un valor medio di circa 195 e una deviazione standard di circa 8. Calcolando valor medio e deviazione standard su nestre 10x10 si possono fare considerazioni locali: la deviazione standard del valor medio locale è circa 5,7. Si deduce che l'illuminazione (anche se non si tratta di un'immagine illuminata) non è perfettamente omogenea. e questo risultato ne misura la uttuazione. Il valor medio della deviazione standard locale è circa 4,5, e e questo valore stima le uttuazioni del rumore a prescindere dalle uttuazioni di illuminazione. con la trasformazione H-min, che riempie i minimi locali, e vari valori del parametro H, si osserva che la maggior parte dei minimi scompare per un valore di circa 10 e i restanti scompaiono per un valore di circa 20; quindi una sommaria stima della profondità dei minimi è mediamente 10, al massimo 20. Questo risultato concorda con il valore di deviazione standard locale pari a 4,5, secondo cui il 95% circa dei valori si trova in un range ampio circa 3σ ≈ 15. 3.4.2 Rumore dovuto alle caratteristiche dell'immagine Oltre al normale rumore presente in ogni immagine, ci sono una serie di disturbi intrinseci nel tipo di immagini presi in considerazione. Se si pensa all'immagine come a una DEM, un disturbo è costituito dal fatto che ogni cella, che di fatto dovrebbe essere una piccola valle, in realtà è composta da più avvallamenti minori, e anziché essere caratterizzata da un solo minimo locale, è spesso caratterizzata da più minimi. l'eccessiva presenza di minimi 42 CAPITOLO 3. ACQUISIZIONE DEI DATI provoca ulteriore over-segmentazione nella segmentazione watershed, quindi è opportuno caratterizzare i minimi. minimi profondi Una caratterizzazione dei minimi potrebbe essere la pro- fondità, denita come la dinamica del minimo. Se i minimi buoni sono quelli più profondi, una trasformazione H-min dovrebbe portare a una buona segmentazione; e infatti si ha un netto miglioramento nella segmentazione, anche se non ancora perfetto. Numerose prove sperimentali eseguite lasciano a intendere che la profondità dei minimi è signicativa, e caratterizza quasi completamente i minimi buoni. Altre considerazioni sui minimi L'osservazione delle immagini e dei risultati (gura 3.3) rivela che le isole possono avere più minimi (e quindi oversegmentazione) con caratteristiche simili: ad esempio, considerando una cella con due minimi simili tra loro, un criterio che tenta di selezionare i minimi lascerà entrambi i minimi o li rimuoverà entrambi, in ogni caso il risultato non sarà corretto. Possibili soluzioni: un ltraggio deve unire tali minimi, oppure unione delle celle dopo la segmentazione. 300 250 200 150 100 50 0 0 2 4 6 Distance along profile 8 10 12 Figura 3.3: Cella caratterizzata da vari minimi simili e prolo dei minimi Creste Si vorrebbe che le creste corrispondessero alle rughe, ma ci sono altre creste `cattive', che corrispondono alle micro-rughe di una cella. Si può 3.4. 43 ANALISI DEL RUMORE pensare di tentare di eliminare le creste oppure limitarsi a unire celle separate da creste `cattive'. Per separare creste buone e cattive si possono prendere in considerazione alcuni metodi trovati in letteratura basati sulle dinamiche dei contorni. In letteratura ho individuato nora alcune misure della dinamica dei contorni [27]: 1. dati due minimi, si misura la quota minima che bisogna scalare per passare da un minimo all'altro. 2. eettuata la segmentazione con watershed, si misura il rapporto tra il valor medio dei valori dei bacini e delle creste. Il prolo delle creste cattive è fortemente irregolare (gura 3.4, e per questo si ritiene che la dinamica 1 non sia completamente attendibile: è facile trovare un'irregolarità che permette di passare da un minimo all'altro anche se la cresta è mediamente alta. La dinamica 2, essendo basata su delle medie, sembrerebbe meno sensibile alla forte irregolarità dell'immagine. L'over-segmentazione può essere limitata alzando i minimi cattivi o ab200 180 160 140 120 100 80 60 0 1 2 3 4 5 Distance along profile 6 7 8 Figura 3.4: Cella over-segmentata e prolo della cresta superua bassando le creste cattive; non è detto che sia suciente prendere in considerazione soltanto i minimi. Sono comunque necessari ulteriori studi per identicare una segmentazione migliore. 44 CAPITOLO 3. ACQUISIZIONE DEI DATI 3.5 Commenti L'uso di questo dispositivo comporta sia vantaggi che svantaggi. Vantaggi: • Permette di ottenere un'immagine della micro-struttura della pelle con una buona risoluzione e denizione. • Mette bene in risalto la texture che caratterizza la pelle, fatta di rughe (micro-solchi della pelle) e celle (le aree delineate dalle rughe). • Il sensore non è inuenzato dall'illuminazione dell'ambiente di acquisizione, essendo capacitivo. • Il dispositivo TouchChip è economico, di facile utilizzo, compatto e utilizzabile su qualsiasi personal computer dotato di porta USB • L'acquisizione avviene velocemente Il dispositivo presenta anche diversi inconvenienti: • La tonalità di grigio è inuenzata da fattori non controllabili, quali la pressione esercitata sul sensore durante l'acquisizione, lo stato di idratazione della pelle, il sottile strato di grasso presente sulla supercie della pelle. • La pressione inuenza anche la larghezza delle rughe: aumentando la pressione le rughe si schiacciano e tendono ad assottigliarsi o scomparire. • Un movimento durante l'acquisizione può produrre immagini scadenti: un errore umano durante la procedura di acquisizione può portare a immagini ingannevoli. • La presenza di peli genera grosse aree bianche curvilinee, che ingannano sulla reale struttura delle rughe. Il protocollo di acquisizione è stato pensato per ridurre al minimo tutti questi inconvenienti. 3.5. COMMENTI Figura 3.5: 45 Confronto tra un'immagine della pelle acquisita con una macchina fotograca e una acquisita tramite sensore capacitivo. 46 CAPITOLO 3. ACQUISIZIONE DEI DATI Capitolo 4 L'algoritmo di analisi delle immagini Il processo complessivo di elaborazione è analogo a quello usato nei lavori precedenti e già descritto in 2.3.1, la descrizione viene ora approfondita, enfatizzando le modiche apportate. 4.1 Normalizzazione L'algoritmo è rimasto invariato rispetto a quanto visto in 2.3.1 ma si è ritenuto utile aggiungere una diversa parametrizzazione (lasciando comunque la possibilità di usare i parametri precedenti e ampiamente collaudati) intuitivamente più vicina agli eetti prodotti dalla saturazione: la percentuale di saturazione ai due estremi dell'istogramma. Inoltre si è aggiunto come parametro la correzione gamma. Questa parametrizzazione potrebbe risultare utile in futuro, quando bisognerà regolare in modo ottimale i parametri dell'algoritmo. Si anticipa che nella generazione di tutti i risultati non è stata eettuata una regolazione ne e precisa dei parametri in gioco; questa problematica è stata rimandata a quando il processo complessivo raggiungerà uno stato più maturo. L'implementazione Matlab è riportata in appendice D.1. 47 48 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI 4.2 Filtraggi basati sul rilevamento di linee Le immagini sono composte da un reticolo di rughe. Le celle delimitate dalle rughe sono a loro volta solcate da rughe più piccole. Per una corretta segmentazione delle immagini è necessario ripulire l'immagine dalle microrughe che frammentano le celle, e da ogni altro tipo di rumore e disturbo presente nell'immagine. Si è ritenuto conveniente prendere in considerazione un ltro basato sul rilevamento delle strutture lineari (le rughe). Se si considera un'immagine binaria in cui i punti bianchi appartengono alle rughe e i punti neri alle celle, la rilevazione delle linee può essere pensata come l'applicazione di un operatore morfologico in cui viene usato uno structure element che rappresenta un segmento. Un'operazione di erosione individua tutti i punti al centro di un segmento uguale allo structure element, una successiva dilatazione di tali punti restituisce tutti i punti dei segmenti rilevati; quindi un'operazione di apertura rileva con precisione tutte le linee di orientazione e dimensioni determinate dallo structure element. Ripetendo l'operazione per tutte le possibili orientazioni si ottiene un insieme di immagini, ognuna delle quali contiene le informazioni relative a una orientazione. Per ottenere l'immagine nale basta eseguire un'operazione di OR tra tutte le immagini parziali, infatti un punto appartiene a una ruga se per quel punto passa una linea di orientazione qualsiasi. Il passaggio a immagini in toni di grigio è immediato, perché basta usare le denizioni generalizzate degli operatori morfologici. L'operazione nale di OR, analogamente, viene sostituita ed estesa da un'operazione di massimo, esattamente come avviene nella generalizzazione degli operatori morfologici (1.4.1). E' utile sottolineare che rilevando linee di una certa dimensione, verranno prese in considerazione anche le linee di dimensione maggiore, mentre quelle di dimensione minore verrano oscurate. Il limite di questo algoritmo è che le rughe non necessariamente sono delle linee perfette, per questo non può essere usato ecacemente con segmenti molto lunghi. 4.2. FILTRAGGI BASATI SUL RILEVAMENTO DI LINEE 49 Un altro limite di questo algoritmo è quello classico degli operatori morfologici (1.4.6), infatti un solo punto di rumore può interrompere una linea, e questo fenomeno è tanto più marcato quanto più si tenta di rilevare linee grandi. Sono state eseguite prove sperimentali per determinare le dimensioni ottimali dei segmenti contenuti negli structure element, variando la lunghezza dei segmenti da 2-3 punti in su, e variando la larghezza da 1 punto in su; si osservano risultati qualitativamente migliori per linee larghe 1 punto e lunghe intorno a 10 punti. I risultati sono riportati nella gura 4.1 L'implementazione Matlab è riportata in appendice D.2. Per rendere i ri- Figura 4.1: Risultati dell'algoritmo lineopen: immagine ltrata con il parametro di lunghezza linea impostato a 7 e 15 sultati meno dipendenti dalla scelta dei parametri si è pensato di ripetere l'algoritmo con diversi valori dei parametri, e poi eseguire la somma delle immagini ottenute. Questo approccio ha anche un altro vantaggio: dove viene rilevata una linea grande, viene rilevata anche una linea piccola, perciò le 50 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI linee di dimensioni maggiori avranno intensità maggiore nel risultato nale. I risultati sperimentali sono riportati nella gura 4.2 L'implementazione Matlab è riportata in appendice D.2. Per superare i limi- Figura 4.2: Risultati dell'algoritmo linereconstruct: immagine originale e ltrata ti degli operatori morfologici si è pensato di sostituirli con una convoluzione con un kernel che rappresenta una linea. Ispirandosi al precedente algoritmo, per tentare anche di diminuire la dipendenza dai parametri di lunghezza e larghezza, si sono eseguite alcune prove sperimentali che hanno portato alla denizione della seguente funzione: x0 = x ∗ sin(ϑ) + y ∗ cos(ϑ) y0 = x ∗ cos(ϑ) − y ∗ sin(ϑ) x20 σa2 + y02 σb2 ) 2 Si tratta di una campana di Gauss molto schiacciata lungo un asse e ruof (x, y) = exp(− tata di un opportuno angolo ϑ (Figura 4.3); in base a questa funzione viene 4.2. 51 FILTRAGGI BASATI SUL RILEVAMENTO DI LINEE −3 −3 x 10 x 10 1.2 1.2 1 1 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0.2 0 150 0 150 140 100 120 140 100 120 100 80 50 60 100 80 50 60 40 0 20 0 40 0 20 0 Figura 4.3: Funzione usata per il kernel di convoluzione generata una matrice che servirà come kernel per una convoluzione con l'immagine da ltrare. Si può osservare come questa funzione assomigli molto a quella del ltro di Gabor [45], [44], [39], [42], [43]; la dierenza consiste nell'assenza di ondulazioni, questo svincola il ltraggio da aspetti frequenziali e dalla larghezza delle rughe. Facendo variare l'angolo ϑ si ottiene un insieme di immagini, ognuna di queste cattura le linee con una ben determinata orientazione. Il risultato nale è ottenuto con un'operazione di massimo, analogamente all'algoritmo precedente. Un'altra osservazione interessante è che questa funzione generalizza la campana gaussiana usata per il ltraggio nel lavoro precedente [47] e si riconduce ad essa imponendo σx = σy ; quindi scegliendo adeguatamente i parametri, possiamo essere matematicamente certi che l'algoritmo proposto non può produrre risultati peggiori. I risultati sperimentali sono riportati nella gura 4.4, e come si può osservare i risultati sono decisamente buoni. L'implementazione Matlab è riportata in appendice D.2. L'inevitabile prezzo da pagare per aver usato una convoluzione al posto degli operatori morfologici è il minore rigore nell rivelazione: se si tenta di rilevare linee molto grandi, si ottengono immagini molto sfumate. D'altra parte la minor rigidità nella rilevazione è anche il punto di forza dell'algoritmo, che ore stime ragionevoli anche in caso di ambiguità. Il punto di forza dell'approccio morfologico, invece, è che denisce una chiusura algebrica, che ha interessanti proprietà nella segmentazione watershed, come visto in 1.4.4. Tra i vari tipi di ltraggi 52 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI Figura 4.4: Risultati dell'algoritmo linelter: immagine ltrata e mappa delle orientazioni appena deniti, si è visto sperimentalmente che i migliori risultati si ottengono usando l'algoritmo basato su convoluzione, impostatando i parametri ai seguenti valori: σa = 0.7 e σb = 2. 4.3 La segmentazione La segmentazione watershed, di per sé, mette in gioco solo il parametro connettività. Sono state fatte alcuni studi per identicare il tipo di connettività migliore. Si osserva che usando una connettività di tipo 4 anziché 8 vengono individuate rughe diagonali molto sottili, a causa della quantizzazione le celle ai lati della ruga si toccano e le rughe vengono perse. Il risultato sembra essere più corretto. La tecnica usata nelle segmentazioni esemplicative, oltre il tipo di connettività, usa solo normalizzazione e H-min. nelle gure 4.6 e 4.7 sono riportate anche le segmentazioni da cui si è ottenuto i primi risultati (connettività 8 4.3. 53 LA SEGMENTAZIONE e ltraggio gaussiano) usate come termine di riferimento. Si è visto speri- Figura 4.5: Area segmentata con connettività rispettivamente 8 e 4. Figura 4.6: Segmentazione di rughe sottili. Le gure sono rispettivamente l'immagine originale, la segmentazione di riferimento, e le segmentazioni con connettività 8 e 4 mentalmente che il problema dell'over-segmentazione può essere risolto con l'operatore H-min, ma per risultati ottimali bisogna scegliere la soglia H manualmente. (vedi gura 4.8). Il risultato delle soglie H scelte è interessante se gracato in funzione dell'età (gura 4.9); infatti si nota una forte correlazione con quest'ultima. Il fenomeno non è casuale, ma è dovuto a due considerazioni, una di natura teorica e una legata alla natura delle immagini. 54 CAPITOLO 4. Figura 4.7: L'ALGORITMO DI ANALISI DELLE IMMAGINI Segmentazione di una ruga ambigua. Le gure sono ri- spettivamente l'immagine originale, la segmentazione di riferimento e le segmentazioni con connettività 8 e 4 La considerazione di natura teorica è che l'operatore H-min, per sua natura e a prescindere dal tipo di immagine, elimina più oggetti per valori alti di soglia, e poiché nei vecchi gli oggetti (le celle) sono di meno, soglie H elevate segmentano bene i vecchi. L'altra considerazione è che nei vecchi le celle sono solcate da micro-rughe, e la segmentazione tenderebbe a segmentare tutte le micro-celle anziché le celle principali. Alzando la soglia le micro-celle vengono riunite. Queste considerazioni sono utili perché, per valutare la qualità di un sistema automatico per la scelta della soglia H, è possibile valutare velocemente la qualità delle soglie scelte vericandone la correlazione con l'età. Come verica, si è gracato il risultato ottenuto scegliendo soglie H direttamente proporzionali all'età. L'ottimo risultato ottenuto conferma quanto detto, inoltre può essere utile per stimare la massima qualità dei risultati ottenibili. Nonostante i notevoli sforzi compiuti nel tentativo di segmentare meglio l'immagine senza ricorrere a parametri variabili, si è preferito usare un processo di segmentazione ltrando solo con soglia H-min variabile, con una scelta automatica del parametro H basata sugli algoritmi descritti in 4.3.1 Gli algoritmi per la determinazione del parametro H ottimale sono ancora lontani dallo stato di maturità, ma nonostante questo hanno prodotto i risultati migliori nora. 4.3. 55 LA SEGMENTAZIONE Residui − Correlazione=−0.14873 Correlazione=−0.86742 Autovalori=70.7705,1007.5732 25 100 90 20 80 70 15 60 50 10 40 30 5 20 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 80 90 100 P1Ynorm - Correlazione: 86%, Dev. St. Residui: 8,41 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 4.8: Risultati ottenuti scegliendo H manualmente. Correlazione=−0.92949 Autovalori=32.4591,904.7406 100 0.4 90 0.35 80 0.3 70 60 0.25 50 0.2 40 30 0.15 20 0.1 10 0.05 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 Figura 4.9: Sinistra: soglie H scelte manualmente. Destra: risultati ttizi ottenuti scegliendo la soglia H proporzionale all'età. 56 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI 4.3.1 Segmentazione a soglia H Variabile Questo approccio si basa sul tentativo di emulare il processo mentale svolto da un essere umano quando sceglie la soglia H ottimale per la segmentazione. Innanzitutto bisogna dire che questo processo è interattivo: la segmentazione corretta viene ottenuta solo facendo alcune prove e variando il parametro H basandosi sulla qualità dei risultati. La qualità del risultato viene valutata osservando la corrispondenza tra le rughe dell'immagine originale e di quella segmentata. Questo aspetto è stato emulato in due possibili modi: scegliendo la soglia H in base ai risultati ottenuti da una prima segmentazione a soglia ssa, e facendo variare la soglia H su tutti i valori, ricavando il valore da un graco che misuri la qualità della segmentazione in funzione di H. In entrambi questi approcci, è necessario denire un algoritmo che approssimi il processo mentale che porta la mente umana a dire che una segmentazione è corretta. Questo algoritmo è il punto cruciale di tutto il processo e il punto più complesso da arontare, La ricerca di un algoritmo ottimale è un problema quasi completamente inesplorato, che apre la strada ad ulteriori approfondimenti e ricerche. Di seguito si propone un algoritmo che, nonostante la sua semplicità, produce i migliori risultati ottenibili nora: oltre al risultato in sé, ha un'importanza grandissima perché dimostra la fertilità e percorribilità di questa strada. Per capire meglio il problema, è utile riettere sul processo mentale che porta alla segmentazione corretta: si osserva la segmentazione sovrapposta all'immagine originale, e ci si chiede se alcune rughe principali sono state mancate (under-segmentazione) o se sono state rilevate più rughe di quelle eettivamente presenti (over-segmentazione) e in base a quanto riscontrato si alza o abbassa la soglia H. Il processo si ferma quando si ottiene la corrispondenza migliore, in altre parole quando le due immagini dieriscono il meno possibile. L'idea di analizzare la dierenza ha generato il seguente algoritmo: Si prende l'immagine binaria ottenuta con la segmentazione e si fa la dierenza con l'immagine originale (normalizzata tra 0 e 1); la somma delle dierenze viene usata come misura della qualità della segmentazione. Come si può intuire il 4.3. LA SEGMENTAZIONE 57 risultato è molto grossolano: le rughe reali sono molto più spesse delle rughe individuate dalla watershed e la prima immediata conseguenza di questa osservazione è che la corrispondenza migliore sarà calcolata per un'immagine che in realtà è over-segmentata. Il modo in cui il risultato è sfasato rispetto a quello atteso non è stato ancora analizzato a fondo, per cui al momento ci si limita a correggerlo con un fattore arbitrario di correzione, scelto sperimentalmente. Anche la dinamica dei valori che se ne deducono non è detto che sia corretta, quindi è stato introdotto un secondo parametro moltiplicativo, di minore importanza ma comunque signicativo, dedotto sempre sperimentalmente, per compensare gli errori. Uno degli obiettivi futuri è anare la funzione per poter eliminare questi parametri. Primo metodo: 2 passate La considerazione, ricavata sperimentalmente, che sta alla base di questo metodo è che un valore di h sso, anche se scelto in modo ottimale, tende a over-segmentare soprattutto le pelli più vecchie. Questo è dovuto al fatto che le immagini di un bambino sono più omogenee, mentre in un vecchio le celle sono grandi, ma scompaginate e solcate da tante micro-rughe. Si esegue una prima segmentazione con una soglia ssa, poi si stima la qualità della segmentazione con il metodo indicato precedentemente, inne si risegmenta con con una soglia proporzionale alla stima calcolata. La stima fornisce un'informazione sulla qualità della segmentazione, ma non ci dice in che direzione dobbiamo muoverci: per questo motivo non è necessario né utile iterare ulteriormente. L'implementazione Matlab è riportata in appendice D.3. Secondo metodo: distribuzione H L'immagine viene segmentata con facendo variare H, e per ogni segmentazione viene calcolata la somiglianza con l'immagine originale. Il risultato è una distribuzione di valori da cui si ricava la soglia H ottimale. In teoria la moda della distribuzione dovrebbe fornire direttamente il valore ottimale di segmentazione, ma in questo modo non si ottiene nessun risultato: 58 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI Correlazione=0.54416 Autovalori=194.1104,660.0664 100 90 80 70 60 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 100 Figura 4.10: Soglia H ottenuta con l'algoritmo a 2 passate, gracata in funzione dell'età le considerazioni fatte sulla grossolanità della funzione di confronto portano a denire una soglia H proporzionale alla media della distribuzione. Si è osservato anche che la deviazione standard di questa distribuzione ha una correlazione con l'età: evidentemente la funzione di stima calcola punteggi buoni per la segmentazione in un intervallo più ampio per i vecchi, più stretto per i giovani. Questo è coerente con l'assunzione che i vecchi vanno segmentati con soglie più alte. L'implementazione Matlab è riportata in appendice D.3. Correlazione=0.55911 Autovalori=208.4443,777.7929 Correlazione=0.62736 Autovalori=169.6161,758.4064 100 100 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 10 10 0 0 10 20 30 Figura 4.11: 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 Media e deviazione standard della distribuzione ottenuta facendo variare la soglia H. Risultati gracati in funzione dell'età. 4.4. GRANULOMETRIE 59 4.4 Granulometrie E' stato implementato un algoritmo che può generare le seguenti granulometrie, direttamente da immagini in toni di grigio: • areaopen, rimozione di oggetti in base al parametro area • lineopen, rimozione di oggetti lineari in base al parametro lunghezza (il ltraggio avviene in tutte le direzioni e rimuove gli oggetti `corti') • h-maxima, rimozione di oggetti in base all'altezza relativa Da ogni granulometria, vengono estratte le seguenti distribuzioni: • Numero: numero di oggetti presenti nell'immagine (aree chiare circondate da contorni più scuri) • Area: supercie dell'immagine che non ha subito alterazioni • Volume: volume complessivo degli oggetti. Di ognuna di queste distribuzioni è possibile ottenere un graco altrettanto signicativo calcolando la derivata della curva. Si è osservato che nelle granulometrie in toni di grigio basate sulla misura dell'area c'è un problema concettuale, evidenziato dalla gura 4.12: un oggetto può inglobare oggetti più piccoli, e bisogna chiedersi se si vuole contare solo solo l'area dell'oggetto principale o anche di quelli secondari. La granulometria `normale' conta tutti gli oggetti, generando un numero enorme di oggetti di piccola dimensione in presenza di rumore, oppure, come nel caso in esame, nel caso di strutture composte da altre microstrutture. Si è pensato quindi di modicare il conteggio scartando gli oggetti che fanno parte di oggetti più grossi, ottenendo una granulometria battezzata `ridotta'. Questa ambiguità nelle misure delle aree è il motivo per cui, normalmente, si misura l'area per immagini binarie, e il volume per immagini in toni di grigio. Data l'importanza della misura delle aree nel contesto applicativo, si è comunque cercato di studiare l'area anche per le immagini in toni di grigio. 60 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI 0.75 0.7 0.65 0.6 0.55 0.5 0.45 0.4 0 10 20 30 40 50 60 70 80 90 100 Figura 4.12: Prolo di un oggetto contenente altri due oggetti al suo interno Le prove sono state eettuate su 6 immagini di piccola dimensione a causa della complessità computazionale degli algoritmi, che avrebbe reso un'analisi di molte immagini a piene dimensioni impraticabile in assenza di algoritmi ottimizzati. Questa prima analisi è stata svolta per valutare la fertilità di questo approccio e la correttezza degli algoritmi. Si può osservare che i risultati riportati non sono sucientemente signicativi per trarre delle conclusioni; in Matlab è implementata una versione sucientemente eciente della trasformata H-max (e H-min) tale da permettere di eseguire un'indagine più accurata. Per la granulometria basata su area, Matlab mette a disposizione solo la funzione di Area-Open per immagini binarie, e applicando la denizione del principio di sovrapposizione per estenderla al caso di immagini in toni di grigio si è ottenuto o un algoritmo troppo ineciente per utilizzi pratici. In letteratura, comunque, sono noti algoritmi per implementare ecientemente le granulometrie ([17], [18], [19], [20], [22], [21]). Visto che i migliori risultati disponibili sono basati su una granulometria basata su area ottenuta da una particolare immagine binaria (quella ottenuta con la segmentazione watershed) si ritiene particolarmente promettente la strada della granulometria basata su Area direttamente su immagini in toni di grigio, perché individuare la segmentazione corretta è un problema particolarmente critico e sarebbe interessante poterlo aggirare. D'altra parte, non bisogna illudersi che questa 4.4. 61 GRANULOMETRIE 1 23 28 200 200 200 150 150 150 100 100 100 50 50 50 0 0 50 100 0 0 64 50 100 0 65 200 200 150 150 150 100 100 100 50 50 50 0 50 100 0 0 1 50 100 0 100 80 80 80 60 60 60 40 40 40 20 20 20 50 100 0 0 64 50 100 0 100 80 80 80 60 60 60 40 40 40 20 20 20 50 100 0 0 50 50 100 50 100 94 100 0 0 65 100 0 100 28 100 0 0 23 100 0 50 94 200 0 0 100 0 0 50 100 Figura 4.13: Granulometria - Numero. Commenti a pag. 59 62 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI 1 23 28 25 25 25 20 20 20 15 15 15 10 10 10 5 5 5 0 0 50 100 0 0 64 50 100 0 65 25 25 20 20 20 15 15 15 10 10 10 5 5 5 0 50 100 0 0 1 50 100 0 50 40 40 40 30 30 30 20 20 20 10 10 10 50 100 0 0 64 50 100 0 50 40 40 40 30 30 30 20 20 20 10 10 10 50 100 0 0 50 50 100 50 100 94 50 0 0 65 50 0 100 28 50 0 0 23 50 0 50 94 25 0 0 100 0 0 50 100 Figura 4.14: Granulometria - Numero Ridotto. Commenti a pag. 59 4.4. 63 GRANULOMETRIE 1 23 28 2000 2000 2000 1500 1500 1500 1000 1000 1000 500 0 50 100 500 0 64 50 100 500 65 2000 2000 1500 1500 1500 1000 1000 1000 0 50 100 500 0 1 50 100 500 100 80 80 80 60 60 60 40 40 40 20 20 20 50 100 0 0 64 50 100 0 100 80 80 80 60 60 60 40 40 40 20 20 20 50 100 0 0 50 50 100 50 100 94 100 0 0 65 100 0 100 28 100 0 0 23 100 0 50 94 2000 500 0 100 0 0 50 Figura 4.15: Granulometria - Area. Commenti a pag. 59 100 64 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI 1 23 28 500 500 500 400 400 400 300 300 300 200 200 200 100 100 100 0 0 50 100 0 0 64 50 100 0 65 500 500 400 400 400 300 300 300 200 200 200 100 100 100 0 50 100 0 0 1 50 100 0 0 23 1200 1200 1000 1000 1000 800 800 800 600 600 600 400 400 400 200 200 200 0 50 100 0 0 64 50 100 0 1200 1000 1000 1000 800 800 800 600 600 600 400 400 400 200 200 200 50 100 0 0 50 50 100 50 100 94 1200 0 0 65 1200 0 100 28 1200 0 50 94 500 0 0 100 0 0 50 100 Figura 4.16: Granulometria - Area Ridotta. Commenti a pag. 59 4.4. 65 GRANULOMETRIE 1 23 28 1000 1000 1000 900 900 900 800 800 800 700 700 700 600 600 600 500 500 500 400 400 400 300 0 50 100 300 0 64 50 100 300 65 1000 1000 900 900 900 800 800 800 700 700 700 600 600 600 500 500 500 400 400 400 300 300 50 100 0 1 50 100 300 25 20 20 20 15 15 15 10 10 10 5 5 5 50 100 0 0 64 50 100 0 25 20 20 20 15 15 15 10 10 10 5 5 5 50 100 0 0 50 50 100 50 100 94 25 0 0 65 25 0 100 28 25 0 0 23 25 0 50 94 1000 0 0 100 0 0 50 100 Figura 4.17: Granulometria - Volume. Commenti a pag. 59 66 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI strada sia per forza vincente: una granulometria sull'immagine in toni di grigio sarebbe inevitabilmente inuenzata dal rumore, mentre una granulometria ricavata dalla segmentazione watershed ha il vantaggio di partire da un'immagine molto schematica e `pulita'. Una risposta denitiva può essere data solo dopo ulteriori prove sperimentali. Per il momento la granulometria basata su area è calcolata solo a partire da immagine binaria con un algoritmo specico ed eciente per questa particolare granulometria. 4.5 L'estrazione di features Fra i tanti modi di estrarre features, quello che ha dato risultati migliori e su cui ci si è concentrati di più può essere schematizzato come segue: si ricava una curva granulometrica dall'immagine, e da questa si ricavano delle statistiche. Le granulometrie prese in considerazione sono basate su AreaOpen partendo da immagini in bianco e nero prodotte dalla segmentazione Watershed, e trasformazione H-min partendo da immagini in toni di grigio. Le statistiche prese in considerazione sono: media, varianza, skewness, kurtosis, calcolate sia rispetto all'asse X che Y; Area totale della distribuzione; considerando poi la distribuzione cumulativa si sono presi in considerazione le coordinate X e Y di un percentile basso (5%), un percentile alto (95%), la dierenza tra questi due, il punto della distribuzione cumulativa a pendenza 1, calcolato sia sulla distribuzione originale che normalizzata1 . Quest'ultima coincide con la feature individuata in [47]. In seguito si farà riferimento a queste features rispettivamente con i nomi: mediaX, varianzaX, skewnessX, kurtosisX, mediaY, varianzaY, skewnessY, kurtosisY, totale, sogliaLX, sogliaHX, sogliaLY, sogliaHY, deltaX, deltaY, P1X, P1Y, P1Xnorm, P1Ynorm. Oltre a features di origine granulometriche, è stata presa in considerazione anche una feature basata sulla deviazione 1 per distribuzione normalizzata si intende una distribuzione di area unitaria, ovvero distribuzione cumulativa con valore massimo 1. Anche i valori dell'asse X vengono riportati tra 0 e 1 4.5. L'ESTRAZIONE DI FEATURES 67 standard locale. 4.5.1 Granulometria H-min La trasformazione H-minima è di fatto una chiusura morfologica con i requisiti matematici necessari per essere usata come granulometria. Se una cella è grande tende ad avere anche una dinamica maggiore, e quindi è correlata indirettamente con l'età. Questa correlazione meno diretta di quella che si otterrebbe con una granulometria basata su area limita la qualità di questa feature, ma la possibilità di implementare gli algoritmi necessari senza eccessivi sforzi e la possibilità di ottenere una feature che non introduce nessun parametro e richiede in ingresso l'immagine in toni di grigio ha incoraggiato lo studio di questa granulometria. Inoltre lo studio della segmentazione in funzione di H potrebbe essere utile per fornire un metodo di segmentazione con parametro H variabile. L'implementazione Matlab è riportata in appendice D.4. 4.5.2 Granulometria basata sull'Area di immagini binarie Una granulometria basata sull'area delle celle è la scelta più naturale per caratterizzare le immagini in funzione dell'età, visto che questa è legata proprio alla dimensione delle celle. La qualità delle features che ne derivano, però dipende dalla qualità dell'immagine binaria di partenza. Un'immagine generata tramite segmentazione watershed produce immagini con celle perfettamente separate e prive di rumore. Questo tipo di segmentazione è indispensabile per raggiungere i risultati migliori, come confermato dai risultati ottenuti applicando la granulometria a un'immagine binaria generata con una soglia: si hanno risultati decisamente peggiori a causa dell'inevitabile rumore residuo, delle celle che si toccano e delle celle frammentate. In 4.18 sono riportati i risultati ottenuti con segmentazione watershed a soglia H ssa e sogliatura (la soglia usata è 0.7, ovvero quella che produce risultati 68 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI Correlazione=−0.74709 Autovalori=122.6605,893.3757 Correlazione=−0.4855 Autovalori=243.9631,754.4622 100 100 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 10 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 Figura 4.18: Feature P1Ynorm ottenuta con soglia H ssa, a sinistra il risultato con segmentazione watershed, a destra quello con sogliatura migliori tra i valori provati). Assodato che la strada corretta è quella della segmentazione watershed, il problema si riduce all'individuazione della segmentazione più corretta possibile. I risultati di gura 4.18, ottenuti con una soglia H ssa, non sono certo buoni come quelli ottenuti scegliendo manualmente la segmentazione migliore. I risultati ottenuti manualmente, ci forniscono molte interessanti informazioni: Innanzi tutto ci dicono che agire solo sul parametro H è suciente per ottenere una buona segmentazione: questo è il motivo per cui si è messa da parte la strada che si basava sulla ricerca di una segmentazione migliore basandosi su parametri ssi e si è cercato di individuare un algoritmo per scegliere una soglia H variabile. Di fatto, questo modo di generare le features è lo stesso usato nel lavoro precedente; l'unico marginale cambiamento è la gestione dell'eetto di bordo: Le celle ai bordi vengono spezzate a metà, e quindi risultano più piccole di quanto eettivamente sono. L'eetto ai bordi viene evitato scartando le celle connesse ai bordi, inoltre la feature viene rapportata all'area complessiva dell'immagine eettivamente usata, che varia in funzione della dimensione delle celle ai bordi rimosse. In Questo modo diventa anche indipendente dalle dimensioni dell'immagine (anche se, per immagini più grandi, sarà più precisa perché dispone di maggiore informazione). L'implementazione Matlab è riportata in appendice D.4. 4.5. 69 L'ESTRAZIONE DI FEATURES 4.5.3 La deviazione standard locale La media della deviazione standard locale dell'immagine ltrata presenta una certa correlazione con l'età. Si è studiata l'inuenza della dimensione dell'intorno sui risultati e si è ottenuto che per intorni piccoli la retta dei minimi quadrati ha pendenza negativa, aumentando le dimensioni dell'intorno la pendenza (in valore assoluto) diminuisce, quando la retta diventa orizzontale anche la correlazione è minima. Aumentando ancora le dimensioni dell'intorno la pendenza diventa positiva e la correlazione aumenta di nuovo, inne la correlazione con l'età tende a diminuire ancora, no a svanire quando tutti i valori convergono verso la deviazione standard globale, costante per tutte le immagini. Alla luce di queste osservazioni si sono presi due valori dell'intorno, uno per intorni piccoli e uno per intorni grandi, in cui la correlazione è alta e la pendenza opposta. La dierenza tra le due ha generato una nuova feature migliore delle due prese singolarmente. Le dimensioni di intorno considerate sono 2, 4, 8, 16, 32, 64, 128. E' importante sottolineare che l'operazione di ltraggio è indispensabile per ottenere i risultati trovati: come conferma e verica in gura 4.19 sono riportati alcuni risultati ottenuti dall'immagine normalizzata e senza alcun ltraggio. In gura 4.20, invece, sono riportate le deviazioni locali standard per un intorno grande e per un intorno piccolo. L'implementazione Matlab è riportata in appendice D.6. Correlazione=−0.62792 Autovalori=144.0135,632.57 Correlazione=−0.27999 Autovalori=333.9422,663.3814 120 160 140 100 120 100 80 80 60 60 40 40 20 0 20 −20 0 0 10 20 30 40 50 60 70 80 90 100 −40 0 10 20 30 40 50 60 70 80 90 100 Figura 4.19: Feature Deviazione Standard Locale con intorno 4 e 64, generata senza ltrare l'immagine 70 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI Correlazione=−0.67139 Autovalori=135.1189,687.3328 Correlazione=0.48983 Autovalori=205.9724,601.6027 100 100 90 90 80 80 70 70 60 60 50 50 40 40 30 30 20 20 10 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 Figura 4.20: Feature Deviazione Standard Locale con intorno 4 e 32, generata ltrando l'immagine 4.6 Altri algoritmi Sono stati studiati anche numerosi altri algoritmi che non hanno prodotto, per ora, risultati signicativi. Si ritiene utile prenderli lo stesso in considerazione perché potrebbero rivelarsi utili per ulteriori studi: l'attuale processo di elaborazione delle immagini è ancora lontano dallo stato di piena maturità, e questi algoritmi sono possibili punti di partenza per ulteriori studi. Inoltre la loro trattazione serve anche per mettere in evidenza le dicoltà e i limiti di altre strade, giusticando ulteriormente le scelte fatte nella denizione del processo globale di elaborazione. 4.6.1 Sogliatura a doppia soglia Per migliorare il passaggio da un'immagine in toni di grigio a un'immagine binaria è stato implementato l'operatore di soglia doppia, secondo la denizione in [10], pagina 652. Eettivamente i risultati prodotti da questo operatore sono migliori di quelli ottenuti con una sola soglia, ma ci sono anche degli inconvenienti: riettendo su questo algoritmo si osserva che una soglia denisce quali oggetti appariranno nell'immagine nale, mentre l'altra decide la forma degli oggetti selezionati. Una conseguenza di questa implementazione è la spiccata asimmetria nel comportamento che potrebbe rendere dicile 4.6. ALTRI ALGORITMI 71 l'applicazione dell'algoritmo perché oltre a scegliere due soglie anziché una bisogna anche scegliere se applicare l'operatore all'immagine originale e al suo negativo, visto che i risultati sono diversi (vedi gura 4.21). Per superare questi inconvenienti la funzione è stata migliorata basandosi sul principio dei ltri alternati (Alternating Sequential Filers, ASF [14], [16]). L'algoritmo nale conserva i vantaggi del precedente ma opera simmetricamente, semplicandone le modalità d'uso. 4.6.2 Etichettatura delle rughe L'algoritmo si ripropone di identicare le rughe, con lo scopo di poterle caratterizzare o per meglio ltrare l'immagine. Una ruga è pensata come un insieme di punti connessi disposti più o meno lungo una linea. Il test di appartenenza a una ruga Alla base dell'algoritmo c'è il problema di decidere se un insieme di punti costituiscano una ruga o no. Questo problema viene arontato calcolando la retta dei minimi quadrati dei punti. Si dimostra che se le distanze dei punti dalla retta dei minimi quadrati hanno una distribuzione gaussiana, la somma delle distanze ha una distribuzione σ 2 χ2n−2 , dove σ 2 è la varianza e χ2n−2 è la distribuzione chi-quadro di grado n-2, dove n è il numero di punti. In questo modo è possibile calcolare la probabilità che un insieme di punti appartengano a una linea. Per il calcolo della retta dei minimi quadrati è stata applicata la trasformata di Karhunen-Loève (appendice B). Nel nostro caso, I punti del piano vengono approssimati con una retta2 . La dierenza tra una linea e una ruga, però è che una ruga è lineare solo localmente. Per tenere conto anche di questo, vanno testati solo i punti della ruga contenuti in un intorno. Considerare una ruga lineare solo localmente 2 Questo approccio potrebbe essere generalizzato per tener conto dei toni di grigio dell'immagine: i punti di una linea sarebbero punti in uno spazio tridimensionale che approssimano una retta 72 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI Figura 4.21: Immagini in Bianco e nero ottenute rispettivamente con soglia normale, doppia soglia (positivo e negativo), doppia soglia simmetrica 4.6. ALTRI ALGORITMI 73 non solo porta a risultati migliori, ma semplica anche i calcoli, visto che bisogna eseguire test solo su un numero limitato di punti, a prescindere da quanto sia lunga la ruga o grande l'immagine. Quanto visto nora, di fatto, stabilisce un criterio di raggruppamento dei punti, quindi ci si trova ad arontare un problema di clustering, già di per sé complesso, ulteriormente complicato dai seguenti fatti: • Le rughe possono intersecarsi, quindi un punto può appartenere a più rughe. • In un'immagine in toni di grigio non è ben denito quali punti siano rughe e quali celle. • Il numero di cluster che si otterranno non è denito a priori L'idea di base L'idea intuitiva di base è la seguente: a partire da un punto, si va alla ricerca della ruga aggiungendo gradualmente punti vicini no a quando non è più possibile aggiungere punti, poi si riparte da altri punti. Per concretizzare questa idea bisogna precisare molti aspetti. Si è già precisato il criterio matematico per vericare se un punto possa o meno essere aggiunto a una ruga, ma bisogna ancora decidere quali punti tentare di aggiungere, in che ordine, se bisogna eseguire test solo per aggiungere punti o anche per rimuoverli, da quali punti o raggruppamenti di punti iniziare, bisogna specicare se e come gestire la sovrapposizione delle rughe, e inne analizzare come questi aspetti inuenzino le prestazioni dell'algoritmo, sia in termini di correttezza dei risultati che di velocità di calcolo. Il problema dei punti di partenza Bisogna decidere da dove far partire la ricerca delle rughe. Innanzi tutto bisognerebbe sapere quali punti appartengono a qualche ruga, supponendo di saperlo l'algoritmo più corretto da un punto di vista dei risultati dovrebbe far partire la ricerca da tutti questi punti e per ogni punto identicare tutti 74 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI i possibili insiemi connessi di punti che lo includono e scegliere l'insieme che meglio approssima una ruga. Ovviamente un algoritmo del genere sarebbe computazionalmente improponibile, per cui si è pensato di approssimare il problema come segue: partendo da ogni punto con luminosità al di sopra di una certa soglia, si aggiungono i punti adiacenti scegliendoli in base a qualche criterio, e si continua no a quando non è più possibile aggiungere punti. Il principale inconveniente di questo approccio è che genera una ruga per ogni punto, e oltre a essere computazionalmente dispendioso genera molte rughe ridondanti, simili tra loro ma non identiche. Eliminare questa ridondanza non è un problema banale, perché è possibile che due rughe si sovrappongano per incrociarsi, pur essendo distinte. Anche disponendo di un criterio per decidere se due rughe sono sovrapposte o si incrociano, l'eliminazione della ridondanza a posteriori sarebbe computazionalmente proibitiva: il costo dell'algoritmo di confronto (che nelle più ottimistiche delle ipotesi avrà un costo lineare nel numero di punti di cui sono composte le rughe, ma presumibilmente e ragionevolmente avrà costo più elevato) va moltiplicato per il numero di confronti da fare, che è o(n2 ), dove n è il numero delle rughe. In conclusione, non è possibile eliminare la ridondanza delle rughe a posteriori, quindi è necessario eliminarla (o per lo meno limitarla) durante il processo stesso di generazione delle rughe; l'ideale sarebbe scegliere i punti di partenza in modo ottimale per generare solo le rughe strettamente necessarie: il costo dell'algoritmo sarebbe così quello minimo possibile. Una approssimazione del problema potrebbe essere quella di non iniziare la ricerca delle rughe dai punti che sono stati già assegnati a un'altra ruga. Si conserva in questo modo la possibilità di generare rughe che si incrociano e diminuisce sensibilmente il tempo di calcolo, ma i risultati non sono identici e dipendono dall'ordine di valutazione dei punti. I risultati sperimentali (gura 4.22) mostrano il degrado dei risultati. Nella tabella 4.1 sono riportati i tempi di esecuzione e il numero di rughe rilevate. Per minimizzare il degrado si dovrebbe valutare i punti secondo un ordine ottimale, ad esempio prima i punti più chiari, oppure prima i punti in cui è stata già rilevata una linea con un'altro metodo. Lo studio in questa direzione è comunque rimandato a lavori successivi. 4.6. ALTRI ALGORITMI 75 Figura 4.22: Le prime due immagini mostrano il risultato ripartendo da tutti i punti, le altre due mostrano i risultati senza ripartire dai punti già assegnati a una ruga Anziché partire da singoli punti, è possibile partire da gruppi con un numero di punti più elevato possibile. Esperimenti fatti partendo da insiemi di punti individuati con linedetection ha mostrato un sensibile abbassamento dei tempi di calcolo e una diminuzione della ridondanza delle rughe, introducendo però ulteriori problematiche. Se le rughe iniziali vengono generate con tecniche diverse, non è detto che soddisno le condizioni di appartenenza ad una ruga già viste: bisogna quindi eseguire una operazione preliminare di scrematura che potrebbe rendere le rughe non connesse, o addirittura cancellarle completamente. Inoltre bisogna comunque far in modo di generare un insieme iniziale che cattura tutte le rughe, e ogni cluster iniziale deve far rifermento a una sola ruga, altrimenti diventa necessario una ulteriore procedura che si occupa di spezzare un cluster in più rughe e un criterio per decidere quando spezzare un cluster. 76 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI La ricerca delle rughe di partenza diventa molto simile alla ricerca di un insieme di marker. Una prima prova è stata fatta facendo iniziare l'algoritmo con linee rilevate morfologicamente, in questo modo si ha il vantaggio che le condizioni iniziali sono automaticamente soddisfatte. I risultati riportati in 4.25 e 4.1, eseguiti partendo da linee lunghe 7 punti, evidenziano un miglioramento dei risultati in termini di ridondanza delle rughe nali e tempo di calcolo. E' stata implementato un algoritmo di generazione delle rughe iniziali basato sull'algoritmo linelter, che oltre al ltraggio produce una mappa dell'orientazione locale dominante (vedi gura 4.4) che sembra adatta a generare le rughe iniziali. Gli insiemi connessi di orientazioni simili sono le rughe iniziali; la gura 4.23 e la tabella 4.1 mostrano i risultati ottenuti. Un'altra Figura 4.23: Risultati ottenuti partendo da rughe generate da orientazione idea sarebbe quella di partire dai punti di massimo, ma per evitare punti di partenza falsi bisognerebbe fare qualche ltraggio, presumibilmente di tipo morfologico per le proprietà che hanno nel gestire i punti estremanti. Il problema della sovrapposizione se due cluster si sovrappongono non è immediato capire se si tratta di due rughe che si incrociano o se si tratta di due segmenti della stessa ruga. Le prime implementazioni sperimentali si limitavano a ignorare il problema, generando molte rughe sovrapposte e ridondanti. In seguito si è studiato un 4.6. ALTRI ALGORITMI 77 semplice algoritmo che unisce due rughe in base a criteri di sovrapposizione e orientazione: se la sovrapposizione supera una certa soglia o se l'orientazione media dei punti di intersezione è simile le due rughe vengono fuse. Il calcolo della sovrapposizione ha costo o(n), il test sull'orientazione, ha complessità o(n2 ). Sono stati eseguiti alcuni test su immagini di piccole dimensioni con buoni risultati dal punto di vista della correttezza: il numero di rughe diminuisce sensibilmente, mentre la segmentazione rimane buona; purtroppo non è stato possibile eseguire test su immagini complete a causa dell'esplosione dei tempi di calcolo, che ha reso impossibile eseguire prove in tempi ragionevoli. Si conclude che le prove sperimentali confermano quanto antici- Figura 4.24: Risultati del test di fusione delle rughe ridondanti pato: a prescindere dalla qualità dei risultati, non è praticamente possibile eliminare la ridondanza delle rughe a posteriori a causa della complessità computazionale. Il criterio di scelta dei punti da aggiungere Sono stati individuati due criteri per scegliere l'ordine di aggiunta dei punti a un insieme: in base a una probabilità di linearità oppure in base alla luminosità. In entrambi i casi viene assegnato a ogni punto adiacente un punteggio che determina quali punti bisogna tentare di aggiungere prima. Un punteggio inferiore a una certa soglia esclude il punto dalla valutazione, in questo modo prima o poi l'algoritmo ferma l'esplorazione. 78 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI La probabilità che un punto appartenga alla ruga è calcolata come spiegato in 4.6.2. In questo caso, però non bisogna semplicemente chiedersi se la probabilità supera una certa soglia (calcolo che può essere fatto ricorrendo a una tabella, e quindi con tempi di calcolo quasi nulli) ma bisogna calcolare il valore della probabilità vero e proprio. Le prove sperimentali eseguite con Matlab e il tool Proler hanno mostrato che la funzione chi2cdf (che calcola il valore della funzione cumulativa della distribuzione χ2 ) usata per calcolare questa probabilità pesa notevolmente sui tempi di calcolo. Inoltre il test di linearità può essere eseguito solo se si dispone di almeno due punti, complicando il problema della scelta degli insiemi iniziali. Il criterio basato sulla luminosità fornisce direttamente un punteggio per determinare l'ordine di aggiunta dei punti senza fare calcoli. Sebbene sarebbe teoricamente più ecace combinare i due criteri, usando solo il criterio della luminosità si ottengono risultati accettabili con tempi di calcolo minori. La gura 4.25 e la tabella 4.1 riportano i risultati ottenuti con i due criteri. Sarebbe corretto calcolare l'ordine di aggiunta di tutti i punti intorno alla ruga ogni volta che viene aggiunto un nuovo punto, ma ancora una volta l'onere computazionale che ne deriverebbe ha portato a valutare il punteggio di un punto una sola volta quando viene `toccato' dalla ruga. Un'altra approssimazione può essere: per ogni punto si calcolano i punteggi, poi si visitano ricorsivamente i punti in base al punteggio, e si generano nuovi punteggi. In pratica si testa prima il punto migliore immediatamente adiacente al punto corrente, anche se ci sarebbero punteggi migliori vicino ad altri punti, che verranno visitati alla ne della ricorsione. Questa imprecisione non è però così grave: in fondo il punteggio stesso usato è poco preciso e ha valore puramente indicativo; l'importante è valutare comunque tutti i punti. Possibili ottimizzazioni Una volta denito l'algoritmo, si possono eseguire diverse ottimizzazioni per rendere l'implementazione più veloce. La regressione lineare potrebbe essere calcolata incrementalmente man ma- 4.6. ALTRI ALGORITMI 79 Figura 4.25: Risultati partendo da linee rilevate morfologicamente; le immagini sopra si riferiscono ai risultati usando punteggi basati su luminiosità, quelli inferiori si riferiscono ai risultati usando punteggi basati su test chi2 80 CAPITOLO 4. L'ALGORITMO DI ANALISI DELLE IMMAGINI no che vengono aggiunti i punti. Bisogna valutare se questa ottimizzazione sia conveniente perché la regressione viene fatta sempre e comunque con un numero limitato di punti (quelli in un intorno) e quindi il costo della regressione non aumenta con le dimensioni dell'immagini, mentre un algoritmo più complesso potrebbe degradare le prestazioni con pochi punti. inoltre, sempre a causa dell'analisi locale, oltre al calcolo parziale aggiungendo punti bisogna considerare la possibilità di calcolo parziale rimuovendo i punti dall'insieme di test (prove sperimentali e implementazione dierenziale rinviate a futuri lavori). Il calcolo dei punti che appartengono all'intorno sottopone a test tutti i punti della ruga, forse potrebbe essere ottimizzato (anche per questo si rimanda a futuri lavori). Conclusioni Questa tecnica si è rilevata particolarmente complessa sia concettualmente che dal punto di vista computazionale, per cui è stata temporaneamente scartata per favorire strade più agevoli e promettenti. L'implementazione Matlab è riportata in appendice D.5. Tipo di test Tempo Rughe Ricerca a partire da tutti i punti 97 468 Ricerca senza partire dai punti già assegnati 3 50 Unione Rughe 418 da 468 a 413 Ricerca partendo con linee rilevate morfologicamente 40 164 Come sopra, ma punteggio basato su chi2 test 68 164 Ricerca partendo con linee rilevata dalle orientazioni 4 54 Tabella 4.1: Risultati delle prove eettuate Capitolo 5 Risultati Lo scopo di questa tesi era individuare algoritmi per l'elaborazione delle immagini della pelle acquisite tramite un sensore capacitivo. Il risultato degli studi compiuti ha condotto a un processo che prende in input un'immagine acquisita e restituisce delle features correlate con l'età. Segue una descrizione dei risultati sperimentali conseguiti. Per la valutazione della qualità dei risultati si è tenuto conto di: • coeciente di correlazione tra l'età anagraca e le features • centroidi e barre di errore delle classi ottenute raggruppando i campioni per fasce di età di 10 anni ciascuna • analisi dei residui, in particolare deviazione standard dei Residui • pendenza della retta di regressione Tutti i graci riportati mostrano le features normalizzate tra 0 e 100 in funzione dell'età anagraca. Viene riportato il graco dei valori e dei residui, sul graco dei valori si riporta anche la retta di regressione, i baricentri delle classi (rappresentati da un cerchietto) e le barre di errore. 81 82 CAPITOLO 5. RISULTATI 5.1 Granulometrie estratte da segmentazione Watershed In gura 5.1 è riportato il risultato ottenuto con scelta automatica della soglia H con l'algoritmo basato su distribuzione H. Fra le varie features estratte dalla curva granulometrica quella che ha prodotto risultati migliori si è confermata essere quella proposta in [47] e qui indicata con P1Ynorm. Il risultato è decisamente buono: il coeciente di correlazione è un pò suResidui − Correlazione=−0.16598 Correlazione=−0.80446 Autovalori=89.3052,839.7126 25 100 90 20 80 70 15 60 50 10 40 30 5 20 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 Correlazione: 80,4%, Dev. St. Residui: 9,45 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 5.1: Feature P1Ynorm, ottenuta con la soglia H generata dall'algoritmo basato su distribuzione H. periore all'80% la distribuzione dei punti è omogenea e ben distribuita lungo una fascia, come è sottolineato anche dalle barre di errore, che hanno tutte più o meno la stessa lunghezza. I centroidi sono abbastanza allineati, ad eccezione dell'intervallo tra 40 e 50, dove si osserva un leggero scalino. I risultati non sono molto buoni per età inferiori a 10 e superiori a 90, ma bisogna sottolineare che queste classi di età contengono solo 2 soggetti, e quindi non può essere dato troppo peso ai valori calcolati per queste classi. Inoltre, anche se le classi contenessero più soggetti, sarebbe ugualmente tollerabile un errore maggiore, visto che si tratta di casi `estremi'; soprattutto per i bambini, che sono in fase di sviluppo e crescita, è lecito aspettarsi comportamenti anomali. 5.1. GRANULOMETRIE ESTRATTE DA SEGMENTAZIONE WATERSHED Residui − Correlazione=−0.10309 Correlazione=−0.80051 Autovalori=90.4779,830.1359 25 100 90 20 80 70 15 60 50 10 40 30 5 20 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 70 80 90 100 70 80 90 100 SogliaHY - Correlazione: 80,0%, Dev. St. Residui: 9,51 Residui − Correlazione=−0.11158 Correlazione=−0.80186 Autovalori=91.4294,850.5593 25 100 90 20 80 70 15 60 50 10 40 30 5 20 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 DeltaY - Correlazione: 80,1%, Dev. St. Residui: 9,56 Residui − Correlazione=−0.10312 Correlazione=−0.80136 Autovalori=90.2288,832.2352 25 100 90 20 80 70 15 60 50 10 40 30 5 20 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 Totale - Correlazione: 80,1%, Dev. St. Residui: 9,50 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 5.2: Features SogliaHY, DeltaY e Totale ottenuta con la soglia H generata dall'algoritmo basato su distribuzione H. Immagini commentate a pagina 82 83 84 CAPITOLO 5. RISULTATI In gura 5.2 sono riportati i risultati di altre features che hanno dato buoni risultati. Per tutte e tre le features (SogliaHY, DeltaY e Totale) si osserva un andamento analogo, un pò peggiore delle feature P1Ynorm ma con diverse analogie. In particolare si può notare l'accentuazione dello scalino tra 40 e 50 anni. Come si può osservare, questo particolare andamento dei centroidi è comune a tutte le features, anche quelle che verranno presentate nei successivi graci e generate in modo diverso. Questo lascia pensare che il gradino non sia dovuto a un problema delle features, ma sia legato ai particolari campioni usati, che producono questo andamento `spezzato'. Valgono le stesse considerazioni fatte sul graco precedente relativamente al comportamento ai due estremi del graco. Il coeciente di correlazione è comunque intorno all'80% per tutte queste features. Le gure 5.3 e successive mostrano invece le rimanenti features calcolate. Queste altre features sono presentate in ordine decrescente di correlazione, e anche gli altri indicatori sottolineano la minore qualità dei risultati: maggiore dispersione, maggiore presenza di outlier, l'andamento perde di linearità, i centroidi perdono l'allineamento, le barre tendono ad avere lunghezze non omogene. 5.1. GRANULOMETRIE ESTRATTE DA SEGMENTAZIONE WATERSHED Residui − Correlazione=−0.13639 Correlazione=−0.79676 Autovalori=92.2526,829.4107 25 100 90 20 80 70 15 60 50 10 40 30 5 20 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 70 80 90 100 70 80 90 100 P1Y - Correlazione: 79,6%, Dev. St. Residui: 9,60 Residui − Correlazione=−0.18802 Correlazione=−0.75112 Autovalori=106.498,751.8383 35 100 90 30 80 25 70 60 20 50 15 40 30 10 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 SogliaLY - Correlazione: 75,1%, Dev. St. Residui: 10,3 Residui − Correlazione=−0.29729 Correlazione=−0.74407 Autovalori=110.5299,756.8923 30 100 90 25 80 70 20 60 15 50 40 10 30 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 DeviazioneStandardY - Correlazione: 80,1%, Dev. St. Residui: 9,50 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 5.3: Features P1Y, SogliaLY e DeviazioneStandardY, Immagini commentate a pagina 88 85 86 CAPITOLO 5. RISULTATI Residui − Correlazione=−0.058725 Correlazione=0.73478 Autovalori=119.1698,791.1988 35 100 90 30 80 25 70 60 20 50 15 40 30 10 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 70 80 90 100 70 80 90 100 SogliaHX - Correlazione: 73,4%, Dev. St. Residui: 10,9 Residui − Correlazione=0.054856 Correlazione=0.73277 Autovalori=110.907,719.4753 35 100 90 30 80 25 70 60 20 50 15 40 30 10 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 SogliaHX - Correlazione: 73,2%, Dev.e St. Residui: 10,5 Residui − Correlazione=−0.028272 Correlazione=0.73137 Autovalori=123.2429,812.6488 35 100 90 30 80 25 70 60 20 50 15 40 30 10 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 SogliaHX - Correlazione: 73,1%, Dev. St. Residui: 11,1 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 5.4: Features P1X, mediaX e SogliaHX. Immagini commentate a pagina 88 5.1. GRANULOMETRIE ESTRATTE DA SEGMENTAZIONE WATERSHED Residui − Correlazione=−0.041906 Correlazione=0.72414 Autovalori=127.5707,818.8752 35 100 90 30 80 25 70 60 20 50 15 40 30 10 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 70 80 90 100 80 90 100 DeltaX - Correlazione: 72,4%, Dev. St. Residui: 11,3 Residui − Correlazione=−0.0024605 Correlazione=0.70292 Autovalori=133.0464,773.8295 35 100 90 30 80 25 70 60 20 50 15 40 30 10 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 DeviazioneStandardX - Correlazione: 70,2%, Dev. St. Residui: 11,5 Residui − Correlazione=0.058741 Correlazione=0.68647 Autovalori=118.0828,640.378 40 100 90 35 80 30 70 25 60 20 50 40 15 30 10 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 SogliaLX - Correlazione: 68,6%, Dev. St. Residui: 10,8 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 5.5: Features DeltaX, DeviazioneStandardX e SogliaLX. Immagini commentate a pagina 88 87 88 CAPITOLO 5. RISULTATI Residui − Correlazione=0.0045653 Correlazione=0.66154 Autovalori=142.4703,700.5495 30 100 90 25 80 70 20 60 15 50 40 10 30 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 P1Ynorm - Correlazione: 66,1%, Dev. St. Residui: 11,9 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 5.6: Features P1Xnorm. Immagini commentate a pagina 88 Le Features P1Y, SogliaLY e DeviazioneStandardY mostrano comunque una certa correlazione con l'età, anche se non eccellente. Le features P1X, mediaX, SogliaHX, DeltaX, DeviazioneStandardX, SogliaLX e P1Xnorm hanno la particolarità di avere pendenza positiva, mentre tutte le altre hanno pendenza negativa; inoltre sono accomunate anche dal fatto che le barre degli errori crescono abbastanza progressivemente con l'età. E' interessante notare che anche i residui tendono ad avere correlazione maggiore in queste features. I risultati non sono buoni, ma questo gruppo di features ha anche la peculiarità di un ridotto gradino nell'intervallo 4050 anni, in alcune di queste features addirittura l'andamento dei centroidi è monotono (almeno nella zona centrale). 5.1. GRANULOMETRIE ESTRATTE DA SEGMENTAZIONE WATERSHED Anche l'algoritmo per la scelta della soglia H a due passate ha dato ottimi risultati; in gura 5.7 si riportano i risultati della sola feature P1Ynorm, senza ripetere le considerazioni fatte per tutte le altre features calcolate, che si comportano in modo perfettamente analogo a quanto già visto. Il punto a Residui − Correlazione=−0.048005 Correlazione=−0.82201 Autovalori=81.596,851.8343 25 100 90 20 80 70 15 60 50 10 40 30 5 20 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 P1Ynorm - Correlazione: 82,2%, Dev. St. Residui: 9,03 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 5.7: Feature P1Ynorm, ottenuta scegliendo H con l'algoritmo a 2 passate favore di questo risultato è certamente la correlazione molto alta: superiore all' 82%. Anche il comportamento in prossimità dell'intervallo 40-50 anni è decisamente buono, in questa feature l'andamento dei centroidi è monotono e regolare. La monotonia viene persa solo per le due classi ai due estremi del graco, la regolarità si aevolisce solo nella parte centrale del graco, ma, come si è già detto, questi difetti sono comuni a tutte le features e presumibilmente sono legate anche ai particolari campioni usati. 89 90 CAPITOLO 5. RISULTATI 5.2 Granulometria H-min Quello della granulometria H-min è un risultato indipendente dai precedenti, e introduce nuove features. In gura 5.8 è riportata la feature DeviazioneStandardY, generata dalla distribuzione granulometrica basata sul numero di oggetti. Questa feature è Residui − Correlazione=−0.039039 Correlazione=−0.80346 Autovalori=90.1493,844.2205 25 100 90 20 80 70 15 60 50 10 40 30 5 20 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 DeviazioneStandardY - Correlazione: 80,3%, Dev. St. Residui: 9,49 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 5.8: Feature DeviazioneStandardY, ottenuta con granulometria Hmin. Asse X: età anagraca, Asse Y: feature normalizzata molto interessante perché, oltre ad orire risultati paragonabili e con caratterisitche analoghe a quelli già visti, ha il pregio di non aver bisogno di segmentazione, quindi il processo che genera questa feature non è inuenzato da alcuni parametri critici come la soglia H. Questo pregio è anche il limite di questa feature: si tratta di un risultato `maturo', che dicilmente può essere migliorato ulteriormente, mentre le features generate da immagini segmentate possono essere migliorate ancora molto se si migliora la segmentazione. 5.3. 91 DEVIAZIONE STANDARD LOCALE 5.3 Deviazione standard locale Anche la feature generata tramite la deviazione standard locale è un risultato un pò a sè stante rispetto agli altri riportati. Il miglior risultato in questo settore è rappresentato dalla feature basata su dierenza descritta in 4.5.3, usando un intorno grande di 32 pixel e un intorno piccolo di 4 pixel. La gura 5.9 mostra i risultati ottenuti. Come la precedente, ha il pregio Residui − Correlazione=0.085326 Correlazione=−0.76268 Autovalori=98.0728,728.6056 30 100 90 25 80 70 20 60 15 50 40 10 30 20 5 10 0 0 10 20 30 40 50 60 70 80 90 100 0 0 10 20 30 40 50 60 70 80 90 100 Dev. St. Locale - Correlazione: 76,2%, Dev. St. Residui: 9,9 Asse X: età anagraca, Asse Y: feature normalizzata. Figura 5.9: Feature Deviazione Standard Locale. Asse X: età anagraca, Asse Y: feature normalizzata di non richiedere la segmentazione dell'immagine, ma introduce due ulteriori parametri (anche se non particolarmente critici), in questo caso i risultati sono buoni ma non particolarmente eccellenti: si osserva un coeciente di correlazione del 76%, la distribuzione non è una fascia molto regolare, inoltre le barre di errore per le classi di persone anziane tendono a diventare più grandi. Questo non signica che questo risultato sia da buttare: poichè è stato generato con un metodo radicalmente diverso da tutte le altre features, potrebbe rivelare interessanti sviluppi quando, nei lavori futuri, i risultati verranno combinati inisieme. 92 CAPITOLO 5. RISULTATI Capitolo 6 Conclusioni e lavori futuri Questa tesi ha trattato il processo di elaborazione di immagini della pelle acquisite tramite un sensore capacitivo nalizzato allo studio dell'invecchiamento della pelle. Si tratta di una pubblicazione completamente innovativa: non esiste in letteratura un'altra trattazione che denisce un processo completamente automatico per caratterizzare l'età della pelle partendo da immagini generate da semplici sensori capacitivi. Un accurato studio dei lavori già svolti, dei loro punti di forza e dei loro punti deboli, un approfondimento della teoria e dello stato dell'arte degli strumenti disponibili, sperimentazioni fatte per comprendere bene quali strumenti usare e in che modo, hanno permesso di migliorare l'intero processo di analisi e elaborazione. I risultati ottenuti possono essere riassunti nei seguenti punti: • Denizione di nuovi algoritmi specici per il contesto applicativo, in particolare algoritmi di ltraggio e di selezione automatica dei parametri • identicazione di nuove features correlate con l'eta • miglioramento delle features già utilizzate Molte questioni sono ancora aperte e richiederanno ulteriori approfondimenti; alcuni possibili approfondimenti promettono risultati ancora migliori: • Miglioramento del processo di segmentazione delle celle 93 94 CAPITOLO 6. CONCLUSIONI E LAVORI FUTURI • Miglioramento degli algoritmi per la selezione automatica del parametro H. • Studio delle granulometrie basate su area direttamente su immagini in toni di grigio, usando algoritmi ottimizzati • Studio più approfondito della morfologia delle rughe. • Analisi statistica dei risultati ottenuti elaborando molti campioni • Integrazione di tutti risultati ottenuti. Inne bisogna dire che gli studi eettuati nora si sono concentrati prevalentemente sullo studio della pelle in funzione dell'età, gli strumenti a disposizione possono essere usati anche per lo studio di altre caratteristiche biometriche, in particolare le immagini prodotte dal sensore capacitivo sono particolarmente adatte allo studio dell'idratazione. Si conclude che i risultati ottenuti, comunque buoni, possono essere considerati soltanto incoraggianti risultati preliminari, e il lavoro da svolgere è solo agli inizi. Appendice A Momenti e distribuzioni Data una distribuzione a valori discreti xi , si denisce momento di ordine k: (xi − x̄)k n dove x̄ è il valore atteso, n il numero di valori. Da questa denizione derivano P i le formule di varianza, skewness e kurtosis, corrispondenti ai momenti del secondo, terzo e quarto ordine. Nel caso discreto ci sono alcune varianti possibili nelle denizioni (alcuni preferiscono dividere per n, altri per n-1); riportiamo quelle usate: Varianza, intuitivamente misura quanto una distribuzione è `larga' 2 P i σ = (xi − x̄)2 n−1 Skewness, intuitivamente misura quanto una distribuzione è `asimmetrica': (xi − x̄)3 (n − 1)σ 3 P s= i Kurtosis, intuitivamente misura se una distribuzione è `piatta' o `appuntita': (xi − x̄)4 (n − 1)σ 4 P k= i 95 96 APPENDICE A. MOMENTI E DISTRIBUZIONI Appendice B Regressioni lineari Date le distribuzioni generate da variabile aleatoria X e un'altra variabile Y dipendente da X, è possibile stimare la legge che lega Y e X con una regressione, in particolare con una regressione lineare. Anche nel caso di due variabili X e Y correlate è possibile stimare una regressione lineare, ma in questo caso il calcolo va fatto in modo diverso: sarebbe un errore considerare le variabili X e Y una in funzione dell'altra anche nel caso di correlazione1 . Il metodo corretto è un caso particolare della trasformata di Karhunen-Loeve, che proietta uno spazio N-dimensionale in uno di dimensione inferiore. Dato un insieme di punti P, il valor medio x̄ e la matrice di co-varianza C, è possibile calcolare la matrice di proiezione Ψ composta dagli autovettori corrispondenti agli n autovalori maggiori, dove n è la dimensione dello spazio di proiezione. La proiezione y e la proiezione inversa x' si calcolano con le seguenti formule: y = ΨT (x − x̄) x0 = Ψy + x̄ = ΨΨT (x − x̄) + x̄ e si dimostra che si tratta della trasformazione che minimizza la quantità X (x − x0 )2 x∈P 1 In Matlab, questo signica che non è corretto usare la funzione reglin 97 98 APPENDICE B. REGRESSIONI LINEARI E quindi si tratta proprio della regressione lineare. Gli autovalori corrispondono alla varianza lungo la direzione corrispondente, e misurano gli assi dell'elissoide di inerzia dei punti. Appendice C Note, Curiosità e Bug di Matlab Usando intensivamente per diversi mesi l'ambiente Matlab 6.5 con l'Images Processing Toolbox 4.1 si sono osservati alcuni comportamenti inaspettati. Non possono essere considerati veri e propri bug, ma a volte possono produrre risultati imprevisti; a parte questo Matlab si è rivelato, comunque, un ottimo strumento di lavoro. Se lo structure element in un'operazione morfologica ha l'elemento centrale a 0 l'operazione morfologica viene eseguita con lo structure element trasposto rispetto agli assi. Non è ben chiaro se sia un eetto voluto o un bug dovuto a qualche ottimizzazione. Il valore di alcune variabili, visualizzato sui graci, può dare valori leggermente diversi, probabilmente nel graco i double vengono approssimati (sono state osservate alterazioni sulla quarta cifra signicativa). Se si rimuove una regione da una label matrix bisogna ri-etichettarla con bwlabel prima di passarla al comando regionprops; ovvero le etichette delle regioni non possono essere interi arbitrari, ma devono essere una successione ininterrotta. altrimenti la funzione regionprops può non funzionare correttamente. 99 100 APPENDICE C. NOTE, CURIOSITÀ E BUG DI MATLAB Appendice D Implementazione Matlab degli algoritmi usati D.1 Normalizzazione function out=normalizza(in,s,gamma,r); % normalizza un'immagine % output=normalizza(input,[nero bianco],gamma,raggio) oppure % output=normalizza(input,sigma,gamma,raggio) % nero e bianco sono le frazioni di pixel da rimuovere ai bordi % dell'istogramma, invece sigma è la deviazione standard parametri=ParametriPredefiniti; if (nargin<2) s=parametri.s; end; if (nargin<3) gamma=parametri.gamma; end; if (nargin<4) r=parametri.r; end; in=double(in); kernel=ones(r)/r^2; % possibile miglioramento: kernel rotondo media=imfilter(in,kernel,'same','symmetric'); dev=sqrt(imfilter((in-media).^2,kernel,'same','symmetric')); out=(in-media)./dev; if (s(1)>1), out=(out*s+128)/255; 101 102APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI out=imadjust(out,[0 1],[0 1],gamma); else %cambio di scala per riportare i valori tra 0 e 1 minimo=min(out(:)); massimo=max(out(:)); out=(out-minimo)/(massimo-minimo); out=imadjust(out,stretchlim(out,s),[0 1],gamma); end; if (nargout==0) figure;imshow(out); end; D.2 Algoritmi di ltraggio function out=lineOpen(in,lunghezza,larghezza) % rileva le linee con apertura morfologica if (nargin<2) lunghezza=7; end; if lunghezza==0 out=in; return; end; if (nargin<3) larghezza=1; end; if (lunghezza<larghezza) error('lunghezza deve essere maggiore di larghezza'); end; orientazioni=round(lunghezza*pi/2); sepiccolo=ones(larghezza); for i=1:orientazioni, %crezione dello structure element. per linee spesse bisogna allargare %lo structure element temp=getnhood(strel('line',lunghezza,180*i/orientazioni)); temp=padarray(temp,[larghezza larghezza],0,'both'); s=size(temp); se=zeros(s+2*larghezza); D.2. ALGORITMI DI FILTRAGGIO se(larghezza+1:s(1)+larghezza,larghezza+1:s(2)+larghezza)=temp; se=imdilate(se,sepiccolo); %filtraggio vero e proprio out(:,:,i)=imopen(in,se); %figure, imshow(out(:,:,i)); end; out=max(out,[],3); if (nargout==0), figure,imshow(out); end; function out=linereconstruct(in) % combina i risultati di lineopen con varie parametrizzazioni out=0; i=0; for larghezza=1:2, for lunghezza=larghezza+1:larghezza+20, out=out+lineopen(in); i=i+1; end; end; out=out/i; if (nargout==0), figure, imshow(out); title('linereconstruct') end; function [out,dir,orientazioni]=lineFilter(in,lunghezza,larghezza) % filtraggio gaussiano direzionale parametri=parametriPredefiniti; if (nargin<2) lunghezza=parametri.lunghezza; end; if (nargin<3) larghezza=parametri.larghezza; end; 103 104APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI if (lunghezza<=larghezza) error('lunghezza deve essere maggiore di larghezza'); end; k=3*lunghezza; % la campana gaussiana è lunga circa 3*sigma orientazioni=round(k*pi/2); % le orientazioni distano circa 1 punto agli estremi della linea k=round(k); for n=1:orientazioni, % crezione del kernel di convoluzione. angolo=n*pi/orientazioni; for i=1:2*k+1 for j=1:2*k+1 x=i-k-1; y=j-k-1; x1=x*sin(angolo)+y*cos(angolo); y1=x*cos(angolo)-y*sin(angolo); kernel(i,j)=exp(-(x1^2/lunghezza^2+y1^2/larghezza^2)/2); end; end; kernel=kernel/sum(kernel(:)); % filtraggio vero e proprio out(:,:,n)=conv2(in,kernel,'same'); % if (nargout==0), % figure, imshow(out(:,:,n)); % end; end; [out,dir]=max(out,[],3); out=imadjust(out,stretchlim(out,0.02),[0 1],1); if (nargout==0), figure,imshow(out); dir(:,:,1)=(dir-1)/orientazioni; dir(:,:,2)=ones(size(in)); dir(:,:,3)=dir(:,:,2); dir=hsv2rgb(dir); figure,imshow(dir); end; D.3. SCELTA AUTOMATICA DEL PARAMETRO H 105 D.3 Scelta automatica del parametro H function out=sogliaH(in) n=0; for i=0:0.01:0.99 n=n+1; temp=imabsdiff(double(imcomplement(im2bw(ritaglia(segmenta(in,i))))),ritaglia(in)); distribuzione(n)=sum(temp(:)); end; distribuzione=(max(distribuzione)-distribuzione)/size(temp(:),1); statistiche=statisticheDistribuzione(distribuzione); out=((statistiche.mediaX/100)-0.25)*0.9; function h=sogliaH2(immagine,k1,k2) if nargin<3 k1=1.6; k2=-0.2; end; temp=imabsdiff(ritaglia(immagine),double(imcomplement(im2bw(ritaglia(segmenta(immagine)))))); h=max([(sum(temp(:))/size(temp(:),1))/k1+k2 0]); if h==0 'attenzione: soglia 0, forse è necessario cambiare i parametri' end; D.4 Granulometrie function [out,areaUtile]=granulometriaAreaBN(in,conn) % granulometria di area, tenendo conto degli effetti di bordo parametri=parametripredefiniti; if (nargin<2), conn=parametri.conn; end; %crea un marker per unire tutte le celle al bordo (andranno eliminate): dimensioni=size(in); for i=1:dimensioni(1), in(i,1)=1; in(i,dimensioni(2))=1; end; 106APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI for i=2:dimensioni(2)-1, in(1,i)=1; in(dimensioni(1),i)=1; end; % si risegmenta, verra' generata una grossa cella di bordo. non e' % sufficiente eliminare le celle di bordo perche' bisogna calcolare l'area % effettiva utile, e per farlo bisogna considerare non solo l'area delle % celle rimosse, ma anche l'area delle linee fra queste celle. creando un % unica cella queste linee vengono inglobate nella cella di bordo ed e' % possibile calcolarne l'area facilmente. in=watershed(imcomplement(im2bw(in)),conn); %statistiche=regionprops(in,'Area'); %areaTotale=sum([statistiche.Area]); areaTotale=sum(in(:)>0); % questa riga rimpiazza le due precendenti in=bwlabel(imclearborder(in,conn),conn); statistiche=regionprops(in,'Area'); area=[statistiche.Area]; areaUtile=dimensioni(1)*dimensioni(2)-(areaTotale-sum(area)); massimo=max(area); out(1:massimo)=0; for i=1:size(area,2), out(area(i))=out(area(i))+1; end; % commentare la seguente riga per disabilitare la compensazione di bordo out=out/areaUtile; if (nargout==0), figure,plot(out); end; function out=granulometryclose(in,metodo,tipo,conn) % rimozione grayscale di buchi in base a granulometrie % vedi granulometryopen if nargin<2, metodo='h'; end; if nargin<3, tipo='NnAav'; end; if nargin<4, conn=4; end; D.4. GRANULOMETRIE 107 out=granulometryopen(imcomplement(in),metodo,tipo,conn); function out=granulometryopen(in,metodo,tipo,conn) % rimozione grayscale di oggetti in base a granulometrie. % metodo specifica il tipo di granulometria e può assumere i seguenti valori: % 'a' area % 'l' linee % 'h' H min % tipo specifica il tipo di risultato generato: % 'N' numero di oggetti filtrati % 'A' area % 'n' numero di oggetti ridotti filtrati % 'a' area ridotta % 'v' volume filtrato if nargin<2, metodo='h'; end; if nargin<3, tipo='NnAav'; end; if nargin<4, conn=4; end; nmax=255; n=0; temp=in; while( not(all(temp(:)==0)) & n<nmax ) if metodo=='a', temp=areaopen(in,n,conn); else if metodo=='l' temp=lineopen(in,n); else if metodo=='h' temp=imhmax(in,n/255,conn); end; end; end; n=n+1; %figure,imshow(temp); if any(tipo=='N')|any(tipo=='n') marker=imregionalmax(temp,conn); label=bwlabel(marker,conn); out.numero(n)=max(label(:)); if out.numero(n)==1 break; 108APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI end; end; if any(tipo=='n') mappaNumero(:,:,2)=marker*n; mappaNumero(:,:,1)=max(mappaNumero,[],3); end; if any(tipo=='A')|any(tipo=='a') mappa=(abs(in-temp)<1/255); out.area(n)=bwarea(mappa); if out.area(n)==0 break; end; end; if any(tipo=='a') mappaArea(:,:,2)=mappa*n; mappaArea(:,:,1)=max(mappaArea,[],3); end; if any(tipo=='v') out.volume(n)=sum(temp(:)); end; end; %if any(tipo=='N') % out.numero=derivata(-out.numero); %end; if any(tipo=='n') out.mappaNumero=mappaNumero(:,:,1); for i=1:n, label=bwlabel(out.mappaNumero==i,conn); out.numeroRidotto(i)=bweuler(out.mappaNumero==i,conn); end; end; %if any(tipo=='A') % out.area=derivata(-out.area); %end; if any(tipo=='a') out.mappaArea=mappaArea(:,:,1); for i=1:n, out.areaRidotta(i)=bwarea(out.mappaArea==i); D.4. GRANULOMETRIE 109 end; end; if any(tipo=='v') out.volume=derivata(-out.volume); end; function out=areaopen(in,area,conn) % rimuove gli oggetti inferiori a una certa area da immagini grayscale if nargin<3, conn=4; end; out=0; valori=sort(valoridistinti([in(:);0])); for i=2:size(valori,2), out=out+(valori(i)-valori(i-1))*double(bwareaopen(im2bw(in,valori(i)),area,conn)); end; if (nargout==0), figure,imshow(out); title('area open'); end; function out=valoridistinti(in,n); % crea un elenco contenente tutti i valori dati in input senza ripetizioni % per limitare i conti si approssima a un numero finito di valori in=mat2gray(double(uint8(in(:)*64))); out(1)=in(1); if (size(in,1)>1), n=2; for i=2:size(in,1), if (all(in(i)~=out)), out(n)=in(i); n=n+1; end; end; end; 110APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI D.5 Linelabel function out=traccia(in); % test 1 e 2: (non) riparte da tutti i punti global sogliavalore; sogliavalore=0.5; global sogliaprobabilita; sogliaprobabilita=0.5; global direzioni; direzioni=[0 -1;0 1;1 -1; -1 1;-1 0;1 0;-1 -1;1 1]; global tabellachi2; tabellachi2=chi2inv(sogliaprobabilita,1:100); % bisogna sperare che non sia necessaria una tabella piu grande.... global puntiiniziali; puntiiniziali=padarray(in,[1 1],0,'both'); dimensioni=size(in); out.l=[]; numerolinea=0; global puntidafare; for x0=2:dimensioni(1)+1 for y0=2:dimensioni(2)+1 if puntiiniziali(x0,y0)>sogliavalore numerolinea=numerolinea+1; out.l(numerolinea).l(1,:)=[x0,y0]; puntidafare=puntiiniziali; puntidafare(x0,y0)=0; out.l(numerolinea).l=aggiungipunti(out.l(numerolinea).l,x0,y0); end; end; end; % le linee vengono misurate e viene creata una mappa con le etichette. [out.mappa,out.punteggio]=calcolamappa(out.l,dimensioni); if nargout==0 figure,imshow(label2rgb(out.mappa)); figure,imshow(mat2gray(out.punteggio)); end; function l=aggiungipunti(l,x,y); global sogliavalore; D.5. LINELABEL 111 global puntidafare; global puntiiniziali; global direzioni; for i=1:8, % cambiare in base al tipo di connettività valorecandidato=puntidafare(x+direzioni(i,1),y+direzioni(i,2)); if valorecandidato>sogliavalore punteggio(i)=valorecandidato; puntidafare(x+direzioni(i,1),y+direzioni(i,2))=0; else punteggio(i)=0; end; end; % la funzione si chiama ricorsivamente partendo dai punti con punteggio % più elevato, l'ordinamento ha un costo basso perchè sono al massimo 8 % punti [punteggioordinato,indice]=sort(punteggio); i=8; while i & punteggioordinato(i)>0 x0=x+direzioni(indice(i),1); y0=y+direzioni(indice(i),2); lvicini=puntivicini(l,x0,y0); if chi2test([x0 y0;lvicini]) l(size(l,1)+1,:)=[x0 y0]; l=aggiungipunti(l,x0,y0); %puntiiniziali(x0,y0)=0; % evita di far ripartire la %ricerca dai punti che appartengono a un'altra ruga end; i=i-1; end; function superato=chi2test(l) global tabellachi2; n=size(l,1); if n==2 superato=1; else distanze=calcoladistanze(l); if distanze(1)>1 superato=0; 112APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI else v=varianza(distanze); if v==0, superato=1; else if sum(distanze.^2)/v>tabellachi2(n-2), superato=1; else superato=0; end; end; end; end; function out=traccia(in); % test 3: parte da linee morfologiche global sogliavalore; sogliavalore=0.5; global sogliaprobabilita; sogliaprobabilita=0.5; global direzioni; direzioni=[0 -1;0 1;1 -1; -1 1;-1 0;1 0;-1 -1;1 1]; global tabellachi2; tabellachi2=chi2inv(sogliaprobabilita,1:100); % bisogna sperare che non sia necessaria una tabella piu grande.... global puntiiniziali; puntiiniziali=padarray(in,[1 1],0,'both'); dimensioni=size(in); %viene definito un insieme di linee di partenza con imerode e imdilate lunghezza=7; orientazioni=round(lunghezza*pi/4); numerolinee=0; for i=1:orientazioni, %crezione dello structure element. se=strel('line',lunghezza,180*i/orientazioni); %filtraggio vero e proprio immaginefiltrata=imerode(puntiiniziali,se); %generazione delle linee iniziali se=getnhood(se); centro=ceil(size(se)/2); [sex,sey]=find(sparse(se)); sex=sex-centro(1); sey=sey-centro(2); for x0=1+centro(1):dimensioni(1)-centro(1) for y0=1+centro(2):dimensioni(2)-centro(2) D.5. LINELABEL 113 if immaginefiltrata(x0,y0)>sogliavalore numerolinee=numerolinee+1; for i=1:size(sex,1) out.l(numerolinee).l(i,:)=[x0+sex(i),y0+sey(i)]; immaginefiltrata(x0+sex(i),y0+sey(i))=0; end; end; end; end; end; %le linee vengono estese per via morfologica global puntidafare; for i1=1:numerolinee puntidafare=puntiiniziali; for i2=1:size(out.l(i1).l,1) puntidafare(out.l(i1).l(i2))=0; end; for i2=1:size(out.l(i1).l,1) out.l(i1).l=aggiungipunti(out.l(i1).l,out.l(i1).l(i2,1),out.l(i1).l(i2,2)); end; end; % le linee vengono misurate e viene creata una mappa con le etichette. [out.mappa,out.punteggio]=calcolamappa(out.l,dimensioni); if nargout==0 figure,imshow(label2rgb(out.mappa)); figure,imshow(mat2gray(out.punteggio)); end; function l=aggiungipunti(l,x,y); global sogliavalore; global puntidafare; global puntiiniziali; global direzioni; for i=1:8, % cambiare in base al tipo di connettività valorecandidato=puntidafare(x+direzioni(i,1),y+direzioni(i,2)); if valorecandidato>sogliavalore punteggio(i)=valorecandidato; puntidafare(x+direzioni(i,1),y+direzioni(i,2))=0; else 114APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI punteggio(i)=0; end; end; % la funzione si chiama ricorsivamente partendo dai punti con punteggio % più elevato, l'ordinamento ha un costo basso perchè sono al massimo 8 % punti [punteggioordinato,indice]=sort(punteggio); i=8; while i & punteggioordinato(i)>0 x0=x+direzioni(indice(i),1); y0=y+direzioni(indice(i),2); lvicini=puntivicini(l,x0,y0); if chi2test([x0 y0;lvicini]) l(size(l,1)+1,:)=[x0 y0]; l=aggiungipunti(l,x0,y0); %puntiiniziali(x0,y0)=0; % evita di far ripartire la %ricerca dai punti che appartengono a un'altra ruga end; i=i-1; end; function superato=chi2test(l) global tabellachi2; n=size(l,1); if n==2 superato=1; else distanze=calcoladistanze(l); if distanze(1)>1 superato=0; else v=varianza(distanze); if v==0, superato=1; else if sum(distanze.^2)/v>tabellachi2(n-2), superato=1; else superato=0; end; end; end; end; function out=traccia(in); D.5. LINELABEL 115 % test 5: sceglie l'ordine di aggiunta punti in base a probabilità chi2 global sogliavalore; sogliavalore=0.5; global sogliaprobabilita; sogliaprobabilita=0.5; global direzioni; direzioni=[0 -1;0 1;1 -1; -1 1;-1 0;1 0;-1 -1;1 1]; global tabellachi2; tabellachi2=chi2inv(sogliaprobabilita,1:100); % bisogna sperare che non sia necessaria una tabella piu grande.... global puntiiniziali; puntiiniziali=padarray(in,[1 1],0,'both'); dimensioni=size(in); %viene definito un insieme di linee di partenza con imerode e imdilate lunghezza=7; orientazioni=round(lunghezza*pi/4); numerolinee=0; for i=1:orientazioni, %crezione dello structure element. se=strel('line',lunghezza,180*i/orientazioni); %filtraggio vero e proprio immaginefiltrata=imerode(puntiiniziali,se); %generazione delle linee iniziali se=getnhood(se); centro=ceil(size(se)/2); [sex,sey]=find(sparse(se)); sex=sex-centro(1); sey=sey-centro(2); for x0=1+centro(1):dimensioni(1)-centro(1) for y0=1+centro(2):dimensioni(2)-centro(2) if immaginefiltrata(x0,y0)>sogliavalore numerolinee=numerolinee+1; for i=1:size(sex,1) out.l(numerolinee).l(i,:)=[x0+sex(i),y0+sey(i)]; immaginefiltrata(x0+sex(i),y0+sey(i))=0; end; end; end; end; 116APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI end; %le linee vengono estese per via morfologica global puntidafare; for i1=1:numerolinee puntidafare=puntiiniziali; for i2=1:size(out.l(i1).l,1) puntidafare(out.l(i1).l(i2))=0; end; for i2=1:size(out.l(i1).l,1) out.l(i1).l=aggiungipunti(out.l(i1).l,out.l(i1).l(i2,1),out.l(i1).l(i2,2)); end; end; % le linee vengono misurate e viene creata una mappa con le etichette. [out.mappa,out.punteggio]=calcolamappa(out.l,dimensioni); if nargout==0 figure,imshow(label2rgb(out.mappa)); figure,imshow(mat2gray(out.punteggio)); end; function l=aggiungipunti(l,x,y); global sogliavalore; global puntidafare; global puntiiniziali; global direzioni; for i=1:8, % cambiare in base al tipo di connettività x0=x+direzioni(i,1); y0=y+direzioni(i,2); valorecandidato=puntidafare(x0,y0); if valorecandidato>sogliavalore punteggio(i)=chi2([x0 y0;puntivicini(l,x0,y0)]); puntidafare(x0,y0)=0; else punteggio(i)=0; end; end; % la funzione si chiama ricorsivamente partendo dai punti con punteggio % più elevato, l'ordinamento ha un costo basso perchè sono al massimo 8 % punti [punteggioordinato,indice]=sort(punteggio); D.5. LINELABEL i=8; while i & punteggioordinato(i)>0 x0=x+direzioni(indice(i),1); y0=y+direzioni(indice(i),2); lvicini=puntivicini(l,x0,y0); if chi2test([x0 y0;lvicini]) l(size(l,1)+1,:)=[x0 y0]; l=aggiungipunti(l,x0,y0); %puntiiniziali(x0,y0)=0; % evita di far ripartire la %ricerca dai punti che appartengono a un'altra ruga end; i=i-1; end; function superato=chi2test(l) global tabellachi2; n=size(l,1); if n==2 superato=1; else distanze=calcoladistanze(l); if distanze(1)>1 superato=0; else v=varianza(distanze); if v==0, superato=1; else if sum(distanze.^2)/v>tabellachi2(n-2), superato=1; else superato=0; end; end; end; end; function out=chi2(l) global sogliaprobabilita n=size(l,1); if n==2 out=1; else distanze=calcoladistanze(l); 117 118APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI if distanze(1)>1 out=0; else v=varianza(distanze); if v==0, out=1; else out=chi2cdf(sum(distanze.^2)/v,n-2); if out<sogliaprobabilita, out=0; end; end; end; end; function out=traccia(in); % test 6: parte da linee basate su orientazione global sogliavalore; sogliavalore=0.5; global sogliaprobabilita; sogliaprobabilita=0.5; global direzioni; direzioni=[0 -1;0 1;1 -1; -1 1;-1 0;1 0;-1 -1;1 1]; global tabellachi2; tabellachi2=chi2inv(sogliaprobabilita,1:100); % bisogna sperare che non sia necessaria una tabella piu grande.... dimensioni=size(in); % viene definito un insieme di linee di partenza con un linefilter lunghezza=2; larghezza=0.7; k=3*lunghezza; orientazioni=round(k*pi/2); % le orientazioni distano circa 1 punto agli estremi della linea k=round(k); for n=1:orientazioni, angolo=n*pi/orientazioni; for i=1:2*k+1 for j=1:2*k+1 x=i-k-1; y=j-k-1; x1=x*sin(angolo)+y*cos(angolo); y1=x*cos(angolo)-y*sin(angolo); kernel(i,j)=exp(-(x1^2/lunghezza^2+y1^2/larghezza^2)/2); D.5. LINELABEL 119 end; end; kernel=kernel/sum(kernel(:)); temp(:,:,n)=conv2(in,kernel,'same'); end; global puntiiniziali; puntiiniziali=padarray(in,[1 1],0,'both'); [immaginefiltrata,mappadirezioni]=max(temp,[],3); immaginefiltrata=padarray(immaginefiltrata,[1 1],0,'both'); mappadirezioni=padarray(mappadirezioni,[1 1],0,'both'); out.l=[]; numerolinee=0; for i=1:orientazioni temp=bwlabel(bwareaopen((mappadirezioni==i|mappadirezioni==mod(i+1,orientazioni)) &(puntiiniziali>sogliavalore),5)); %figure,imshow(label2rgb(temp)); lunghezzarughe=zeros(max(temp(:)),1); for x=2:dimensioni(1)-1 for y=2:dimensioni(2)-1 if temp(x,y)>0 lunghezzarughe(temp(x,y))=lunghezzarughe(temp(x,y))+1; out.l(numerolinee+temp(x,y)).l(lunghezzarughe(temp(x,y)),:)=[x,y]; end; end; end; numerolinee=size(out.l,2); end; % viene eseguita una potatura delle linee generate. l'algoritmo va migliorato numerolinee=0; for i1=1:size(out.l,2) numeropunti=0; l=[]; for i2=1:size(out.l(i1).l,1) x=out.l(i1).l(i2,1); y=out.l(i1).l(i2,2); ltest=puntivicini(out.l(i1).l,x,y); if chi2test([ltest;x y]) numeropunti=numeropunti+1; l(numeropunti,:)=[x,y]; 120APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI end; end; if size(l,1)>0 numerolinee=numerolinee+1; out.l(numerolinee).l=l; end; end; %le linee vengono estese per via morfologica for i1=1:numerolinee puntidafare=puntiiniziali; for i2=1:size(out.l(i1).l,1) puntidafare(out.l(i1).l(i2))=0; end; for i2=1:size(out.l(i1).l,1) out.l(i1).l=aggiungipunti(out.l(i1).l,out.l(i1).l(i2,1),out.l(i1).l(i2,2)); end; end; [out.mappa,out.punteggio]=calcolamappa(out.l,dimensioni); if nargout==0 figure,imshow(label2rgb(out.mappa)); figure,imshow(mat2gray(out.punteggio)); end; function l=aggiungipunti(l,x,y); global sogliavalore; global puntidafare; global direzioni; for i=1:8, % cambiare in base al tipo di connettività valorecandidato=puntidafare(x+direzioni(i,1),y+direzioni(i,2)); if valorecandidato>sogliavalore punteggio(i)=valorecandidato; puntidafare(x+direzioni(i,1),y+direzioni(i,2))=0; else punteggio(i)=0; end; end; % la funzione si chiama ricorsivamente partendo dai punti con punteggio % più elevato [punteggioordinato,indice]=sort(punteggio); D.5. LINELABEL 121 for i=indice(8:-1:1) if punteggio(i)>0 lvicini=puntivicini(l,x+direzioni(i,1),y+direzioni(i,2)); if chi2test([x+direzioni(i,1) y+direzioni(i,2);lvicini]) l(size(l,1)+1,:)=[x+direzioni(i,1) y+direzioni(i,2)]; l=aggiungipunti(l,x+direzioni(i,1),y+direzioni(i,2)); end; else break; end; end; function superato=chi2test(l) global tabellachi2; n=size(l,1); if n==2 superato=1; else distanze=calcoladistanze(l); if distanze(1)>1 superato=0; else v=varianza(distanze); if v==0, superato=1; else if sum(distanze.^2)/v>tabellachi2(n-2), superato=1; else superato=0; end; end; end; end; function errori=calcoladistanze(in,dim) % trasformata di Karhunen-Loève, proietta i punti di uno spazio in uno di % dimensione minore. restituisce gli errori (minimizzati) e l'orientazione if nargin<2, dim=1; end; s=size(in); if dim>=s(2) error('la dimensione di proiezione deve essere minore di quella dei dati'); end; media=mean(in); for i=1:s(1) in1(i,:)=in(i,:)-media; 122APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI end; [autovettori,autovalori]=eig(cov(in)); autovalori=diag(autovalori); [autovalori,indice]=sort(autovalori); psi=autovettori(:,indice(s(2):-1:s(2)-dim+1)); for i=1:s(1) errori(i)=sqrt(sum(((((psi*psi'*in1(i,:)')+media')')-in(i,:)).^2)); end; function [mappa,punteggio]=calcolamappa(l,dimensioni) numerolinee=size(l,2); % dimensioni non sarebbe necessario, ma così l'implementazione è più veloce mappa=zeros(dimensioni); punteggio=zeros(dimensioni); for i=1:numerolinee, dimensionelinea=size(l(i).l,1); % come misura viene usata l'area for j=1:dimensionelinea, x=l(i).l(j,1)-1; y=l(i).l(j,2)-1; if punteggio(x,y)<dimensionelinea mappa(x,y)=i; punteggio(x,y)=dimensionelinea; end; end; end; function orientazione=calcolaorientazione(in,dim) % trasformata di Karhunen-Loève, proietta i punti di uno spazio in uno di % dimensione minore. restituisce gli errori (minimizzati) e l'orientazione if nargin<2, dim=1; end; s=size(in); if dim>=s(2) error('la dimensione di proiezione deve essere minore di quella dei dati'); end; media=mean(in); for i=1:s(1) in1(i,:)=in(i,:)-media; end; D.5. LINELABEL 123 [autovettori,autovalori]=eig(cov(in)); autovalori=diag(autovalori); [autovalori,indice]=sort(autovalori); psi=autovettori(:,indice(s(2):-1:s(2)-dim+1)); for i=1:s(2)-1 for j=1:dim orientazione(i,j)=angle(complex(psi(i,j),psi(i+1,j))); end; end; function out=puntivicini(in,x,y) % seleziona i punti vicini. distanza=100; % in realtà va inserita la distanza^2 (per semplificare i conti) n=0; puntivicini=[]; for i=1:size(in(:,1),1) if (in(i,1)-x)^2+(in(i,2)-y)^2 < distanza n=n+1; puntivicini(n)=i; end; end; out=in(puntivicini,:); function l=uniscirughe(l,dimensioni) % test 4 global dimensioni; if nargin<2, dimensioni=[23 33]; end; numerolinee=size(l,2); for i1=numerolinee:-1:2, for i2=1:i1-1, ltest=unisci2rughe(l(i1).l,l(i2).l); if size(ltest,1)>0 numerolinee=numerolinee-1; l(i2).l=ltest; l(i1:numerolinee)=l(i1+1:numerolinee+1); break; end; 124APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI end; end; l=l(1:numerolinee); [mappa,punteggio]=calcolamappa(l,dimensioni); if nargout==0 figure,imshow(label2rgb(mappa)); figure,imshow(mat2gray(punteggio)); end; function out=unisci2rughe(in1,in2) % se le due rughe possono essere unite restituisce la ruga unita, % altrimenti restituisce [] global dimensioni; angolotolleranza=pi/300; sogliaarea=0.8; sogliaintersezione=0.2; ruga1=sparse(in1(:,1),in1(:,2),1,dimensioni(1)+2,dimensioni(2)+2); ruga2=sparse(in2(:,1),in2(:,2),1,dimensioni(1)+2,dimensioni(2)+2); intersezione=ruga1 & ruga2; area1=nnz(ruga1); area2=nnz(ruga2); areaintersezione=nnz(intersezione); out=[]; if areaintersezione>sogliaintersezione |areaintersezione>5 %test di sovrapposizone if (area1*sogliaarea<areaintersezione) | (area2*sogliaarea<areaintersezione) [lx,ly]=find(ruga1|ruga2); out=[lx,ly]; return; end; %test di orientazione [lx,ly]=find(intersezione); % nelle righe seguenti viene calcolata l'orientazione media in itinere orientazione1=0; orientazione2=0; for i=1:areaintersezione orientazione=calcolaorientazione(puntivicini(in1,lx(i),ly(i))); orientazione1=orientazione1+orientazione; D.6. ALTRE FUNZIONI 125 orientazione=calcolaorientazione(puntivicini(in2,lx(i),ly(i))); orientazione2=orientazione2+orientazione; end; if abs(orientazione1-orientazione2)<areaintersezione*angolotolleranza [lx,ly]=find(ruga1|ruga2); out=[lx,ly]; return; end; end; D.6 Altre funzioni function out=openByReconstruction(in,se,conn) parametri=parametriPredefiniti; if nargin<3, conn=parametri.conn; end; out=imreconstruct(imerode(in,se),in,conn); if (nargout==0), figure,imshow(out); %title('open by reconstruction'); end; function out=closebyreconstruction(in,se,conn) parametri=parametriPredefiniti; if nargin<3, conn=parametri.conn; end; out=imcomplement(openbyreconstruction(imcomplement(in),se,conn)); if (nargout==0), figure,imshow(out); %title('close by reconstruction'); end; function out=geodesicErode(marker,mask,i,se) % erosione geodetica grayscale, specificando connettività o structure element e iterazioni 126APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI parametri=parametriPredefiniti; if (nargin<3), i=1; end; if (nargin<4), se=parametri.conn; end; if (any(marker<mask)), error('marker>mask'); end; if (se==4), se=strel('diamond',1); else if (se==8), se=strel('square',3); end; end; precedente=marker; out=mask; iterazioni=0; while(iterazioni<i & any(precedente~=out)), precedente=out; iterazioni=iterazioni+1; out=max(imerode(marker,se),mask); end; function out=geodesicDilate(marker,mask,i,se) % erosione geodetica grayscale, specificando connettività o structure element e iterazioni parametri=parametriPredefiniti; if (nargin<3), i=1; end; if (nargin<4), se=parametri.conn; end; if (any(marker>mask)), error('marker>mask'); end; if (se==4), se=strel('diamond',1); else if (se==8), se=strel('square',3); end; end; precedente=mask; out=marker; iterazioni=0; while(iterazioni<i & any(precedente~=out)), precedente=out; iterazioni=iterazioni+1; D.6. ALTRE FUNZIONI 127 out=min(imdilate(marker,se),mask); end; function out=im2bwDouble(in,l,h,conn) % conversione di immagini grayscale in B/N con doppia soglia % i risultati dei punti tra le due soglie vengono decisi in base ai punti % vicini con elaborazioni geodetiche if (nargin<4), conn=8; end; if (nargin<3), l=1/3; end; if (nargin<2), h=2/3; end; if (l>h), error('l deve essere minore di h'); end; sopra1=in+(h-l)/2; sotto1=in-(h-l)/2; sopra2=sopra1; sotto2=sotto1; %figure,imshow(im2bw(sopra1)); %figure,imshow(im2bw(sotto1)); while not(all(sopra1==sotto1)) % cambiando l'ordine di queste due operazioni il risultato cambia: sopra1=geodesicErode(sopra1,sotto1,1,conn); sotto1=geodesicDilate(sotto1,sopra1,1,conn); end; while not(all(sopra2==sotto2)) % cambiando l'ordine di queste due operazioni il risultato cambia: sotto2=geodesicDilate(sotto2,sopra2,1,conn); sopra2=geodesicErode(sopra2,sotto2,1,conn); end; out=im2bw((sotto1+sotto2)/2,(h+l)/2); if nargout==0, figure,imshow(out); end; function out=deviazioneStandardLocale(in,r) parametri=ParametriPredefiniti; 128APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI if (nargin<2) r=parametri.r2; end; kernel=ones(r)/r^2; % possibile miglioramento: kernel rotondo media=imfilter(in,kernel,'same','symmetric'); dev=sqrt(imfilter((in-media).^2,kernel,'same','symmetric')); out=mean(dev(:)); function out=parametriPredefiniti %normalizzazione out.r=15; %dimensione intorno out.s=100; %sigma out.gamma=1; %filtraggio out.lunghezza=2; out.larghezza=0.7; %segmentazione out.h=0.15; % soglia H min out.conn=4; % connettività %ritaglio out.bordo=15; %statistiche out.L=0.05; out.H=0.95; %feature deviazione standard locale out.r2=60; %GUI out.cartella='\immagini\'; function out=ritaglia(in,bordo) % ritaglia il bordo dell'immagine % output=ritaglia(input,bordo) % bordo e' espresso in pixel parametri=ParametriPredefiniti; if (nargin<2), bordo=parametri.bordo; end; [x,y]=size(in); out=in(1+bordo:x-bordo,1+bordo:y-bordo); D.6. ALTRE FUNZIONI 129 function out=statisticheDistribuzione(in,L,H) % calcola tutte le statistiche considerate robuste. % integrando le varie funzioni si potrebbero ottimizzare le prestazioni parametri=parametriPredefiniti; if nargin<2 L=parametri.L; H=parametri.H; else if nargin<3 H=1-L; end; end; out.mediaY=mean(in); out.deviazioneStandardY=std(in); out.skewnessY=skewness(in); out.kurtosisY=kurtosis(in); out.mediaX=mediaDistribuzione(in); out.deviazioneStandardX=deviazioneStandardDistribuzione(in); out.skewnessX=skewnessDistribuzione(in); out.kurtosisX=kurtosisDistribuzione(in); out.totale=sum(in); [out.sogliaLX,out.sogliaLY]=percentileDistribuzione(in,L); [out.sogliaHX,out.sogliaHY]=percentileDistribuzione(in,H); out.deltaX=out.sogliaHX-out.sogliaLX; out.deltaY=out.sogliaHY-out.sogliaLY; cumulativa=cumsum(in); %P1 [out.P1X,out.P1Y]=p1(cumulativa); [out.P1Xnorm,out.P1Ynorm]=p1norm(cumulativa); function out=mediaDistribuzione(in) % calcola il valore atteso di una distribuzione in=in/sum(in); out=0; for i=1:size(in,2); out=out+i*in(i); end; 130APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI function out=deviazioneStandardDistribuzione(in) % calcola la deviazione standard di una distribuzione m=mediaDistribuzione(in); in=in/(sum(in)-1); out=0; for i=1:size(in,2) out=out+(i-m)^2*in(i); end; out=sqrt(out); function out=skewnessDistribuzione(in) % calcola la deviazione standard di una distribuzione m=mediaDistribuzione(in); s=deviazioneStandardDistribuzione(in); in=in/(sum(in)-1); out=0; for i=1:size(in,2) out=out+(i-m)^3*in(i); end; out=out/s^3; function out=kurtosisDistribuzione(in) % calcola la deviazione standard di una distribuzione m=mediaDistribuzione(in); s=deviazioneStandardDistribuzione(in); in=in/(sum(in)-1); out=0; for i=1:size(in,2) out=out+(i-m)^4*in(i); end; out=out/s^4; function [x,y]=p1(in) % calcola il punto a pendenza 1 in una distribuzione % il calcolo è robusto rispetto ai disturbi s=size(in,2); D.6. ALTRE FUNZIONI 131 dmin=inf; for i=1:s, distanza=(in(s)-in(i))^2+i^2; if distanza<dmin, dmin=distanza; x=i; end end y=in(x); function [x,y]=p1norm(in) % simile a calcolap, ma normalizza la distribuzione prima s=size(in,2); x=p1(in*s/in(s)); y=in(x); function [i,out]=percentileDistribuzione(in,x) % calcola il percentile e il valore cumulativo relativo al percentile x=x*sum(in); out=0; i=0; while(out<=x) i=i+1; out=out+in(i); end; function [a,b,errori,autovalori]=regressioneLineare(x,y) [autovettori,autovalori,errori,media]=kl([x' y']); P1=media'; P2=P1+flipud(autovettori(:,1)); a=(P1(1)-P2(1))/(P1(2)-P2(2)); b=P1(2)-a*P1(1); function [psi,autovalori,errori,media]=kl(in,dim) % trasformata di Karhunen-Loève, proietta i punti di uno spazio in uno di % dimensione minore. restituisce gli errori (minimizzati) e l'orientazione if nargin<2, dim=1; end; 132APPENDICE D. IMPLEMENTAZIONE MATLAB DEGLI ALGORITMI USATI s=size(in); if dim>=s(2) error('la dimensione di proiezione deve essere minore di quella dei dati'); end; media=mean(in); for i=1:s(1) in1(i,:)=in(i,:)-media; end; [autovettori,autovalori]=eig(cov(in)); autovalori=diag(autovalori); [autovalori,indice]=sort(autovalori); psi=autovettori(:,indice(s(2):-1:s(2)-dim+1)); for i=1:s(1) errori(i)=sqrt(sum(((((psi*psi'*in1(i,:)')+media')')-in(i,:)).^2)); end; % orientazione come vettori: orientazione=psi(:,1:dim); % orientazione come angoli: % for i=1:s(2)-1 % for j=1:dim % orientazione(i,j)=angle(complex(psi(i,j),psi(i+1,j))); % end; % end; Bibliograa [1] The MathWorks Inc. Matlab Images Toolbox , 4.1 edition, Settembre 2003. [2] BioRAP. http://www.biorap.org, 2004. [3] Skin care physicians. http://www.skincarephysicians.com, 2004. [4] National library of medicine. http://www.nlm.nih.gov, 2004. [5] S. Diridollou, V. Vabre, M. Berson, L. Vaillant, D. Black, J. M. Lagarde, J. M. Gregoire, Y. Gall, and F. Patat. Skin ageing: changes of physical properties of human skin in vivo. Int J Cosmet Sci , 23(6):353353, 2001. [6] Andrew J. Round, Andrew W. G. Duller, and Peter J. Fish. Lesion classication using skin patterning. Skin Res Technol , 6(4):183183, 2000. [7] HIPR 2. http://homepages.inf.ed.ac.uk/rbf/HIPR2/, 2004. [8] I. T. Young, J. J. Gerbrands, and L. J. van Vliet. Image processing fundamentals. http://www.ph.tn.tudelft.nl/Courses/FIP/noframes/ fip.html. [9] Ming Jiang. Digital image processing, Settembre 2003. [10] Bernd Jahne, Peter Geissler, and Horst Haussecker. Computer Vision and Applications with Cdrom Publishers Inc., 1999. 133 Handbook of . Morgan Kaufmann 134 BIBLIOGRAFIA [11] Edward R. Dougherty and Roberto A. Lotufo. Hands-on Morphology , chapter 7. 2003. Image Processing [12] Luc Vincent and Pierre Soille. Watersheds in digital spaces: an ecient algorithm based on immersion simulations. Pattern Analysis and Machine Intelligence IEEE Transactions on , 13(6):583598, Giugno 1991. [13] Luc Vincent. Morphological grayscale reconstruction in images analysis: Applications and ecient algorithms. processing IEEE transactions on image , 2(2), Aprile 1993. [14] Serge Beucher. Recent advances in mathematical morphology. [15] Serge Beucher. The watershed transformation applied to image segmentation. [16] Corinne Vachier and Luc Vincent. Valutation of image extrema using alternating lters by reconstruction. 2568:94103, Luglio 1995. [17] K. N. R. Mohana Rao and A. G. Dempster. Area-granulometry, an improved estimator of size distribution of image objects. Electronic Letters, 37(15), Luglio 2001. [18] Luc Vincent. Morphological area openings and closings for greyscale images. pages 197208, Settembre 1992. [19] Luc Vincent. Grayscale area openings and closings, their ecient implementation and applications. pages 2227, Maggio 1993. [20] Luc Vincent. Fast grayscale granulometries algorthms. pages 265272, Settembre 1994. [21] Luc Vincent. Fast opening functions and morphological granulometries. pages 253267, Luglio 1994. [22] Luc Vincent. Informaticae Granulometries and opening trees. , 41(1-2):5790, Gennaio 2000. Fundamenta 135 BIBLIOGRAFIA [23] Basic morphological image processing operations: a tutorial. http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/ GASTERATOS/SOFT%/1.htm. [24] A. Gasteratos, I. Andreadis, and Ph. Tsalides. Fuzzy soft mathematical morphology. , 145(1), Febbraio IEE Proc.-Vis Image Signal Processing 1998. [25] Jean-Philippe Nominé, Luc Vincent, Fernand Meyer, Jean Serra, JeanPaul Escande, and Janick Arnaud-Battandier. Cutaneous aging and mathematical morphology. 1987. [26] Stanislav L. Stoev and Wofgang Straber. Extracting region of interest applying a local watershed trasformation. IEEE Visualizazion , Ottobre 2000. [27] Pierre Moreels and Suzanne E. Smrekar. Watershed identication of poligonal patterns in noisy sar images. processing IEEE transaction on image , 12(7), Luglio 2003. [28] Guillermo Marquez. Characterization of skin lesion texture in diuse reectance spectroscopic images. Aprile 2000. [29] M. F. Colomè-Serra, D. Seròn, F. Moreso, M. Carrera, J. M. Grigno, and J. Serra. Image analysis: utility of gray level granulometry to measure renal interstitial chronic damage, 1992. [30] Scantron. http://www.scantron-net.co.uk, 2004. [31] Stmicroelectronics. http://www.st.com, 2004. [32] S. Akazaki, H. Nakagawa, H. Kazama, O. Osanai, M. Kawai, Y. Takema, and G. Imokawa. Age-related changes in skin wrinkles assessed by a novel three-dimensional morphometric analysis. 147(4):689689, 2002. , Br J Dermatol 136 BIBLIOGRAFIA [33] C. Edwards, R. Heggie, and R. Marks. A study of dierences in surface roughness between sun-exposed and unexposed skin with age. Photoderm Photoimm Photomed , 19(4):169169, 2003. [34] J. M. Lagarde, C. Rouvrais, D. Black, S. Diridollou, and Y. Gall. Skin topography measurement by interference fringe projection: a technical validation. , 7(2):112112, 2001. Skin Res Technol [35] Jane Sandby-moller and Hans Christian Wulf. Ultrasonographic subepidermal low-echogenic band, dependence of age and body site. Technol Skin Res , 10(1):5757, 2004. [36] Gniadecka and Jemec. Quantitative evaluation of chronological ageing and photoageing in vivo : studies on skin echogenicity and thickness. Br , 139(5):815815, 1998. J Dermatol http://www.digitalsurf.fr/gb/ templateskinanalysis.html, 2004. [37] Mountain technology. [38] Anil K. Jain and Sharath Pankanti. Fingerprint classication and matching. Technical Report MSU-CPS-99-5, Department of Computer Science, Michigan State University, East Lansing, Michigan, Gennaio 1999. [39] S. Greenberg, M. Aladjem, D. Kogan, and I. Dimitrov. print image enhancement using ltering techniques. Finger- 15th International , 3(3-7):322325, Settembre 2000. Conference on Pattern Recognition [40] Oscar Nestares, Rafael Navarro, Javier Portilla, and Antonio Tabernero. Ecient spatial-domain implementation of a multiscale image representation based on gabor functions. J.Electronic Imaging , 7:166173, 1998. [41] Lin Hong, Yifei Wan, and A. Jain. Fingerprint image enhancement: algorithm and performance evaluation. Pattern Analysis and Machine , 20:777789, Agosto 1998. Intelligence, IEEE Transactions on 137 BIBLIOGRAFIA [42] Jianwei Yang, Lifeng Liu, Tianzi Jiang, and Yong Fan. A modied gabor lter design method for ngerprint image enhancement. Lett. Pattern Recogn. , 24(12):18051817, 2003. [43] Tai Sing Lee. Image representation using 2d gabor wavelets. Analysis and Machine Intelligence, IEEE Transactions on Pattern , 18:959971, Ottobre 1996. [44] Arun Ross, James Reisman, and Anil Jain. Fingerprint matching using feature space correlation. pages 4857, Giugno 2002. [45] Anil K. Jain, Salil Prabhakar, Lin Hong, and Sharath Pankanti. Filterbank-based ngerprints matching. processing IEEE transaction on image , 9(5), Maggio 2000. [46] Jean Luc Leveque and Bernard Querleux. Skinchip, a new tool for investigating the skin surface . in vivo , Skin research and technology 9(4):303347, 2003. [47] Alessandro Bevilacqua and Alessandro Gherardi. Age-related skin analysis by capacitance images. Pattern Recognition IEEE/IAPR International Conference on , Agosto 2004. [48] Jorge Fullana Fuentes. Characterization fo skin wrinkles in vivo by using a portable capacitive device, Marzo 2004. [49] Alessandro Bevilacqua, Alessandro Gherardi, and Massimo Ferri. Agerelated skin surface characterization through capacitive image analysis. 2004. [50] Martalena B. Purba, Antigone Kouris-Blazos, Naiyana Wattanapenpaiboon, Widjaja Lukito, Elisabeth Rothenberg, Bertil Steen, and Mark L. Wahlqvist. Can skin wrinkling in a site that has received limited sun exposure be used as a marker of health status and biological age? Ageing , 30:227234, 2001. Age