SlideShare a Scribd company logo
1 of 87
Download to read offline
Università degli studi di Trieste
DIPARTIMENTO DI INGEGNERIA E ARCHITETTURA
Corso di Laurea Triennale in Ingegneria Elettronica e Informatica
Curriculum Gestionale
SVILUPPO DI STRUMENTI
PER LA REALIZZAZIONE DI UN
DATASET PER LA GENERAZIONE
AUTOMATICA DI IMMAGINI
FOTOREALISTICHE
Relatore:
Chiar.mo Prof.
ANDREA DE LORENZO
Laureanda:
TERESA VERGINE
Sessione Straordinaria
Anno Accademico 2019/2020
Indice
1 Introduzione 1
2 Stato dell’arte 4
3 Metodi 10
3.1 Acquisizione delle immagini . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Ripulitura e classificazione delle immagini . . . . . . . . . . . . . . . . . 11
3.2.1 Ripulitura del dataset acquisito tramite metodo di rilevamento dei
volti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.2 Classificazione delle immagini per tipologie di posa simili . . . . . 12
3.2.3 Struttura del dataset di immagini . . . . . . . . . . . . . . . . . . 16
3.3 Elaborazione delle immagini . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.1 Sfocatura e segmentazione delle immagini . . . . . . . . . . . . . 23
3.3.2 Creazione delle mappe dei contorni . . . . . . . . . . . . . . . . . 32
3.3.3 Ridimensionamento, semplificazione e caratterizzazione delle map-
pe dei contorni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3.4 Distorsioni delle immagini . . . . . . . . . . . . . . . . . . . . . . 50
4 Risultati 61
4.1 Valutazione delle prestazioni del modello di classificazione delle immagini 61
4.1.1 Primo caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.1.2 Secondo caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2 Risultati generati dalla rete . . . . . . . . . . . . . . . . . . . . . . . . . 76
5 Conclusioni 77
1 Introduzione
Uno dei modi più semplici per visualizzare rapidamente un’idea, un oggetto o una scena
è attraverso un disegno. Si può disegnare qualsiasi cosa in qualsiasi momento. Tra le
varie possibilità, un modo per visualizzare qualcosa rapidamente consiste nel disegnarne
uno sketch (anche chiamato “schizzo” o “bozzetto”). Uno sketch è un disegno schema-
tico, eseguito a mano libera, nel quale si rappresenta in maniera abbozzata ciò che si
vuole visualizzare attraverso pochi tratti essenziali. Rispetto ad una fotografia, disegna-
re uno sketch non richiede alcun dispositivo di cattura; inoltre, uno sketch non si limita
ad una semplice raffigurazione della realtà cosı̀ com’è, ma permette al disegnatore di
esprimere le sue idee e la sua visione artistica nel disegnare lo sketch. Allora lo sketch
non può essere considerato una semplice riproduzione esatta della realtà, ma piuttosto
una sua rappresentazione semplificata vista dagli occhi del disegnatore. I tratti essenziali
che caratterizzano gli sketch e che costituiscono i contorni di ciò che viene rappresenta-
to, evidenziandone forme e proporzioni, non sono strettamente allineati alla realtà. La
lecita lontananza dalla realtà delle caratteristiche strutturali ritrovate negli sketch per-
mette al disegnatore una pressoché totale libertà artistica nell’esprimere le proprie idee
e rappresentarle come desidera, non essendoci alcun vincolo stretto con il mondo reale.
Se ciò che si vuole visualizzare sono indumenti, accessori, abbigliamenti caratteriz-
zati da particolari stili, e come appaiono questi abbigliamenti una volta indossati da
corpi umani, per visualizzarli velocemente basterà allora disegnare uno sketch per rap-
presentarli. Tali sketch “di moda” — nei quali si rappresenta come appaiono particolari
abbigliamenti, ideati per esempio da uno stilista o da un qualche marchio di abbiglia-
mento, una volta indossati da corpi umani — costituiscono il momento iniziale su cui si
basa l’intera pianificazione e progettazione per il design di un particolare abbigliamento.
Sin dagli inizi della moda, gli sketch hanno svolto un ruolo fondamentale, permettendo
di visualizzare una qualsiasi idea di design: in altre parole, gli sketch “di moda”, che
permettono l’espressione e la visualizzazione di una particolare idea di design, sono uno
strumento fondamentale attraverso il quale la moda può essere spiegata, dimostrata e
comunicata. Lo sketch permette ad un disegnatore di esprimere visivamente le sue idee;
questo, dunque, aiuta a visualizzare idee e concetti relativi al design, e lo sketch diventa
uno strumento con il quale il disegnatore può comunicare le proprie idee agli altri.
Negli ultimi anni è cresciuto l’interesse in un nuovo modo di visualizzare tali idee di
design, che consiste nel visualizzare come appaiono particolari abbigliamenti una volta
indossati da corpi umani attraverso delle immagini fotorealistiche generate a partire
dai relativi sketch. La generazione automatica di immagini fotorealistiche a partire
da sketch permette di visualizzare idee di design attraverso delle immagini dall’aspetto
realistico anche se il corrispondente sketch è disegnato velocemente, in maniera solamente
abbozzata, magari da un disegnatore poco esperto o con scarse doti artistiche. Infatti,
non sempre è possibile trovare sketch “di moda” rappresentativi di idee di design talmente
curati e dettagliati da esprimere completamente e al meglio tale idea: spesso tali sketch
1
sono imperfetti, stilizzati e caricaturali, quindi disporre di una rappresentazione realistica
dell’idea di design in una corrispondente immagine fotorealistica generata apporta un
grande valore aggiunto alla progettazione del design.
Figura 1: Alcuni esempi illustrativi di sketch “di moda”, che permettono di visualiz-
zare idee di design. Risulta evidente come le caratteristiche strutturali ritrovate negli
sketch siano del tutto svincolate dalla realtà, permettendo al disegnatore di esprimere
liberamente la sua idea artistica.
Dal momento che un’immagine fotorealistica generata deve essere caratterizzata da
un aspetto realistico, ma è basata su uno sketch corrispondente disegnato a mano —
che presenta spesso caratteristiche strutturali molto lontane dalla realtà, come si può
notare negli esempi riportati in Figura (1) — si intuisce una problematica che rende la
generazione automatica di immagini fotorealistiche a partire da sketch un compito non
banale. Infatti, tale compito deve conciliare due aspetti in contrasto tra loro: da una
parte, è importante permettere al disegnatore di mantenere un certo grado di libertà
nell’espressione artistica delle proprie idee di design, e allora l’immagine generata a par-
tire dallo sketch dovrà rispettare il più possibile l’intento artistico che il disegnatore ha
trasmesso nel disegnare lo sketch; dall’altra parte, l’immagine generata, per essere con-
siderata fotorealistica, dovrà avere un aspetto realistico, ovvero dovrà presentare delle
caratteristiche strutturali corrispondenti alla realtà. Per conciliare tali aspetti, nella ge-
nerazione automatica di immagini fotorealistiche a partire da sketch spesso sarà richiesto
uno sforzo per discostarsi dai tratti irrealistici e abbozzati che caratterizzano gli sketch
di partenza, per ottenere immagini generate dall’aspetto realistico, rimanendo tuttavia
il più possibile fedeli allo sketch disegnato, su cui deve comunque basarsi la generazione
dell’immagine fotorealistica corrispondente.
La problematica relativa a tale conciliazione, nella pratica, non è di facile risoluzione.
Nel capitolo 2 si presentano brevemente alcuni approcci intrapresi in diversi lavori relativi
al tema, che tentano di risolvere tale problematica. In generale, si nota un approccio
2
risolutivo condiviso che si basa sull’utilizzo delle reti generative avversarie condizionate
(cGAN) per la generazione automatica di immagini fotorealistiche a partire da sketch.
L’addestramento di tali reti consiste nel fornire in input alla rete coppie di immagini
costituite dalle associazioni tra immagini raffiguranti la realtà e sketch corrispondenti; in
tal modo, una volta addestrata, la rete potrà generare in output immagini raffiguranti la
realtà — e quindi immagini generate dall’aspetto realistico — a partire dai corrispondenti
sketch dati in input. Tuttavia, l’addestramento di tali reti è anch’esso un problema di
non facile risoluzione, dal momento che, in generale, esistono pochi dataset composti da
tali coppie di immagini “reali” abbinate ai rispettivi sketch, vista la difficoltà nel trovare
diversi sketch che corrispondano a immagini che raffigurino la realtà. In particolare, non
esiste nessun grande dataset composto da coppie di immagini costituite dalle associazioni
tra immagini di modelli “reali”, che indossano particolari abbigliamenti relativi ad una
qualche idea di design, e i corrispondenti sketch “di moda”, nei quali si rappresentano le
idee di design di tali abbigliamenti. Non esistendo tale dataset, è difficile trovare le coppie
di immagini di modelli “reali” abbinate ai rispettivi sketch “di moda” disegnati; allora,
senza disporre di tali coppie di immagini da utilizzare per l’addestramento, risulta difficile
addestrare una rete a generare automaticamente immagini fotorealistiche a partire da
sketch.
Durante il tirocinio svolto, su cui è basato questo lavoro di tesi, per far fronte a questa
problematica è stato realizzato un dataset di immagini, composto da sketch corrispon-
denti a immagini di modelli “reali”, che indossano particolari abbigliamenti, che possa
essere utilizzato — insieme al dataset di immagini dei modelli “reali” — per l’addestra-
mento di una rete per la generazione automatica di immagini fotorealistiche “di moda” a
partire da sketch. Realizzando gli sketch corrispondenti alle immagini dei modelli “reali”,
è stato realizzato un dataset composto da coppie di immagini costituite dalle associazioni
tra le immagini raffiguranti la realtà e gli sketch corrispondenti, e tali coppie di immagini
abbinate potranno essere utilizzate per l’addestramento della rete.
In primo luogo, allora, sono state acquisite 52 712 immagini di modelli “reali”, che
indossano particolari abbigliamenti, dal Large-scale Fashion (DeepFashion) Database [1].
Dopodiché, tali immagini sono state organizzate per ottenere una struttura del dataset
di immagini dei modelli “reali”, e quindi una successiva struttura del dataset di sketch
corrispondenti a tali immagini, che possa rendere le coppie abbinate di immagini “reali”
e relativi sketch organizzate in modo da poter essere utilizzate efficacemente per l’adde-
stramento di una rete per la generazione automatica di immagini fotorealistiche a partire
da sketch. In particolare, dapprima sono state scartate tutte quelle immagini nelle quali
i volti dei modelli non sono presenti; dopodiché, le immagini rimanenti sono state clas-
sificate in classi descrittive di particolari tipologie di posa del corpo caratteristiche, in
modo tale da ottenere delle classi composte da immagini che sono caratterizzate da forti
somiglianze nella tipologia di posa del corpo nella quale sono raffigurati i modelli. Questo
permette di semplificare la grande varietà di pose e forme differenti del corpo umano,
uniformandole e standardizzandole a poche classi caratteristiche; in tal modo si migliora
3
l’apprendimento della rete su come diversi abbigliamenti possano adattarsi a predefinite
pose e forme del corpo, permettendo alla rete di generare, una volta addestrata, immagini
nelle quali pose e forme del corpo avranno un aspetto realistico e plausibile.
Una volta ottenuta la struttura, in tal modo organizzata, del dataset di immagini
dei modelli “reali” acquisite inizialmente, si comincia un processo di elaborazione per
trasformare tali immagini nei sketch corrispondenti. Sottoponendo tali immagini a di-
versi passaggi durante il processo di elaborazione, si realizzano in primo luogo le mappe
dei contorni corrispondenti, dove le caratteristiche strutturali evidenziate dai contorni
rilevati sono pressoché invariate rispetto alle caratteristiche ritrovate nelle immagini dei
modelli “reali”. In secondo luogo, elaborando ulteriormente le mappe dei contorni ot-
tenute — attraverso applicazioni di particolari stili grafici caratteristici e distorsioni dei
contorni — si inizia man mano ad ottenere delle immagini che approssimano sempre di
più degli sketch “di moda” corrispondenti alle immagini dei modelli “reali”. Nel capitolo
3 si descrivono nel dettaglio i processi svolti di ripulitura, classificazione ed elaborazione
delle immagini dei modelli “reali” acquisite, che insieme hanno portato alla realizzazione
di un dataset di sketch corrispondenti a tali immagini, che potrà essere utilizzato per
l’addestramento di una rete per la generazione automatica di immagini fotorealistiche a
partire da sketch.
2 Stato dell’arte
La generazione automatica di immagini fotorealistiche a partire da sketch disegnati a
mano presenta problematiche di non semplice risoluzione affrontate in molti lavori sul
tema, e di seguito se ne riportano alcuni. In [2] si evidenzia come sia differente generare
immagini fotorealistiche a partire da sketch disegnati a mano da un disegnatore rispetto
a generare immagini fotorealistiche a partire da mappe dei contorni ottenute dall’ela-
borazione di immagini preesistenti raffiguranti la realtà. Se si osserva la Figura (2) di
seguito riportata, è possibile notare la differenza tra una mappa dei contorni ottenuta
dall’elaborazione di un’immagine preesistente raffigurante la realtà e gli sketch ad essa
corrispondenti. Si può notare che la mappa dei contorni è un’immagine i cui contorni
dell’oggetto rappresentato corrispondono esattamente ai contorni che l’oggetto ha nella
realtà: le caratteristiche strutturali dell’oggetto rappresentato nella mappa dei contorni
sono le stesse caratteristiche che l’oggetto ha nel mondo reale. Gli sketch, che rappresen-
tano l’oggetto riportato nell’immagine originale raffigurante la realtà, invece, presentano
delle caratteristiche strutturali che sono molto differenti dalle caratteristiche che l’oggetto
rappresentato ha nella realtà. Uno sketch è costituito da un insieme di tratti imperfetti,
grossolani, disegnati spesso in maniera imprecisa e approssimativa dalla mano umana
del disegnatore, che possono al più imitare approssimativamente i contorni che l’oggetto
rappresentato ha nella realtà. Allora, si può comprendere come la generazione di imma-
gini fotorealistiche a partire da sketch disegnati a mano sia molto più difficile rispetto
4
alla generazione di immagini fotorealistiche a partire da semplici mappe dei contorni.
In primo luogo, dal momento che, a differenza di una mappa dei contorni, i contorni di
un oggetto rappresentato in uno sketch non si allineano con precisione ai contorni che
l’oggetto in questione ha nella realtà, per generare un’immagine dall’aspetto realistico
a partire da uno sketch disegnato in maniera approssimativa, una rete per la genera-
zione automatica di immagini fotorealistiche dovrà apprendere le trasformazioni spaziali
da compiere per correggere i tratti deformati e irrealistici che caratterizzano uno sketch
disegnato a mano, per generare un’immagine fotorealistica corrispondente. In secondo
luogo, una mappa dei contorni solitamente contiene molte più informazioni rispetto ad
uno sketch sulle caratteristiche strutturali e i dettagli dell’oggetto rappresentato, quindi
una rete per la generazione di immagini fotorealistiche dovrà intuire queste informazioni
mancanti per generare un’immagine fotorealistica a partire da uno sketch. Infine, una
rete per la generazione automatica di immagini fotorealistiche a partire da sketch dise-
gnati a mano dovrà imparare a gestire tutte le caratteristiche caricaturali o iconiche, che
possono essere ritrovate nella rappresentazione di un oggetto in uno sketch, per generare
un’immagine che abbia un aspetto realistico nonostante tali aspetti caratteristici di uno
sketch.
Figura 2: Confronto tra una mappa dei contorni e sketch corrispondenti alla stessa
immagine raffigurante la realtà. L’immagine raffigurante la realtà e gli sketch proven-
gono dal Sketchy Database [3]. Rispetto agli sketch, la mappa dei contorni contiene
più informazioni sulle caratteristiche strutturali dell’oggetto rappresentato. Gli sketch,
invece, non riflettono precisamente i contorni e le caratteristiche strutturali che l’oggetto
rappresentato ha nella realtà.
Dal momento che la generazione di immagini fotorealistiche a partire da mappe dei
contorni, ottenute dall’elaborazione di immagini preesistenti raffiguranti la realtà, è molto
più semplice rispetto all’analogo compito a partire da sketch disegnati a mano, negli ulti-
mi anni le più popolari tecniche di generazione automatica di immagini fotorealistiche a
partire da sketch sono state guidate da metodi come Photosketcher [4] e Sketch2photo [5]
che, per generare un’immagine dall’aspetto realistico, richiedono spesso in input rappre-
sentazioni di oggetti le cui caratteristiche strutturali sono molto legate alle effettive
caratteristiche che tali oggetti hanno nella realtà. Tali approcci, quindi, riescono a ge-
nerare immagini fotorealistiche a partire da rappresentazioni che sono più simili a delle
mappe dei contorni, piuttosto che a dei veri e propri sketch disegnati a mano; inoltre,
5
comprendono complicate procedure di post-elaborazione per rendere più realistiche le
immagini generate.
Allora, una carenza comune di questi metodi è l’incapacità di generare immagini da
un aspetto realistico plausibile a partire da sketch disegnati a mano, sketch che sono
caratterizzati da tutte le particolarità sopra descritte, che complicano di molto il lavoro
di generazione automatica di immagini fotorealistiche. Per affrontare questa generale
incapacità di generare immagini fotorealistiche dall’aspetto plausibile a partire da sketch
disegnati a mano in maniera grossolana e approssimativa, Sangkloy et al. [3], tra gli altri
lavori che condividono un simile approccio, dimostrano coma sia possibile ottenere un
grande miglioramento nei risultati generati utilizzando reti neurali convoluzionali pro-
fonde (CNN), e addestrando tali reti relazionando immagini raffiguranti la realtà con gli
sketch ad esse corrispondenti. Allora, la recente comparsa di reti neurali convoluzionali
profonde ha fornito metodi interessanti per la risoluzione della problematica di genere
immagini fotorealistiche anche a partire da sketch disegnati in maniera approssimativa,
che presentano caratteristiche strutturali molto lontane dalla realtà. Tra questi metodi,
le reti generative avversarie (GAN) hanno dimostrato di avere un grande potenziale nella
generazione automatica di immagini fotorealistiche a partire da altre immagini. L’idea di
base consiste nell’addestrare in maniera competitiva due reti neurali, un generatore e un
discriminatore. Questo tipo di approccio permette alla rete neurale di apprendere come
generare nuovi dati aventi la stessa distribuzione dei dati usati in fase di addestramento.
L’obiettivo del generatore è quello di produrre nuove immagini, cercando di “inganna-
re” il discriminatore generando immagini che sono indistinguibili dalle immagini “reali”
utilizzate in fase di addestramento, mentre il discriminatore apprende come distinguere
le immagini “reali” da quelle generate artificialmente dal generatore [6].
In [2], Chen et al. propongono SketchyGAN, un approccio per la generazione au-
tomatica di immagini fotorealistiche a partire da sketch disegnati a mano basato su
reti generative avversarie, che è in grado di generare immagini dall’aspetto realistico
raffiguranti oggetti appartenenti a 50 categorie diverse (tra cui motociclette, cavalli, di-
vani, aerei, ecc.). L’input è uno sketch che rappresenta un certo oggetto e l’output è
un’immagine generata dall’aspetto realistico che rafFigura il medesimo oggetto. Le pro-
blematiche evidenziate in [2] sono sostanzialmente due: in primo luogo, è difficile trovare
le coppie di immagini costituite dalle associazioni tra immagini raffiguranti la realtà e
sketch corrispondenti, non esistendo in generale grandi database di coppie di immagini
da utilizzare per addestrare la rete; in secondo luogo, non esistono metodi consolidati
per la generazione di immagini fotorealistiche a partire da sketch che rappresentano in
maniera approssimativa oggetti che appartengono a diverse categorie.
Per risolvere la prima problematica, Chen et al. [2] hanno aumentato il numero di
coppie di immagini costituite dalle associazioni tra sketch e corrispondenti immagini raf-
figuranti la realtà che compongono il Sketchy Database [3], che contiene quasi 75 000
sketch disegnati a mano associati alle rispettive immagini raffiguranti la realtà. Per
aumentare le coppie di immagini costituite dalle associazioni tra sketch e rispettive im-
6
magini raffiguranti la realtà, Chen et al. [2] hanno acquisito 2 299 144 immagini raffigu-
ranti oggetti del mondo reale, appartenenti a diverse categorie, e hanno elaborato tali
immagini attraverso diversi passaggi per ottenere, in primo luogo, semplici mappe dei
contorni, i cui contorni rispecchiano esattamente i contorni degli oggetti rappresentati
nelle immagini acquisite inizialmente e che presentano tutte le informazioni, dettagli e
caratteristiche strutturali delle immagini iniziali raffiguranti la realtà; in secondo luogo,
attraverso ulteriori elaborazioni delle mappe dei contorni, hanno ridotto man mano la
quantità di dettagli e informazioni contenute nelle immagini, fino ad ottenere immagini
che approssimano dei veri e propri sketch disegnati a mano.
Per risolvere la seconda problematica, Chen et al. [2] hanno costruito un modello
generativo basato su GAN, condizionato su uno sketch dato in input. Per generare im-
magini fotorealistiche da sketch disegnati a mano in maniera approssimativa, durante
l’addestramento della rete hanno adottato una strategia che prevede di regolare gradual-
mente il grado di astrazione dei contorni: inizialmente, i contorni rispecchiano fedelmente
i contorni effettivi che l’oggetto rappresentato ha nella realtà, e via via si deformano e
si approssimano sempre più questi contorni, fintantoché si arriva ad una rappresenta-
zione dell’oggetto che può essere ritrovata in uno sketch disegnato a mano. Infatti, per
semplificare il processo di addestramento della rete, inizialmente hanno dato in input
le coppie di immagini costituite dalle associazioni tra immagine raffigurante la realtà e
mappa dei contorni corrispondente, che presenta contorni e caratteristiche strutturali
pressoché invariate rispetto alla realtà; durante il processo di addestramento, hanno au-
mentato gradualmente la proporzione di coppie di immagini costituite dalle associazioni
tra immagine raffigurante la realtà e sketch corrispondente, che presenta invece contorni
e caratteristiche strutturali molto diverse da quelle che si ritrovano nella realtà.
Le reti generative avversarie condizionate (cGAN) sono adottate come soluzione ge-
nerica ai problemi di generazione automatica di immagini fotorealistiche a partire da
altre immagini anche in altri lavori sul tema, come per esempio in [7], in cui si presenta
l’architettura di Pix2Pix, o in [8].
In [9] si introduce un approccio diverso alle reti generative avversarie condiziona-
te; si evidenzia che gli approcci comuni legati all’utilizzo delle cGAN incorporano delle
condizioni troppo rigide che rendono l’immagine generata in output troppo vincolata ai
contorni e alle caratteristiche strutturali dell’immagine data in input (cioè lo sketch).
Allora, Lu et al. in [9] evidenziano che questo può essere problematico quando si parla di
generazione automatica di immagini fotorealistiche a partire da sketch disegnati a mano
in maniera approssimativa. Allora, per generare immagini il cui aspetto è realistico anche
a partire da sketch molto abbozzati, propongono una nuova GAN “contestuale” per la
generazione automatica di immagini fotorealistiche a partire da sketch. Nel loro lavoro,
Lu et al. [9] propongono di utilizzare lo sketch in input come un vincolo “debole” per
la generazione dell’immagine fotorealistica corrispondente, nella quale i contorni dell’og-
getto raffigurato non seguiranno necessariamente i contorni dell’oggetto rappresentato
nello sketch dato in input. Affrontano questo problema utilizzando un nuovo approccio
7
basato sul completamento dell’immagine, in cui lo sketch in input fornisce il “contesto”
per completare, o generare, l’immagine in output: sostanzialmente, la generazione del-
l’immagine è posta come un completamento dell’immagine (per informazioni dettagliate
su questo approccio, far riferimento al documento di ricerca relativo sopra citato).
Figura 3: Immagini generate a partire da uno sketch disegnato a mano utilizzando
due GAN condizionate (cioè, CE [8] e Pix2Pix [7]) e utilizzando la GAN “contestuale”
sviluppata da [9]. Il metodo sviluppato da questi ultimi non richiede un allineamento
rigoroso tra i contorni dell’oggetto rappresentato nello sketch e i contorni che l’oggetto
rappresentato ha nella realtà, quindi permette di ottenere risultati migliori pur rimanendo
fedeli allo sketch dato in input.
Un altro approccio, diverso dall’utilizzo delle GAN condizionate e dall’utilizzo di
coppie di immagini costituite dalle associazioni tra immagini raffiguranti la realtà e
sketch corrispondenti per l’addestramento di tali reti, è introdotto in [10], nel quale si
presenta un approccio per la generazione automatica di immagini fotorealistiche basato
sull’apprendimento non supervisionato.
Più recentemente, CycleGAN [11] ha dimostrato di poter ottenere risultati promet-
tenti.
Infine, si presentano brevemente alcune applicazioni legate alla generazione auto-
matica di immagini fotorealistiche a partire da sketch disegnati a mano nell’ambito di
immagini di moda. In [12] si introduce TextureGAN, una rete generativa avversaria che
permette di generare immagini di moda realistiche consentendo di esercitare un controllo
efficace sulla trama di un indumento o accessorio. In particolare, questo sistema consente
ad un utente di posizionare una patch di trama su uno sketch, in posizioni arbitrarie,
per ottenere un’immagine generata in output le cui regioni d’interesse nell’oggetto raffi-
gurato sono caratterizzate dalla trama desiderata. La rete viene addestrata utilizzando
sketch, generati dall’elaborazione di immagini preesistenti raffiguranti la realtà, e patch
di diverse trame, campionate da un database separato costituito da trame di diversi ma-
teriali. I risultati generati dimostrano che la rete è in grado cosı̀ di generare immagini
dall’aspetto realistico che, rispetto a lavori precedenti, sono caratterizzate dalla presenza
di trame dettagliate, realistiche e ad alta risoluzione.
Similmente, in [13] si propone un sistema per generare immagini realistiche di indu-
menti ad alta risoluzione a partire da sketch corrispondenti e informazioni sulla trama
di tali indumenti. La sfida principale alla base di questo sistema è generare trame det-
8
Figura 4: Con TextureGAN [12] è possibile generare nuove istanze di oggetti comuni
a partire da sketch disegnati a mano e semplici patch di trame di diversi materiali. Il
sistema può anche gestire più input di patch di trame diverse collocate su uno stesso
sketch, e la rete può seguire i contorni dello sketch ed espandere la trama per coprire la
regione interessata dell’oggetto rappresentato nello sketch.
tagliate, realistiche e ad alta risoluzione a partire dalle informazioni sulla trama fornite
dall’utente.
Figura 5: Illustrazione per l’utilizzo del sistema sviluppato da [13]. L’utente può, in
primo luogo, disegnare lo sketch dell’indumento desiderato. Vengono quindi fornite tre
diverse modalità per specificare diverse trame sull’indumento. Viene quindi adottata una
GAN per generare l’immagine fotorealistica corrispondente allo sketch. In terzo luogo, è
possibile disegnare nello sketch alcune ombreggiature che verranno anch’esse convertite
nell’immagine fotorealistica corrispondente, rendendola stereoscopica (e quindi ottenendo
un risultato ancora più realistico). Come post-elaborazione, tutti i colori possono essere
ulteriormente modificati in modo semplice.
9
3 Metodi
3.1 Acquisizione delle immagini
Per realizzare un dataset di sketch che possa essere utilizzato per addestrare una rete
neurale per la generazione automatica di immagini fotorealistiche corrispondenti a sketch
dati in input, che rappresentano corpi umani che indossano un certo abbigliamento, in
primo luogo è necessario acquisire un gran numero di immagini di modelli fotografati
(modelli “reali”) che indossano un certo abbigliamento, immagini cioè prese da uno o
più servizi fotografici di moda. Allora sarà possibile realizzare gli sketch corrisponden-
ti a tali immagini acquisite, attraverso un processo di elaborazione delle immagini, e
quindi addestrare la rete neurale dando in input le associazioni tra ciascuna immagine
di modello fotografato che indossa un certo abbigliamento e uno o più sketch ad essa
corrispondenti. In tal modo la rete neurale potrà produrre immagini fotorealistiche di
modelli che indossano un certo abbigliamento a partire da uno sketch corrispondente,
sketch che ritraggono quindi modelli che indossano un certo abbigliamento. Allora, dal
momento che in tali immagini di moda si è interessati esclusivamente all’abbigliamento
indossato dai modelli e dai modelli stessi (la loro fisionomia, la loro posa del corpo, le
loro sagome, forme e proporzioni), sono state acquisite immagini nelle quali i model-
li sono stati fotografati su uno sfondo neutro e indossano diversi tipi di abbigliamenti;
dall’elaborazione di tali immagini, si otterranno gli sketch corrispondenti che costitui-
ranno il dataset di sketch utilizzato per addestrare una rete neurale per la generazione
automatica di immagini fotorealistiche.
Tali immagini di modelli sono state acquisite dal “Large-scale Fashion (DeepFashion)
Database” [1], e in particolare compongono il dataset denominato da [1] “In-shop Clothes
Retrieval Benchmark”. Questo dataset è composto da 52 712 immagini di modelli e
modelle, fotografati su sfondo neutro, che indossano diversi abbigliamenti. Le immagini
del dataset acquisito da [1] sono suddivise in due categorie: la categoria degli “Uomini”
e quella delle “Donne”, a seconda che le immagini siano di modelli o di modelle. Inoltre,
all’interno di ciascuna categoria è presente un ulteriore suddivisione delle immagini dei
modelli per tipologia di abito indossato. Nel dataset acquisito da [1] sono riportate,
inoltre, alcune informazioni e annotazioni relative alle immagini contenute in esso. Tra
queste informazioni, particolarmente utili per i nostri scopi saranno le etichette relative
alla tipologia di posa, contenute nel documento list_bbox_inshop.txt; utilizzando tali
etichette, sarà poi possibile, in fase di classificazione delle immagini (di cui si discuterà
nel paragrafo 3.2.2), correlare ciascuna immagine acquisita, in cui è presente un modello,
con la tipologia di posa del corpo in cui è fotografato tale modello.
10
3.2 Ripulitura e classificazione delle immagini
Una volta acquisite le immagini, si è reso necessario procedere ad una loro ripulitura e
organizzazione per adattare il dataset acquisito ai nostri scopi: ovvero, ottenere un insie-
me di immagini da cui poter realizzare un insieme di sketch che approssimano sketch di
“moda” disegnati. Utilizzando questi sketch, sarà possibile addestrare la rete neurale ad
eseguire il processo inverso: da sketch dati in input alla rete neurale si vorranno ottenere
le corrispondenti immagini fotorealistiche in output (cioè, da sketch di un modello che
indossa un certo abbigliamento si vorrà ottenere la corrispondente immagine fotorealisti-
ca, che permetterà di visualizzare l’abbigliamento indossato dal modello in un’immagine
dall’aspetto realistico).
3.2.1 Ripulitura del dataset acquisito tramite metodo di rilevamento dei
volti
In primo luogo, dal momento che per i nostri scopi ci servono solamente immagini in
cui il viso dei modelli era ben visibile, si è reso necessario trovare un modo per scartare
tutte quelle immagini che ritraevano solamente gli abiti, o che ritraevano i modelli esclu-
dendone il viso (per esempio: modelli ritratti “di schiena”). Per scartare tutte quelle
immagini non utili ai nostri scopi, ovvero quelle immagini in cui non è ritratto il viso
dei modelli, è stato utilizzato per prima cosa un metodo di rilevamento del viso e degli
occhi. Si è utilizzata la libreria OpenCV-Python [14], e in particolare è stato utilizzato
un efficace metodo di rilevamento di oggetti (in questo caso: rilevamento di volti e oc-
chi) proposto da [15]. Si tratta di un approccio basato sull’apprendimento automatico
supervisionato in cui classificatori a cascata vengono addestrati utilizzando molte imma-
gini positive (immagini di volti e occhi) e negative (immagini senza volti e quindi senza
occhi). Il metodo viene quindi utilizzato per rilevare volti e occhi in altre immagini (per
approfondire vedere [15]). OpenCV contiene già molti classificatori pre-addestrati per il
rilevamento di volti, occhi, sorriso, ecc. Questi file XML sono archiviati nella cartella
opencv/data/haarcascades/ [14]. In questo caso è stato utilizzato un rilevatore di volto
e occhi. Per prima cosa, si deve caricare i classificatori XML richiesti. Quindi, si carica
l’immagine di cui si vuole rilevare volto e occhi, che deve essere in scala di grigi. Infine,
per ogni immagine caricata si rileva il volto e gli occhi. Di seguito si riporta la porzione
di codice utilizzata per effettuare le operazioni appena descritte, scritta a partire dalle
indicazioni riportate in [14]:
import numpy as np
import cv2
face_cascade =
cv2.CascadeClassifier(cv2.data.haarcascades +
"haarcascade_frontalface_default.xml")
11
eye_cascade =
cv2.CascadeClassifier(cv2.data.haarcascades +
"haarcascade_eye.xml")
img = cv2.imread("image_input.jpg")
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(img_gray)
eyes = eye_cascade.detectMultiScale(img_gray)
A questo punto, si desidera mantenere solamente quelle immagini in cui il viso dei
modelli è presente. Se il viso è presente, dal momento che un viso corrisponde ad 1 volto
e 2 occhi, il rilevatore del volto dovrebbe rilevare 1 elemento da associare all’istanza
faces e il rilevatore degli occhi dovrebbe rilevare 2 elementi da associare all’istanza
eyes. Allora, si scartano tutte quelle immagini in cui il numero di elementi contenuti in
faces è minore di 1 oppure il numero di elementi contenuti in eyes è minore di 2.
Utilizzando questo metodo, quindi, si è potuto separare le immagini (suddivise tra
la categoria “Uomini” e la categoria “Donne”) in cui il viso dei modelli è presente, da
tutte le altre, che sono state scartate e raggruppate in una cartella apposita, per ciascuna
categoria, denominata “TRASH”. Si può dire quindi che queste immagini scartate sono
state classificate in una classe caratteristica, chiamata “TRASH”, per ciascuna categoria.
3.2.2 Classificazione delle immagini per tipologie di posa simili
In secondo luogo, si è voluto organizzare le immagini dei modelli raggruppandole non
per tipologia di abito indossato, ma per tipologia di posa del corpo, in modo tale da
avere più immagini raggruppate insieme che condividono una certa tipologia di posa del
corpo simile tra loro. Raggruppare molte immagini, nelle quali modelli indossano diversi
tipi di abbigliamenti, per similitudini nelle pose e nelle forme del corpo comporta diversi
vantaggi. In particolare, questo permette di far fronte ad una grande problematica nella
generazione di immagini fotorealistiche, di cui si studiano metodi risolutivi in molti lavori
sul tema (vedere per esempio [16]): la sfida consiste nel semplificare la grande varietà
di pose e forme differenti del corpo umano, uniformandole e standardizzandole a poche
classi caratterizzanti. Potendo sfruttare una grande varietà di abbigliamenti diversi su
un insieme limitato di pose del corpo, si migliora l’apprendimento su come diversi abiti
possano adattarsi a predefinite pose e forme del corpo. Migliorando l’apprendimento e
accomunando la varietà di pose e forme del corpo a poche pose caratteristiche prede-
finite, in fase di generazione dell’immagine fotorealistica dallo sketch corrispondente si
otterranno risultati più realistici e plausibili. Uniformando le pose e le forme del corpo,
è possibile concentrarsi sulla generazione realistica dei diversi abbigliamenti dei model-
li, producendo immagini di moda in cui le pose dei modelli saranno predefinite e gli
12
Figura 6: Alcuni esempi di immagini scartate e correttamente classificate nella classe
“TRASH”.
abbigliamenti saranno quelli desiderati, ritrovati nello sketch disegnato dal disegnatore.
In altre parole, la generazione di immagini fotorealistiche si concentrerà sul “vestire”
correttamente delle persone le cui sagome, forme e pose del corpo saranno predefinite e
facilmente riconoscibili a partire dallo sketch corrispondente disegnato dal disegnatore.
Inoltre, nel mondo della moda e del fashion, visualizzare un vestito, un certo stile e/o
un certo abbigliamento è essenziale: standardizzando pose e forme del corpo in classi ca-
ratteristiche, è possibile concentrarsi sull’obiettivo principale, ovvero sulla visualizzazione
dell’abbigliamento e dello stile desiderato sulla posa desiderata predefinita. L’importan-
za della standardizzazione è evidenziata in molti lavori sul tema: in particolare, in [17] si
dimostra che l’approccio basato sulla standardizzazione e sul riconoscimento della posa
del corpo da loro intrapreso può portare alla generazione di immagini realistiche di moda,
caratterizzate da realistici corpi umani e abbigliamenti plausibili, ma non solo. Infatti,
in [17] si dimostra anche che è possibile trasferire stili e colori diversi di un vestito e pose
del corpo diverse da un’immagine generata ad un’altra.
Allora, in seguito alla ripulitura iniziale del dataset, in cui sono state scartate mol-
te immagini nelle quali il volto dei modelli non è visibile (vedere paragrafo 3.2.1), si è
proceduto a raggruppare le immagini rimaste per tipologie di posa simili. Analizzando
il dataset, si è notato che le immagini di moda contenute potevano essere suddivise e
raggruppate, senza perdita di generalità, in solamente tre classi, ciascuna delle quali
13
descrive in maniera esaustiva una particolare tipologia di posa del corpo, che si può con-
siderare una tipologia di posa del corpo molto comune in ambito di immagini di moda.
Allora, mantenendo la separazione originaria tra immagini di modelli (categoria “Uomi-
ni”) e immagini di modelle (categoria “Donne”), si vuole classificare le immagini per
similitudini nella posa del corpo in tre classi, da noi definite e chiamate, rispettivamente,
“FRONT”, “FULL” e “SIDE”. Queste tre classi, nelle quali si vogliono classificare le
immagini nell’organizzazione finale del dataset, ciascuna descrittiva di una tipologia di
posa caratteristica delle immagini di moda, sono di seguito descritte:
1. Classe “FRONT”: sotto questo nome sono state classificate le immagini che ritrag-
gono modelli frontalmente e a mezzo busto, fornendo quindi un ingrandimento sul
viso e sul busto;
2. Classe “FULL”: sotto questo nome sono state classificate le immagini che ritraggo-
no modelli frontalmente e a corpo intero, fornendo quindi l’intera visuale del corpo
dei modelli;
3. Classe “SIDE”: sotto questo nome sono state classificate le immagini che ritraggono
modelli in una posa laterale.
Per la classificazione delle immagini per pose simili, sono state utilizzate delle eti-
chette sulla tipologia di posa del corpo in cui è ritratto il modello nell’immagine, fornite
da [1], contenute nel documento list_bbox_inshop.txt allegato al dataset di immagini.
Queste etichette permettono quindi di correlare ciascuna immagine con la tipologia di
abito indossato e con la tipologia di posa del corpo in cui sono ritratti i modelli. Nel
dettaglio, si riporta la descrizione associata alle etichette relative alla tipologia di posa
del corpo dei modelli per ogni immagine data in input, descrizione data da [1]:
In <pose type>:
"1" represents frontal view;
"2" represents side view;
"3" represents back view;
"4" represents zoom-out view;
"5" represents zoom-in view;
"6" represents stand-alone view.
Stabilendo che esiste una classe per ogni etichetta relativa ad una tipologia di posa,
che descrive la tipologia di posa del corpo dell’etichetta corrispondente, in primo luogo
si ha classificato le immagini del dataset in queste sei classi definite da [1], utilizzando
tutte le etichette a disposizione per la suddivisione e il raggruppamento delle immagini
per similitudini nella tipologia di posa.
Una volta classificate le immagini in queste sei classi, tutte quelle immagini etichettate
back view (cioè con etichetta <pose type> = "3") sono state scartate, e classificate
14
quindi nella classe caratteristica delle immagini che sono state scartate, ovvero la classe
“TRASH”, perché sono immagini che ritraggono modelli “di schiena”: cioè, immagini
nelle quali non è visibile il viso dei modelli. Un discorso analogo si è fatto per le immagini
etichettate stand-alone view (cioè con etichetta <pose type> = "6"), scartate dal
momento che rappresentano immagini che ritraggono i singoli capi d’abbigliamento a sé
stanti, senza nessun modello ad indossarli.
In questo modo si è potuto scartare, e classificare nella classe “TRASH”, tutte quelle
immagini che non erano già state scartate in seguito all’applicazione del metodo di rile-
vamento dei volti (paragrafo 3.2.1), ovvero quelle immagini che erano state erroneamente
classificate come immagini positive (cioè con volto e occhi presenti) dal metodo di rileva-
mento dei volti. L’unione dell’utilizzo del metodo di rilevamento dei volti e dell’utilizzo
delle etichette che descrivono la tipologia di posa dei modelli, permette di ottenere una
miglior ripulitura del dataset da tutte quelle immagini non utili ai nostri scopi (nelle
quali cioè non è presente il volto dei modelli).
Mentre le immagini classificate in queste tre classi si può dire che sono classifica-
te “correttamente”, cioè le classi alle quali appartengono descrivono effettivamente le
tipologie di posa rappresentate in esse, le immagini classificate nella classe corrisponden-
te all’etichetta zoom-in view si può dire che sono classificate in una classe “ambigua”.
Infatti, sotto all’etichetta zoom-in view vengono raggruppate immagini nelle quali i mo-
delli sono ritratti in tipologie di pose del corpo diverse tra loro: in teoria, nella definizione
associata all’etichetta data da [1], l’etichetta dovrebbe essere associata a immagini che
rappresentano un “ingrandimento” generico del modello nell’immagine; tuttavia, ana-
lizzando le immagini raggruppate sotto l’etichetta, si riscontra una varietà di pose del
corpo non riconducibili ad una tipologia di posa caratteristica. Allora, queste immagini
classificate nella classe corrispondente all’etichetta zoom-in view, che possiamo deno-
minare “ZOOM-IN”, sarebbero state più correttamente classificate nelle altre classi, che
effettivamente descrivono le tipologie di posa nelle quali i modelli di queste immagini
sono ritratti. In seguito alla ripulitura definitiva del dataset, le immagini rimaste sono
a questo punto classificate in quattro classi, corrispondenti alle etichette frontal view,
zoom-out view, side view e zoom-in view. Analizzando le immagini classificate in
queste quattro classi, e confrontando queste classi con le tre classi “FRONT”, “FULL” e
“SIDE” da noi definite, ciascuna descrittiva di una tipologia di posa caratteristica delle
immagini di moda, si trova una buona corrispondenza tra l’etichetta frontal view e
la classe “FRONT”, tra l’etichetta zoom-out view e la classe “FULL” e tra l’etichetta
side view e la classe “SIDE”. Allora, le tre classi corrispondenti a queste tre etichette
vengono chiamate con i nomi da noi definiti, rispettivamente: “FRONT” per le imma-
gini raggruppate sotto l’etichetta frontal view, “FULL” per le immagini raggruppate
sotto l’etichetta zoom-out view, “SIDE” per le immagini raggruppate sotto l’etichetta
side view.
Le conseguenze dell’ambiguità di quest’etichetta sulla classificazione delle immagini
sono riportate nella valutazione delle prestazioni del modello di classificazione relative a
15
questo momento del processo di classificazione: si veda il paragrafo 4.1.1. Analizzando
gli indicatori relativi alle prestazioni del modello di classificazione in questo momen-
to del processo di classificazione (vedere paragrafo 4.1.1), si può notare un risultato
piuttosto deludente in termini di accuratezza ed efficacia della classificazione: si può
ottenere sicuramente una prestazione migliore dal modello di classificazione. Per ovviare
a quest’ambiguità associata alla classe “ZOOM-IN”, e ottenere prestazioni migliori dal
modello di classificazione, si è deciso di spostare manualmente le immagini classificate
nella classe “ZOOM-IN” nelle classi corrette, cioè nelle classi alle quali queste immagini
effettivamente appartengono, che le descrivono cioè correttamente. Allora, le immagini
classificate nella classe “ZOOM-IN” sono state spostate nelle classi “FRONT”, “FULL”
e “SIDE”, a seconda della tipologia di posa in cui i modelli sono ritratti, e nella clas-
se “TRASH” se nelle immagini non è visibile il volto dei modelli. In seguito a questo
spostamento, o ri-classificazione, delle immagini nelle classi alle quali effettivamente ap-
partengono e che le descrivono correttamente, si può notare un netto miglioramento delle
prestazioni del modello di classificazione, analizzando gli indicatori riportati nel paragra-
fo 4.1.2. A questo punto, si è ottenuto un risultato ritenuto soddisfacente dal punto di
vista della classificazione delle immagini per tipologie di posa simili, quindi il processo
di classificazione si può fermare. Si è ottenuto quindi l’organizzazione e struttura finale
del dataset di immagini, ripulito da tutte le immagini nelle quali i volti dei modelli non
sono presenti e con le immagini rimaste classificate secondo similitudini nella tipologia
di posa con buoni risultati finali.
3.2.3 Struttura del dataset di immagini
Allora, si è visto che per organizzare un dataset di immagini di modelli da cui poter ot-
tenere un dataset di sketch corrispondenti che possa essere utilizzato per la generazione
automatica di immagini fotorealistiche con buoni risultati, si è dovuto effettuare diverse
operazioni di ripulitura e organizzazione del dataset originale, acquisito da [1]. In con-
clusione a questi passaggi, si è ottenuto l’organizzazione e quindi la struttura “finale” del
dataset di immagini di modelli, nella quale, pur mantenendo la distinzione originale tra
immagini di modelli (categoria “Uomini”) e immagini di modelle (categoria “Donne”),
sono state introdotte delle suddivisioni e raggruppamenti diversi da quelli originali: da
una classificazione delle immagini per tipologia di abito simile si è preferito, per le ragioni
discusse nel paragrafo 3.2.2, avere una classificazione delle immagini per tipologia di posa
del corpo dei modelli simile, e quindi classificare le immagini per pose del corpo simili
nelle classi descritte nel paragrafo 3.2.2, con il processo di classificazione i cui passi sono
stati discussi nel medesimo paragrafo. Allora, il dataset ottenuto in conclusione a questo
processo di ripulitura e classificazione delle immagini dei modelli iniziali (che chiamia-
mo dataset “finale” del processo di classificazione), contiene le immagini dei modelli che
verranno utilizzate come immagini di input per l’elaborazione delle immagini allo scopo
di produrre gli sketch corrispondenti, ed è cosı̀ strutturato:
16
• Per la categoria “Donne” sono state mantenute 24 534 immagini, cosı̀ suddivise:
11 026 immagini classificate nella classe “FRONT”;
6678 immagini classificate nella classe “FULL”;
6830 immagini classificate nella classe “SIDE”.
• Per la categoria “Uomini” sono state mantenute 2798 immagini, cosı̀ suddivise:
1190 immagini classificate nella classe “FRONT”;
1034 immagini classificate nella classe “FULL”;
574 immagini classificate nella classe “SIDE”.
Allora, delle 52 712 immagini di modelli contenute nel dataset originale [1], il numero
di immagini che sono state mantenute nel dataset “finale” e organizzate nelle classi de-
scrittive le tipologie di posa interessanti delle immagini di moda, in particolare immagini
di moda ritraenti modelli che indossano particolari abbigliamenti, si è ridotto a 27 332
(suddivise tra “Donne” e “Uomini”), mentre le restanti immagini sono state scartate
(20 340 immagini per la categoria “Donne” e 5040 immagini per la categoria “Uomini”,
classificate nelle rispettive classi “TRASH”).
Di seguito si riportano alcuni esempi di immagini (acquisite da [1]) classificate cor-
rettamente nelle loro classi descrittive le tipologie di posa interessanti delle immagini di
moda sopra definite, sia per la categoria degli “Uomini” che per quella delle “Donne”.
Si può notare una forte somiglianza tra le pose dei modelli in immagini che appartengono
ad una stessa classe, dal momento che la tipologia di posa descritta dalla classe rientra
nelle tipologie di posa tipiche delle immagini di moda, come discusso sopra.
17
Figura 7: Alcuni esempi di immagini correttamente classificate nelle rispettive classi
“FRONT”, per la categoria “Uomini” e la categoria “Donne”.
18
Figura 8: Alcuni esempi di immagini correttamente classificate nelle rispettive classi
“FULL”, per la categoria “Uomini” e la categoria “Donne”.
19
Figura 9: Alcuni esempi di immagini correttamente classificate nelle rispettive classi
“SIDE”, per la categoria “Uomini” e la categoria “Donne”.
20
3.3 Elaborazione delle immagini
Una volta ottenuto un dataset di immagini di modelli organizzato per tipologie di posa
simili e ripulito da tutte quelle immagini nelle quali il volto dei modelli non è presente,
si vuole passare da queste immagini di modelli “reali” a degli sketch corrispondenti, che
riescano ad avvicinarsi il più possibile a degli sketch disegnati a mano. Per trasformare
queste immagini da immagini di modelli “reali” ad immagini che rappresentano lo stesso
modello, che indossa lo stesso abbigliamento, ma come sketch, è necessario elaborare
le immagini attraverso diversi passaggi. Infatti, le immagini digitali possono subire un
processo di elaborazione volto a manipolare e modificare l’immagine stessa secondo le
caratteristiche desiderate [18]. Un’immagine digitale è la rappresentazione numerica di
un’immagine bidimensionale: è composta da una matrice di punti, chiamati pixel, la cui
colorazione è codificata tramite uno o più valori numerici (bit) [19]. Un pixel, anche
chiamato “pel” [20] o “picture element”, è l’unità minima convenzionale della superficie
di un’immagine digitale, quindi è il più piccolo elemento controllabile di un’immagine
digitale. I pixel, disposti in modo da comporre una griglia fissa rettangolare, per la
loro piccolezza e densità appaiono fusi in un’unica immagine [21]. I valori numerici
memorizzati in ciascun pixel indicano le caratteristiche di ogni punto dell’immagine da
rappresentare: nelle immagini a colori, vengono memorizzati solitamente i livelli di inten-
sità luminosa dei colori fondamentali dell’immagine (per esempio, nel modello di colore
RGB, i colori fondamentali sono tre: rosso, verde e blu); invece, nelle immagini mono-
cromatiche in scala di grigi, l’unico valore memorizzato indica l’intensità luminosa del
grigio, che varia dal nero al bianco. Il numero dei livelli di intensità luminosa rappresen-
tabili, detto anche “profondità del pixel”, dipende dal massimo numero di combinazioni
possibili permesse dalla quantità di bit utilizzata per codificare ciascun pixel: utilizzando
8 bit per pixel, si ha la possibilità di rappresentare al massimo 256 (28
) livelli di inten-
sità luminosa [19]; un numero simile di livelli rappresentabili consente una sufficiente
discriminazione delle intensità luminose dei colori fondamentali nell’immagine a colori, o
dei grigi nell’immagine monocromatica, ottenendo un risultato accettabile nella maggior
parte delle applicazioni. Allora, essendo L i livelli rappresentabili di intensità luminosa,
un’immagine digitale è una matrice di valori discreti di intensità luminosa, costituita da
M × N pixel (dove M è il numero delle righe di pixel dell’immagine e N delle colonne),
ciascuno dei quali ha uno o più valori numerici appartenenti all’intervallo [0, L − 1] [22].
Allora, si è iniziato ad applicare alle immagini alcuni filtri. Nell’elaborazione digitale
delle immagini, per applicare dei filtri ad immagini si utilizzano delle matrici, solitamente
di piccole dimensioni, chiamate matrici di convoluzione (o matrici kernel). A seconda dei
valori degli elementi della matrice, una matrice kernel può essere utilizzata per applicare
un’ampia gamma di effetti alle immagini (per esempio l’applicazione di una sfocatura
oppure il riconoscimento dei contorni di un immagine). Le dimensioni di una matrice
kernel sono arbitrarie, anche se sono soprattutto di dimensione dispari, in quanto nella
convoluzione tra matrici è importante identificare il centro della matrice kernel, cosa che
21
avviene facilmente con dimensioni dispari; una dimensione tipica per una matrice kernel
è di 3 × 3 (difficilmente le matrici kernel sono di grandi dimensioni) [23].
Per avere un’idea del principio di funzionamento della convoluzione di due matrici
bidimensionali, consideriamo la matrice A, che rappresenta la matrice contenente i valori
di intensità luminosa di tutti i pixel di un immagine originale monocromatica (per sem-
plicità, consideriamo un’immagine in scala di grigi, dove in ciascun pixel è memorizzato
un singolo valore, che indica l’intensità luminosa del grigio in quel punto), e la matrice
B, che rappresenta la matrice kernel. Sovrapponendo la matrice B alla matrice A, in
modo che il centro della matrice B sia in corrispondenza del pixel della matrice A da
elaborare, è possibile applicare il filtro desiderato all’immagine e quindi ottenere la nuo-
va immagine filtrata. Il valore di ciascun pixel della matrice A oggetto di elaborazione
viene ricalcolato come la somma pesata dei prodotti di ciascun elemento della matrice
kernel con il corrispondente pixel della matrice A sottostante e i pixel a lui localmente
vicini [24]. In generale, si può esprimere la convoluzione tra due matrici con la seguente
formula [23]:
V = int
Pq
i=1
Pq
j=1 fijdij
F
(1)
dove:
fij = il valore del coefficiente di convoluzione del kernel nella posizione ij;
dij = il valore del pixel nell’immagine da elaborare corrispondente a fij;
q = la dimensione della matrice kernel, assumendo di utilizzare matrici kernel di
dimensioni quadrate (se q = 3, il kernel ha dimensione 3 × 3);
F = la somma di tutti i coefficienti di convoluzione del kernel (pari ad 1 se la somma
dei coefficienti è nulla);
V = il valore risultante del pixel dell’immagine oggetto di elaborazione.
Per comprendere meglio l’operazione di convoluzione tra due matrici, si riporta di
seguito un esempio, fornito da [23].
Figura 10: Esempio dell’operazione di convoluzione tra due matrici.
22
Nell’esempio, si può notare la sovrapposizione della matrice kernel alla matrice “Input
Data”, che rappresenta una parte della matrice contenente i valori di intensità di tutti
i pixel dell’immagine originale, in modo tale che il centro della matrice kernel sia in
corrispondenza del pixel dell’immagine originale oggetto di elaborazione, in questo caso
un pixel di valore 8. Applicando la formula (1), è possibile ricalcolare il valore del pixel
e ottenere quindi il valore che assume nell’immagine elaborata finale, V . Di seguito si
riportano i calcoli:
V = int{[(−1 × 8) + (−1 × 6) + (−1 × 6) +
(−1 × 2) + (16 × 8) + (−1 × 6) +
(−1 × 2) + (−1 × 2) + (−1 × 8)]
÷(−1 − 1 − 1 − 1 + 16 − 1 − 1 − 1 − 1)} =
= int(
88
8
) = 11
In modo analogo, è possibile ricalcolare i valori memorizzati in tutti i pixel che com-
pongono l’immagine, e ottenere quindi l’immagine filtrata (o elaborata) desiderata, tra-
slando la matrice di convoluzione sulla matrice rappresentante l’immagine da elaborare,
in modo che il centro della matrice kernel sia in corrispondenza del pixel da elaborare di
volta in volta, per tutti i pixel che compongono l’immagine da elaborare.
Per il processo di elaborazione delle immagini, si è utilizzata principalmente la libreria
OpenCV-Python [14].
Inoltre, dal momento che le immagini da elaborare sono molte e il processo di ela-
borazione, nel suo complesso, è impegnativo e richiede una certa potenza di calcolo, è
stata utilizzata una delle risorse di calcolo di Cineca, un consorzio senza scopo di lucro
composto da 67 Università italiane e 13 Istituzioni, che costituisce il più grande centro di
calcolo in Italia e uno dei più grandi in Europa. In particolare, si è ottenuto l’accesso al
cluster MARCONI100, un recente cluster accelerato basato su architettura IBM Power9
e GPU Volta NVIDIA, acquisito da Cineca nell’ambito dell’iniziativa europea PPI4HPC
(per maggiori informazioni vedere [25]). Si è distribuita cosı̀ l’elaborazione delle imma-
gini scomponendola in sotto-elaborazioni separate, le quali sono state risolte ciascuna in
parallelo sul cluster.
3.3.1 Sfocatura e segmentazione delle immagini
Innanzitutto, per semplificare la complessità computazionale per le successive elabora-
zioni, si è reso le immagini digitali da immagini a colori a immagini monocromatiche
in scala di grigi. Un’immagine digitale monocromatica è una matrice di valori discreti
di intensità luminosa (o livelli di grigio), costituita da M × N pixel, ciascuno dei quali
ha un valore appartenente all’intervallo [0, L − 1] che indica l’intensità del grigio in quel
23
punto dell’immagine (che varia dal nero, tipicamente corrispondente al valore 0, al bian-
co, tipicamente corrispondente al valore L − 1), essendo L i livelli possibili di intensità
(o di grigio). Come si è già detto, tipicamente L = 2k
, dove k è il numero di bit usati
per codificare ciascun pixel. Con 8 bit si ha la possibilità di rappresentare un numero di
livelli (256) tale da consentire una discriminazione dei livelli di grigio accettabile [22].
Dopodiché, le immagini sono state sfocate applicando la sfocatura Gaussiana, per
ridurre il rumore dalle immagini e ridurne i dettagli. Dal punto di vista matematico,
applicare una sfocatura Gaussiana ad un’immagine consiste nell’utilizzare una funzione
Gaussiana per calcolare la trasformazione da applicare a ciascun pixel dell’immagine [26].
In statistica e in teoria della probabilità, le funzioni Gaussiane si presentano come fun-
zioni di densità di probabilità della distribuzione normale, o distribuzione di Gauss. La
distribuzione di Gauss è una distribuzione di probabilità continua usata per descrivere
variabili casuali a valori reali che tendono a concentrarsi attorno ad un singolo valore
medio. In una dimensione, il grafico della funzione Gaussiana associata è simmetrico e
ha una forma a campana intorno al punto centrale (il valore medio atteso), nota come
campana di Gauss [27].
La fonte principale consultata per la seguente trattazione è [28], i quali si sono basati a
loro volta sui seguenti lavori (si riportano di seguito per eventuali approfondimenti): [29,
30, 31, 32, 26].
La formula di una funzione Gaussiana, in una dimensione e con valore medio atteso
pari a 0, è la seguente:
G(x) =
1
√
2πσ2
e− x2
2σ2
(2)
dove x è la distanza dall’origine sull’asse e σ2
è la varianza della distribuzione di
Gauss.
Figura 11: Grafico della funzione Gaussiana in una dimensione, con valore medio atteso
pari a 0 e σ2
= 1.
In due dimensioni, una funzione Gaussiana è una funzione isotropa (in particolare,
è circolarmente simmetrica), ed è data dal prodotto di due funzioni Gaussiane, una in
24
ciascuna dimensione:
G(x, y) =
1
2πσ2
e−x2+y2
2σ2
(3)
dove x è la distanza dall’origine su un’asse, y è la distanza dall’origine sull’altro asse
e σ2
è la varianza della distribuzione di Gauss.
Figura 12: Grafico della funzione Gaussiana in due dimensioni, con valore medio atteso
pari a (0, 0) e σ2
= 1.
Come si può notare dal grafico in Figura (12), quando applicata in due dimensioni, la
funzione Gaussiana produce una superficie i cui contorni sono dei cerchi concentrici che
si sviluppano in maniera circolarmente simmetrica a partire dal punto centrale (il valore
medio atteso, in cui si avrà il picco di valore massimo della distribuzione) secondo una
distribuzione di Gauss.
Poiché l’immagine originale da elaborare è una matrice contenente i valori discreti
di intensità di tutti i pixel che la costituiscono, è necessario produrre un’approssima-
zione discreta della funzione Gaussiana in due dimensioni, prima di poter eseguire la
convoluzione.
Allora, i valori ottenuti dall’approssimazione discreta di questa funzione Gaussiana
vengono utilizzati per costruire una matrice di convoluzione, che viene applicata all’im-
magine originale. In questo modo, si può applicare la sfocatura Gaussiana all’immagine
originale, ottenendo l’effetto di sfocatura desiderato.
Il nuovo valore d’intensità di ogni pixel viene ricalcolato come la somma pesata dei
prodotti di ciascun elemento della matrice di convoluzione con il corrispondente pixel
originale da elaborare e i pixel a lui adiacenti. Come si ha spiegato in precedenza:
si sovrappone la matrice di convoluzione alla matrice che rappresenta l’immagine da
elaborare, in modo che il centro della matrice di convoluzione sia in corrispondenza del
pixel da elaborare. Dal momento che il valore centrale della matrice di convoluzione,
in questo caso, è il più elevato, il valore del pixel originale da elaborare riceve il peso
maggiore (cioè, viene moltiplicato per il valore della funzione Gaussiana più elevato). I
pixel adiacenti, invece, ricevono pesi via via inferiori all’aumentare della loro distanza
25
Figura 13: Esempio di matrice di convoluzione ottenuta dall’approssimazione discreta
della funzione Gaussiana in due dimensioni, con valore medio atteso pari a (0, 0) e σ2
= 1.
Il valore 273 corrisponde alla somma di tutti i coefficienti di convoluzione della matrice.
Notare che la matrice di convoluzione rappresenta la tipica forma ”a campana” della
funzione Gaussiana: infatti, la simmetria circolare si ritrova anche nell’approssimazione
discreta della funzione Gaussiana (il valore più elevato della matrice corrisponde al punto
centrale della funzione Gaussiana, in corrispondenza del valore medio atteso, dove la
funzione presenta un picco massimo).
dal pixel originale da elaborare. Ciò si traduce in una sfocatura capace di preservare
i contorni e le geometrie dell’immagine originale meglio di altri filtri di sfocatura più
uniformi.
Per applicare la sfocatura Gaussiana alle immagini, è stata utilizzata la funzione di
OpenCV GaussianBlur() [14], che utilizza una matrice di convoluzione ottenuta dal-
l’approssimazione discreta di una funzione Gaussiana in due dimensioni, permettendo di
ottenere dei buoni risultati nella rimozione del rumore dalle immagini e nell’applicazione
di una sfocatura “delicata”, capace di preservare i contorni fondamentali e le geometrie
delle immagini originali.
Dopo aver sfocato le immagini applicando la sfocatura Gaussiana, si procede alla loro
segmentazione, cioè si procede a partizionare le immagini nelle loro regioni significative.
Nell’elaborazione delle immagini digitali, la segmentazione di un’immagine è il processo
di partizionamento di un’immagine digitale in più segmenti, o regioni. L’obiettivo della
segmentazione è di semplificare e/o modificare la rappresentazione di un’immagine in
qualcosa che sia più significativo e più semplice da analizzare [26, 33]. La segmentazione
dell’immagine viene generalmente utilizzata per individuare oggetti e confini (linee, cur-
ve, ecc.) nelle immagini. Più precisamente, la segmentazione dell’immagine è il processo
con il quale si classificano in determinate regioni insiemi di pixel (noti anche come oggetti
immagine) dell’immagine che hanno caratteristiche in comune. Pertanto, ciascun pixel
classificato in una regione è simile agli altri pixel della stessa regione per una qualche
proprietà o caratteristica (per esempio il colore, l’intensità luminosa o la trama). Regioni
26
adiacenti tra loro sono significativamente diverse rispetto alle stesse caratteristiche che
accomunano i pixel appartenenti ad una stessa regione. Il risultato della segmentazio-
ne di un’immagine è allora un insieme di regioni che coprono collettivamente l’intera
immagine [26].
Il metodo più semplice per segmentare delle immagini è chiamato metodo di soglia
(o thresholding). Questo metodo si basa su un certo valore di soglia per trasformare
un’immagine in scala di grigi in un’immagine binaria (cioè, da un’immagine in scala di
grigi si passa ad un’immagine che è semplicemente bianca e nera) [26]. Allora, ricordiamo
che un’immagine in scala di grigi è costituita da un certo numero di pixel, ciascuno
dei quali ha un valore discreto d’intensità luminosa che indica il livello di grigio in
quel punto dell’immagine, che può variare dal nero al bianco. Essendo L i livelli di
grigio rappresentabili, che dipendono dal numero di bit usati per codificare ciascun pixel,
tipicamente il nero corrisponde al valore 0 e il bianco corrisponde al valore L − 1.
Quindi, durante un processo di thresholding, una volta scelto il valore di soglia, si
confronta il valore d’intensità luminosa di ciascun pixel dell’immagine in scala di grigi con
il valore di soglia scelto. Tipicamente, singoli pixel dell’immagine sono catalogati come
“pixel di sfondo” se il loro valore d’intensità è maggiore al valore di soglia, e come “pixel
oggetto” se il loro valore d’intensità è inferiore al valore di soglia scelto. Per convenzione,
l’immagine binaria in uscita avrà un valore d’intensità pari ad 1 in corrispondenza dei
“pixel oggetto” (che indicano regioni nere), e pari a 0 in corrispondenza dei “pixel di
sfondo” (che indicano regioni bianche). Allora, la logica alla base del metodo di soglia
può essere rappresentata come riportato di seguito, dove τ rappresenta il valore di soglia
discreto scelto, Ioriginale(i, j) rappresenta il valore discreto d’intensità luminosa (o livello di
grigio) del pixel nella posizione (i, j) dell’immagine originale in scala di grigi, e Ibinaria(i, j)
rappresenta il nuovo valore che assume il pixel oggetto di elaborazione nell’immagine
binaria in uscita, i cui pixel potranno assumere solamente due valori (0/1), a seconda
che indichino una regione bianca (“pixel di sfondo”) oppure una regione nera (“pixel
oggetto”) [34]:
Ibinaria(i, j) =

