studio e sviluppo di algoritmi per l`analisi di immagini della pelle

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