0 Ioriginale(i, j) ≥ τ
1 Ioriginale(i, j)  τ
(4)
Allora, ciascun pixel dell’immagine originale in scala di grigi è stato sostituito o con
un “pixel oggetto” (cioè, un “pixel nero”), se il valore d’intensità del pixel nell’immagine
in scala di grigi è inferiore al valore di soglia scelto, o con un “pixel di sfondo” (cioè, un
“pixel bianco”), se il valore d’intensità del pixel nell’immagine in scala di grigi è maggiore
del valore di soglia scelto. Questo comporta che le regioni scure di un’immagine in scala
di grigi, nelle quali i valori d’intensità dei pixel tendono al valore 0 (che ricordiamo
tipicamente corrispondere al nero), diventano del tutto nere, mentre le regioni chiare di
un’immagine in scala di grigi, nelle quali i valori d’intensità dei pixel tendono al valore
L − 1 (che ricordiamo tipicamente corrispondere al bianco), diventano del tutto bianche.
Quanto scure devono essere le regioni per far sı̀ che diventino del tutto nere, e quanto
27
chiare devono essere le regioni per far sı̀ che diventino del tutto bianche, dipende dal
valore di soglia scelto.
In questo modo è possibile evidenziare le regioni che rappresentano l’oggetto di
interesse, rendendo tutte le altre regioni parte dello sfondo. Il vantaggio di ottenere
un’immagine binaria da un’immagine in scala di grigi consiste nel ridurre la comples-
sità delle caratteristiche dell’immagine e nel semplificare il processo di riconoscimento e
classificazione dell’oggetto rappresentato nell’immagine [35].
Dalla spiegazione della logica alla base del metodo di soglia, si intuisce che il para-
metro chiave in un processo di thresholding è la scelta del valore di soglia (τ), che indica
il valore d’intensità luminosa in corrispondenza del quale si ha la discriminazione tra i
pixel che verranno sostituiti con “pixel bianchi”, cioè “di sfondo”, e i pixel che verranno
sostituiti con “pixel neri”, cioè “oggetto”. Allora, è possibile scegliere un unico valore di
soglia manualmente, o utilizzare delle tecniche per la scelta automatica di questo valore.
Un semplice metodo potrebbe essere quello di scegliere come valore di soglia il valore
medio tra tutti i valori d’intensità luminosa dei pixel che compongono l’immagine. Que-
sta tecnica può funzionare bene in un’immagine senza alcun tipo di rumore, altrimenti si
devono utilizzare tecniche più sofisticate [34]. Tuttavia, utilizzare un singolo valore come
valore di soglia può non essere una scelta ottimale quando l’immagine presenta diverse
condizioni di luminosità in diverse aree [14]. In questi casi, è preferibile utilizzare un
metodo di soglia chiamato metodo di soglia adattivo, che sceglie automaticamente un
valore di soglia diverso per diverse regioni dell’immagine, ottenendo quindi diversi valori
di soglia per diverse regioni di una stessa immagine [26].
La funzione di OpenCV utilizzata per applicare il metodo di soglia adattivo alle im-
magini in input, in scala di grigi e sfocate (in seguito all’applicazione della sfocatura
Gaussiana avvenuta al passo precedente), è adaptiveThreshold() (per maggiori infor-
mazioni su questa funzione vedere [14]). Si è quindi preferito applicare il metodo di soglia
adattivo utilizzando questa funzione di OpenCV, dal momento che i risultati ottenuti
dall’applicazione di questo metodo sono nettamente migliori rispetto ai risultati ottenuti
da un semplice metodo di soglia che utilizza un valore di soglia unico per tutte le regioni
dell’immagine.
Di seguito sono riportati alcuni esempi di immagini, che costituiscono il dataset di
immagini di modelli iniziale, nei quali esempi è possibile vedere come tali immagini
cambiano durante il processo di elaborazione a cui sono sottoposte. In particolare, si
evidenziano i tre passaggi fondamentali del processo di elaborazione descritti in questo
paragrafo: il passaggio da immagine a colori a immagine monocromatica in scala di grigi,
l’applicazione della sfocatura Gaussiana e infine l’applicazione del metodo di soglia adat-
tivo, da cui si ha ottenuto l’immagine binaria corrispondente all’immagine del modello
iniziale.
28
Figura 14: Primo esempio di immagine di modella, nel quale si evidenziano i passaggi
fondamentali del processo di elaborazione descritto in questo paragrafo. In ordine, si può
vedere l’immagine originale a colori iniziale, la sua versione monocromatica in scala di
grigi, il risultato dell’applicazione della sfocatura Gaussiana e infine l’immagine binaria
ottenuta dall’applicazione del metodo di soglia adattivo.
29
Figura 15: Secondo esempio di immagine di modella, nel quale si evidenziano i passaggi
fondamentali del processo di elaborazione descritto in questo paragrafo. In ordine, si può
vedere l’immagine originale a colori iniziale, la sua versione monocromatica in scala di
grigi, il risultato dell’applicazione della sfocatura Gaussiana e infine l’immagine binaria
ottenuta dall’applicazione del metodo di soglia adattivo.
30
Figura 16: Ulteriori esempi di immagini di modelli, nei quali si evidenziano i passaggi
fondamentali del processo di elaborazione descritto in questo paragrafo. In ordine, si può
vedere l’immagine originale a colori iniziale, la sua versione monocromatica in scala di
grigi, il risultato dell’applicazione della sfocatura Gaussiana e infine l’immagine binaria
ottenuta dall’applicazione del metodo di soglia adattivo.
31
3.3.2 Creazione delle mappe dei contorni
A questo punto, si procede ad evidenziare i contorni degli oggetti rappresentati nelle
immagini binarie realizzate al passo precedente; una volta riconosciuti e rilevati i contorni
degli oggetti rappresentati, quindi le sagome e i contorni fondamentali dei modelli nel
nostro caso, si potranno creare le mappe dei contorni corrispondenti alle immagini date
in input (cioè, alle immagini binarie realizzate al passo precedente). Vediamo di seguito
come sia possibile riconoscere e rilevare i contorni degli oggetti rappresentati in immagini
digitali, e come si riesca ad estrarre i contorni da queste immagini per creare le mappe
dei contorni corrispondenti.
Il riconoscimento e rilevamento dei contorni (o edge detection) include una varietà
di metodi matematici che mirano ad identificare ed evidenziare i punti in un’immagine
digitale in cui la luminosità (o intensità luminosa) cambia bruscamente o, più formal-
mente, presenta delle discontinuità. I punti in cui la luminosità dell’immagine cambia
bruscamente sono tipicamente organizzati in una serie di segmenti di linee curve chiamati
contorni (o bordi). Il rilevamento dei contorni è uno strumento fondamentale nell’elabo-
razione delle immagini e in molti altri campi, in particolare nelle aree del rilevamento e
dell’estrazione delle caratteristiche [36].
Bruschi cambiamenti delle proprietà di un’immagine sono il sintomo di eventi e/o
cambiamenti importanti del mondo fisico di cui le immagini sono la rappresentazione;
quindi, lo scopo di rilevare bruschi cambiamenti nella luminosità dell’immagine è quello
di catturare questi eventi e/o cambiamenti importanti del mondo fisico e rappresentar-
li. Si può dimostrare che molto spesso le discontinuità nella luminosità di un’immagine
corrispondono a: discontinuità nella profondità, discontinuità nell’orientamento delle
superfici, cambiamenti delle proprietà dei materiali e/o variazioni nelle condizioni d’il-
luminazione dell’immagine. In un caso ideale, quindi, il risultato dell’applicazione di
un rilevatore dei contorni ad un’immagine può portare ad una serie di curve collegate
tra loro che indicano questi eventi e/o cambiamenti importanti del mondo fisico di cui
le immagini sono la rappresentazione, corrispondenti alle discontinuità nella luminosità
dell’immagine, e dunque permettono di evidenziare i contorni degli oggetti rappresenta-
ti e in generale rappresentare le caratteristiche strutturali fondamentali dell’immagine.
Pertanto, l’applicazione di un algoritmo di rilevamento dei contorni ad un’immagine
può ridurre significativamente la quantità di dati da elaborare, e può quindi filtrare
tutte quelle informazioni che possono essere considerate meno rilevanti al fine dell’in-
dividuazione dei contorni, preservando invece le proprietà strutturali fondamentali del-
l’immagine, ovvero le informazioni essenziali utili a descrivere le forme, le geometrie e le
caratteristiche strutturali degli oggetti rappresentati nell’immagine. Se la fase di rileva-
mento dei contorni produce buoni risultati, il successivo compito di interpretare il con-
tenuto delle informazioni strutturali dell’immagine può quindi essere significativamente
semplificato [37].
32
Si intuisce dunque l’importanza della creazione delle mappe dei contorni corrispon-
denti alle immagini date in input nel nostro caso: per passare da un’immagine di modelli
reali (una rappresentazione complessa del mondo reale) ad un immagine costituita da uno
sketch corrispondente (una rappresentazione stilizzata e semplificata del mondo reale),
è fondamentale l’operazione di riconoscimento e rilevamento dei contorni per ottenere
immagini che contengono molte meno informazioni rispetto alle originali, conservando
le informazioni essenziali a descrivere la forma e le caratteristiche strutturali e geome-
triche degli oggetti rappresentati a cui si è interessati, ovvero le sagome e i contorni
fondamentali dei modelli rappresentati nelle immagini nel nostro caso.
Tuttavia, dal momento che le immagini sono una rappresentazione del mondo reale,
che è caratterizzato da una certa complessità, a meno che non siano immagini che rap-
presentano oggetti in maniera molto semplificata, non sempre è possibile ottenere dei
contorni che descrivono perfettamente i contorni effettivi degli oggetti rappresentati [38].
Infatti, i contorni estratti da immagini non banali (che rappresentano cioè il mondo
fisico reale nella sua complessità) sono spesso caratterizzati dal problema della frammen-
tazione, il che significa che le curve che costituiscono i contorni non sono sempre colle-
gate perfettamente tra loro, presentando dei segmenti nei quali il contorno è mancante.
Inoltre, possono esserci dei “falsi” contorni, cioè dei contorni che non corrispondono ai
contorni degli oggetti rappresentati d’interesse (di cui si vuole estrarre i contorni per evi-
denziarne le forme): questi contorni “falsi”, che si aggiungono ai contorni degli oggetti
dell’immagine a cui si è interessati (contorni che possono essere imperfetti in un caso
non ideale), aggiungono una notevole complessità al risultato dell’applicazione dell’algo-
ritmo di rilevamento dei contorni, complicando di conseguenza il successivo compito di
interpretare i dati dell’immagine ottenuta [39].
Allora, si può dire che la ricerca dei contorni è complicata da questi falsi riconosci-
menti provocati da disturbi presenti nelle immagini. Per ridurre il numero dei “falsi”
contorni, si possono sottoporre preliminarmente le immagini a tecniche di riduzione dei
disturbi (noise reduction), che consistono tipicamente nell’applicazione della sfocatura
Gaussiana. Quindi, si può capire l’importanza fondamentale di sottoporre in fase inizia-
le le immagini alla sfocatura Gaussiana, per ridurre dettagli e rumore delle immagini e
prevenire il più possibile falsi riconoscimenti in fase di rilevamento dei contorni, come è
stato fatto nel nostro caso e di cui si ha discusso nel paragrafo 3.3.1.
Per illustrare ulteriormente i motivi per i quali il rilevamento dei contorni non è un
compito banale, si consideri il problema di rilevare i contorni osservando la linea di pixel
in Figura (17a), il cui valore d’intensità luminosa di ogni pixel dell’immagine unidimen-
sionale è indicato. Basandosi sul fatto che un contorno consiste in un cambiamento
d’intensità luminosa dell’immagine, che ha luogo gradualmente su un certo numero di
pixel in un’immagine in scala di grigi, esaminando i cambiamenti d’intensità tra ciascun
pixel ed il successivo nella seguente linea di pixel, è intuitivo ipotizzare la presenza di un
contorno tra il quarto e il quinto pixel.
Tuttavia, trovare un criterio univoco che stabilisca quanto ampia deve essere la dif-
33
ferenza di intensità tra due pixel adiacenti per poter dire che fra di essi sia presente un
contorno non è sempre un problema di facile risoluzione [39]. Infatti, questo è uno dei
motivi per cui il rilevamento dei contorni può essere un problema non banale da risolvere,
a meno che gli oggetti rappresentati non siano particolarmente semplici e le condizioni
d’illuminazione possano essere ben controllate.
A scopo esemplificativo, se si osserva la linea di pixel (17b), si nota che la differenza di
intensità luminosa è minore tra il quarto e il quinto pixel rispetto al caso precedente (17a),
e quindi non è cosı̀ semplice stabilire se tra di essi esiste un contorno. Inoltre, in presenza
di ambiguità si potrebbe anche sostenere che ci siano più contorni presenti tra i pixel.
(a) Intuitivamente si può dire che esiste un con-
torno tra il quarto e il quinto pixel, dal mo-
mento che tra di essi c’è una grande variazione
nell’intensità luminosa.
(b) La variazione nell’intensità luminosa non è
cosı̀ grande (varia in maniera molto graduale), e
c’è ambiguità nel stabilire se esiste un contorno
e dove esso sia collocato, o se invece ne esistono
vari.
Figura 17: Rappresentazione grafica della variazione d’intensità luminosa tra pixel
adiacenti in un’immagine unidimensionale.
Per evitare queste ambiguità nel riconoscimento dei contorni legate ad una lenta e
graduale variazione dell’intensità luminosa dei pixel che costituiscono l’immagine, nel
nostro caso si ricorda che si è utilizzato il metodo di soglia per trasformare le immagini
da immagini in scala di grigi ad immagini binarie, ovvero immagini nelle quali i pixel
assumono solamente due valori a seconda che siano pixel che indichino regioni del tutto
nere (“pixel oggetto”) o pixel che indichino regioni del tutto bianche (“pixel di sfondo”).
Si è discusso dell’applicazione del metodo di soglia nel paragrafo 3.3.1, e si ricorda bre-
vemente che nella sua applicazione il punto chiave è stato la scelta del valore di soglia da
utilizzare, che individua il valore d’intensità luminosa in corrispondenza del quale si ha
la discriminazione tra i pixel che verranno sostituiti con “pixel bianchi” e i pixel che ver-
ranno sostituiti con “pixel neri”. Nel nostro caso è stata utilizzata la tecnica del metodo
di soglia adattivo, che sceglie automaticamente un valore di soglia diverso per diverse
regioni dell’immagine. Una volta sottoposte le immagini all’applicazione del metodo di
34
soglia adattivo, il risultato che si ottiene sono immagini binarie, ovvero immagini compo-
ste unicamente da due tipi di regioni (regioni del tutto bianche e regioni del tutto nere)
che coprono collettivamente l’intera immagine. Allora, in questa fase di riconoscimento
dei contorni, operando con immagini binarie, non esiste alcuna ambiguità nel stabilire se
tra due pixel adiacenti esiste un contorno, dal momento che pixel appartenenti ad una
stessa regione avranno lo stesso identico valore d’intensità luminosa, e pixel appartenenti
a regioni diverse avranno invece valori d’intensità luminosa molto diversi, che indicheran-
no senza alcuna incertezza una grande variazione nell’intensità luminosa dell’immagine,
e quindi la presenza di un contorno ogni qual volta si passa da una regione nera ad una
bianca o viceversa. Sostanzialmente, applicando il riconoscimento dei contorni su imma-
gini binarie, non si ha più l’incertezza legata alla variazione dell’intensità luminosa che
ha luogo gradualmente su un certo numero di pixel (come poteva avvenire operando con
immagini in scala di grigi). I contorni saranno univocamente e certamente determinati
e corrispondenti a bruschi cambiamenti d’intensità dell’immagine in corrispondenza del
passaggio tra regioni diverse (da regioni nere a regioni bianche e viceversa).
Esistono molti metodi per riconoscere i contorni, ma la maggior parte di essi può
essere raggruppata in due categorie: metodi basati sulla ricerca (search-based) e metodi
basati sull’attraversamento dello zero (zero-crossing).
I metodi basati sulla ricerca riconoscono i contorni cercando i massimi ed i minimi
della derivata del primo ordine dell’intensità luminosa dell’immagine, che corrisponde al
gradiente dell’immagine, di solito cercando la direzione in cui si ha il massimo gradiente
locale [37]. Un esempio di algoritmo che rientra tra i metodi basati sulla ricerca è l’ope-
ratore di Sobel, che prende il nome da Irwin Sobel e Gary Feldman, che hanno presentato
l’idea alla base dell’algoritmo in una conferenza dello Stanford Artificial Intelligence La-
boratory (SAIL) nel 1968 [40]. L’operatore di Sobel è un algoritmo usato per effettuare
il riconoscimento dei contorni che calcola un valore discreto approssimato del gradiente
di una funzione che rappresenta la luminosità dell’immagine in ciascun punto, trovando
la direzione lungo la quale si ha il massimo incremento possibile dal chiaro allo scuro, e
la velocità con cui avviene il cambiamento lungo questa direzione. Il risultato ottenuto
fornisce una misura di quanto “bruscamente” o “gradualmente” l’immagine cambia la
sua luminosità in quel punto, e quindi della probabilità che quella parte di immagine rap-
presenti un contorno, e fornisce anche un’indicazione del probabile orientamento di quel
contorno. In termini matematici, il gradiente di una funzione a due variabili (la funzione
luminosità dell’immagine) è in ciascun punto dell’immagine un vettore bidimensionale
le cui componenti sono le derivate parziali del valore della luminosità in direzione oriz-
zontale e verticale. In ciascun punto dell’immagine, questo vettore gradiente punta nella
direzione del massimo aumento possibile di luminosità, e la lunghezza del vettore corri-
sponde alla rapidità con cui la luminosità cambia spostandosi in quella direzione. Ciò
significa che nelle zone dell’immagine in cui la luminosità è costante l’operatore di Sobel
ha valore zero, mentre nei punti posti sui contorni è un vettore orientato attraverso il
35
contorno, che punta nella direzione in cui si passa da valori di scuro a valori di chiaro.
L’operatore applica due kernel 3 × 3, cioè due matrici di convoluzione, all’immagine ori-
ginale per calcolare i valori approssimati delle derivate (una in direzione orizzontale e
l’altra in direzione verticale) [41].
La fonte principale consultata per la seguente trattazione è [42], i quali si sono basati a
loro volta sui seguenti lavori (si riportano di seguito per eventuali approfondimenti): [29,
32, 43, 44].
I metodi zero-crossing, a differenza dei metodi basati sulla ricerca, cercano i pun-
ti nei quali la derivata del secondo ordine dell’intensità luminosa dell’immagine passa
per lo zero, cioè punti nei quali la derivata del secondo ordine cambia di segno. Tali
punti corrispondono spesso ai contorni delle immagini, ovvero punti nei quali l’intensità
dell’immagine cambia rapidamente. Dal momento che la derivata seconda dell’intensità
di un’immagine corrisponde alla rapidità di cambiamento del gradiente dell’immagine,
la derivata seconda si annulla nei punti di massimo del gradiente [37]. L’operatore di
Laplace (o Laplaciano) è un operatore differenziale del secondo ordine, utilizzato per il
riconoscimento dei contorni, che si basa sul calcolo della derivata seconda dell’intensità
luminosa dell’immagine, e quindi rientra tra i metodi zero-crossing, cioè basati sull’at-
traversamento dello zero. L’operatore di Laplace applicato ad un’immagine permette di
evidenziarne le regioni nelle quali c’è un rapido cambiamento d’intensità luminosa, ad
indicare la presenza di un contorno. Dal momento che l’operatore di Laplace è piuttosto
sensibile al rumore di un’immagine, per ottenere buoni risultati dall’applicazione del-
l’operatore è fondamentale applicare l’operatore ad un’immagine che è stata sottoposta
preliminarmente ad una qualche tecnica di riduzione del rumore, tipicamente la sfocatura
Gaussiana, di cui si ha già discusso nel paragrafo 3.3.1.
Di seguito è riportata la definizione matematica dell’operatore di Laplace L(x, y)
applicato ad un’immagine, dove I(x, y) rappresenta il valore discreto d’intensità luminosa
del pixel nella posizione (x, y) nell’immagine, per ciascun pixel che costituisce l’immagine.
L(x, y) =
∂2
I(x, y)
∂x2
+
∂2
I(x, y)
∂y2
(5)
Analogamente a quanto discusso nel paragrafo 3.3.1, riguardo all’approssimazione
discreta della funzione Gaussiana in due dimensioni prima di poter eseguire la convo-
luzione con l’immagine da elaborare per applicare il filtro desiderato, anche in questo
caso è necessaria un’approssimazione discreta delle derivate del secondo ordine parziali
nella definizione dell’operatore di Laplace. Allora, i valori ottenuti dall’approssimazione
discreta dell’operatore di Laplace vengono utilizzati per costruire una matrice di con-
voluzione, che viene applicata all’immagine originale per effettuare il rilevamento dei
contorni. A differenza dell’operatore di Sobel, che applica due matrici di convoluzione
all’immagine originaria per calcolare i valori approssimati delle derivate del primo ordine
parziali, l’operatore di Laplace utilizza una singola matrice di convoluzione per calcolare
in un’unica volta i valori approssimati delle derivate del secondo ordine parziali [45].
36
Figura 18: Due esempi di matrici di convoluzione ottenute dall’approssimazione discreta
dell’operatore di Laplace.
Utilizzando una di queste matrici di convoluzione, l’operatore di Laplace può essere
applicato ad un’immagine utilizzando i metodi di convoluzione standard tra matrici, di
cui si ha già discusso, e in questo modo è possibile riconoscere, rilevare e quindi estrarre
i contorni fondamentali degli oggetti rappresentati nelle immagini con buoni risultati ed
ottenere le mappe dei contorni corrispondenti.
Per visualizzare graficamente i concetti appena discussi e comprenderli appieno, consi-
deriamo ancora una volta, per semplicità nella rappresentazione, un’immagine unidimen-
sionale (cioè una linea di pixel). Tutte le considerazioni valide per il caso di un’immagine
unidimensionale possono essere generalizzate al caso di un’immagine in due dimensioni.
Per la seguente trattazione è stata consultata la seguente fonte: [45], da cui sono inoltre
prese le immagini riportate di seguito.
Osservando la Figura (19a), si può notare che in basso alla Figura è rappresentata
l’immagine unidimensionale, costituita da una linea di pixel nella quale i pixel cambiano
gradualmente il loro valore d’intensità luminosa da valori bassi, corrispondenti a toni scu-
ri, a valori sempre più alti, corrispondenti a toni chiari. La curva soprastante l’immagine
quindi rappresenta come i valori d’intensità luminosa dei pixel che compongono l’imma-
gine cambiano, cioè l’andamento dell’intensità luminosa nell’immagine unidimensionale.
Si può notare che, dal momento che il colore nero rappresenta il valore d’intensità lumi-
nosa più basso (tipicamente assume il valore 0) e il bianco il valore d’intensità luminosa
più alto (tipicamente assume il valore L − 1, se L indica il numero di livelli di grigio
rappresentabili), la curva tende a passare da valori bassi a valori sempre più alti via via
che i pixel passano da valori scuri a valori sempre più chiari, assumendo una pendenza
positiva. Si può notare inoltre che in corrispondenza del centro della curva si ha una
ripida pendenza, che corrisponde al passaggio dai pixel dell’immagine unidimensionale
con valori scuri a pixel con valori più chiari (e quindi con valori d’intensità luminosa più
elevati): la ripida pendenza che caratterizza la curva in quest’area è un indicatore che
tra i pixel in quell’area esiste un contorno.
Osservando la Figura (19b), che rappresenta la derivata del primo ordine della curva
dell’andamento dell’intensità luminosa nell’immagine unidimensionale (Figura (19a)), si
può notare che in corrispondenza a quest’area centrale, nella quale si ha la ripida pen-
denza della curva corrispondente ad un contorno (cioè, dove i pixel passano rapidamente
da valori scuri a valori chiari, quindi i valori d’intensità luminosa dei pixel cambiano
rapidamente in quest’area), si ha un picco massimo della curva. Infatti, ricordiamo che
37
la derivata di una funzione esprime il tasso di cambiamento di una funzione rispetto
ad una variabile (cioè, di quanto la crescita di una funzione cambi al variare del suo
argomento); allora, in corrispondenza alla ripida pendenza con la quale la curva in Fi-
gura (19a) cambia, passando da valori molto bassi a valori molto alti rapidamente, si ha
un massimo nella curva che rappresenta la sua derivata prima in Figura (19b). Allora, la
ricerca di questi picchi nella derivata del primo ordine dell’intensità luminosa di un’im-
magine è esattamente ciò che fanno i metodi utilizzati per il riconoscimento dei contorni
basati sulla ricerca: in generale, si individua un contorno sui pixel in corrispondenza dei
quali si ha un picco nella curva che rappresenta la derivata prima dell’intensità luminosa
di un’immagine. Allora, se il cambiamento d’intensità luminosa nell’immagine è abba-
stanza rapido, cioè se i pixel adiacenti dell’immagine cambiano bruscamente i loro valori
d’intensità luminosa, si individua un contorno; tuttavia, sebbene i metodi basati sulla
ricerca operino bene, non sempre è semplice stabilire univocamente la soglia d’ampiezza
sopra alla quale un picco della curva è considerato indicatore di un contorno, oppure se
deve essere semplicemente considerato parte del rumore.
Osservando la Figura (19c), nella quale la curva rappresenta la derivata del secon-
do ordine dell’andamento dell’intensità luminosa nell’immagine unidimensionale, si può
notare che, in corrispondenza dell’area centrale nella quale si ha individuato un contor-
no, la curva passa per lo zero. Allora, il punto nel quale la curva che rappresenta la
derivata del secondo ordine dell’andamento dell’intensità luminosa nell’immagine passa
per lo zero corrisponde alla posizione tra i pixel nella quale c’è il contorno. Allora, la
ricerca di questi punti, nei quali la derivata del secondo ordine dell’intensità luminosa
dell’immagine attraversa lo zero, è esattamente ciò che fanno i metodi utilizzati per il
riconoscimento dei contorni basati sull’attraversamento dello zero. Per accertarsi che i
punti nei quali la derivata del secondo ordine dell’intensità luminosa dell’immagine passa
per lo zero corrispondano effettivamente ad un contorno, e non siano invece associati ad
un picco della derivata prima dell’intensità luminosa dell’immagine che è provocato dal
rumore dell’immagine, è necessario applicare preliminarmente tecniche di riduzione del
rumore alle immagini prima di applicare metodi basati sull’attraversamento dello zero,
come si ha già discusso in precedenza.
Allora, sono stati presentati due operatori diversi, entrambi utilizzati per lo stesso
scopo: riconoscere e rilevare i contorni degli oggetti d’interesse rappresentati in un’im-
magine, applicando all’immagine originale opportune matrici di convoluzione ottenute
dall’approssimazione discreta delle derivate parziali degli operatori. Mentre l’operatore
di Sobel rientra tra i metodi basati sulla ricerca, che riconoscono i contorni cercando i
picchi massimi e minimi della derivata del primo ordine (ovvero del gradiente) dell’in-
tensità luminosa dell’immagine, l’operatore di Laplace rientra invece tra i metodi basati
sull’attraversamento dello zero, che riconoscono i contorni cercando i punti nei quali la
derivata del secondo ordine dell’intensità luminosa di un’immagine passa per lo zero.
Per elaborare le immagini del nostro dataset, si è optato per l’utilizzo dell’operatore
di Laplace per il riconoscimento e rilevamento dei contorni fondamentali a descrivere
38
(a) La curva rappresenta l’andamento dell’in-
tensità luminosa nell’immagine.
(b) La curva rappresenta la derivata del primo
ordine dell’andamento dell’intensità luminosa
nell’immagine.
(c) La curva rappresenta la derivata del secondo
ordine dell’andamento dell’intensità luminosa
nell’immagine.
Figura 19: Rappresentazione grafica dei concetti discussi nel paragrafo.
le geometrie e le caratteristiche strutturali che caratterizzano le nostre immagini: le
sagome dei modelli rappresentati, le forme e le informazioni essenziali a descrivere i loro
abbigliamenti. Si è scelto di utilizzare l’operatore di Laplace sostanzialmente perché
applica all’immagine originale da elaborare una singola matrice di convoluzione, invece
delle due matrici utilizzate dall’operatore di Sobel, e quindi è computazionalmente più
veloce e produce ottimi risultati in termini di rilevamento dei contorni se le immagini a
cui viene applicato l’operatore sono state preliminarmente sottoposte ad una riduzione
del rumore (cioè all’applicazione della sfocatura Gaussiana) [45], come si è scelto di fare
nelle fasi iniziali del nostro processo di elaborazione delle immagini.
In seguito all’applicazione della matrice di convoluzione ottenuta dall’approssima-
zione discreta delle derivate parziali del secondo ordine dell’operatore di Laplace, si è
potuto estrarre i contorni fondamentali e ottenere immagini che rappresentano una ver-
39
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche
Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche

More Related Content

Recently uploaded

GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoGIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoServizi a rete
 
Descrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxDescrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxtecongo2007
 
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneGIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneServizi a rete
 
Presentzione Matematica similitudini circonferenze e omotetie.pptx
Presentzione  Matematica similitudini circonferenze e omotetie.pptxPresentzione  Matematica similitudini circonferenze e omotetie.pptx
Presentzione Matematica similitudini circonferenze e omotetie.pptxfilippoluciani9
 
GIORNATA TECNICA 18/04 | DE LEO Antonio
GIORNATA TECNICA 18/04  | DE LEO AntonioGIORNATA TECNICA 18/04  | DE LEO Antonio
GIORNATA TECNICA 18/04 | DE LEO AntonioServizi a rete
 
GIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroGIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroServizi a rete
 
GIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoGIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoServizi a rete
 
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleGIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleServizi a rete
 
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaGIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaServizi a rete
 

Recently uploaded (9)

GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI MassimoGIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
GIORNATA TECNICA 18/04 | SPIZZIRRI Massimo
 
Descrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptxDescrizione della struttura architettonica Eretteo.pptx
Descrizione della struttura architettonica Eretteo.pptx
 
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA SimoneGIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
GIORNATA TECNICA DA AQP 18/04 | MOTTA Simone
 
Presentzione Matematica similitudini circonferenze e omotetie.pptx
Presentzione  Matematica similitudini circonferenze e omotetie.pptxPresentzione  Matematica similitudini circonferenze e omotetie.pptx
Presentzione Matematica similitudini circonferenze e omotetie.pptx
 
GIORNATA TECNICA 18/04 | DE LEO Antonio
GIORNATA TECNICA 18/04  | DE LEO AntonioGIORNATA TECNICA 18/04  | DE LEO Antonio
GIORNATA TECNICA 18/04 | DE LEO Antonio
 
GIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI AlessandroGIORNATA TECNICA 18/04 | BENANTI Alessandro
GIORNATA TECNICA 18/04 | BENANTI Alessandro
 
GIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA RobertoGIORNATA TECNICA 18/04 | DE ROSA Roberto
GIORNATA TECNICA 18/04 | DE ROSA Roberto
 
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO RaffaeleGIORNATA TECNICA 18/04 | LITTERIO Raffaele
GIORNATA TECNICA 18/04 | LITTERIO Raffaele
 
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO SerenaGIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
GIORNATA TECNICA DA AQP 18/04 | ZONNO Serena
 

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Sviluppo di strumenti per la realizzazione di un dataset per la generazione automatica di immagini fotorealistiche

  • 1. Università degli studi di Trieste DIPARTIMENTO DI INGEGNERIA E ARCHITETTURA Corso di Laurea Triennale in Ingegneria Elettronica e Informatica Curriculum Gestionale SVILUPPO DI STRUMENTI PER LA REALIZZAZIONE DI UN DATASET PER LA GENERAZIONE AUTOMATICA DI IMMAGINI FOTOREALISTICHE Relatore: Chiar.mo Prof. ANDREA DE LORENZO Laureanda: TERESA VERGINE Sessione Straordinaria Anno Accademico 2019/2020
  • 2.
  • 3. Indice 1 Introduzione 1 2 Stato dell’arte 4 3 Metodi 10 3.1 Acquisizione delle immagini . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 Ripulitura e classificazione delle immagini . . . . . . . . . . . . . . . . . 11 3.2.1 Ripulitura del dataset acquisito tramite metodo di rilevamento dei volti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2.2 Classificazione delle immagini per tipologie di posa simili . . . . . 12 3.2.3 Struttura del dataset di immagini . . . . . . . . . . . . . . . . . . 16 3.3 Elaborazione delle immagini . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.3.1 Sfocatura e segmentazione delle immagini . . . . . . . . . . . . . 23 3.3.2 Creazione delle mappe dei contorni . . . . . . . . . . . . . . . . . 32 3.3.3 Ridimensionamento, semplificazione e caratterizzazione delle map- pe dei contorni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.3.4 Distorsioni delle immagini . . . . . . . . . . . . . . . . . . . . . . 50 4 Risultati 61 4.1 Valutazione delle prestazioni del modello di classificazione delle immagini 61 4.1.1 Primo caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.1.2 Secondo caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.2 Risultati generati dalla rete . . . . . . . . . . . . . . . . . . . . . . . . . 76 5 Conclusioni 77
  • 4.
  • 5. 1 Introduzione Uno dei modi più semplici per visualizzare rapidamente un’idea, un oggetto o una scena è attraverso un disegno. Si può disegnare qualsiasi cosa in qualsiasi momento. Tra le varie possibilità, un modo per visualizzare qualcosa rapidamente consiste nel disegnarne uno sketch (anche chiamato “schizzo” o “bozzetto”). Uno sketch è un disegno schema- tico, eseguito a mano libera, nel quale si rappresenta in maniera abbozzata ciò che si vuole visualizzare attraverso pochi tratti essenziali. Rispetto ad una fotografia, disegna- re uno sketch non richiede alcun dispositivo di cattura; inoltre, uno sketch non si limita ad una semplice raffigurazione della realtà cosı̀ com’è, ma permette al disegnatore di esprimere le sue idee e la sua visione artistica nel disegnare lo sketch. Allora lo sketch non può essere considerato una semplice riproduzione esatta della realtà, ma piuttosto una sua rappresentazione semplificata vista dagli occhi del disegnatore. I tratti essenziali che caratterizzano gli sketch e che costituiscono i contorni di ciò che viene rappresenta- to, evidenziandone forme e proporzioni, non sono strettamente allineati alla realtà. La lecita lontananza dalla realtà delle caratteristiche strutturali ritrovate negli sketch per- mette al disegnatore una pressoché totale libertà artistica nell’esprimere le proprie idee e rappresentarle come desidera, non essendoci alcun vincolo stretto con il mondo reale. Se ciò che si vuole visualizzare sono indumenti, accessori, abbigliamenti caratteriz- zati da particolari stili, e come appaiono questi abbigliamenti una volta indossati da corpi umani, per visualizzarli velocemente basterà allora disegnare uno sketch per rap- presentarli. Tali sketch “di moda” — nei quali si rappresenta come appaiono particolari abbigliamenti, ideati per esempio da uno stilista o da un qualche marchio di abbiglia- mento, una volta indossati da corpi umani — costituiscono il momento iniziale su cui si basa l’intera pianificazione e progettazione per il design di un particolare abbigliamento. Sin dagli inizi della moda, gli sketch hanno svolto un ruolo fondamentale, permettendo di visualizzare una qualsiasi idea di design: in altre parole, gli sketch “di moda”, che permettono l’espressione e la visualizzazione di una particolare idea di design, sono uno strumento fondamentale attraverso il quale la moda può essere spiegata, dimostrata e comunicata. Lo sketch permette ad un disegnatore di esprimere visivamente le sue idee; questo, dunque, aiuta a visualizzare idee e concetti relativi al design, e lo sketch diventa uno strumento con il quale il disegnatore può comunicare le proprie idee agli altri. Negli ultimi anni è cresciuto l’interesse in un nuovo modo di visualizzare tali idee di design, che consiste nel visualizzare come appaiono particolari abbigliamenti una volta indossati da corpi umani attraverso delle immagini fotorealistiche generate a partire dai relativi sketch. La generazione automatica di immagini fotorealistiche a partire da sketch permette di visualizzare idee di design attraverso delle immagini dall’aspetto realistico anche se il corrispondente sketch è disegnato velocemente, in maniera solamente abbozzata, magari da un disegnatore poco esperto o con scarse doti artistiche. Infatti, non sempre è possibile trovare sketch “di moda” rappresentativi di idee di design talmente curati e dettagliati da esprimere completamente e al meglio tale idea: spesso tali sketch 1
  • 6. sono imperfetti, stilizzati e caricaturali, quindi disporre di una rappresentazione realistica dell’idea di design in una corrispondente immagine fotorealistica generata apporta un grande valore aggiunto alla progettazione del design. Figura 1: Alcuni esempi illustrativi di sketch “di moda”, che permettono di visualiz- zare idee di design. Risulta evidente come le caratteristiche strutturali ritrovate negli sketch siano del tutto svincolate dalla realtà, permettendo al disegnatore di esprimere liberamente la sua idea artistica. Dal momento che un’immagine fotorealistica generata deve essere caratterizzata da un aspetto realistico, ma è basata su uno sketch corrispondente disegnato a mano — che presenta spesso caratteristiche strutturali molto lontane dalla realtà, come si può notare negli esempi riportati in Figura (1) — si intuisce una problematica che rende la generazione automatica di immagini fotorealistiche a partire da sketch un compito non banale. Infatti, tale compito deve conciliare due aspetti in contrasto tra loro: da una parte, è importante permettere al disegnatore di mantenere un certo grado di libertà nell’espressione artistica delle proprie idee di design, e allora l’immagine generata a par- tire dallo sketch dovrà rispettare il più possibile l’intento artistico che il disegnatore ha trasmesso nel disegnare lo sketch; dall’altra parte, l’immagine generata, per essere con- siderata fotorealistica, dovrà avere un aspetto realistico, ovvero dovrà presentare delle caratteristiche strutturali corrispondenti alla realtà. Per conciliare tali aspetti, nella ge- nerazione automatica di immagini fotorealistiche a partire da sketch spesso sarà richiesto uno sforzo per discostarsi dai tratti irrealistici e abbozzati che caratterizzano gli sketch di partenza, per ottenere immagini generate dall’aspetto realistico, rimanendo tuttavia il più possibile fedeli allo sketch disegnato, su cui deve comunque basarsi la generazione dell’immagine fotorealistica corrispondente. La problematica relativa a tale conciliazione, nella pratica, non è di facile risoluzione. Nel capitolo 2 si presentano brevemente alcuni approcci intrapresi in diversi lavori relativi al tema, che tentano di risolvere tale problematica. In generale, si nota un approccio 2
  • 7. risolutivo condiviso che si basa sull’utilizzo delle reti generative avversarie condizionate (cGAN) per la generazione automatica di immagini fotorealistiche a partire da sketch. L’addestramento di tali reti consiste nel fornire in input alla rete coppie di immagini costituite dalle associazioni tra immagini raffiguranti la realtà e sketch corrispondenti; in tal modo, una volta addestrata, la rete potrà generare in output immagini raffiguranti la realtà — e quindi immagini generate dall’aspetto realistico — a partire dai corrispondenti sketch dati in input. Tuttavia, l’addestramento di tali reti è anch’esso un problema di non facile risoluzione, dal momento che, in generale, esistono pochi dataset composti da tali coppie di immagini “reali” abbinate ai rispettivi sketch, vista la difficoltà nel trovare diversi sketch che corrispondano a immagini che raffigurino la realtà. In particolare, non esiste nessun grande dataset composto da coppie di immagini costituite dalle associazioni tra immagini di modelli “reali”, che indossano particolari abbigliamenti relativi ad una qualche idea di design, e i corrispondenti sketch “di moda”, nei quali si rappresentano le idee di design di tali abbigliamenti. Non esistendo tale dataset, è difficile trovare le coppie di immagini di modelli “reali” abbinate ai rispettivi sketch “di moda” disegnati; allora, senza disporre di tali coppie di immagini da utilizzare per l’addestramento, risulta difficile addestrare una rete a generare automaticamente immagini fotorealistiche a partire da sketch. Durante il tirocinio svolto, su cui è basato questo lavoro di tesi, per far fronte a questa problematica è stato realizzato un dataset di immagini, composto da sketch corrispon- denti a immagini di modelli “reali”, che indossano particolari abbigliamenti, che possa essere utilizzato — insieme al dataset di immagini dei modelli “reali” — per l’addestra- mento di una rete per la generazione automatica di immagini fotorealistiche “di moda” a partire da sketch. Realizzando gli sketch corrispondenti alle immagini dei modelli “reali”, è stato realizzato un dataset composto da coppie di immagini costituite dalle associazioni tra le immagini raffiguranti la realtà e gli sketch corrispondenti, e tali coppie di immagini abbinate potranno essere utilizzate per l’addestramento della rete. In primo luogo, allora, sono state acquisite 52 712 immagini di modelli “reali”, che indossano particolari abbigliamenti, dal Large-scale Fashion (DeepFashion) Database [1]. Dopodiché, tali immagini sono state organizzate per ottenere una struttura del dataset di immagini dei modelli “reali”, e quindi una successiva struttura del dataset di sketch corrispondenti a tali immagini, che possa rendere le coppie abbinate di immagini “reali” e relativi sketch organizzate in modo da poter essere utilizzate efficacemente per l’adde- stramento di una rete per la generazione automatica di immagini fotorealistiche a partire da sketch. In particolare, dapprima sono state scartate tutte quelle immagini nelle quali i volti dei modelli non sono presenti; dopodiché, le immagini rimanenti sono state clas- sificate in classi descrittive di particolari tipologie di posa del corpo caratteristiche, in modo tale da ottenere delle classi composte da immagini che sono caratterizzate da forti somiglianze nella tipologia di posa del corpo nella quale sono raffigurati i modelli. Questo permette di semplificare la grande varietà di pose e forme differenti del corpo umano, uniformandole e standardizzandole a poche classi caratteristiche; in tal modo si migliora 3
  • 8. l’apprendimento della rete su come diversi abbigliamenti possano adattarsi a predefinite pose e forme del corpo, permettendo alla rete di generare, una volta addestrata, immagini nelle quali pose e forme del corpo avranno un aspetto realistico e plausibile. Una volta ottenuta la struttura, in tal modo organizzata, del dataset di immagini dei modelli “reali” acquisite inizialmente, si comincia un processo di elaborazione per trasformare tali immagini nei sketch corrispondenti. Sottoponendo tali immagini a di- versi passaggi durante il processo di elaborazione, si realizzano in primo luogo le mappe dei contorni corrispondenti, dove le caratteristiche strutturali evidenziate dai contorni rilevati sono pressoché invariate rispetto alle caratteristiche ritrovate nelle immagini dei modelli “reali”. In secondo luogo, elaborando ulteriormente le mappe dei contorni ot- tenute — attraverso applicazioni di particolari stili grafici caratteristici e distorsioni dei contorni — si inizia man mano ad ottenere delle immagini che approssimano sempre di più degli sketch “di moda” corrispondenti alle immagini dei modelli “reali”. Nel capitolo 3 si descrivono nel dettaglio i processi svolti di ripulitura, classificazione ed elaborazione delle immagini dei modelli “reali” acquisite, che insieme hanno portato alla realizzazione di un dataset di sketch corrispondenti a tali immagini, che potrà essere utilizzato per l’addestramento di una rete per la generazione automatica di immagini fotorealistiche a partire da sketch. 2 Stato dell’arte La generazione automatica di immagini fotorealistiche a partire da sketch disegnati a mano presenta problematiche di non semplice risoluzione affrontate in molti lavori sul tema, e di seguito se ne riportano alcuni. In [2] si evidenzia come sia differente generare immagini fotorealistiche a partire da sketch disegnati a mano da un disegnatore rispetto a generare immagini fotorealistiche a partire da mappe dei contorni ottenute dall’ela- borazione di immagini preesistenti raffiguranti la realtà. Se si osserva la Figura (2) di seguito riportata, è possibile notare la differenza tra una mappa dei contorni ottenuta dall’elaborazione di un’immagine preesistente raffigurante la realtà e gli sketch ad essa corrispondenti. Si può notare che la mappa dei contorni è un’immagine i cui contorni dell’oggetto rappresentato corrispondono esattamente ai contorni che l’oggetto ha nella realtà: le caratteristiche strutturali dell’oggetto rappresentato nella mappa dei contorni sono le stesse caratteristiche che l’oggetto ha nel mondo reale. Gli sketch, che rappresen- tano l’oggetto riportato nell’immagine originale raffigurante la realtà, invece, presentano delle caratteristiche strutturali che sono molto differenti dalle caratteristiche che l’oggetto rappresentato ha nella realtà. Uno sketch è costituito da un insieme di tratti imperfetti, grossolani, disegnati spesso in maniera imprecisa e approssimativa dalla mano umana del disegnatore, che possono al più imitare approssimativamente i contorni che l’oggetto rappresentato ha nella realtà. Allora, si può comprendere come la generazione di imma- gini fotorealistiche a partire da sketch disegnati a mano sia molto più difficile rispetto 4
  • 9. alla generazione di immagini fotorealistiche a partire da semplici mappe dei contorni. In primo luogo, dal momento che, a differenza di una mappa dei contorni, i contorni di un oggetto rappresentato in uno sketch non si allineano con precisione ai contorni che l’oggetto in questione ha nella realtà, per generare un’immagine dall’aspetto realistico a partire da uno sketch disegnato in maniera approssimativa, una rete per la genera- zione automatica di immagini fotorealistiche dovrà apprendere le trasformazioni spaziali da compiere per correggere i tratti deformati e irrealistici che caratterizzano uno sketch disegnato a mano, per generare un’immagine fotorealistica corrispondente. In secondo luogo, una mappa dei contorni solitamente contiene molte più informazioni rispetto ad uno sketch sulle caratteristiche strutturali e i dettagli dell’oggetto rappresentato, quindi una rete per la generazione di immagini fotorealistiche dovrà intuire queste informazioni mancanti per generare un’immagine fotorealistica a partire da uno sketch. Infine, una rete per la generazione automatica di immagini fotorealistiche a partire da sketch dise- gnati a mano dovrà imparare a gestire tutte le caratteristiche caricaturali o iconiche, che possono essere ritrovate nella rappresentazione di un oggetto in uno sketch, per generare un’immagine che abbia un aspetto realistico nonostante tali aspetti caratteristici di uno sketch. Figura 2: Confronto tra una mappa dei contorni e sketch corrispondenti alla stessa immagine raffigurante la realtà. L’immagine raffigurante la realtà e gli sketch proven- gono dal Sketchy Database [3]. Rispetto agli sketch, la mappa dei contorni contiene più informazioni sulle caratteristiche strutturali dell’oggetto rappresentato. Gli sketch, invece, non riflettono precisamente i contorni e le caratteristiche strutturali che l’oggetto rappresentato ha nella realtà. Dal momento che la generazione di immagini fotorealistiche a partire da mappe dei contorni, ottenute dall’elaborazione di immagini preesistenti raffiguranti la realtà, è molto più semplice rispetto all’analogo compito a partire da sketch disegnati a mano, negli ulti- mi anni le più popolari tecniche di generazione automatica di immagini fotorealistiche a partire da sketch sono state guidate da metodi come Photosketcher [4] e Sketch2photo [5] che, per generare un’immagine dall’aspetto realistico, richiedono spesso in input rappre- sentazioni di oggetti le cui caratteristiche strutturali sono molto legate alle effettive caratteristiche che tali oggetti hanno nella realtà. Tali approcci, quindi, riescono a ge- nerare immagini fotorealistiche a partire da rappresentazioni che sono più simili a delle mappe dei contorni, piuttosto che a dei veri e propri sketch disegnati a mano; inoltre, 5
  • 10. comprendono complicate procedure di post-elaborazione per rendere più realistiche le immagini generate. Allora, una carenza comune di questi metodi è l’incapacità di generare immagini da un aspetto realistico plausibile a partire da sketch disegnati a mano, sketch che sono caratterizzati da tutte le particolarità sopra descritte, che complicano di molto il lavoro di generazione automatica di immagini fotorealistiche. Per affrontare questa generale incapacità di generare immagini fotorealistiche dall’aspetto plausibile a partire da sketch disegnati a mano in maniera grossolana e approssimativa, Sangkloy et al. [3], tra gli altri lavori che condividono un simile approccio, dimostrano coma sia possibile ottenere un grande miglioramento nei risultati generati utilizzando reti neurali convoluzionali pro- fonde (CNN), e addestrando tali reti relazionando immagini raffiguranti la realtà con gli sketch ad esse corrispondenti. Allora, la recente comparsa di reti neurali convoluzionali profonde ha fornito metodi interessanti per la risoluzione della problematica di genere immagini fotorealistiche anche a partire da sketch disegnati in maniera approssimativa, che presentano caratteristiche strutturali molto lontane dalla realtà. Tra questi metodi, le reti generative avversarie (GAN) hanno dimostrato di avere un grande potenziale nella generazione automatica di immagini fotorealistiche a partire da altre immagini. L’idea di base consiste nell’addestrare in maniera competitiva due reti neurali, un generatore e un discriminatore. Questo tipo di approccio permette alla rete neurale di apprendere come generare nuovi dati aventi la stessa distribuzione dei dati usati in fase di addestramento. L’obiettivo del generatore è quello di produrre nuove immagini, cercando di “inganna- re” il discriminatore generando immagini che sono indistinguibili dalle immagini “reali” utilizzate in fase di addestramento, mentre il discriminatore apprende come distinguere le immagini “reali” da quelle generate artificialmente dal generatore [6]. In [2], Chen et al. propongono SketchyGAN, un approccio per la generazione au- tomatica di immagini fotorealistiche a partire da sketch disegnati a mano basato su reti generative avversarie, che è in grado di generare immagini dall’aspetto realistico raffiguranti oggetti appartenenti a 50 categorie diverse (tra cui motociclette, cavalli, di- vani, aerei, ecc.). L’input è uno sketch che rappresenta un certo oggetto e l’output è un’immagine generata dall’aspetto realistico che rafFigura il medesimo oggetto. Le pro- blematiche evidenziate in [2] sono sostanzialmente due: in primo luogo, è difficile trovare le coppie di immagini costituite dalle associazioni tra immagini raffiguranti la realtà e sketch corrispondenti, non esistendo in generale grandi database di coppie di immagini da utilizzare per addestrare la rete; in secondo luogo, non esistono metodi consolidati per la generazione di immagini fotorealistiche a partire da sketch che rappresentano in maniera approssimativa oggetti che appartengono a diverse categorie. Per risolvere la prima problematica, Chen et al. [2] hanno aumentato il numero di coppie di immagini costituite dalle associazioni tra sketch e corrispondenti immagini raf- figuranti la realtà che compongono il Sketchy Database [3], che contiene quasi 75 000 sketch disegnati a mano associati alle rispettive immagini raffiguranti la realtà. Per aumentare le coppie di immagini costituite dalle associazioni tra sketch e rispettive im- 6
  • 11. magini raffiguranti la realtà, Chen et al. [2] hanno acquisito 2 299 144 immagini raffigu- ranti oggetti del mondo reale, appartenenti a diverse categorie, e hanno elaborato tali immagini attraverso diversi passaggi per ottenere, in primo luogo, semplici mappe dei contorni, i cui contorni rispecchiano esattamente i contorni degli oggetti rappresentati nelle immagini acquisite inizialmente e che presentano tutte le informazioni, dettagli e caratteristiche strutturali delle immagini iniziali raffiguranti la realtà; in secondo luogo, attraverso ulteriori elaborazioni delle mappe dei contorni, hanno ridotto man mano la quantità di dettagli e informazioni contenute nelle immagini, fino ad ottenere immagini che approssimano dei veri e propri sketch disegnati a mano. Per risolvere la seconda problematica, Chen et al. [2] hanno costruito un modello generativo basato su GAN, condizionato su uno sketch dato in input. Per generare im- magini fotorealistiche da sketch disegnati a mano in maniera approssimativa, durante l’addestramento della rete hanno adottato una strategia che prevede di regolare gradual- mente il grado di astrazione dei contorni: inizialmente, i contorni rispecchiano fedelmente i contorni effettivi che l’oggetto rappresentato ha nella realtà, e via via si deformano e si approssimano sempre più questi contorni, fintantoché si arriva ad una rappresenta- zione dell’oggetto che può essere ritrovata in uno sketch disegnato a mano. Infatti, per semplificare il processo di addestramento della rete, inizialmente hanno dato in input le coppie di immagini costituite dalle associazioni tra immagine raffigurante la realtà e mappa dei contorni corrispondente, che presenta contorni e caratteristiche strutturali pressoché invariate rispetto alla realtà; durante il processo di addestramento, hanno au- mentato gradualmente la proporzione di coppie di immagini costituite dalle associazioni tra immagine raffigurante la realtà e sketch corrispondente, che presenta invece contorni e caratteristiche strutturali molto diverse da quelle che si ritrovano nella realtà. Le reti generative avversarie condizionate (cGAN) sono adottate come soluzione ge- nerica ai problemi di generazione automatica di immagini fotorealistiche a partire da altre immagini anche in altri lavori sul tema, come per esempio in [7], in cui si presenta l’architettura di Pix2Pix, o in [8]. In [9] si introduce un approccio diverso alle reti generative avversarie condiziona- te; si evidenzia che gli approcci comuni legati all’utilizzo delle cGAN incorporano delle condizioni troppo rigide che rendono l’immagine generata in output troppo vincolata ai contorni e alle caratteristiche strutturali dell’immagine data in input (cioè lo sketch). Allora, Lu et al. in [9] evidenziano che questo può essere problematico quando si parla di generazione automatica di immagini fotorealistiche a partire da sketch disegnati a mano in maniera approssimativa. Allora, per generare immagini il cui aspetto è realistico anche a partire da sketch molto abbozzati, propongono una nuova GAN “contestuale” per la generazione automatica di immagini fotorealistiche a partire da sketch. Nel loro lavoro, Lu et al. [9] propongono di utilizzare lo sketch in input come un vincolo “debole” per la generazione dell’immagine fotorealistica corrispondente, nella quale i contorni dell’og- getto raffigurato non seguiranno necessariamente i contorni dell’oggetto rappresentato nello sketch dato in input. Affrontano questo problema utilizzando un nuovo approccio 7
  • 12. basato sul completamento dell’immagine, in cui lo sketch in input fornisce il “contesto” per completare, o generare, l’immagine in output: sostanzialmente, la generazione del- l’immagine è posta come un completamento dell’immagine (per informazioni dettagliate su questo approccio, far riferimento al documento di ricerca relativo sopra citato). Figura 3: Immagini generate a partire da uno sketch disegnato a mano utilizzando due GAN condizionate (cioè, CE [8] e Pix2Pix [7]) e utilizzando la GAN “contestuale” sviluppata da [9]. Il metodo sviluppato da questi ultimi non richiede un allineamento rigoroso tra i contorni dell’oggetto rappresentato nello sketch e i contorni che l’oggetto rappresentato ha nella realtà, quindi permette di ottenere risultati migliori pur rimanendo fedeli allo sketch dato in input. Un altro approccio, diverso dall’utilizzo delle GAN condizionate e dall’utilizzo di coppie di immagini costituite dalle associazioni tra immagini raffiguranti la realtà e sketch corrispondenti per l’addestramento di tali reti, è introdotto in [10], nel quale si presenta un approccio per la generazione automatica di immagini fotorealistiche basato sull’apprendimento non supervisionato. Più recentemente, CycleGAN [11] ha dimostrato di poter ottenere risultati promet- tenti. Infine, si presentano brevemente alcune applicazioni legate alla generazione auto- matica di immagini fotorealistiche a partire da sketch disegnati a mano nell’ambito di immagini di moda. In [12] si introduce TextureGAN, una rete generativa avversaria che permette di generare immagini di moda realistiche consentendo di esercitare un controllo efficace sulla trama di un indumento o accessorio. In particolare, questo sistema consente ad un utente di posizionare una patch di trama su uno sketch, in posizioni arbitrarie, per ottenere un’immagine generata in output le cui regioni d’interesse nell’oggetto raffi- gurato sono caratterizzate dalla trama desiderata. La rete viene addestrata utilizzando sketch, generati dall’elaborazione di immagini preesistenti raffiguranti la realtà, e patch di diverse trame, campionate da un database separato costituito da trame di diversi ma- teriali. I risultati generati dimostrano che la rete è in grado cosı̀ di generare immagini dall’aspetto realistico che, rispetto a lavori precedenti, sono caratterizzate dalla presenza di trame dettagliate, realistiche e ad alta risoluzione. Similmente, in [13] si propone un sistema per generare immagini realistiche di indu- menti ad alta risoluzione a partire da sketch corrispondenti e informazioni sulla trama di tali indumenti. La sfida principale alla base di questo sistema è generare trame det- 8
  • 13. Figura 4: Con TextureGAN [12] è possibile generare nuove istanze di oggetti comuni a partire da sketch disegnati a mano e semplici patch di trame di diversi materiali. Il sistema può anche gestire più input di patch di trame diverse collocate su uno stesso sketch, e la rete può seguire i contorni dello sketch ed espandere la trama per coprire la regione interessata dell’oggetto rappresentato nello sketch. tagliate, realistiche e ad alta risoluzione a partire dalle informazioni sulla trama fornite dall’utente. Figura 5: Illustrazione per l’utilizzo del sistema sviluppato da [13]. L’utente può, in primo luogo, disegnare lo sketch dell’indumento desiderato. Vengono quindi fornite tre diverse modalità per specificare diverse trame sull’indumento. Viene quindi adottata una GAN per generare l’immagine fotorealistica corrispondente allo sketch. In terzo luogo, è possibile disegnare nello sketch alcune ombreggiature che verranno anch’esse convertite nell’immagine fotorealistica corrispondente, rendendola stereoscopica (e quindi ottenendo un risultato ancora più realistico). Come post-elaborazione, tutti i colori possono essere ulteriormente modificati in modo semplice. 9
  • 14. 3 Metodi 3.1 Acquisizione delle immagini Per realizzare un dataset di sketch che possa essere utilizzato per addestrare una rete neurale per la generazione automatica di immagini fotorealistiche corrispondenti a sketch dati in input, che rappresentano corpi umani che indossano un certo abbigliamento, in primo luogo è necessario acquisire un gran numero di immagini di modelli fotografati (modelli “reali”) che indossano un certo abbigliamento, immagini cioè prese da uno o più servizi fotografici di moda. Allora sarà possibile realizzare gli sketch corrisponden- ti a tali immagini acquisite, attraverso un processo di elaborazione delle immagini, e quindi addestrare la rete neurale dando in input le associazioni tra ciascuna immagine di modello fotografato che indossa un certo abbigliamento e uno o più sketch ad essa corrispondenti. In tal modo la rete neurale potrà produrre immagini fotorealistiche di modelli che indossano un certo abbigliamento a partire da uno sketch corrispondente, sketch che ritraggono quindi modelli che indossano un certo abbigliamento. Allora, dal momento che in tali immagini di moda si è interessati esclusivamente all’abbigliamento indossato dai modelli e dai modelli stessi (la loro fisionomia, la loro posa del corpo, le loro sagome, forme e proporzioni), sono state acquisite immagini nelle quali i model- li sono stati fotografati su uno sfondo neutro e indossano diversi tipi di abbigliamenti; dall’elaborazione di tali immagini, si otterranno gli sketch corrispondenti che costitui- ranno il dataset di sketch utilizzato per addestrare una rete neurale per la generazione automatica di immagini fotorealistiche. Tali immagini di modelli sono state acquisite dal “Large-scale Fashion (DeepFashion) Database” [1], e in particolare compongono il dataset denominato da [1] “In-shop Clothes Retrieval Benchmark”. Questo dataset è composto da 52 712 immagini di modelli e modelle, fotografati su sfondo neutro, che indossano diversi abbigliamenti. Le immagini del dataset acquisito da [1] sono suddivise in due categorie: la categoria degli “Uomini” e quella delle “Donne”, a seconda che le immagini siano di modelli o di modelle. Inoltre, all’interno di ciascuna categoria è presente un ulteriore suddivisione delle immagini dei modelli per tipologia di abito indossato. Nel dataset acquisito da [1] sono riportate, inoltre, alcune informazioni e annotazioni relative alle immagini contenute in esso. Tra queste informazioni, particolarmente utili per i nostri scopi saranno le etichette relative alla tipologia di posa, contenute nel documento list_bbox_inshop.txt; utilizzando tali etichette, sarà poi possibile, in fase di classificazione delle immagini (di cui si discuterà nel paragrafo 3.2.2), correlare ciascuna immagine acquisita, in cui è presente un modello, con la tipologia di posa del corpo in cui è fotografato tale modello. 10
  • 15. 3.2 Ripulitura e classificazione delle immagini Una volta acquisite le immagini, si è reso necessario procedere ad una loro ripulitura e organizzazione per adattare il dataset acquisito ai nostri scopi: ovvero, ottenere un insie- me di immagini da cui poter realizzare un insieme di sketch che approssimano sketch di “moda” disegnati. Utilizzando questi sketch, sarà possibile addestrare la rete neurale ad eseguire il processo inverso: da sketch dati in input alla rete neurale si vorranno ottenere le corrispondenti immagini fotorealistiche in output (cioè, da sketch di un modello che indossa un certo abbigliamento si vorrà ottenere la corrispondente immagine fotorealisti- ca, che permetterà di visualizzare l’abbigliamento indossato dal modello in un’immagine dall’aspetto realistico). 3.2.1 Ripulitura del dataset acquisito tramite metodo di rilevamento dei volti In primo luogo, dal momento che per i nostri scopi ci servono solamente immagini in cui il viso dei modelli era ben visibile, si è reso necessario trovare un modo per scartare tutte quelle immagini che ritraevano solamente gli abiti, o che ritraevano i modelli esclu- dendone il viso (per esempio: modelli ritratti “di schiena”). Per scartare tutte quelle immagini non utili ai nostri scopi, ovvero quelle immagini in cui non è ritratto il viso dei modelli, è stato utilizzato per prima cosa un metodo di rilevamento del viso e degli occhi. Si è utilizzata la libreria OpenCV-Python [14], e in particolare è stato utilizzato un efficace metodo di rilevamento di oggetti (in questo caso: rilevamento di volti e oc- chi) proposto da [15]. Si tratta di un approccio basato sull’apprendimento automatico supervisionato in cui classificatori a cascata vengono addestrati utilizzando molte imma- gini positive (immagini di volti e occhi) e negative (immagini senza volti e quindi senza occhi). Il metodo viene quindi utilizzato per rilevare volti e occhi in altre immagini (per approfondire vedere [15]). OpenCV contiene già molti classificatori pre-addestrati per il rilevamento di volti, occhi, sorriso, ecc. Questi file XML sono archiviati nella cartella opencv/data/haarcascades/ [14]. In questo caso è stato utilizzato un rilevatore di volto e occhi. Per prima cosa, si deve caricare i classificatori XML richiesti. Quindi, si carica l’immagine di cui si vuole rilevare volto e occhi, che deve essere in scala di grigi. Infine, per ogni immagine caricata si rileva il volto e gli occhi. Di seguito si riporta la porzione di codice utilizzata per effettuare le operazioni appena descritte, scritta a partire dalle indicazioni riportate in [14]: import numpy as np import cv2 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml") 11
  • 16. eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_eye.xml") img = cv2.imread("image_input.jpg") img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(img_gray) eyes = eye_cascade.detectMultiScale(img_gray) A questo punto, si desidera mantenere solamente quelle immagini in cui il viso dei modelli è presente. Se il viso è presente, dal momento che un viso corrisponde ad 1 volto e 2 occhi, il rilevatore del volto dovrebbe rilevare 1 elemento da associare all’istanza faces e il rilevatore degli occhi dovrebbe rilevare 2 elementi da associare all’istanza eyes. Allora, si scartano tutte quelle immagini in cui il numero di elementi contenuti in faces è minore di 1 oppure il numero di elementi contenuti in eyes è minore di 2. Utilizzando questo metodo, quindi, si è potuto separare le immagini (suddivise tra la categoria “Uomini” e la categoria “Donne”) in cui il viso dei modelli è presente, da tutte le altre, che sono state scartate e raggruppate in una cartella apposita, per ciascuna categoria, denominata “TRASH”. Si può dire quindi che queste immagini scartate sono state classificate in una classe caratteristica, chiamata “TRASH”, per ciascuna categoria. 3.2.2 Classificazione delle immagini per tipologie di posa simili In secondo luogo, si è voluto organizzare le immagini dei modelli raggruppandole non per tipologia di abito indossato, ma per tipologia di posa del corpo, in modo tale da avere più immagini raggruppate insieme che condividono una certa tipologia di posa del corpo simile tra loro. Raggruppare molte immagini, nelle quali modelli indossano diversi tipi di abbigliamenti, per similitudini nelle pose e nelle forme del corpo comporta diversi vantaggi. In particolare, questo permette di far fronte ad una grande problematica nella generazione di immagini fotorealistiche, di cui si studiano metodi risolutivi in molti lavori sul tema (vedere per esempio [16]): la sfida consiste nel semplificare la grande varietà di pose e forme differenti del corpo umano, uniformandole e standardizzandole a poche classi caratterizzanti. Potendo sfruttare una grande varietà di abbigliamenti diversi su un insieme limitato di pose del corpo, si migliora l’apprendimento su come diversi abiti possano adattarsi a predefinite pose e forme del corpo. Migliorando l’apprendimento e accomunando la varietà di pose e forme del corpo a poche pose caratteristiche prede- finite, in fase di generazione dell’immagine fotorealistica dallo sketch corrispondente si otterranno risultati più realistici e plausibili. Uniformando le pose e le forme del corpo, è possibile concentrarsi sulla generazione realistica dei diversi abbigliamenti dei model- li, producendo immagini di moda in cui le pose dei modelli saranno predefinite e gli 12
  • 17. Figura 6: Alcuni esempi di immagini scartate e correttamente classificate nella classe “TRASH”. abbigliamenti saranno quelli desiderati, ritrovati nello sketch disegnato dal disegnatore. In altre parole, la generazione di immagini fotorealistiche si concentrerà sul “vestire” correttamente delle persone le cui sagome, forme e pose del corpo saranno predefinite e facilmente riconoscibili a partire dallo sketch corrispondente disegnato dal disegnatore. Inoltre, nel mondo della moda e del fashion, visualizzare un vestito, un certo stile e/o un certo abbigliamento è essenziale: standardizzando pose e forme del corpo in classi ca- ratteristiche, è possibile concentrarsi sull’obiettivo principale, ovvero sulla visualizzazione dell’abbigliamento e dello stile desiderato sulla posa desiderata predefinita. L’importan- za della standardizzazione è evidenziata in molti lavori sul tema: in particolare, in [17] si dimostra che l’approccio basato sulla standardizzazione e sul riconoscimento della posa del corpo da loro intrapreso può portare alla generazione di immagini realistiche di moda, caratterizzate da realistici corpi umani e abbigliamenti plausibili, ma non solo. Infatti, in [17] si dimostra anche che è possibile trasferire stili e colori diversi di un vestito e pose del corpo diverse da un’immagine generata ad un’altra. Allora, in seguito alla ripulitura iniziale del dataset, in cui sono state scartate mol- te immagini nelle quali il volto dei modelli non è visibile (vedere paragrafo 3.2.1), si è proceduto a raggruppare le immagini rimaste per tipologie di posa simili. Analizzando il dataset, si è notato che le immagini di moda contenute potevano essere suddivise e raggruppate, senza perdita di generalità, in solamente tre classi, ciascuna delle quali 13
  • 18. descrive in maniera esaustiva una particolare tipologia di posa del corpo, che si può con- siderare una tipologia di posa del corpo molto comune in ambito di immagini di moda. Allora, mantenendo la separazione originaria tra immagini di modelli (categoria “Uomi- ni”) e immagini di modelle (categoria “Donne”), si vuole classificare le immagini per similitudini nella posa del corpo in tre classi, da noi definite e chiamate, rispettivamente, “FRONT”, “FULL” e “SIDE”. Queste tre classi, nelle quali si vogliono classificare le immagini nell’organizzazione finale del dataset, ciascuna descrittiva di una tipologia di posa caratteristica delle immagini di moda, sono di seguito descritte: 1. Classe “FRONT”: sotto questo nome sono state classificate le immagini che ritrag- gono modelli frontalmente e a mezzo busto, fornendo quindi un ingrandimento sul viso e sul busto; 2. Classe “FULL”: sotto questo nome sono state classificate le immagini che ritraggo- no modelli frontalmente e a corpo intero, fornendo quindi l’intera visuale del corpo dei modelli; 3. Classe “SIDE”: sotto questo nome sono state classificate le immagini che ritraggono modelli in una posa laterale. Per la classificazione delle immagini per pose simili, sono state utilizzate delle eti- chette sulla tipologia di posa del corpo in cui è ritratto il modello nell’immagine, fornite da [1], contenute nel documento list_bbox_inshop.txt allegato al dataset di immagini. Queste etichette permettono quindi di correlare ciascuna immagine con la tipologia di abito indossato e con la tipologia di posa del corpo in cui sono ritratti i modelli. Nel dettaglio, si riporta la descrizione associata alle etichette relative alla tipologia di posa del corpo dei modelli per ogni immagine data in input, descrizione data da [1]: In <pose type>: "1" represents frontal view; "2" represents side view; "3" represents back view; "4" represents zoom-out view; "5" represents zoom-in view; "6" represents stand-alone view. Stabilendo che esiste una classe per ogni etichetta relativa ad una tipologia di posa, che descrive la tipologia di posa del corpo dell’etichetta corrispondente, in primo luogo si ha classificato le immagini del dataset in queste sei classi definite da [1], utilizzando tutte le etichette a disposizione per la suddivisione e il raggruppamento delle immagini per similitudini nella tipologia di posa. Una volta classificate le immagini in queste sei classi, tutte quelle immagini etichettate back view (cioè con etichetta <pose type> = "3") sono state scartate, e classificate 14
  • 19. quindi nella classe caratteristica delle immagini che sono state scartate, ovvero la classe “TRASH”, perché sono immagini che ritraggono modelli “di schiena”: cioè, immagini nelle quali non è visibile il viso dei modelli. Un discorso analogo si è fatto per le immagini etichettate stand-alone view (cioè con etichetta <pose type> = "6"), scartate dal momento che rappresentano immagini che ritraggono i singoli capi d’abbigliamento a sé stanti, senza nessun modello ad indossarli. In questo modo si è potuto scartare, e classificare nella classe “TRASH”, tutte quelle immagini che non erano già state scartate in seguito all’applicazione del metodo di rile- vamento dei volti (paragrafo 3.2.1), ovvero quelle immagini che erano state erroneamente classificate come immagini positive (cioè con volto e occhi presenti) dal metodo di rileva- mento dei volti. L’unione dell’utilizzo del metodo di rilevamento dei volti e dell’utilizzo delle etichette che descrivono la tipologia di posa dei modelli, permette di ottenere una miglior ripulitura del dataset da tutte quelle immagini non utili ai nostri scopi (nelle quali cioè non è presente il volto dei modelli). Mentre le immagini classificate in queste tre classi si può dire che sono classifica- te “correttamente”, cioè le classi alle quali appartengono descrivono effettivamente le tipologie di posa rappresentate in esse, le immagini classificate nella classe corrisponden- te all’etichetta zoom-in view si può dire che sono classificate in una classe “ambigua”. Infatti, sotto all’etichetta zoom-in view vengono raggruppate immagini nelle quali i mo- delli sono ritratti in tipologie di pose del corpo diverse tra loro: in teoria, nella definizione associata all’etichetta data da [1], l’etichetta dovrebbe essere associata a immagini che rappresentano un “ingrandimento” generico del modello nell’immagine; tuttavia, ana- lizzando le immagini raggruppate sotto l’etichetta, si riscontra una varietà di pose del corpo non riconducibili ad una tipologia di posa caratteristica. Allora, queste immagini classificate nella classe corrispondente all’etichetta zoom-in view, che possiamo deno- minare “ZOOM-IN”, sarebbero state più correttamente classificate nelle altre classi, che effettivamente descrivono le tipologie di posa nelle quali i modelli di queste immagini sono ritratti. In seguito alla ripulitura definitiva del dataset, le immagini rimaste sono a questo punto classificate in quattro classi, corrispondenti alle etichette frontal view, zoom-out view, side view e zoom-in view. Analizzando le immagini classificate in queste quattro classi, e confrontando queste classi con le tre classi “FRONT”, “FULL” e “SIDE” da noi definite, ciascuna descrittiva di una tipologia di posa caratteristica delle immagini di moda, si trova una buona corrispondenza tra l’etichetta frontal view e la classe “FRONT”, tra l’etichetta zoom-out view e la classe “FULL” e tra l’etichetta side view e la classe “SIDE”. Allora, le tre classi corrispondenti a queste tre etichette vengono chiamate con i nomi da noi definiti, rispettivamente: “FRONT” per le imma- gini raggruppate sotto l’etichetta frontal view, “FULL” per le immagini raggruppate sotto l’etichetta zoom-out view, “SIDE” per le immagini raggruppate sotto l’etichetta side view. Le conseguenze dell’ambiguità di quest’etichetta sulla classificazione delle immagini sono riportate nella valutazione delle prestazioni del modello di classificazione relative a 15
  • 20. questo momento del processo di classificazione: si veda il paragrafo 4.1.1. Analizzando gli indicatori relativi alle prestazioni del modello di classificazione in questo momen- to del processo di classificazione (vedere paragrafo 4.1.1), si può notare un risultato piuttosto deludente in termini di accuratezza ed efficacia della classificazione: si può ottenere sicuramente una prestazione migliore dal modello di classificazione. Per ovviare a quest’ambiguità associata alla classe “ZOOM-IN”, e ottenere prestazioni migliori dal modello di classificazione, si è deciso di spostare manualmente le immagini classificate nella classe “ZOOM-IN” nelle classi corrette, cioè nelle classi alle quali queste immagini effettivamente appartengono, che le descrivono cioè correttamente. Allora, le immagini classificate nella classe “ZOOM-IN” sono state spostate nelle classi “FRONT”, “FULL” e “SIDE”, a seconda della tipologia di posa in cui i modelli sono ritratti, e nella clas- se “TRASH” se nelle immagini non è visibile il volto dei modelli. In seguito a questo spostamento, o ri-classificazione, delle immagini nelle classi alle quali effettivamente ap- partengono e che le descrivono correttamente, si può notare un netto miglioramento delle prestazioni del modello di classificazione, analizzando gli indicatori riportati nel paragra- fo 4.1.2. A questo punto, si è ottenuto un risultato ritenuto soddisfacente dal punto di vista della classificazione delle immagini per tipologie di posa simili, quindi il processo di classificazione si può fermare. Si è ottenuto quindi l’organizzazione e struttura finale del dataset di immagini, ripulito da tutte le immagini nelle quali i volti dei modelli non sono presenti e con le immagini rimaste classificate secondo similitudini nella tipologia di posa con buoni risultati finali. 3.2.3 Struttura del dataset di immagini Allora, si è visto che per organizzare un dataset di immagini di modelli da cui poter ot- tenere un dataset di sketch corrispondenti che possa essere utilizzato per la generazione automatica di immagini fotorealistiche con buoni risultati, si è dovuto effettuare diverse operazioni di ripulitura e organizzazione del dataset originale, acquisito da [1]. In con- clusione a questi passaggi, si è ottenuto l’organizzazione e quindi la struttura “finale” del dataset di immagini di modelli, nella quale, pur mantenendo la distinzione originale tra immagini di modelli (categoria “Uomini”) e immagini di modelle (categoria “Donne”), sono state introdotte delle suddivisioni e raggruppamenti diversi da quelli originali: da una classificazione delle immagini per tipologia di abito simile si è preferito, per le ragioni discusse nel paragrafo 3.2.2, avere una classificazione delle immagini per tipologia di posa del corpo dei modelli simile, e quindi classificare le immagini per pose del corpo simili nelle classi descritte nel paragrafo 3.2.2, con il processo di classificazione i cui passi sono stati discussi nel medesimo paragrafo. Allora, il dataset ottenuto in conclusione a questo processo di ripulitura e classificazione delle immagini dei modelli iniziali (che chiamia- mo dataset “finale” del processo di classificazione), contiene le immagini dei modelli che verranno utilizzate come immagini di input per l’elaborazione delle immagini allo scopo di produrre gli sketch corrispondenti, ed è cosı̀ strutturato: 16
  • 21. • Per la categoria “Donne” sono state mantenute 24 534 immagini, cosı̀ suddivise: 11 026 immagini classificate nella classe “FRONT”; 6678 immagini classificate nella classe “FULL”; 6830 immagini classificate nella classe “SIDE”. • Per la categoria “Uomini” sono state mantenute 2798 immagini, cosı̀ suddivise: 1190 immagini classificate nella classe “FRONT”; 1034 immagini classificate nella classe “FULL”; 574 immagini classificate nella classe “SIDE”. Allora, delle 52 712 immagini di modelli contenute nel dataset originale [1], il numero di immagini che sono state mantenute nel dataset “finale” e organizzate nelle classi de- scrittive le tipologie di posa interessanti delle immagini di moda, in particolare immagini di moda ritraenti modelli che indossano particolari abbigliamenti, si è ridotto a 27 332 (suddivise tra “Donne” e “Uomini”), mentre le restanti immagini sono state scartate (20 340 immagini per la categoria “Donne” e 5040 immagini per la categoria “Uomini”, classificate nelle rispettive classi “TRASH”). Di seguito si riportano alcuni esempi di immagini (acquisite da [1]) classificate cor- rettamente nelle loro classi descrittive le tipologie di posa interessanti delle immagini di moda sopra definite, sia per la categoria degli “Uomini” che per quella delle “Donne”. Si può notare una forte somiglianza tra le pose dei modelli in immagini che appartengono ad una stessa classe, dal momento che la tipologia di posa descritta dalla classe rientra nelle tipologie di posa tipiche delle immagini di moda, come discusso sopra. 17
  • 22. Figura 7: Alcuni esempi di immagini correttamente classificate nelle rispettive classi “FRONT”, per la categoria “Uomini” e la categoria “Donne”. 18
  • 23. Figura 8: Alcuni esempi di immagini correttamente classificate nelle rispettive classi “FULL”, per la categoria “Uomini” e la categoria “Donne”. 19
  • 24. Figura 9: Alcuni esempi di immagini correttamente classificate nelle rispettive classi “SIDE”, per la categoria “Uomini” e la categoria “Donne”. 20
  • 25. 3.3 Elaborazione delle immagini Una volta ottenuto un dataset di immagini di modelli organizzato per tipologie di posa simili e ripulito da tutte quelle immagini nelle quali il volto dei modelli non è presente, si vuole passare da queste immagini di modelli “reali” a degli sketch corrispondenti, che riescano ad avvicinarsi il più possibile a degli sketch disegnati a mano. Per trasformare queste immagini da immagini di modelli “reali” ad immagini che rappresentano lo stesso modello, che indossa lo stesso abbigliamento, ma come sketch, è necessario elaborare le immagini attraverso diversi passaggi. Infatti, le immagini digitali possono subire un processo di elaborazione volto a manipolare e modificare l’immagine stessa secondo le caratteristiche desiderate [18]. Un’immagine digitale è la rappresentazione numerica di un’immagine bidimensionale: è composta da una matrice di punti, chiamati pixel, la cui colorazione è codificata tramite uno o più valori numerici (bit) [19]. Un pixel, anche chiamato “pel” [20] o “picture element”, è l’unità minima convenzionale della superficie di un’immagine digitale, quindi è il più piccolo elemento controllabile di un’immagine digitale. I pixel, disposti in modo da comporre una griglia fissa rettangolare, per la loro piccolezza e densità appaiono fusi in un’unica immagine [21]. I valori numerici memorizzati in ciascun pixel indicano le caratteristiche di ogni punto dell’immagine da rappresentare: nelle immagini a colori, vengono memorizzati solitamente i livelli di inten- sità luminosa dei colori fondamentali dell’immagine (per esempio, nel modello di colore RGB, i colori fondamentali sono tre: rosso, verde e blu); invece, nelle immagini mono- cromatiche in scala di grigi, l’unico valore memorizzato indica l’intensità luminosa del grigio, che varia dal nero al bianco. Il numero dei livelli di intensità luminosa rappresen- tabili, detto anche “profondità del pixel”, dipende dal massimo numero di combinazioni possibili permesse dalla quantità di bit utilizzata per codificare ciascun pixel: utilizzando 8 bit per pixel, si ha la possibilità di rappresentare al massimo 256 (28 ) livelli di inten- sità luminosa [19]; un numero simile di livelli rappresentabili consente una sufficiente discriminazione delle intensità luminose dei colori fondamentali nell’immagine a colori, o dei grigi nell’immagine monocromatica, ottenendo un risultato accettabile nella maggior parte delle applicazioni. Allora, essendo L i livelli rappresentabili di intensità luminosa, un’immagine digitale è una matrice di valori discreti di intensità luminosa, costituita da M × N pixel (dove M è il numero delle righe di pixel dell’immagine e N delle colonne), ciascuno dei quali ha uno o più valori numerici appartenenti all’intervallo [0, L − 1] [22]. Allora, si è iniziato ad applicare alle immagini alcuni filtri. Nell’elaborazione digitale delle immagini, per applicare dei filtri ad immagini si utilizzano delle matrici, solitamente di piccole dimensioni, chiamate matrici di convoluzione (o matrici kernel). A seconda dei valori degli elementi della matrice, una matrice kernel può essere utilizzata per applicare un’ampia gamma di effetti alle immagini (per esempio l’applicazione di una sfocatura oppure il riconoscimento dei contorni di un immagine). Le dimensioni di una matrice kernel sono arbitrarie, anche se sono soprattutto di dimensione dispari, in quanto nella convoluzione tra matrici è importante identificare il centro della matrice kernel, cosa che 21
  • 26. avviene facilmente con dimensioni dispari; una dimensione tipica per una matrice kernel è di 3 × 3 (difficilmente le matrici kernel sono di grandi dimensioni) [23]. Per avere un’idea del principio di funzionamento della convoluzione di due matrici bidimensionali, consideriamo la matrice A, che rappresenta la matrice contenente i valori di intensità luminosa di tutti i pixel di un immagine originale monocromatica (per sem- plicità, consideriamo un’immagine in scala di grigi, dove in ciascun pixel è memorizzato un singolo valore, che indica l’intensità luminosa del grigio in quel punto), e la matrice B, che rappresenta la matrice kernel. Sovrapponendo la matrice B alla matrice A, in modo che il centro della matrice B sia in corrispondenza del pixel della matrice A da elaborare, è possibile applicare il filtro desiderato all’immagine e quindi ottenere la nuo- va immagine filtrata. Il valore di ciascun pixel della matrice A oggetto di elaborazione viene ricalcolato come la somma pesata dei prodotti di ciascun elemento della matrice kernel con il corrispondente pixel della matrice A sottostante e i pixel a lui localmente vicini [24]. In generale, si può esprimere la convoluzione tra due matrici con la seguente formula [23]: V = int
  • 27.
  • 28.
  • 29.
  • 30.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. (1) dove: fij = il valore del coefficiente di convoluzione del kernel nella posizione ij; dij = il valore del pixel nell’immagine da elaborare corrispondente a fij; q = la dimensione della matrice kernel, assumendo di utilizzare matrici kernel di dimensioni quadrate (se q = 3, il kernel ha dimensione 3 × 3); F = la somma di tutti i coefficienti di convoluzione del kernel (pari ad 1 se la somma dei coefficienti è nulla); V = il valore risultante del pixel dell’immagine oggetto di elaborazione. Per comprendere meglio l’operazione di convoluzione tra due matrici, si riporta di seguito un esempio, fornito da [23]. Figura 10: Esempio dell’operazione di convoluzione tra due matrici. 22
  • 37. Nell’esempio, si può notare la sovrapposizione della matrice kernel alla matrice “Input Data”, che rappresenta una parte della matrice contenente i valori di intensità di tutti i pixel dell’immagine originale, in modo tale che il centro della matrice kernel sia in corrispondenza del pixel dell’immagine originale oggetto di elaborazione, in questo caso un pixel di valore 8. Applicando la formula (1), è possibile ricalcolare il valore del pixel e ottenere quindi il valore che assume nell’immagine elaborata finale, V . Di seguito si riportano i calcoli: V = int{[(−1 × 8) + (−1 × 6) + (−1 × 6) + (−1 × 2) + (16 × 8) + (−1 × 6) + (−1 × 2) + (−1 × 2) + (−1 × 8)] ÷(−1 − 1 − 1 − 1 + 16 − 1 − 1 − 1 − 1)} = = int( 88 8 ) = 11 In modo analogo, è possibile ricalcolare i valori memorizzati in tutti i pixel che com- pongono l’immagine, e ottenere quindi l’immagine filtrata (o elaborata) desiderata, tra- slando la matrice di convoluzione sulla matrice rappresentante l’immagine da elaborare, in modo che il centro della matrice kernel sia in corrispondenza del pixel da elaborare di volta in volta, per tutti i pixel che compongono l’immagine da elaborare. Per il processo di elaborazione delle immagini, si è utilizzata principalmente la libreria OpenCV-Python [14]. Inoltre, dal momento che le immagini da elaborare sono molte e il processo di ela- borazione, nel suo complesso, è impegnativo e richiede una certa potenza di calcolo, è stata utilizzata una delle risorse di calcolo di Cineca, un consorzio senza scopo di lucro composto da 67 Università italiane e 13 Istituzioni, che costituisce il più grande centro di calcolo in Italia e uno dei più grandi in Europa. In particolare, si è ottenuto l’accesso al cluster MARCONI100, un recente cluster accelerato basato su architettura IBM Power9 e GPU Volta NVIDIA, acquisito da Cineca nell’ambito dell’iniziativa europea PPI4HPC (per maggiori informazioni vedere [25]). Si è distribuita cosı̀ l’elaborazione delle imma- gini scomponendola in sotto-elaborazioni separate, le quali sono state risolte ciascuna in parallelo sul cluster. 3.3.1 Sfocatura e segmentazione delle immagini Innanzitutto, per semplificare la complessità computazionale per le successive elabora- zioni, si è reso le immagini digitali da immagini a colori a immagini monocromatiche in scala di grigi. Un’immagine digitale monocromatica è una matrice di valori discreti di intensità luminosa (o livelli di grigio), costituita da M × N pixel, ciascuno dei quali ha un valore appartenente all’intervallo [0, L − 1] che indica l’intensità del grigio in quel 23
  • 38. punto dell’immagine (che varia dal nero, tipicamente corrispondente al valore 0, al bian- co, tipicamente corrispondente al valore L − 1), essendo L i livelli possibili di intensità (o di grigio). Come si è già detto, tipicamente L = 2k , dove k è il numero di bit usati per codificare ciascun pixel. Con 8 bit si ha la possibilità di rappresentare un numero di livelli (256) tale da consentire una discriminazione dei livelli di grigio accettabile [22]. Dopodiché, le immagini sono state sfocate applicando la sfocatura Gaussiana, per ridurre il rumore dalle immagini e ridurne i dettagli. Dal punto di vista matematico, applicare una sfocatura Gaussiana ad un’immagine consiste nell’utilizzare una funzione Gaussiana per calcolare la trasformazione da applicare a ciascun pixel dell’immagine [26]. In statistica e in teoria della probabilità, le funzioni Gaussiane si presentano come fun- zioni di densità di probabilità della distribuzione normale, o distribuzione di Gauss. La distribuzione di Gauss è una distribuzione di probabilità continua usata per descrivere variabili casuali a valori reali che tendono a concentrarsi attorno ad un singolo valore medio. In una dimensione, il grafico della funzione Gaussiana associata è simmetrico e ha una forma a campana intorno al punto centrale (il valore medio atteso), nota come campana di Gauss [27]. La fonte principale consultata per la seguente trattazione è [28], i quali si sono basati a loro volta sui seguenti lavori (si riportano di seguito per eventuali approfondimenti): [29, 30, 31, 32, 26]. La formula di una funzione Gaussiana, in una dimensione e con valore medio atteso pari a 0, è la seguente: G(x) = 1 √ 2πσ2 e− x2 2σ2 (2) dove x è la distanza dall’origine sull’asse e σ2 è la varianza della distribuzione di Gauss. Figura 11: Grafico della funzione Gaussiana in una dimensione, con valore medio atteso pari a 0 e σ2 = 1. In due dimensioni, una funzione Gaussiana è una funzione isotropa (in particolare, è circolarmente simmetrica), ed è data dal prodotto di due funzioni Gaussiane, una in 24
  • 39. ciascuna dimensione: G(x, y) = 1 2πσ2 e−x2+y2 2σ2 (3) dove x è la distanza dall’origine su un’asse, y è la distanza dall’origine sull’altro asse e σ2 è la varianza della distribuzione di Gauss. Figura 12: Grafico della funzione Gaussiana in due dimensioni, con valore medio atteso pari a (0, 0) e σ2 = 1. Come si può notare dal grafico in Figura (12), quando applicata in due dimensioni, la funzione Gaussiana produce una superficie i cui contorni sono dei cerchi concentrici che si sviluppano in maniera circolarmente simmetrica a partire dal punto centrale (il valore medio atteso, in cui si avrà il picco di valore massimo della distribuzione) secondo una distribuzione di Gauss. Poiché l’immagine originale da elaborare è una matrice contenente i valori discreti di intensità di tutti i pixel che la costituiscono, è necessario produrre un’approssima- zione discreta della funzione Gaussiana in due dimensioni, prima di poter eseguire la convoluzione. Allora, i valori ottenuti dall’approssimazione discreta di questa funzione Gaussiana vengono utilizzati per costruire una matrice di convoluzione, che viene applicata all’im- magine originale. In questo modo, si può applicare la sfocatura Gaussiana all’immagine originale, ottenendo l’effetto di sfocatura desiderato. Il nuovo valore d’intensità di ogni pixel viene ricalcolato come la somma pesata dei prodotti di ciascun elemento della matrice di convoluzione con il corrispondente pixel originale da elaborare e i pixel a lui adiacenti. Come si ha spiegato in precedenza: si sovrappone la matrice di convoluzione alla matrice che rappresenta l’immagine da elaborare, in modo che il centro della matrice di convoluzione sia in corrispondenza del pixel da elaborare. Dal momento che il valore centrale della matrice di convoluzione, in questo caso, è il più elevato, il valore del pixel originale da elaborare riceve il peso maggiore (cioè, viene moltiplicato per il valore della funzione Gaussiana più elevato). I pixel adiacenti, invece, ricevono pesi via via inferiori all’aumentare della loro distanza 25
  • 40. Figura 13: Esempio di matrice di convoluzione ottenuta dall’approssimazione discreta della funzione Gaussiana in due dimensioni, con valore medio atteso pari a (0, 0) e σ2 = 1. Il valore 273 corrisponde alla somma di tutti i coefficienti di convoluzione della matrice. Notare che la matrice di convoluzione rappresenta la tipica forma ”a campana” della funzione Gaussiana: infatti, la simmetria circolare si ritrova anche nell’approssimazione discreta della funzione Gaussiana (il valore più elevato della matrice corrisponde al punto centrale della funzione Gaussiana, in corrispondenza del valore medio atteso, dove la funzione presenta un picco massimo). dal pixel originale da elaborare. Ciò si traduce in una sfocatura capace di preservare i contorni e le geometrie dell’immagine originale meglio di altri filtri di sfocatura più uniformi. Per applicare la sfocatura Gaussiana alle immagini, è stata utilizzata la funzione di OpenCV GaussianBlur() [14], che utilizza una matrice di convoluzione ottenuta dal- l’approssimazione discreta di una funzione Gaussiana in due dimensioni, permettendo di ottenere dei buoni risultati nella rimozione del rumore dalle immagini e nell’applicazione di una sfocatura “delicata”, capace di preservare i contorni fondamentali e le geometrie delle immagini originali. Dopo aver sfocato le immagini applicando la sfocatura Gaussiana, si procede alla loro segmentazione, cioè si procede a partizionare le immagini nelle loro regioni significative. Nell’elaborazione delle immagini digitali, la segmentazione di un’immagine è il processo di partizionamento di un’immagine digitale in più segmenti, o regioni. L’obiettivo della segmentazione è di semplificare e/o modificare la rappresentazione di un’immagine in qualcosa che sia più significativo e più semplice da analizzare [26, 33]. La segmentazione dell’immagine viene generalmente utilizzata per individuare oggetti e confini (linee, cur- ve, ecc.) nelle immagini. Più precisamente, la segmentazione dell’immagine è il processo con il quale si classificano in determinate regioni insiemi di pixel (noti anche come oggetti immagine) dell’immagine che hanno caratteristiche in comune. Pertanto, ciascun pixel classificato in una regione è simile agli altri pixel della stessa regione per una qualche proprietà o caratteristica (per esempio il colore, l’intensità luminosa o la trama). Regioni 26
  • 41. adiacenti tra loro sono significativamente diverse rispetto alle stesse caratteristiche che accomunano i pixel appartenenti ad una stessa regione. Il risultato della segmentazio- ne di un’immagine è allora un insieme di regioni che coprono collettivamente l’intera immagine [26]. Il metodo più semplice per segmentare delle immagini è chiamato metodo di soglia (o thresholding). Questo metodo si basa su un certo valore di soglia per trasformare un’immagine in scala di grigi in un’immagine binaria (cioè, da un’immagine in scala di grigi si passa ad un’immagine che è semplicemente bianca e nera) [26]. Allora, ricordiamo che un’immagine in scala di grigi è costituita da un certo numero di pixel, ciascuno dei quali ha un valore discreto d’intensità luminosa che indica il livello di grigio in quel punto dell’immagine, che può variare dal nero al bianco. Essendo L i livelli di grigio rappresentabili, che dipendono dal numero di bit usati per codificare ciascun pixel, tipicamente il nero corrisponde al valore 0 e il bianco corrisponde al valore L − 1. Quindi, durante un processo di thresholding, una volta scelto il valore di soglia, si confronta il valore d’intensità luminosa di ciascun pixel dell’immagine in scala di grigi con il valore di soglia scelto. Tipicamente, singoli pixel dell’immagine sono catalogati come “pixel di sfondo” se il loro valore d’intensità è maggiore al valore di soglia, e come “pixel oggetto” se il loro valore d’intensità è inferiore al valore di soglia scelto. Per convenzione, l’immagine binaria in uscita avrà un valore d’intensità pari ad 1 in corrispondenza dei “pixel oggetto” (che indicano regioni nere), e pari a 0 in corrispondenza dei “pixel di sfondo” (che indicano regioni bianche). Allora, la logica alla base del metodo di soglia può essere rappresentata come riportato di seguito, dove τ rappresenta il valore di soglia discreto scelto, Ioriginale(i, j) rappresenta il valore discreto d’intensità luminosa (o livello di grigio) del pixel nella posizione (i, j) dell’immagine originale in scala di grigi, e Ibinaria(i, j) rappresenta il nuovo valore che assume il pixel oggetto di elaborazione nell’immagine binaria in uscita, i cui pixel potranno assumere solamente due valori (0/1), a seconda che indichino una regione bianca (“pixel di sfondo”) oppure una regione nera (“pixel oggetto”) [34]: Ibinaria(i, j) = 0 Ioriginale(i, j) ≥ τ 1 Ioriginale(i, j) τ (4) Allora, ciascun pixel dell’immagine originale in scala di grigi è stato sostituito o con un “pixel oggetto” (cioè, un “pixel nero”), se il valore d’intensità del pixel nell’immagine in scala di grigi è inferiore al valore di soglia scelto, o con un “pixel di sfondo” (cioè, un “pixel bianco”), se il valore d’intensità del pixel nell’immagine in scala di grigi è maggiore del valore di soglia scelto. Questo comporta che le regioni scure di un’immagine in scala di grigi, nelle quali i valori d’intensità dei pixel tendono al valore 0 (che ricordiamo tipicamente corrispondere al nero), diventano del tutto nere, mentre le regioni chiare di un’immagine in scala di grigi, nelle quali i valori d’intensità dei pixel tendono al valore L − 1 (che ricordiamo tipicamente corrispondere al bianco), diventano del tutto bianche. Quanto scure devono essere le regioni per far sı̀ che diventino del tutto nere, e quanto 27
  • 42. chiare devono essere le regioni per far sı̀ che diventino del tutto bianche, dipende dal valore di soglia scelto. In questo modo è possibile evidenziare le regioni che rappresentano l’oggetto di interesse, rendendo tutte le altre regioni parte dello sfondo. Il vantaggio di ottenere un’immagine binaria da un’immagine in scala di grigi consiste nel ridurre la comples- sità delle caratteristiche dell’immagine e nel semplificare il processo di riconoscimento e classificazione dell’oggetto rappresentato nell’immagine [35]. Dalla spiegazione della logica alla base del metodo di soglia, si intuisce che il para- metro chiave in un processo di thresholding è la scelta del valore di soglia (τ), che indica il valore d’intensità luminosa in corrispondenza del quale si ha la discriminazione tra i pixel che verranno sostituiti con “pixel bianchi”, cioè “di sfondo”, e i pixel che verranno sostituiti con “pixel neri”, cioè “oggetto”. Allora, è possibile scegliere un unico valore di soglia manualmente, o utilizzare delle tecniche per la scelta automatica di questo valore. Un semplice metodo potrebbe essere quello di scegliere come valore di soglia il valore medio tra tutti i valori d’intensità luminosa dei pixel che compongono l’immagine. Que- sta tecnica può funzionare bene in un’immagine senza alcun tipo di rumore, altrimenti si devono utilizzare tecniche più sofisticate [34]. Tuttavia, utilizzare un singolo valore come valore di soglia può non essere una scelta ottimale quando l’immagine presenta diverse condizioni di luminosità in diverse aree [14]. In questi casi, è preferibile utilizzare un metodo di soglia chiamato metodo di soglia adattivo, che sceglie automaticamente un valore di soglia diverso per diverse regioni dell’immagine, ottenendo quindi diversi valori di soglia per diverse regioni di una stessa immagine [26]. La funzione di OpenCV utilizzata per applicare il metodo di soglia adattivo alle im- magini in input, in scala di grigi e sfocate (in seguito all’applicazione della sfocatura Gaussiana avvenuta al passo precedente), è adaptiveThreshold() (per maggiori infor- mazioni su questa funzione vedere [14]). Si è quindi preferito applicare il metodo di soglia adattivo utilizzando questa funzione di OpenCV, dal momento che i risultati ottenuti dall’applicazione di questo metodo sono nettamente migliori rispetto ai risultati ottenuti da un semplice metodo di soglia che utilizza un valore di soglia unico per tutte le regioni dell’immagine. Di seguito sono riportati alcuni esempi di immagini, che costituiscono il dataset di immagini di modelli iniziale, nei quali esempi è possibile vedere come tali immagini cambiano durante il processo di elaborazione a cui sono sottoposte. In particolare, si evidenziano i tre passaggi fondamentali del processo di elaborazione descritti in questo paragrafo: il passaggio da immagine a colori a immagine monocromatica in scala di grigi, l’applicazione della sfocatura Gaussiana e infine l’applicazione del metodo di soglia adat- tivo, da cui si ha ottenuto l’immagine binaria corrispondente all’immagine del modello iniziale. 28
  • 43. Figura 14: Primo esempio di immagine di modella, nel quale si evidenziano i passaggi fondamentali del processo di elaborazione descritto in questo paragrafo. In ordine, si può vedere l’immagine originale a colori iniziale, la sua versione monocromatica in scala di grigi, il risultato dell’applicazione della sfocatura Gaussiana e infine l’immagine binaria ottenuta dall’applicazione del metodo di soglia adattivo. 29
  • 44. Figura 15: Secondo esempio di immagine di modella, nel quale si evidenziano i passaggi fondamentali del processo di elaborazione descritto in questo paragrafo. In ordine, si può vedere l’immagine originale a colori iniziale, la sua versione monocromatica in scala di grigi, il risultato dell’applicazione della sfocatura Gaussiana e infine l’immagine binaria ottenuta dall’applicazione del metodo di soglia adattivo. 30
  • 45. Figura 16: Ulteriori esempi di immagini di modelli, nei quali si evidenziano i passaggi fondamentali del processo di elaborazione descritto in questo paragrafo. In ordine, si può vedere l’immagine originale a colori iniziale, la sua versione monocromatica in scala di grigi, il risultato dell’applicazione della sfocatura Gaussiana e infine l’immagine binaria ottenuta dall’applicazione del metodo di soglia adattivo. 31
  • 46. 3.3.2 Creazione delle mappe dei contorni A questo punto, si procede ad evidenziare i contorni degli oggetti rappresentati nelle immagini binarie realizzate al passo precedente; una volta riconosciuti e rilevati i contorni degli oggetti rappresentati, quindi le sagome e i contorni fondamentali dei modelli nel nostro caso, si potranno creare le mappe dei contorni corrispondenti alle immagini date in input (cioè, alle immagini binarie realizzate al passo precedente). Vediamo di seguito come sia possibile riconoscere e rilevare i contorni degli oggetti rappresentati in immagini digitali, e come si riesca ad estrarre i contorni da queste immagini per creare le mappe dei contorni corrispondenti. Il riconoscimento e rilevamento dei contorni (o edge detection) include una varietà di metodi matematici che mirano ad identificare ed evidenziare i punti in un’immagine digitale in cui la luminosità (o intensità luminosa) cambia bruscamente o, più formal- mente, presenta delle discontinuità. I punti in cui la luminosità dell’immagine cambia bruscamente sono tipicamente organizzati in una serie di segmenti di linee curve chiamati contorni (o bordi). Il rilevamento dei contorni è uno strumento fondamentale nell’elabo- razione delle immagini e in molti altri campi, in particolare nelle aree del rilevamento e dell’estrazione delle caratteristiche [36]. Bruschi cambiamenti delle proprietà di un’immagine sono il sintomo di eventi e/o cambiamenti importanti del mondo fisico di cui le immagini sono la rappresentazione; quindi, lo scopo di rilevare bruschi cambiamenti nella luminosità dell’immagine è quello di catturare questi eventi e/o cambiamenti importanti del mondo fisico e rappresentar- li. Si può dimostrare che molto spesso le discontinuità nella luminosità di un’immagine corrispondono a: discontinuità nella profondità, discontinuità nell’orientamento delle superfici, cambiamenti delle proprietà dei materiali e/o variazioni nelle condizioni d’il- luminazione dell’immagine. In un caso ideale, quindi, il risultato dell’applicazione di un rilevatore dei contorni ad un’immagine può portare ad una serie di curve collegate tra loro che indicano questi eventi e/o cambiamenti importanti del mondo fisico di cui le immagini sono la rappresentazione, corrispondenti alle discontinuità nella luminosità dell’immagine, e dunque permettono di evidenziare i contorni degli oggetti rappresenta- ti e in generale rappresentare le caratteristiche strutturali fondamentali dell’immagine. Pertanto, l’applicazione di un algoritmo di rilevamento dei contorni ad un’immagine può ridurre significativamente la quantità di dati da elaborare, e può quindi filtrare tutte quelle informazioni che possono essere considerate meno rilevanti al fine dell’in- dividuazione dei contorni, preservando invece le proprietà strutturali fondamentali del- l’immagine, ovvero le informazioni essenziali utili a descrivere le forme, le geometrie e le caratteristiche strutturali degli oggetti rappresentati nell’immagine. Se la fase di rileva- mento dei contorni produce buoni risultati, il successivo compito di interpretare il con- tenuto delle informazioni strutturali dell’immagine può quindi essere significativamente semplificato [37]. 32
  • 47. Si intuisce dunque l’importanza della creazione delle mappe dei contorni corrispon- denti alle immagini date in input nel nostro caso: per passare da un’immagine di modelli reali (una rappresentazione complessa del mondo reale) ad un immagine costituita da uno sketch corrispondente (una rappresentazione stilizzata e semplificata del mondo reale), è fondamentale l’operazione di riconoscimento e rilevamento dei contorni per ottenere immagini che contengono molte meno informazioni rispetto alle originali, conservando le informazioni essenziali a descrivere la forma e le caratteristiche strutturali e geome- triche degli oggetti rappresentati a cui si è interessati, ovvero le sagome e i contorni fondamentali dei modelli rappresentati nelle immagini nel nostro caso. Tuttavia, dal momento che le immagini sono una rappresentazione del mondo reale, che è caratterizzato da una certa complessità, a meno che non siano immagini che rap- presentano oggetti in maniera molto semplificata, non sempre è possibile ottenere dei contorni che descrivono perfettamente i contorni effettivi degli oggetti rappresentati [38]. Infatti, i contorni estratti da immagini non banali (che rappresentano cioè il mondo fisico reale nella sua complessità) sono spesso caratterizzati dal problema della frammen- tazione, il che significa che le curve che costituiscono i contorni non sono sempre colle- gate perfettamente tra loro, presentando dei segmenti nei quali il contorno è mancante. Inoltre, possono esserci dei “falsi” contorni, cioè dei contorni che non corrispondono ai contorni degli oggetti rappresentati d’interesse (di cui si vuole estrarre i contorni per evi- denziarne le forme): questi contorni “falsi”, che si aggiungono ai contorni degli oggetti dell’immagine a cui si è interessati (contorni che possono essere imperfetti in un caso non ideale), aggiungono una notevole complessità al risultato dell’applicazione dell’algo- ritmo di rilevamento dei contorni, complicando di conseguenza il successivo compito di interpretare i dati dell’immagine ottenuta [39]. Allora, si può dire che la ricerca dei contorni è complicata da questi falsi riconosci- menti provocati da disturbi presenti nelle immagini. Per ridurre il numero dei “falsi” contorni, si possono sottoporre preliminarmente le immagini a tecniche di riduzione dei disturbi (noise reduction), che consistono tipicamente nell’applicazione della sfocatura Gaussiana. Quindi, si può capire l’importanza fondamentale di sottoporre in fase inizia- le le immagini alla sfocatura Gaussiana, per ridurre dettagli e rumore delle immagini e prevenire il più possibile falsi riconoscimenti in fase di rilevamento dei contorni, come è stato fatto nel nostro caso e di cui si ha discusso nel paragrafo 3.3.1. Per illustrare ulteriormente i motivi per i quali il rilevamento dei contorni non è un compito banale, si consideri il problema di rilevare i contorni osservando la linea di pixel in Figura (17a), il cui valore d’intensità luminosa di ogni pixel dell’immagine unidimen- sionale è indicato. Basandosi sul fatto che un contorno consiste in un cambiamento d’intensità luminosa dell’immagine, che ha luogo gradualmente su un certo numero di pixel in un’immagine in scala di grigi, esaminando i cambiamenti d’intensità tra ciascun pixel ed il successivo nella seguente linea di pixel, è intuitivo ipotizzare la presenza di un contorno tra il quarto e il quinto pixel. Tuttavia, trovare un criterio univoco che stabilisca quanto ampia deve essere la dif- 33
  • 48. ferenza di intensità tra due pixel adiacenti per poter dire che fra di essi sia presente un contorno non è sempre un problema di facile risoluzione [39]. Infatti, questo è uno dei motivi per cui il rilevamento dei contorni può essere un problema non banale da risolvere, a meno che gli oggetti rappresentati non siano particolarmente semplici e le condizioni d’illuminazione possano essere ben controllate. A scopo esemplificativo, se si osserva la linea di pixel (17b), si nota che la differenza di intensità luminosa è minore tra il quarto e il quinto pixel rispetto al caso precedente (17a), e quindi non è cosı̀ semplice stabilire se tra di essi esiste un contorno. Inoltre, in presenza di ambiguità si potrebbe anche sostenere che ci siano più contorni presenti tra i pixel. (a) Intuitivamente si può dire che esiste un con- torno tra il quarto e il quinto pixel, dal mo- mento che tra di essi c’è una grande variazione nell’intensità luminosa. (b) La variazione nell’intensità luminosa non è cosı̀ grande (varia in maniera molto graduale), e c’è ambiguità nel stabilire se esiste un contorno e dove esso sia collocato, o se invece ne esistono vari. Figura 17: Rappresentazione grafica della variazione d’intensità luminosa tra pixel adiacenti in un’immagine unidimensionale. Per evitare queste ambiguità nel riconoscimento dei contorni legate ad una lenta e graduale variazione dell’intensità luminosa dei pixel che costituiscono l’immagine, nel nostro caso si ricorda che si è utilizzato il metodo di soglia per trasformare le immagini da immagini in scala di grigi ad immagini binarie, ovvero immagini nelle quali i pixel assumono solamente due valori a seconda che siano pixel che indichino regioni del tutto nere (“pixel oggetto”) o pixel che indichino regioni del tutto bianche (“pixel di sfondo”). Si è discusso dell’applicazione del metodo di soglia nel paragrafo 3.3.1, e si ricorda bre- vemente che nella sua applicazione il punto chiave è stato la scelta del valore di soglia da utilizzare, che individua il valore d’intensità luminosa in corrispondenza del quale si ha la discriminazione tra i pixel che verranno sostituiti con “pixel bianchi” e i pixel che ver- ranno sostituiti con “pixel neri”. Nel nostro caso è stata utilizzata la tecnica del metodo di soglia adattivo, che sceglie automaticamente un valore di soglia diverso per diverse regioni dell’immagine. Una volta sottoposte le immagini all’applicazione del metodo di 34
  • 49. soglia adattivo, il risultato che si ottiene sono immagini binarie, ovvero immagini compo- ste unicamente da due tipi di regioni (regioni del tutto bianche e regioni del tutto nere) che coprono collettivamente l’intera immagine. Allora, in questa fase di riconoscimento dei contorni, operando con immagini binarie, non esiste alcuna ambiguità nel stabilire se tra due pixel adiacenti esiste un contorno, dal momento che pixel appartenenti ad una stessa regione avranno lo stesso identico valore d’intensità luminosa, e pixel appartenenti a regioni diverse avranno invece valori d’intensità luminosa molto diversi, che indicheran- no senza alcuna incertezza una grande variazione nell’intensità luminosa dell’immagine, e quindi la presenza di un contorno ogni qual volta si passa da una regione nera ad una bianca o viceversa. Sostanzialmente, applicando il riconoscimento dei contorni su imma- gini binarie, non si ha più l’incertezza legata alla variazione dell’intensità luminosa che ha luogo gradualmente su un certo numero di pixel (come poteva avvenire operando con immagini in scala di grigi). I contorni saranno univocamente e certamente determinati e corrispondenti a bruschi cambiamenti d’intensità dell’immagine in corrispondenza del passaggio tra regioni diverse (da regioni nere a regioni bianche e viceversa). Esistono molti metodi per riconoscere i contorni, ma la maggior parte di essi può essere raggruppata in due categorie: metodi basati sulla ricerca (search-based) e metodi basati sull’attraversamento dello zero (zero-crossing). I metodi basati sulla ricerca riconoscono i contorni cercando i massimi ed i minimi della derivata del primo ordine dell’intensità luminosa dell’immagine, che corrisponde al gradiente dell’immagine, di solito cercando la direzione in cui si ha il massimo gradiente locale [37]. Un esempio di algoritmo che rientra tra i metodi basati sulla ricerca è l’ope- ratore di Sobel, che prende il nome da Irwin Sobel e Gary Feldman, che hanno presentato l’idea alla base dell’algoritmo in una conferenza dello Stanford Artificial Intelligence La- boratory (SAIL) nel 1968 [40]. L’operatore di Sobel è un algoritmo usato per effettuare il riconoscimento dei contorni che calcola un valore discreto approssimato del gradiente di una funzione che rappresenta la luminosità dell’immagine in ciascun punto, trovando la direzione lungo la quale si ha il massimo incremento possibile dal chiaro allo scuro, e la velocità con cui avviene il cambiamento lungo questa direzione. Il risultato ottenuto fornisce una misura di quanto “bruscamente” o “gradualmente” l’immagine cambia la sua luminosità in quel punto, e quindi della probabilità che quella parte di immagine rap- presenti un contorno, e fornisce anche un’indicazione del probabile orientamento di quel contorno. In termini matematici, il gradiente di una funzione a due variabili (la funzione luminosità dell’immagine) è in ciascun punto dell’immagine un vettore bidimensionale le cui componenti sono le derivate parziali del valore della luminosità in direzione oriz- zontale e verticale. In ciascun punto dell’immagine, questo vettore gradiente punta nella direzione del massimo aumento possibile di luminosità, e la lunghezza del vettore corri- sponde alla rapidità con cui la luminosità cambia spostandosi in quella direzione. Ciò significa che nelle zone dell’immagine in cui la luminosità è costante l’operatore di Sobel ha valore zero, mentre nei punti posti sui contorni è un vettore orientato attraverso il 35
  • 50. contorno, che punta nella direzione in cui si passa da valori di scuro a valori di chiaro. L’operatore applica due kernel 3 × 3, cioè due matrici di convoluzione, all’immagine ori- ginale per calcolare i valori approssimati delle derivate (una in direzione orizzontale e l’altra in direzione verticale) [41]. La fonte principale consultata per la seguente trattazione è [42], i quali si sono basati a loro volta sui seguenti lavori (si riportano di seguito per eventuali approfondimenti): [29, 32, 43, 44]. I metodi zero-crossing, a differenza dei metodi basati sulla ricerca, cercano i pun- ti nei quali la derivata del secondo ordine dell’intensità luminosa dell’immagine passa per lo zero, cioè punti nei quali la derivata del secondo ordine cambia di segno. Tali punti corrispondono spesso ai contorni delle immagini, ovvero punti nei quali l’intensità dell’immagine cambia rapidamente. Dal momento che la derivata seconda dell’intensità di un’immagine corrisponde alla rapidità di cambiamento del gradiente dell’immagine, la derivata seconda si annulla nei punti di massimo del gradiente [37]. L’operatore di Laplace (o Laplaciano) è un operatore differenziale del secondo ordine, utilizzato per il riconoscimento dei contorni, che si basa sul calcolo della derivata seconda dell’intensità luminosa dell’immagine, e quindi rientra tra i metodi zero-crossing, cioè basati sull’at- traversamento dello zero. L’operatore di Laplace applicato ad un’immagine permette di evidenziarne le regioni nelle quali c’è un rapido cambiamento d’intensità luminosa, ad indicare la presenza di un contorno. Dal momento che l’operatore di Laplace è piuttosto sensibile al rumore di un’immagine, per ottenere buoni risultati dall’applicazione del- l’operatore è fondamentale applicare l’operatore ad un’immagine che è stata sottoposta preliminarmente ad una qualche tecnica di riduzione del rumore, tipicamente la sfocatura Gaussiana, di cui si ha già discusso nel paragrafo 3.3.1. Di seguito è riportata la definizione matematica dell’operatore di Laplace L(x, y) applicato ad un’immagine, dove I(x, y) rappresenta il valore discreto d’intensità luminosa del pixel nella posizione (x, y) nell’immagine, per ciascun pixel che costituisce l’immagine. L(x, y) = ∂2 I(x, y) ∂x2 + ∂2 I(x, y) ∂y2 (5) Analogamente a quanto discusso nel paragrafo 3.3.1, riguardo all’approssimazione discreta della funzione Gaussiana in due dimensioni prima di poter eseguire la convo- luzione con l’immagine da elaborare per applicare il filtro desiderato, anche in questo caso è necessaria un’approssimazione discreta delle derivate del secondo ordine parziali nella definizione dell’operatore di Laplace. Allora, i valori ottenuti dall’approssimazione discreta dell’operatore di Laplace vengono utilizzati per costruire una matrice di con- voluzione, che viene applicata all’immagine originale per effettuare il rilevamento dei contorni. A differenza dell’operatore di Sobel, che applica due matrici di convoluzione all’immagine originaria per calcolare i valori approssimati delle derivate del primo ordine parziali, l’operatore di Laplace utilizza una singola matrice di convoluzione per calcolare in un’unica volta i valori approssimati delle derivate del secondo ordine parziali [45]. 36
  • 51. Figura 18: Due esempi di matrici di convoluzione ottenute dall’approssimazione discreta dell’operatore di Laplace. Utilizzando una di queste matrici di convoluzione, l’operatore di Laplace può essere applicato ad un’immagine utilizzando i metodi di convoluzione standard tra matrici, di cui si ha già discusso, e in questo modo è possibile riconoscere, rilevare e quindi estrarre i contorni fondamentali degli oggetti rappresentati nelle immagini con buoni risultati ed ottenere le mappe dei contorni corrispondenti. Per visualizzare graficamente i concetti appena discussi e comprenderli appieno, consi- deriamo ancora una volta, per semplicità nella rappresentazione, un’immagine unidimen- sionale (cioè una linea di pixel). Tutte le considerazioni valide per il caso di un’immagine unidimensionale possono essere generalizzate al caso di un’immagine in due dimensioni. Per la seguente trattazione è stata consultata la seguente fonte: [45], da cui sono inoltre prese le immagini riportate di seguito. Osservando la Figura (19a), si può notare che in basso alla Figura è rappresentata l’immagine unidimensionale, costituita da una linea di pixel nella quale i pixel cambiano gradualmente il loro valore d’intensità luminosa da valori bassi, corrispondenti a toni scu- ri, a valori sempre più alti, corrispondenti a toni chiari. La curva soprastante l’immagine quindi rappresenta come i valori d’intensità luminosa dei pixel che compongono l’imma- gine cambiano, cioè l’andamento dell’intensità luminosa nell’immagine unidimensionale. Si può notare che, dal momento che il colore nero rappresenta il valore d’intensità lumi- nosa più basso (tipicamente assume il valore 0) e il bianco il valore d’intensità luminosa più alto (tipicamente assume il valore L − 1, se L indica il numero di livelli di grigio rappresentabili), la curva tende a passare da valori bassi a valori sempre più alti via via che i pixel passano da valori scuri a valori sempre più chiari, assumendo una pendenza positiva. Si può notare inoltre che in corrispondenza del centro della curva si ha una ripida pendenza, che corrisponde al passaggio dai pixel dell’immagine unidimensionale con valori scuri a pixel con valori più chiari (e quindi con valori d’intensità luminosa più elevati): la ripida pendenza che caratterizza la curva in quest’area è un indicatore che tra i pixel in quell’area esiste un contorno. Osservando la Figura (19b), che rappresenta la derivata del primo ordine della curva dell’andamento dell’intensità luminosa nell’immagine unidimensionale (Figura (19a)), si può notare che in corrispondenza a quest’area centrale, nella quale si ha la ripida pen- denza della curva corrispondente ad un contorno (cioè, dove i pixel passano rapidamente da valori scuri a valori chiari, quindi i valori d’intensità luminosa dei pixel cambiano rapidamente in quest’area), si ha un picco massimo della curva. Infatti, ricordiamo che 37
  • 52. la derivata di una funzione esprime il tasso di cambiamento di una funzione rispetto ad una variabile (cioè, di quanto la crescita di una funzione cambi al variare del suo argomento); allora, in corrispondenza alla ripida pendenza con la quale la curva in Fi- gura (19a) cambia, passando da valori molto bassi a valori molto alti rapidamente, si ha un massimo nella curva che rappresenta la sua derivata prima in Figura (19b). Allora, la ricerca di questi picchi nella derivata del primo ordine dell’intensità luminosa di un’im- magine è esattamente ciò che fanno i metodi utilizzati per il riconoscimento dei contorni basati sulla ricerca: in generale, si individua un contorno sui pixel in corrispondenza dei quali si ha un picco nella curva che rappresenta la derivata prima dell’intensità luminosa di un’immagine. Allora, se il cambiamento d’intensità luminosa nell’immagine è abba- stanza rapido, cioè se i pixel adiacenti dell’immagine cambiano bruscamente i loro valori d’intensità luminosa, si individua un contorno; tuttavia, sebbene i metodi basati sulla ricerca operino bene, non sempre è semplice stabilire univocamente la soglia d’ampiezza sopra alla quale un picco della curva è considerato indicatore di un contorno, oppure se deve essere semplicemente considerato parte del rumore. Osservando la Figura (19c), nella quale la curva rappresenta la derivata del secon- do ordine dell’andamento dell’intensità luminosa nell’immagine unidimensionale, si può notare che, in corrispondenza dell’area centrale nella quale si ha individuato un contor- no, la curva passa per lo zero. Allora, il punto nel quale la curva che rappresenta la derivata del secondo ordine dell’andamento dell’intensità luminosa nell’immagine passa per lo zero corrisponde alla posizione tra i pixel nella quale c’è il contorno. Allora, la ricerca di questi punti, nei quali la derivata del secondo ordine dell’intensità luminosa dell’immagine attraversa lo zero, è esattamente ciò che fanno i metodi utilizzati per il riconoscimento dei contorni basati sull’attraversamento dello zero. Per accertarsi che i punti nei quali la derivata del secondo ordine dell’intensità luminosa dell’immagine passa per lo zero corrispondano effettivamente ad un contorno, e non siano invece associati ad un picco della derivata prima dell’intensità luminosa dell’immagine che è provocato dal rumore dell’immagine, è necessario applicare preliminarmente tecniche di riduzione del rumore alle immagini prima di applicare metodi basati sull’attraversamento dello zero, come si ha già discusso in precedenza. Allora, sono stati presentati due operatori diversi, entrambi utilizzati per lo stesso scopo: riconoscere e rilevare i contorni degli oggetti d’interesse rappresentati in un’im- magine, applicando all’immagine originale opportune matrici di convoluzione ottenute dall’approssimazione discreta delle derivate parziali degli operatori. Mentre l’operatore di Sobel rientra tra i metodi basati sulla ricerca, che riconoscono i contorni cercando i picchi massimi e minimi della derivata del primo ordine (ovvero del gradiente) dell’in- tensità luminosa dell’immagine, l’operatore di Laplace rientra invece tra i metodi basati sull’attraversamento dello zero, che riconoscono i contorni cercando i punti nei quali la derivata del secondo ordine dell’intensità luminosa di un’immagine passa per lo zero. Per elaborare le immagini del nostro dataset, si è optato per l’utilizzo dell’operatore di Laplace per il riconoscimento e rilevamento dei contorni fondamentali a descrivere 38
  • 53. (a) La curva rappresenta l’andamento dell’in- tensità luminosa nell’immagine. (b) La curva rappresenta la derivata del primo ordine dell’andamento dell’intensità luminosa nell’immagine. (c) La curva rappresenta la derivata del secondo ordine dell’andamento dell’intensità luminosa nell’immagine. Figura 19: Rappresentazione grafica dei concetti discussi nel paragrafo. le geometrie e le caratteristiche strutturali che caratterizzano le nostre immagini: le sagome dei modelli rappresentati, le forme e le informazioni essenziali a descrivere i loro abbigliamenti. Si è scelto di utilizzare l’operatore di Laplace sostanzialmente perché applica all’immagine originale da elaborare una singola matrice di convoluzione, invece delle due matrici utilizzate dall’operatore di Sobel, e quindi è computazionalmente più veloce e produce ottimi risultati in termini di rilevamento dei contorni se le immagini a cui viene applicato l’operatore sono state preliminarmente sottoposte ad una riduzione del rumore (cioè all’applicazione della sfocatura Gaussiana) [45], come si è scelto di fare nelle fasi iniziali del nostro processo di elaborazione delle immagini. In seguito all’applicazione della matrice di convoluzione ottenuta dall’approssima- zione discreta delle derivate parziali del secondo ordine dell’operatore di Laplace, si è potuto estrarre i contorni fondamentali e ottenere immagini che rappresentano una ver- 39