SlideShare a Scribd company logo
1 of 219
Download to read offline
Alma Mater Studiorum Universit`a di
Bologna
SCUOLA DI INGEGNERIA
Corso di Laurea Magistrale in Ingegneria Informatica
Tesi di Laurea in Tecniche e Processi di Data Mining M
WritingSimilarity Search,
un’architettura software per l’analisi
automatica di testi manoscritti:
caratteristiche paleografiche
tradizionali e low-level feature a
confronto.
Relatore:
Chiar.ma Prof.ssa
Ilaria Bartolini
Laurendo:
Antonio Davide Cal`ı
Sessione II
Anno Accademico 2014/2015
A me stesso...
Indice
Introduzione 7
1 Windsurf on Basics 9
1.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Windsurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.1 Funzionalit`a . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.2 Histogram-Based Image Retrieval (HBIR) . . . . . . . 15
1.3 Struttura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 SIFT/SURF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.1 SIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4.2 SURF . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.3 SIFT vs SURF . . . . . . . . . . . . . . . . . . . . . . 22
1.5 Momenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.5.1 Invarianza dei descrittori . . . . . . . . . . . . . . . . . 23
1.5.2 Momenti per forme 2-D . . . . . . . . . . . . . . . . . 25
2 Paleografia: ambito di lavoro 31
2.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.2 ImageJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3 Graphoskop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3.1 Funzionalit`a . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3.2 Interfaccia . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.4 Disuguale Metodico del Calibro . . . . . . . . . . . . . . . . . 37
2.4.1 Calcolo del Disuguale Metodico del Calibro . . . . . . . 40
3
INDICE INDICE
2.4.2 Calibro come Pattern . . . . . . . . . . . . . . . . . . . 45
3 WSS: Writing Similarity Search 53
3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 Interfaccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.2.1 Main GUI . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.2.2 Extract Paleography Feature . . . . . . . . . . . . . . . 57
3.2.3 Compare Paleography Feature . . . . . . . . . . . . . . 60
3.2.4 Evaluate Calibro . . . . . . . . . . . . . . . . . . . . . 62
3.3 Estensione WSS . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.3.1 Package Paleography . . . . . . . . . . . . . . . . . . . 64
3.3.2 PaleographyImage Class . . . . . . . . . . . . . . . . . 65
3.3.3 WrapperFeaturePaleographyMySQL Class . . . . . . . 71
3.3.4 CalibroImage Class . . . . . . . . . . . . . . . . . . . . 74
3.3.5 EvaluateCalibro Class . . . . . . . . . . . . . . . . . . 77
3.3.6 WrapperFeatureCalibroMySQL Class . . . . . . . . . . 79
4 Testing - Preparazione 83
4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.2 Descrizione Database . . . . . . . . . . . . . . . . . . . . . . . 84
4.3 Test 1 - Paleografia . . . . . . . . . . . . . . . . . . . . . . . . 86
4.3.1 Test 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 88
4.3.2 Test 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.3.3 Test 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.3.4 Test 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.3.5 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 90
4.4 Test 2 - Calibro . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.4.1 Test 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.4.2 Test 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 94
4.4.3 Test 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.4.4 Test 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.4.5 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 103
INDICE 5
4.5 Test 3 - SURF . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.5.1 Test 3.1 - antonio non 1.jpg . . . . . . . . . . . . . . . 105
4.5.2 Test 3.2 - antonio punto 1.png . . . . . . . . . . . . . . 108
4.5.3 Test 3.3 - antonio questo 1.png . . . . . . . . . . . . . 108
4.5.4 Test 3.4 - antonio rubik 1.png . . . . . . . . . . . . . . 110
4.5.5 Test 3.5 - antonio smetti 1.png . . . . . . . . . . . . . 112
4.5.6 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 113
4.6 Test 4 - Momenti . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.6.1 Test 4.1 - antonio non 1.jpg . . . . . . . . . . . . . . . 116
4.6.2 Test 4.2 - antonio punto 1.png . . . . . . . . . . . . . . 117
4.6.3 Test 4.3 - antonio questo 1.png . . . . . . . . . . . . . 118
4.6.4 Test 4.4 - antonio rubik 1.png . . . . . . . . . . . . . . 119
4.6.5 Test 4.5 - antonio smetti 1.png . . . . . . . . . . . . . 119
4.6.6 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 120
4.6.7 SURF vs Momenti . . . . . . . . . . . . . . . . . . . . 121
4.7 Test 5 - Classificazione . . . . . . . . . . . . . . . . . . . . . . 121
4.7.1 Paradigma SURF . . . . . . . . . . . . . . . . . . . . . 123
4.7.2 Paradigma a Momenti . . . . . . . . . . . . . . . . . . 127
4.7.3 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 129
4.8 Test 6 - Calibro come Pattern . . . . . . . . . . . . . . . . . . 129
4.8.1 Test 6.1 - Granularit`a Pagina . . . . . . . . . . . . . . 130
4.8.2 Test 6.2 - Granularit`a Parola . . . . . . . . . . . . . . 133
4.8.3 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 137
4.9 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
5 Test e Benchmark 145
5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.1.1 Metriche: Valutazione al Framework . . . . . . . . . . 145
5.2 Benchmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
5.2.1 Introduzione ai Benchmark . . . . . . . . . . . . . . . . 153
5.2.2 Arabic WI contest . . . . . . . . . . . . . . . . . . . . 156
5.2.3 4NSigComp2010 . . . . . . . . . . . . . . . . . . . . . 157
INDICE INDICE
5.3 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
5.3.1 Montale - Diario Postumo . . . . . . . . . . . . . . . . 159
5.3.2 IAM-HD . . . . . . . . . . . . . . . . . . . . . . . . . . 184
5.3.3 Arabic WIC . . . . . . . . . . . . . . . . . . . . . . . . 198
5.3.4 4NSigComp2010 . . . . . . . . . . . . . . . . . . . . . 201
5.3.5 Conclusione . . . . . . . . . . . . . . . . . . . . . . . . 209
Conclusioni 213
Bibliografia/Linkografia 217
Introduzione
Negli ultimi anni, il sempre maggiore interesse riguardo l’analisi di dati
multimediali e il riconoscimento degli oggetti in essi contenuti, ha portato
allo sviluppo di algoritmi sempre pi`u efficaci ed efficienti per l’estrazione di
informazioni caratterizzanti gli stessi.
Uno dei campi pi`u importanti `e quello delle immagini che, dopo il testo scrit-
to, genera il pi`u alto volume per quantit`a di dati. Data la crescente impor-
tanza di immagini e la loro quantit`a in continuo aumento, si sono sviluppati,
nell’ultima decade, vari modelli di rappresenzatione basati sulle informazioni
contenute in esse; a tal proposito, esiste un framework, Windsurf, nato con
l’esigenza di processare in maniera efficiente query di tipo content-based sulle
immagini, decomposte con paradigma region-based.
Si voglia ora pensare a un caso pi`u specifico di analisi di immagini, ovve-
ro al problema del falso d’autore, ovvero lo studio di un manoscritto per
attribuirne o meno la paternit`a a uno specifico autore. Ad oggi sono stati
sviluppati algoritmi in grado di estrarre informazioni da un’immagine model-
landola in un insieme di dati virtuali chiamati features, e, attraverso questi,
`e possibile confrontare l’immagine di interesse con un insieme di immagini
appartenenti a un dataset di cui si `e in possesso, chiamato ground-truth. La
ricerca di similarit`a (Similarity Search), dunque, offre all’utente un modello
interattivo per l’analisi dell’immagine: diversi paradigmi sono nati per poter
risolvere il problema, tra cui, primo fra tutti, il modello SIFT/SURF che
offre una soluzione del tutto generale, applicabile, indubbiamente, anche alla
risoluzione del problema del falso d’autore. Un secondo modello, sempre di
7
8 INDICE
natura general-purpouse, `e il modello Bag of (Visual-)Word, nato per l’analisi
di documenti testuali e successivamente evolutosi per adattarsi all’indagine
delle immagini. Un ulteriore modello viene rappresentato dal momento di
una immagine, ovvero una particolare media dell’intensit`a dei pixel che com-
pongono l’immagine. Infine, un modello pi`u specifico per la risoluzione al
problema si pu`o trovare nell’analisi paleografica del testo manoscritto: l’idea
`e di estrarre dall’immagine le caratteristiche salienti che possono aiutare a
rilevare un falso, quali corpo di scrittura, angolo di scrittura, spaziatura fra
parole, densit`a di scrittura, etc.
Lo scopo di questa tesi `e di estendere, e re-ingegnizzare, il framework Writing
Similarity Search, nato con l’obiettivo di rilevare il falso d’autore, implemen-
tando l’analisi semi-automatica delle features paleografiche.
A questo scopo, si `e deciso di utilizzare un plug-in java gi`a esistente, ImageJ,
nato per l’Image Processing e Analysis, integrando il componente Grapho-
skop, che permette di estrarre caratteristiche paleografiche di nostro interesse.
Capitolo 1
Windsurf on Basics
1.1 Introduzione
Windsurf (Wavelet-based INDexing of ImageS Using Region Fragmenta-
tion) `e un framework Java per l’estrazione di features a basso livello di imma-
gini e per l’elaborazione efficiente di query basato sul paradigma region-based
image retrieval (RBIR).
In particolare, Windsurf utilizza la trasformata Wavelat per estrarre colore
e texture da un’immagine e partizionarla in un insieme di regioni omogenee,
ognuna descritta da un set di features relative.
Il framework `e in grado di confrontare le immagini esaminando il risultato re-
lativo al grado di somiglianza tra le regioni di cui le immagini sono composte.
L’intero sistema, con il trascorrere del tempo, `e stato esteso con l’aggiun-
ta di metodologie e paradigmi inizialmente non presenti nel software base.
Essendo un programma facilmente estendibile, le nuove funzionalit`a non ven-
gono date nel pacchetto base, ma risiedono in programmi pi`u specifici, tra
cui vi `e anche WritingSimilarity Search, ovvero l’ecosistema utilizzato per il
confronto di manoscritti.
9
10 1. Windsurf on Basics
Fra le funzionalit`a aggiunte vi sono due nuovi paradigmi: SIFT/SURF e i
Momenti.
Il capitolo si propone come sorta di riassunto dell’intero framework con
le ulteriori funzionalit`a, che verranno successivamente sfruttate per test e
produzione di codice.
1.2 Windsurf
1.2.1 Funzionalit`a
Windsurf offre numerose funzionalit`a per lo studio e l’analisi dell’imma-
gine. Esse sono suddivisibili nelle seguenti categorie:
1. Feature Extraction: definisce i paradigmi di estrazione di features
da una o pi`u immagini.
2. Similarity Model: definisce i metodi di Matching offerti per il con-
fronto tra immagini.
3. Retrieval Model: definisce i criteri di scelta nell’individuazione del
risultato delle query.
4. HBIR: definisce un modello alternativo al paradigma RBIR, in cui
l’immagine viene semplicemente rappresentata in base ai colori di cui
`e composta.
Feature Extraction
Per la suddivisione di una immagine in regioni, il framework necessita di
pre-processare l’immagine. Successivamente alla segmentazione sar`a possibi-
le descrivere ogni singola regione attraverso un vettore di 37-D.
Il pre-processing si suddivide in 3 importanti fasi: DWT, Clustering e Feature
Indexing.
1.2 Windsurf 11
Figura 1.1: Viene mostrato il processo a cui sono sottoposte le immagini per
la suddivisione in regioni
DWT
La prima fase DWT analizza l’immagine in tempo frequenza, utilizzando la
trasformata discreta Wavelet in 2-D.
Clustering
Durante questa fase, l’immagine viene frammentata in diverse regioni, ognu-
na delle quali contiene un insieme di pixel fra loro omogenei per colore e
texture.
Figura 1.2: Viene mostrato il risultato dell’algoritmo di Clustering K-means
applicato alla prima immagine, utilizzando ordinatamente k=2, 10 e 4.
Il framework utilizza l’algoritmo K-Means per il clustering, permettendo di
suddividere oggetti in K gruppi sulla base dei loro coefficienti di trasformata
simili.
La composizione digitale dei colori di ogni singolo cluster viene rappresen-
12 1. Windsurf on Basics
tata da 4 centroidi, ognungo dei quali rappresenta le 4 sottobande di una
immagine: LL, LH, HL, HH. Ogni sottobanda rappresenta la media degli
istogrammi di colore tridimensionali RGB.
La variazione della texture, invece, viene rappresentata da 4 matrici di cova-
rianza 3x3 simmetriche.
Feature Indexing
La fase finale di Feature Indexing si occupa di tradurre la regione analizzata
di features simili in un un vettore 37-D cos`ı composto:
• Size, ovvero il numero di pixel contenuto nella regione
• 4 Centroidi, per le 4 sottobande, ognuno composto da un vettore 3-D
HSV/RGB
• 4 Matrici di covarianza 3x3, composta ciascuna da 6 numeri decimali
poich`e matrici simmetriche
Il vettore cos`ı creato servir`a per il ritrovamento e la comparazione tra le
diverse immagine composte da regioni, ognuna delle quali descritta da un
proprio vettore di 37 elementi recanti informazioni rispetto al numero di
pixel, ai colori e alla texture.
Similarity Model
La sezione di Similarity Model definisce i metodi di confronto tra le varie
immagini per poterne stabilire il grado di similarit`a: ovvero, vengono definiti
i criteri di Matching tra le varie regioni che permettono di avere un valore di
distanza complessivo tra due immagini. Ogni regione di una immagine viene
confrontata con tutte le regione di una seconda immagine tramite una metri-
ca che ne calcola la distanza: sulla base di queste, vengono dunque stabilite
delle associazioni tra le regioni secondo funzioni di Matching.
Windsurf offre due funzioni di Matching: il Matching 1-1 e il Matching N-M.
1.2 Windsurf 13
L’utilizzo di ogni funzione varia a seconda del numero di regioni estratte
dal framework, non noto a priori, che dipende dalla peculiarit`a della singola
immagine.
Matching 1-1
Figura 1.3: Esempio di Matching 1-1
Il Matching 1-1 effettua un match di una regione della prima con una e
una sola regione della seconda; nel caso in cui le due immagini abbiano un
numero differenti di regioni, per l’immagine che ne ha in eccesso, alcune di
essere rimarrano senza un effettivo match.
Matching N-M
Figura 1.4: Esempio di Matching N-M
A differenza del metodo 1-1, il matching N-M prevede che ogni regione di
una immagine possa fare match con pi`u regioni dell’altra non ponendo, teo-
ricamente, un effettivo limite al numero di regioni.
14 1. Windsurf on Basics
All’atto pratico, per`o, l’applicazione impone alcuni vincoli che tengono conto
della dimensione totale di ogni immagine. Ad ogni regione un determinato
peso in modo tale che la somma di essi equivalga ad 1. Ogni regione effettua
uno o pi`u match con il limite del peso ad essa imposto.
Retrieval Models
Windsurf, data la sua generalit`a, implementa due modelli di ricerca,
chiamati Ranking, diversi tra di loro: k-Nearest Neighbors (k-NN) e Skyline.
K-Nearest Neighbors
Il modello k-NN si basa sul concetto che debbano essere restituiti i k oggetti
pi`u vicini rispetto all’oggetto query desiderato. In pratica l’algoritmo attri-
buisce ad ogni immagine presente in persistenza una distanza dall’immagine
query e ne restituisce le k con distanza minore (o punteggio maggiore).
Esaminando successivamente le classi delle k immagini restituite, si pu`o clas-
sificare l’immagine query con la classe pi`u presente. La classe dell’immagine
pu`o variare a seconda del contesto, ovvero in base alle distanze utilizzate e al
k selezionato: diverse distanze e un diverso k possono portare a un risultato
differente, come si evince dalla figura.
Figura 1.5: Esempio di k-NN, dove l’elemento di query `e il cerchio rosso. In
caso di k=3 la classe attribuitagli sarebbe il colore verde, mentre in caso di
k=7 sarebbe il colore rosa.
1.2 Windsurf 15
Skyline
Un paradigma completamente diverso di risoluzione query `e dato dal model-
lo Skyline. Esso non restituisce un valore di distanza per ogni immagine del
risultato, ma si basa su un concetto di dominanza.
Un’immagine IA, formata dalle regioni ai, domina una immagine IB, for-
mata dalle regioni bi, relativamente a una immagine di query Q, se e solo se
per ogni:
• Per ogni matching qi-bj esiste un matching qi-ak tale che
distanza(qi, bj) ≥ distanza(qi, ak) (1.1)
• Esiste almeno una regione qi per cui per ogni matching qi-bj esiste un
matching qi-ak tale che
distanza(qi, bj) > distanza(qi, ak) (1.2)
Sia per il modello kNN che per il modello Skyline vengono messi a disposizioni
algoritmi che sfruttano l’indicizzazione per permettere esecuzioni delle query
pi`u efficienti.
1.2.2 Histogram-Based Image Retrieval (HBIR)
A differenza del modello RBIR, esiste un modello concorrente di rappre-
sentazione dell’immagine basato unicamente sulla distribuzione dei colori su
di un istogramma tridimensionale, quale RGB (Red Green Blue) o HSV (Hue
Saturation Brightness).
Un concetto simile `e stato sfruttato per la creazione dei centroidi di colori
nella fase di clustering di Windsurf precedentemente illustrato.
16 1. Windsurf on Basics
Figura 1.6: Esempio di modello HBIR
In questo caso l’immagine viene descritta solo attraverso la feature colore,
non analizzando pi`u la texture: ovviamente il modello di estrazione features
risulta molto pi`u semplice, ma pi`u carente di informazioni.
Ad esempio, due immagini molto diverse tra loro, ma con la stessa gamma di
colori, risulterebbero simili secondo questo modello, mentre invece due imma-
gini rappresentanti lo stesso soggetto ma con uno schema di colori differente
porterebbe il modello a riconoscerle come diverse. Inoltre il modello presenta
gravi problemi con le immagini in bianco e in nero, in quanto l’appiattimento
cromatico porta ad istogrammi molto simili e di difficile confronto.
1.3 Struttura
Windsurf `e una libreria Java rilasciata sotto licenza QPL, liberamente
scaricabile a scopo didattico. Il framework `e suddiviso in diversi package,
ognuno dei quali ha uno scopo specifico: Document, Feature Extractor, Query
Processor, Feature Manager e Index Managaer.
Document
Racchiude la classi relative alla descrizioni di regioni, immagini e feature
estratte con i modelli implementati. Si occupa anche di descrivere e fornire
le distanze per i metodi utilizzati dal sistema.
1.4 SIFT/SURF 17
Feature Extractor
Contiene le classi necessarie all’estrazione delle features dalle immagini e dalle
regioni, composto dalle tre fasi descritte precedentemente DWT, Clustering
e Feature Indexing.
Query Processor
Si occupa della risoluzioni delle query su database, implementando gli algo-
ritmi di ritrovamento prima descritti kNN e Skyline. Utilizza gli indici sulle
features se presenti, altrimenti utilizza algoritmi sequenziali.
Feature Manager
Pacchetto relativo all’interazione col database: in particolare si occupa di
salvare le immagini e a recuperarle al momento necessario.
Index Managaer
Comprende le classi delegate alla creazione di indici sulle features utili per
gli algoritmi di ritrovamento utilizzati dal Query Processor.
1.4 SIFT/SURF
SIFT e SURF sono due algoritmi, utilizzati dal Feature Extracture, messi
a disposizione dal framework Windsurf per l’estrazione automatica di low-
level features di immagini.
1.4.1 SIFT
SIFT (Scale Invariant Feature Transform) `e un algoritmo basato sulla
Differenza di Gaussiane (DoG), ovvero una particolare approssimazione del
Laplaciano della Gaussiana, con lo scopo di individuare keypoints (punti
chiave), costituiti da un descrittore a 128 dimensioni, rappresentanti i punti
focali dell’immagine.
L’algoritmo nasce con lo scopo di essere invariante alla scala e alla rotazione
18 1. Windsurf on Basics
dell’immagine.
SIFT ricava in primo luogo ottimizzando gli estremi locali nello space-scale
dalla serie di Taylor. Successivamente vengono trovati i veri keypoints: ad
ognuno di essi viene associato dunque un’orientazione nello spazio e suc-
cessivamente viene fatto un confronto fra keypoints vicini, raggruppati per
regioni, per attribuirne una direzione locale. Lo scopo `e di rendere l’analisi
invariante alla rotazione.
Figura 1.7: Immagine sottoposta all’algoritmo SIFT in cui vengono mostrati
i keypoints ritrovati.
Infine ogni keypoint cos`ı trovato viene descritto attravero un vettore di 128-D
che racchiude le features associate:
• ad ogni keypoint viene associata una matrice 4x4.
• ogni cella della matrice `e descritta da 8 features che descrivono la
direzione locale della cella.
1.4 SIFT/SURF 19
Figura 1.8: Immagine sottoposta all’algoritmo SIFT in cui vengono mostrati
i keypoints ritrovati.
Basandosi sulla Differenza di Gaussiane, SIFT `e un algoritmo molto
preciso ma allo stesso tempo computazionalmente complesso.
1.4.2 SURF
SURF (Speeded-Up Robust Features) `e un algoritmo di estrazione di
features derivate da SIFT, anch’esso invariavante alla scala e alla rotazione.
Figura 1.9: Immagine sottoposta all’algoritmo SURF in cui vengono mostrati
i keypoints ritrovati.
20 1. Windsurf on Basics
L’algoritmo approssima il Laplaciano della Gaussiana utilizzando il modello
Box Filter: viene utilizzato il determinante della matrice Hessiana basata su
immagini integrali per determinare i keypoints e garantire l’invarianza alla
scala. I keypoints vengono individuati nei punti in cui il determinante della
matrice `e massimo.
L’utilizzo del Box Filter permette l’esecuzione dell’algoritmo in parallelo per
diverse scale: questo garantisce un enorme vantaggio computazionale e quin-
di una maggiore velocit`a rispetto a SIFT.
Figura 1.10: Esempio del Box Filter
Per determinare l’orientamento, l’algoritmo utilizza la risposta wavelet Haar
2-D. L’orientamento dominante viene deciso dopo un’analisi dei pesi gaus-
siani distribuiti in una finestra di 60◦
: questi vengono tracciati in uno spazio
cartesiano e il calcolo viene stimato sommando tutte le risposte in una sliding
window orientata con un angolo di π
3
.
Figura 1.11: Calcolo dell’orientamento grazie alla sliding window
1.4 SIFT/SURF 21
SURF utilizza nuovamente la risposta wavelet Haar 2-D per la creazione del
descrittore dei keypoints, infatti genera una matrice 20sx20s
1
a partire dal-
l’intorno dello stesso, la quale a sua volta viene divisa in 16 sottoregioni.
Da ogni sottoregioni si estraggono le risposte orizzontali e verticali per la
formazione di un vettore 64-D:
• si creano blocchi di pixel 4x4
• ogni blocco viene descritto con un vettore 4-D
Figura 1.12: Costruzione del descrittore
Il vettore viene estratto molto pi`u rapidamente rispetto a SIFT, ma non
ottiene lo stesso contenuto informativo, ed `e per questo che `e stata creata
una versione a 128-D aggiungendo sommatorie pi`u specifiche sia per dx e
|dx|, sia per dy e |dy|.
v = dx, dy, |dx| , |dy| (1.3)
SURF utilizza il segno del Laplaciano per memorizzare il contrasto dei key-
points cos`ı da velocizzare la fase di matching: infatti le regioni vengono
1
s `e la dimensione del keypoints
22 1. Windsurf on Basics
confrontate solo se hanno lo stesso contrasto.
Figura 1.13: Confrontro keypoints SURF in base al contrasto
Per questo motivo, a differenza di SIFT, SURF non `e invariante all’illumina-
zione ma `e preferibile in tutti i casi in cui non causa una perdita di precisione
avendo una velocit`a computazionale molto maggiore.
1.4.3 SIFT vs SURF
I due algoritmi descritti possiedono alcuni elementi in comune: si ricordi
che SUFT in parte deriva effettivamente da SIFT.
Entrambi sono invarianti alla scala e alla rotazione, ma differiscono per l’in-
varianza all’illuminazione, garantita in SIFT, mentre fortemente dipendente
in SURF.
Essendo basati entrambi su approssimazioni del Laplaciano della Gaussia-
na, per quanto gli algoritmi possano sembrare simili, sono in realt`a diversi:
a seconda della necessit`a si pu`o preferire il primo a discapito del secondo.
In particolare SURF `e molto pi`u veloce nell’estrazione e nel confronto del-
le features poich´e si basa su approssimazioni dirette che fanno risparmiare
potenza computazionale; SIFT, invece, sfruttando un’approssimazione meno
netta `e pi`u lento, ma in molti casi pi`u preciso.
1.5 Momenti 23
1.5 Momenti
Nell’elaborazione dell’immagine e in Computer Visioni, il momento del-
l’immagine viene definito come una particolare media dell’intensit`a dei pixel
che compongono l’immagine stessa. In senso pi`u generale, si dice momento
anche una funzione che detiene particolari caratteristiche.
Il problema del riconoscimento di forme 2-D necessita di una risoluzione che
ne rappresenti in maniera inalterata caratteristiche e informazioni, ovvero
necessita di descrittori e features appropriati che sfruttino il dominio in ma-
niera pi`u consona.
1.5.1 Invarianza dei descrittori
Per garantire un confronto efficace e corretto, i descrittori dell’immagine
devono soddisfare i requisiti di invarianza a traslazione, scala e rotazione.
Infatti, forme ruotate, ingrandite, rimpicciolite o traslate rispetto alla forma
originale devono essere riconosciute come l’originale stessa: ecco perch`e vi `e
la richiesta dell’invarianza rispetto a queste caratteristiche.
Sono stati fatti molti studi a riguardo per ottenere descrittori con queste
caratteristiche.
Vi sarebbe anche, da considerare, l’invarianza al rumore, la pi`u difficile da
ottenere, ovvero riconoscere una forma anche in presenza di dati distorti.
Invarianza alla Traslazione
Un oggetto che si sposta nello spazi semplicemente modifica le coordi-
nate spaziali dei propri punti: questo porta a una variazione dei descrittori
e quindi a una rappresentazione scorretta. L’invarianza deve permettere di
riconoscere forme medesime tra loro traslate: se ottenuta diventa indifferen-
te la scelta del centro d’origine del piano cartesiano e quindi della posizione
sullo spazio della forma considerata.
24 1. Windsurf on Basics
Per riuscire ad ottenere l’invarianza alla traslazione, in generale, basta tra-
slare la figura in modo tale che il proprio centro di massa venga posizionato
sull’origine del piano cartesiano.
Invarianza alla Scala
Ingrandire o rimpicciolire un oggetto in una immagine `e uno degli ele-
menti pi`u distorcenti per lo stesso. Ottenere l’invarianza alla scala permette
di riconoscere forme medesime tra loro ingrandite o ridotte come la stessa
forma.
Per garantire l’invarianza bisogna dividere il vettore delle coordinate della
forma 2-D per la propria norma, racchiudendo, successivamente, le coordi-
nate normalizzate all’interno dell’unit`a circolare.
I valori cos`ı ottenuti, per qualsiasi modifica della scala, vengono riportati
nell’intervallo [0,1], annulandone quindi qualsiasi effetto di ingrandimento.
Questo procedimento viene chiamato normalizzazione del vettore delle cor-
dinate.
Invarianza alla Rotazione
L’invarianza alla rotazione risulta fondamentale per qualsiasi rappresen-
tazione dell’oggetto: infatti la rotazione comporta il completo cambiamento
delle coordinate dell’oggetto stesso e conseguentemente dei pixel dell’immagi-
ne. Il modo pi`u intuititvo per ottenerne l’invarianza `e di calcolare un angolo
caratteristico per ogni forma e ruotare successivamente la forma in esame per
riportare il suo angolo caratteristico a 0.
Invarianza al Rumore
Come gi`a detto, in una immagine il rumore `e la principale fonte di errore
nel calcolo dei descrittori di una forma.
Descrittori errati portano a confronti errati: diventa quindi fondamentale
ottenere l’invarianza al rumore con l’ausilio di filtri sulle forme da analizzare.
1.5 Momenti 25
1.5.2 Momenti per forme 2-D
I Momenti sono un’intera famiglia di caratteristiche di una immagine che
nel loro insieme la identificano in maniera univoca.
Come gi`a detto sono uno strumento nato nel campo del Computer Vision,
applicabile a qualsiasi ambito che richieda di riconoscere immagini e forme,
o quando vi `e la necessit`a di estrarre feature globali di oggetti collocati nello
spazio locale.
Esistono molti tipi di Momenti, ognuno con determinate caratteristiche, ma,
in generale, tutti si prestano all’analisi di forme 2-D.
Una forma 2-D `e formata da un vettore N-dimensionale complesso i cui ele-
menti rappresentano le coordinate (x; y) sul Piano Cartesiano.
Si definisce quindi la generica forma 2-D come z ∈ Cn
:
z =







x1 + jy1
x2 + jy2
...
xN + jyN







(1.4)
Principal Moments
Si definisce Principal Moments di ordine k, k ≥ 1, k ∈ N:
Mk(z) =
1
Nk!
(zk
1 + zk
2 + · · · + zk
N ) =
1
Nk!
N
n=1
zk
n (1.5)
Il termine 1/Nk! `e un fattore scalare, mentre N
n=1 zk
n `e chiamata somma di
potenze di ordine k. Essendo k un numero naturale maggiore o uguale a 1,
ogni forma 2-D `e potenzialmente caratterizzata da infiniti Principal Momen-
ts: di questi, in realt`a, sono sufficienti solo i primi N per rappresentare senza
ambiguit`a il vettore della forma 2-D.
Le prime N somme di potenze possono essere convertite in polinomi simme-
trici delle coordinate della forma 2-D. Questi polinomi possono essere visti
26 1. Windsurf on Basics
come i coefficienti di un polinomio di ordine N che ha come radici le coordi-
nate della forma stessa.
Vi `e dunque una corrispondenza biunivoca tra il polinomio e le prime N som-
me di potenze. I primi N Principal Moments formano un insieme completo
di invarianti alla permutazione: questo significa che cambiando l’ordine degli
elementi del vettore z non si hanno variazioni ai Principal Moments.
I Principal Moments, per`o, non garantiscono alcuna invarianza a traslazione,
scala e rotazione. Per ottenere questi risultati occorre effettuare un pre-
processing sul vettore di coordinate della forma 2-D.
Per ottenere l’invarianza alla traslazione e alla scala, si effettua una traslazio-
ne della forma intorno al centro di massa della stessa in modo da posizionare
il centro di massa traslato sull’origine del piano cartesiano: in questo modo
la forma 2-D nello spazio verr`a centrata sul suo baricentro.
Se dividiamo il vettore risultato per la propria norma si ottiene anche l’inva-
rianza alla scala: infatti ogni punto del vettore avr`a coordinate reali comprese
tra [-1,1] annullando cos`ı qualsiasi effetto di modifiche della scala.
L’ultimo problema rimane l’invarianza alla rotazione: come gi`a detto `e neces-
sario calcolare un angolo caratteristico della forma θ tale per cui, effettuando
una rotazione di −θ dell’oggetto, si riporta la forma all’angolo base presta-
bilito.
Solo dopo aver effettuato i pre-proccesing descritti, si possono calcolare i
Principal Moments per ottenere descrittori univoci e fedeli alle forme 2-D.
1.5 Momenti 27
Geometric Moments
Si definisce Geometric Moment di ordine (p, q), con p, q > 0 interi, di una
forma 2-D caratterizzata dal vettore complesso z N-Dimensionale:
Mp,q(z) =
N
n=1
xp
nyp
n (1.6)
dove xn e yn sono rispettivamente parte reale e parte immaginaria del gene-
rico elemento complesso zn.
Si definisce il Geometric Moments di ordine n il Geometric Moment Mp,q(z)
tale che p + q = n.
Determinati Geometric Moments, di un particolare ordine, godono di alcune
propriet`a e significati specifici:
• M0,0(z) = N
n=1 x0
ny0
n = N: rappresenta la massa del vettore z, in
particolare per le immagini binarie rappresenta l’area dell’oggetto con-
siderato.
• M1,0
M0,0
e M0,1
M0,0
: rappresentano le coordinate del centro di gravit`a o del
baricentro dell’immagine, rispettivamente all’ascissa e all’ordinata del
baricentro.
• M2,0 e M0,2: rappresentano i momenti di inerzia della forma 2-D,
rispettivamente dell’ascissa e dell’ordinata
Come per i Principal Moments, anche i Geometric Moments non godono, in
maniera intrinseca, dell’invarianza a scala, traslazione e rotazione.
Occorre dunque modificare la definizione classica di Geometric Moments per
ottenere le invarianze desiderate.
Per ottenere l’invarianza alla traslazione viene definito il Central Geome-
tric Moment di ordine (p, q) di una forma 2-D caratterizzata da un vettore
28 1. Windsurf on Basics
complesso z N-Dimensionale:
Mp,q =
N
n=1
(xn − xg)p
(yn − yg)q
(1.7)
dove nuovamente xn e yn rappresentano la parte reale e immaginaria di zn,
con p, q interi non negativi, mentre xg e yg sono le coordinate di massa della
forma z.
Definiamo ora il Normalized Central Geometric Moment di ordine (p, q) come
Vp,q =
Mp,q
Mα
0,0
, α =
p + q
2
+ 1 (1.8)
Il Normalized Central Geometric Moment riesce a garantire, oltre l’invarian-
za alla traslazione, anche l’invarianza per la scala.
Anche per il Geometric Moments, l’invarianza alla rotazione si ottiene cal-
colando l’angolo caratteristico θ della forma per poi effettuare la rotazione
della forma dell’angolo stesso. In particolare si possono usare i momenti di
inerzia per ottenere l’angolo.
In caso la derivata seconda di θ sia positiva allora
θ = −
1
2
tan−1
2M1,1
M0,2 − M2,0
(1.9)
altrimenti
θ = −
1
2
tan−1
2M1,1
M0,2 − M2,0
+
π
2
(1.10)
Complex Moments
Si definisce Complex Moment di ordine (p,q) di una forma 2-D caratte-
rizzata da un vettore N-dimensionale complesso z:
Cp,q(z) =
N
n=1
(xn + jyn)p
(xn − jyn)p
=
N
n=1
zp
n · ¯zq
n (1.11)
1.5 Momenti 29
dove xn e yn rappresentano la parte reale e immaginaria di zn, mentre p,q
sono interi non negativi.
I Complex Moment sono definiti similmente ai Geometric Moment, tanto
da portare le stesse informazioni della forma 2-D, ma riuscendo ad essere
pi`u robusti per l’invarianza rotazionale, ma conseguentemente con maggiore
complessit`a di calcolo.
Per ottenere le invarianze desiderate, bisogna sottoporre i Complex Moments
all’identico pre-processing utilizzato nei Geometric Moments.
Hu’s Moments
I Hu’s Moments, chiamati anche Invarianti di Hu, sono 7 descrittori che
garantiscono autonomamente invarianza alla traslazione, alla scala e alla ro-
tazione.
Vengono calcolati a partire dai Normalized Central Geomtric Moments e si
possono dimostrare essere un caso particolare di Complex Moments.
I Hu’s Moments sono definiti come segue:
h1 = V2,0 + V0,2
h2 = (V2,0 − V0,2)2
+ 4V 2
1,1
h3 = (V3,0 − 3V1,2)2
+ (V0,3 − 3V2,1)2
h4 = (V3,0 + V1,2)2
+ (V0,3 + 2V2,1)2
h5 = (V3,0 − 3V1,2) · (V3,0 + V1,2) · ((V3,0 + V1,2)2
− 3(V0,3 + V2,1)2
)
+(3V2,1 − V3,0) · (V0,3 + V2,1) · (3(V3,0 + V1,2)2
− (V0,3 + V2,1)2
)
h6 = (V2,0 − V0,2) · ((V3,0 + V1,2)2
− (V0,3 + V2,1)2
)
+4V1,1 · (V3,0 + V1,2) · (V0,3 + V2,1)
h7 = (3V2,1 − V0,3) · (V3,0 + V1,2) · ((V3,0 + V1,2)2
− 3(V0,3 + V2,1)2
)
+(3V2,1 − V3,0) · (V0,3 + V2,1) · (3(V3,0 + V1,2)2
− (V0,3 + V2,1)2
)
30 1. Windsurf on Basics
Gli Hu’s Moments sono un insieme completo di invarianti, infatti i primi 6
sono invarianti alla traslazione, scala e rotazione, ovvero presa un’immagine e
fatta ruotare, traslare o scalare, i primi 6 descrittori h1, . . . , h6 non subiranno
variazioni; invece, il settimo momento h7, rappresentando una feature pi`u
complessa, varier`a a seconda dell’angolo di rotazione.
Capitolo 2
Paleografia: ambito di lavoro
2.1 Introduzione
Quando si parla di analisi di immagine, bisogna subito distinguere, o
quanto meno particolarizzare il problema se si tratta di analisi di testi ma-
noscritti.
Il caso che vogliamo trattare, ovvero il falso d’autore, non pu`o che rientrare
in questo caso particolare. Ecco dunque che l’image analysis pu`o cambiare
il proprio scopo da un general-purpose all’obiettivo in analisi.
Il problema viene tradotto in termini di confronto tra pagine manoscritte
al fine di stabilire se il testo appartenga o meno all’autore in analisi: natu-
ralmente `e necessaria una fase preliminare in cui viene eseguita l’analisi di
pagine manoscritte la cui autenticit`a `e sicura, al fine di costruire la nostra
ground-truth.
Le tecniche pi`u utili per l’analisi dei testi a livello informatico sono la stilo-
metria e la paleografia.
La prima si basa sull’identificazione di elementi rari a livello lessicale al fine
di poter creare un modello sull’autore. Per tale obbiettivo esistono diverse
strategie, ma la principale prende il nome di invariante dello scrittore, ovve-
ro la ricerca di caratteristiche che non variano all’interno delle opere di un
31
32 2. Paleografia: ambito di lavoro
autore.
La strada intrapresa da questa tesi si basa invece sull’analisi paleografica.
La paleografia si distingue in paleografia antica e paleografia moderna: la
prima aveva come obbiettivo stabilire genere, data e luogo di varie scritture
analizzandone tutte le caratteristiche ed era incentrata sull’interpretazione
delle scritture antiche; in epoca moderna, invece, l’analisi paleografica si `e
evoluta con lo studio della grafia dell’autore e sul suo modello stilistico di
scrittura.
Per perseguire l’obbiettivo di estrazione semi-automatica di caratteristiche
paleografica a partire da un testo digitale, si `e scelto di utilizzare i seguenti
software: ImageJ e Graphoskop.
Un ulteriore modello adottato, basato sempre sulla paleografia, si incentra sul
Calcolo Metodico del Calibro, metodo descritto e calcolato per la prima volta
da Girolamo Moretti che trova una forte applicazione in campo grafologico.
2.2 ImageJ
ImageJ `e un software opensource sviluppato in Java, nato con lo scopo
di essere concorrente ai pi`u comuni software commerciali per l’image proces-
sing.
Esso consente di visualizzare, modificare, analizzare, processare, salvare e
stampare immagini a 6, 16 e 32bit.
Il programma offre la possibilit`a di calcolare l’area e le statistiche su valori
di pixel relative a regioni, chiamate ROI1
, selezionate dall’utente.
Essendo basata su archittetura Java, esso `e estendibile mediante l’aggiunta
di nuovi plug-in, anch’essi scritti in Java, come, ad esempio, Graphoskop
stesso.
L’interfaccia grafica, mostrata in figura, contiene una barra dei men`u, una
1
Region Of Interest
2.3 Graphoskop 33
barra degli strumenti, una barra di stato e in fine una progress bar.
Figura 2.1: Interfaccia grafica di ImageJ
La barra degli strumenti contiene le funzionalit`a per effettuare operazioni
di zooming e scrolling sulle immagini, per cambiare i colori, per la selezione
delle ROI, etc. . .
I plugins sono moduli di codice che permettono di espandere le funzionalit`a
di ImageJ: per il corretto funzionamento essi devono essere inseriti all’interno
della cartella plugins.
ImageJ svolge un ruolo importante per lo svolgimento della seguente tesi,
poich´e, solo grazie ad esso `e possibile l’attivazione di Graphoskop, il plug-in
scelto per l’analisi paleografica.
Inoltre, data l’effettiva necessit`a di utilizzare questo software, si `e deciso
di importare all’interno dell’intero framework WSS la barra degli strumenti,
cos`ı da poter dare la possibilit`a all’utente di utilizzare le funzioni del software
stesso.
2.3 Graphoskop
Graphoskop `e uno strumento paleografico, concepito come plug-in di Ima-
geJ la cui funzione principale `e di rilevare dati quantitativi di tipo metrologico
a partiare da una rappresentazione digitale.
Ideato come un supporto per il paleografo, pu`o essere utilizzato sulla maggior
parte dei formati immagine: TIFF, GIF, JPEG, BMP, RAW, etc. . . Graphoskop,
una volta estratti i dati di interesse, esegue anche alcuni calcoli statistici dei
dati raccolti e registra automaticamente tali informazioni su un foglio di
calcolo.
34 2. Paleografia: ambito di lavoro
2.3.1 Funzionalit`a
Graphoskop si presenta come uno strumento d’ausilio nel rilievo di di-
stanze tra punti scelti accuratamente dall’utente e indicati manualmente sul-
l’immagine di interesse. Si tratta, dunque, di uno strumento descrittivo che
coniuga l’intervento dell’utente all’automatizzazione dei calcoli e alla regi-
strazione dei risultati.
Presupposto che il plugin lavora su digitalizzazioni dei testi manoscritti, un’a-
nalisi ottimale `e difficile da ottenere, poich´e, a seconda di come `e stato ge-
nerato il testo digitale l’analisi potr`a differire: si pensi solo alla difficolt`a di
ottenere linee di testo perfettamente parallele, o all’irregolarit`a dell’esten-
sione delle aste ascendenti e discendenti, o ancora al modulo delle lettere
spesso variabile. Queste considerazioni hanno portato a dover far fronte a
un costante margine di imprecisione nella valutazione generale: per questo
motivo Graphoskop si basa anche su un’analisi statistica per tenere conto di
questo margine di imprecisione, che risulta, probabilmente, uno dei maggiori
ostacoli all’analisi automatica.
Il plugin esegue, per ogni feature estratta, dei calcoli statistici sui dati rac-
colti quali media, moda e deviazione standard.
Inoltre riesce a rivelare il cosiddetto coefficiente di riempimento in una ROI
definita dall’utente, ovvero la percentuale di pixels bianchi e neri nell’area
selezionata. Per far ci`o Graphoskop ne crea una copia in memoria, la bina-
rizza e ne calcola la percentuale dei pixels.
Graphoskop si rivela essere dunque una scorciatoia per i calcoli eseguiti gior-
nalmente dai paleografi: infatti necessita ancora dell’intervento umano per
la misurazione delle caratteristiche, ma ne semplifica notevolmente i calcoli
generando una base di dati utile agli stessi.
Il plug-in si basa sulla generazione di un foglio di calcolo per ogni immagine
analizzata, e, riassumendo, per ogni caratteristica ne calcola:
• media delle distanze che l’utente ha tracciato
2.3 Graphoskop 35
• deviazione standard, ovvero la dispersione dei valori attorno alla media
• moda, cio`e il valore pi`u ricorrente
Infine Graphoskop permette il salvataggio dell’immagine sottoposta all’ana-
lisi, in cui vengono evidenziate le selezioni effettuate dall’utente.
2.3.2 Interfaccia
L’interfaccia di Graphoskop `e composta dalla barra degli strumenti di
ImageJ, da una finestra secondaria results e dalla finestra proprietaria del
plugin. Quest’ultima, corredata da un righello verticale e orizzontale, con-
tiene tutti i comandi effettivi del plugin. La finestra results, invece, mostra
un’anteprima immediata delle misure effettuate dall’utente che saranno suc-
cessivamente registrate nel foglio di calcolo.
Il plugin dispone di tre tipi di strumenti di selezione: linea, angolo e ret-
tangolo.
Tutti e tre devono essere tracciati dall’utente.
Ogni categoria di selezione prevede un determinato strumento di analisi
paleografica, cos`ı distribuite:
• Linea Orizzontale: permette l’analisi di interlinea, aste ascendenti,
aste discendenti, distanza aste asc/disc, corpo della scrittura, margine
superiore, margine inferiore, distanza generica.
• Linea Verticale: permette l’analisi di spazio tra parole, margine interno,
margine esterno, intercolonna, distanza generica.
• Angolo: permette l’analisi dell’inclinazione aste ascendenti, inclina-
zione aste discendenti, angolo di scrittura (ovvero l’inclinazione della
penna);
• Rettangolo: permette l’analisi di specchio di scrittura e superficie ge-
nerica.
36 2. Paleografia: ambito di lavoro
L’utente, usando i diversi strumenti, delimita una o pi`u ROI, le quali saranno
mostrate sull’immagine corrente. Cliccando “calcola” verr`a chiesto all’uten-
te se si vogliono avere anche elementi statistici come la media, deviazione
standard, moda, area e densit`a. Infine, scelto un percorso di salvataggio,
Graphoskop si adopera per creare il foglio di calcolo.
Registrazione dati
Al momento del primo salvataggio, Graphoskop crea due fogli di calcolo:
uno complessivo chiamato Global e uno per l’immagine analizzata. Il foglio
Global contiene la media, deviazione standard e moda dei valori calcolati
sull’immagine analizzata: poich`e `e possibile associare ad uno stesso file pi`u
immagini, Graphoskop per ognuna di esse crea un foglio di calcolo e aggiunge
una riga al foglio Global con i valori relativi.
Figura 2.2: Foglio Global
Graphoskop, come gi`a detto, crea tanti fogli distinti quante sono le immagini
analizzate. Ogni foglio ha il nome del file trattato e su ognuno di essi saranno
registrate tutte le misure che l’utente avr`a effettuato. Vengono infine aggiun-
te media, deviazione standard e moda per tutti i parametri che le prevedono.
2.4 Disuguale Metodico del Calibro 37
Figura 2.3: Foglio Specifico
2.4 Disuguale Metodico del Calibro
Trattiamo ora un modello diverso dalla classica analisi paleografica, ov-
vero il disuguale metodico del calibro.
Come gi`a detto in descrizione, questo paradigma `e stato creato e illustrato
per la prima volta da Girolamo Moretti, nella sua opera Trattato di Gra-
fologia risalente al 1914.
Il metodo si basa sull’analisi puntuale e ripetuta dell’altezza del medio lette-
rale, ovvero dell’altezza delle lettere prive di aste ascendenti e discendenti.
Come scrive Moretti, nel Trattato scientifico di perizie grafiche su base gra-
fologica (1942)2
parlando della scrittura disuguale metodicamente ,
”
La
disuguaglianza principalmente pu`o essere triplice“
1. “Quando alcune lettere sono un po’ pi`u piccole, altre pi`u grandi. Questa
diversit`a di grandezza deve essere appena percettibile, perch´e altrimenti
si avrebbe una cosa sgraziata.
2. Alcune lettere si contorcono leggermente indietro, altre in avanti. Que-
sta contorsione deve essere molto leggera, altrimenti si andrebbe alla
2
G. Moretti, Trattato scientifico di perizie grafiche su base grafologica, 1942, p. 180
38 2. Paleografia: ambito di lavoro
scrittura contorta.
3. Alcune lettere scattano quasi dalla riga in alto, altre in basso, altre
restano al loro posto. Questo scatto deve ripetersi in modo omogeneo,
da dare l’impressione come di due cavalli, l’uno calmo, l’altro di sangue
attaccati ambedue ad un timone: il calmo procede senza scatti,l’altro,
ogni tanto saltella, scatta, ma resta sempre serrato dai suoi finimenti
al timone.“
Moretti chiama la disuguaglianza del primo tipo Disuguale metodico del Ca-
libro, quella del secondo tipo Disuguale metodico dell’inclinazione, e infine
Disuguale metodico dello scattante il terzo tipo.
Per la tesi si `e scelto di utilizzare solo il Disuguale metodico del Calibro, data
sopratutto l’importanza sottolineata da Moretti stesso.
La dimensione delle lettere del medio letterale presenta variazioni a inter-
valli che si ripetono in maniera metodica. Moretti, come ipotesi, propone
una valore massimo e un valore minimo per la variazione, al di fuori dei quali
le variazioni devono essere considerate come rumore.
Moretti divide, inoltre, il Calibro in tre tipologie: Calibro Grande, Calibro
Medio e Calibro Piccolo.
CALIBRO GRANDE Viene definito Calibro Grande la scrittura il cui
corpo letterale medio ha una grandezza media superiore ai 5mm.
CALIBRO MEDIO Viene definito Calibro Medio la scrittura il cui corpo
letterale medio ha una grandezza media compresa tra i 2mm e i 5mm.
CALIBRO PICCOLO Viene definito Calibro Piccolo la scrittura il cui
corpo letterale medio ha una grandezza media minore ai 2mm.
A secondo della tipologia del Calibro, Moretti impone un valore di massimo
e uno di minimo diverso:
• Valore minimo
2.4 Disuguale Metodico del Calibro 39
– 1
3
(=0.33) di mm per il Calibro Grande e Medio
– 1
4
(=0.25) di mm per il Calibro Piccolo
• Valore massimo
– 2mm per il Calibro Grande
– 1.5mm per il Calibro Medio
– 1mm per il Calibro Piccolo
Infine, per il calcolo finale del Disuguale Metodico del Calibro, Moretti met-
te a disposizione tre tabelle, una per ogni tipo di Calibro, che illustrano a
seconda della grandezza media delle disuguaglianze metodiche e del numero
delle stesse, il grado del disuguale metodico.
Calibro Grande Numero di Intervalli
Valore dell’intervallo 7 6 5 4 3 2 1
2mm 5/10 4/10 3/10 2/10 1/10 0/10 0/10
1.5mm 6/10 5/10 4/10 3/10 2/10 1/10 0/10
1mm 7-8/10 7/10 6/10 5/10 4/10 3/10 2/10
0.5mm 9/10 8/10 7/10 6/10 5/10 4/10 3/10
0.33mm 10/10 9/10 8/10 7/10 6/10 5/10 4/10
Tabella 2.1: Tabella Disuguale Metodico Calibro Grande
40 2. Paleografia: ambito di lavoro
Calibro Medio Numero di Intervalli
Valore dell’intervallo 7 6 5 4 3 2 1
1.5mm 5/10 4/10 3/10 2/10 1/10 0/10 0/10
1.25mm 6/10 5/10 4/10 3/10 2/10 1/10 0/10
1mm 7/10 6/10 5/10 4/10 3/10 2/10 1/10
0.75mm 8/10 7/10 6/10 5/10 4/10 3/10 2/10
0.5mm 9/10 8/10 7/10 6/10 5/10 4/10 3/10
0.33mm 10/10 9/10 8/10 7/10 6/10 5/10 4/10
Tabella 2.2: Tabella Disuguale Metodico Calibro Medio
Calibro Piccolo Numero di Intervalli
Valore dell’intervallo 7 6 5 4 3 2 1
1mm 5/10 4/10 3/10 2/10 1/10 0/10 0/10
0.80mm 6/10 5/10 4/10 3/10 2/10 1/10 0/10
0.75mm 7/10 6/10 5/10 4/10 3/10 2/10 1/10
0.5mm 8/10 7/10 6/10 5/10 4/10 3/10 2/10
0.33mm 9/10 8/10 7/10 6/10 5/10 4/10 3/10
0.25mm 10/10 9/10 8/10 7/10 6/10 5/10 4/10
Tabella 2.3: Tabella Disuguale Metodico Calibro Piccolo
2.4.1 Calcolo del Disuguale Metodico del Calibro
Il calcolo del disuguale metodico del calibro `e un processo automatico
effettuato dai grafologi per stabilirne il grado del disuguale. La prima de-
scrizione, creata e analizzata da Moretti, presentava per`o delle imprecisioni
e lacune che non tenevano conto della ripetizione effettiva nelle differenze del
medio letterale.
Palaferri Nazzareno, uno dei pi`u importanti studenti di Moretti, riprendendo
2.4 Disuguale Metodico del Calibro 41
in mano gli studi del suo maestro, descrive il metodo utilizzato per il calcolo
del Disuguale Metodico del Calibro come segue3
:
1. Quantificare in dmm i singoli valori delle lettere, tralasciando le lunghe
che vanno al di sopra o al di sotto della zona media.
Precisazioni:
- Lettere n e u vanno considerati due impulsi e due misure; nella m
tre impulsi e tre misure
- Le lettere vanno misurate secondo la loro inclinazione
- Le lettere vanno misurate dal loro esterno
- vanno misurati gli ovali della g e delle d minuscole, e quando chiari,
anche i tratti terminali della p
2. Dopo tale campionatura, va calcolato quante volte si ripete una stessa
misura
3. Disporre in scala, per ordine crescente, tutte le misure cos`ı ottenute ed
eseguire l’istogramma al valore di ripetitivit`a
4. Individuare il numero di disuguaglianze metodiche
5. Ricercare il valore medio di intervallo tra una disuguaglianza e l’altra;
per far questo si calcola il campo di variazione totale, ovvero il valore
della disuguaglianza pi`u grande meno quella della disuguaglianza pi`u
piccola
6. Si divide questo valore per il numero di disuguaglianze meno uno. Il
risultato corrisponde al valore medio di ciascuna disuguaglianza meto-
dica
7. Si confronta il numero delle disuguaglianze metodiche ottenute con le
tabelle offerte da Moretti per i vari tipi di Calibro: si ottiene cos`ı il
grado del disuguale metodico.
3
Tratto da L’indagine grafologica e il metodo morettiano di Palaferri Nazzareno
42 2. Paleografia: ambito di lavoro
Il processo, purtroppo, presenta alcune imprecisioni e carenze a livello infor-
mativo per rendere l’algoritmo completamente automatico. Per il calcolo del
disuguale `e necessario avere un numero abbondante di misurazioni, effettua-
te, oltretutto, sulla stessa pagina del manoscritto. Secondo diversi grafologi,
tra cui Palaferri stesso e Mazzolini Giorgio - grafologo peritale - il numero
minimo `e di cento misurazioni. La richiesta di valutare l’altezza del medio
letterale su una stessa pagina `e dovuta ad un fattore psicologico di chi scri-
ve: ogni soggetto condiziona la propria scrittura e la propria grafia in base al
sentimento, all’umore e alla situazione psico-fisica attuale; di conseguenza, se
valutassimo misurazioni di uno stesso scrittore in tempi diversi, queste risul-
terebbero altalenanti, prive della ripetizione necessaria che il Calibro impone
di descrivere e calcolare.
Una ulteriore mancanza nella descrizione dell’algoritmo `e la definizione di ci`o
che Moretti e Palaferri chiamano campana.
Per gli autori una campana altro non `e che la presenza di un picco nell’i-
stogramma delle frequenze: per poterne definire una, `e necessario trovare
l’inizio, la fine e il picco di esse stessa.
Sempre secondo Mazzolini Giorgio, l’inizio della campana si ha ad una mi-
sura il cui valore di frequenza `e al di sotto della soglia Lowerbound, e il cui
valore della misura successiva (crescente) `e superiore Lowerbound. Mentre,
invece, la fine della campana viene individuata al valore di misura, la cui
frequenta `e minore della soglia Lowerbound e il cui valore della misura della
soglia precedente (decrescente) `e superiore al Lowerbound.
Il tipico valore di Lowerbound utilizzato `e cinque.
Esempio In conclusione alla sezione, si vuole mostrare un esempio di co-
me, manualmente, i grafologi calcolino il disuguale metodico del Calibro.
Per l’esempio viene presa in considerazione la seguente immagine manoscrit-
ta (Fig. 2.4).
2.4 Disuguale Metodico del Calibro 43
Figura 2.4: Paragrafo di testo Manoscritto
Dall’immagine sono stati misurati i seguenti valori sul medio letterale:
1.2 1.9 3 3 2.5 2 2 1.5 1.9 2
2.1 2.5 3.1 2.6 2.8 1.8 1.8 2.8 2.8 2.8 3.2 2.8 2 1.9 2.9 1.1
3.9 2.1 2.5 3.1 3 1.6 1 1.9 2.5 3
2.7 3.5 2 2 1.9 2 1.5 2 3.5 2 1.9 2 4 2.3 2.1 2.1 2.9 2.4 2.1 2 2.1
2.3 2.5 3 2.5 1.5 2.1 2.3 3.1 2.2 2.1 3.1 4 2 2.5 2 3
1.8 3 2.8 2 1.9 2.5 2.9 2.1 2.5 2 1.9 2.5 2.1 1.9 2.6
3.1 2.3 1.9 2 2.1 2.8 3 3.1 3 2.5 3 3.2
Si `e calcolata la media dei valori per determinare la tipologia del Calibro:
la media risulta essere 2.403 e di conseguenza l’autore possiede un Calibro
Medio.
Il passo successivo prevede di ordinare, quantizzare e aggiungere misura-
zioni mancanti ai valori appena mostrati. Il risultato `e mostrato in tabella
2.4.
44 2. Paleografia: ambito di lavoro
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1
0 0 0 0 0 0 0 0 0 1 1
1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2
1 0 0 3 1 0 3 10 16 11 1
2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3
4 1 11 2 1 7 3 10 6 2 0
3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1
0 2 0 0 0 1 2 0
Tabella 2.4: Tabella di valori quantizzati
Si `e creato successivamente l’istogramma dei valori mostrato in figura 2.5.
Figura 2.5: Istogramma delle misurazioni del medio letterale
Dall’istogramma `e stato possibile individuare le campane descritte dall’algo-
ritmo; ne sono state individuate quattro:
1. Intervallo [1.8, 2.2] con picco a 2.0 di frequenza 16.
2. Intervallo [2.4, 2.6] con picco a 2.5 di frequenza 11.
2.4 Disuguale Metodico del Calibro 45
3. Intervallo [2.7, 2.9] con picco a 2.8 di frequenza 7.
4. Intervallo [2.9, 3.2] con picco a 3.0 di frequenza 10.
Bisogna ora calcolare la differenza tra il centro dell’ultima e della prima cam-
pana, ovvero 3.0 − 2.0 = 1. Quest’ultimo deve essere diviso per il numero
di campane meno uno, ovvero 3.0−2.0
4−1
= 1
3
= 0.33. Abbiamo trovato il va-
lore medio di ogni campana: bisogna ora rivolgersi alle tabelle Morettiane,
nello specifico alla tabella del Calibro Medio (Tab 2.2). Il grado del disu-
guale metodico del calibro in corrispondenza di 4 campane e di valore di
quantizzazione di 0.33 `e 7/10.
2.4.2 Calibro come Pattern
L’idea del disuguale metodico del Calibro si basa sull’analisi in frequenza
dell’altezza del medio letterale.
Quando si parla di frequenza di valori e della sua analisi, nasce subito il con-
cetto di ricerca di un pattern all’interno degli stessi, ovvero la ricerca di un
modello che si ripete in maniera regolare nello spazio e/o nel tempo.
L’analisi pattern matching, e nel suo problema pi`u specifico, di subpattern
matching, `e un lavoro ormai studiato da decenni, che presenta un suo stato
dell’arte. Il Calibro descritto da Moretti presenta alcune idee richiamabili e
associabili ad una analisi e a una ricerca di una ripetizione nella scrittura.
Trattare ripetizioni porta l’evoluzione naturale alla ricerca di pattern, cio`e
nulla di pi`u che una sequenza di valori che si ripetono in maniera metodica
nel tempo.
Il problema `e noto, discusso da molti autori e studiosi e permette dunque
una analisi utilizzando ci`o che finora `e stato studiato e proposto come buona
soluzione allo stesso.
Si vuole dapprima presentare un problema pi`u generale, ovvero del pattern
matching, che successivamente si particolarizza in un problema derivato, ov-
vero del partial pattern matching, di cui possiamo vedere il Calibro come
una istanza specifica.
46 2. Paleografia: ambito di lavoro
Lo studio del pattern matching nasce nel settore dell’informatica con lo sco-
po di trovare un certo motivo, ovvero il pattern, all’interno di un oggetto
composito. Il problema `e molto generale, poich´e esso pu`o includere oggetti
come stringhe, e quindi la ricerca di una parola all’interno di un testo, come
anche il riconoscimento di contorni e forme di un singolo oggetto all’interno
di una immagine.
Ci`o che si vuole far notare `e che il problema `e molto simile a quel che questo
paragrafo sta descrivendo, ovvero una ricerca di un motivo, in questo caso la
differenza del medio letterale, all’interno di un testo.
Il pattern matching, per`o, richiede che il match, ovvero l’azione di far corri-
spondere la stringa di query a una presente nel testo, debba essere un match
esatto. Si vuole mostrare un esempio pratico di pattern matching nella sua
forma pi`u banale, ovvero la ricerca di una parola all’interno di un testo.
Si chiede all’algoritmo di cercare la parola “Rubik ” all’interno del seguente
testo:
Il cubo di Rubik o cubo magico (Rubik-kocka in ungherese) `e
un celebre rompicapo (in particolare un twisty puzzle) inven-
tato dal professore di architettura e scultore ungherese Ern˝o
Rubik nel 1974.
Nell’esempio, la parola viene trovata tre volte, evidenziate in grassetto, e l’al-
goritmo finisce con successo. Il Calibro, per`o, non pu`o basarsi su un match
esatto di questo tipo, poich´e sfrutta un tipo di feature diverso, non pi`u di
stringhe, quanto piuttosto di valori numerici che rappresentano una differen-
za tra l’altezza di una lettera e la successiva. Questo tipo di ricerca non pu`o
avvenire con una corrispondenza “uno-a-uno” come il pattern matching, in
parte, fa, ma vi `e la richiesta di trovare una sotto sequenza in un pattern,
ovvero vi si pone la domanda del sub-pattern matching.
Il sub-pattern matching `e un caso particolare del pattern matching, in cui
non si ha l’intero pattern da dover cercare, ma bisogna invece effettuare un
matching tra un sotto pattern e un pattern, che poi venga trovato all’interno
di un oggetto successivo.
2.4 Disuguale Metodico del Calibro 47
La ricerca, attualmente, `e un problema aperto, poich´e vi sono determinati
elementi che giocano a sfavore della stessa.
Una recente pubblicazione, An elastic partial shape matching technique, re-
datta da Longin Jan Latecki, Vasileios Megalooikonomou, Qiang Wang e
Deguang Yu, propone una buona soluzione a un problema simile, ma di dif-
ficolt`a maggiore. Il paper descrivere la risoluzione del problema di poter
confrontare due figure attraverso i contorni, e darne un valore di somiglian-
za, con la difficolt`a maggiore in cui una delle due figure sia solo una “sotto
parte” della figura stessa.
Un’esempio descritto nel paper, che si vuole riportare per chiarezza di lettu-
ra, `e la somiglianza delle code di pesce. L’immagini di query `e esattamente
una coda di un pesce, e vi `e una ricerca all’interno di un dataset compren-
dente immagini di pesci. Come si pu`o intuire, non si pu`o avere una ricerca
“esatta”, poich´e l’immagine di query non `e identica alle code presenti nel
dataset: ecco che il testo cerca di dare una soluzione trattando somiglianze
e non identit`a sulle immagini.
I problemi descritti e noti in letteratura sono principalmente tre, ovvero il
problema della lunghezza, della scala e del rumore. Gli autori propongono e
risolvono i problemi introducendo una nuova distanza, chiamata MVM, ba-
sata su distanze gi`a pi`u note e utilizzando tecniche proposte in letteratura
per ottenere invarianza alle problematiche descritte.
Il paper citato viene utilizzato come spunto per creare un modello d’analisi
per il nostro problema, ovvero come ricercare la presenza di un “pattern” al-
l’interno di un ulteriore “pattern”, presente nella scrittura manoscritta di un
autore. Per una pi`u particolare descrizione alla risoluzione del problema, di
non interesse in questa tesi, si rimanda alla lettura della pubblicazione stessa.
Da tutte le osservazioni finora fatte, si `e voluto dunque creare il modello
del Calibro come Pattern, ovvero di una ricerca della frequenza dei valori che
vengono utilizzati per il calcolo del disuguale, in maniera metodica all’interno
della scrittura di un autore. L’analisi da effettuare, per`o, non pu`o basarsi
48 2. Paleografia: ambito di lavoro
sull’effettiva altezza del medio letterale, in quanto, a seconda del momento
o dello spazio messo a disposizione all’autore per scrivere, l’altezza stessa
potrebbe subire delle variazioni.
L’elemento costitutivo del disuguale metodico del calibro, invece, viene de-
scritto come
La dimensione delle lettere della zona media presenta variazioni
a intervalli che si ripetono in maniera metodica.
Dunque, il pattern va cercato non nell’effettiva altezza del medio letterale,
quanto piuttosto nella variazione di esso.
Il motivo principale, dunque, per cui viene utilizzata la differenza di altez-
ze e non l’effettiva altezza, va ricercato in un fattore psicologico dell’autore
durante la scrittura, alla quale si deve aggiungere la non ovvia presenza o
assenza di tratti delimitatori nei fogli di una pagina.
Il Calibro come Pattern cerca di individuare una ripetizione della differenza
del medio letterale in maniera regolare nel tempo e nello spazio, ovvero cer-
ca di individuare un pattern all’interno di una scrittura. Ecco, quindi, che
non si rende pi`u necessaria la richiesta di cento misurazioni minime, poich´e
per l’analisi `e sufficiente anche una singola parola per cercarne effettivamen-
te una regolarit`a. Va, per`o, specificato che all’aumentare delle misurazioni,
la presenza di informazioni cresce e ci`o implica un modello sicuramente pi`u
ricco, ma con la possibile presenza di rumore ed errore in pi`u.
Si vuole sottolineare la grande differenza fra il Calibro inteso come disuguale
metodico e il Calibro come Pattern. Si osservi la seguente figura (Fig. 2.6).
Le features rosse rappresentano le altezze del medio letterale, e sono le valu-
tazioni utilizzate dal calcolo morettiano del disuguale metodico. Il grado del
calibro si basa solo su una quantizzazione di queste misure, ovvero non vi
cerca un ordine o non vi cerca una effettiva ripetizione, bens`ı tenta di trovare
quali siano le “misurazioni” pi`u frequenti e da queste ne calcola un grado sul-
l’autore. Se invece si analizzano le features blu estratte, esse rappresentano
la differenza delle altezze tra una lettera e la successiva. Queste differenze
sono ci`o su cui vogliamo basare il Calibro come Pattern.
2.4 Disuguale Metodico del Calibro 49
Figura 2.6: Analisi e confronto tra disuguale metodico del Calibro e Calibro
come Pattern
Ci`o che si vuole osservare `e una effettiva richiesta ed esigenza di ordine sul-
l’analisi, e conseguentemente una possibilit`a di poter ritrovare un pattern in
un testo.
Nel calcolo del disuguale metodico non vi `e una possibilit`a di distinguere una
lettera da un’altra, o quanto meno una parola dall’altra, poich´e essa analizza
solo la frequenza dell’altezza. Con il Calibro come Pattern, invece, si cerca di
mantenere una informazione in pi`u, ovvero ci`o che poi viene chiamato motivo,
pattern: questo nuovo paradigma, infatti, cerca di ritrovare una ripetizione
in questa differenza di altezze, preoccupandosi, dunque, di mantenere anche
una sorta di accoppiamento fra le lettere.
Se, ad esempio, una parola contiene la sequenza di grafemi “via”, con il di-
suguale metodico l’informazione effettiva di questa sillaba all’interno di una
parola viene persa, poich´e non si mantengono i rapporti tra le singole let-
tere, conseguentemente qualsiasi permutazione di queste lettere potrebbero
portare ad uno stesso risultato. Invece, analizzando la sillaba con le diffe-
renze di altezze, si cerca di mantenere una informazione ritrovabile in tutte
le successive parole che possano contenere la sillaba stessa, come ad esempio
“funivia” o “viadotto”. Con questo, dunque, vi `e una possibilit`a in pi`u di
poter valutare una effettiva distanza tra le parole, poich´e due autori diversi
portano, non necessariamente, a differenze diverse e conseguentemente ad
aumentare la dissimilarit`a fra le due scritture.
Riprendiamo l’esempio mostrato in figura 2.6. Con il Calibro come Pattern si
50 2. Paleografia: ambito di lavoro
cerca di identificare, all’interno di un testo, o nel confronto con altre parole,
il pattern indicato dai seguenti valori (0.3, 0.0, 0.5, 0.4, 0.4). Nel calcolo della
similarit`a, si confronta un pattern con un altro, cercando di accoppiare nel
miglior modo possibile questi valori.
Il disuguale metodico, invece, si propone semplicemente di assegnare una fre-
quenza sugli stessi, perdendo l’effettiva informazione sulla parola sottoposta
all’analisi. Il Calibro come Pattern, dunque, si propone come una tipologia
derivante dal calibro classico, ma che tenga conto di informazioni di interesse
maggiori, non espresse effettivamente nella descrizione Morettiana.
Si noti che il Calibro come Pattern nasce come sperimentazione, dovuta
all’esperienza ingegneristica non assimilata da autori quali Moretti, che, no-
nostante la loro inesperienza nel campo matematico, sono riusciti a creare
un modello che si basi su paradigmi scientificamente noti. Trattasi dunque
di un modello nuovo, non esistente nel campo della paleografia e grafologia,
il quale si vuole per la prima volta portare a descrizione per vederne il com-
portamento e il risultato.
L’analisi che viene effettuata, dunque, si basa su conoscenze presenti in un
settore informatico ben sviluppato, ovvero del pattern matching, del quale
vengono utilizzate idee e concetti, con conseguenti soluzioni proposte, per
poter sviluppare il tema e darne una sua identit`a.
Il modello creato nella tesi si basa principalmente su due fattori: l’estrazione
dell’altezza del medio letterale, con conseguente costruzione di un pattern, e
l’analisi e confronto degli effettivi motivi creati nel punto precedente.
Per la creazione del modello si deve ancora una volta richiedere l’intervento
umano: infatti, con la tesi attuale, non si `e ricercato e studiato alcun modello
automatico per l’estrazione automatica della feature richiesta, ovvero dell’al-
tezza del medio letterale. Va ricordato che l’approccio semi-automatico, come
quello trattato, non pu`o essere privo di errore e rumore, sintomatico dell’u-
tente che ne estrae le misurazioni.
L’unico modo, attualmente per tentare di rendere in parte meno problema-
2.4 Disuguale Metodico del Calibro 51
tica la presenza di questi errori, `e intervenire sulla ricerca di pattern e nel
matching fra essi.
Come verr`a successivamente descritto, si `e tentato di risolvere in parte il
problema, utilizzando alcune peculiarit`a tipiche del sub-pattern matching.
Si vuole nuovamente ricordare che l’analisi del Calibro come Pattern si basa
su una naturale evoluzione dell’idea del Calibro introdotta da Moretti, uti-
lizzando tecniche ingegneristiche e informatiche pi`u recenti e attuali, ormai
studiate e risolte nell’arco dell’ultima decade: tutto ci`o implica una analisi
del tutto sperimentale, priva di un supporto teorico sul quale far affidamento.
Il Calibro come Pattern, dunque, viene descritto e analizzato attraverso un
insieme di concetti e idee che prendono spunto dalle pi`u diverse materie, par-
tendo da un’analisi grafologica proposta da Moretti, alla quale si unisce una
risoluzione automatica di un problema ben noto quello del pattern matching.
52 2. Paleografia: ambito di lavoro
Capitolo 3
WSS: Writing Similarity Search
3.1 Introduzione
Writing Similarity Search `e un’applicazione per lo studio e l’analisi di ele-
menti caratterizzanti un testo a livello di singola parola, frase, o documento
in maniera automatica (SIFT/SURF e Momenti) o semi-automatica (Paleo-
grafia).
Si basa sul framework WindSurf, con l’obiettivo di focalizzarsi sul testo ma-
noscritto.
L’obiettivo principale di questa tesi `e di estendere WSS per permettere l’uti-
lizzo di nuove tecniche per riconoscere la scrittura manoscritta quali l’analisi
paleografica e il disuguale metodico del calibro.
Un secondo obiettivo perseguito `e stata l’adattamento e reingegnerizzazione
del software ad un unico modello, in modo da rendere il pi`u coerenti possibili
i vari moduli del software stesso.
Prima di introdurre le nuove funzionalit`a aggiunte all’intero ecosistema, si
vuole formalizzare, in maniera concisa, il problema che stiamo affrontando. Il
problema generale pu`o essere cos`ı formulato: “Data una immagine di query
I, si vuole attribuire alla stessa una classe, dapprima ignota, fra le possibili
53
54 3. WSS: Writing Similarity Search
disponibili all’interno della ground-truth.”. Se si entra nel settore pi`u parti-
colare del falso d’autore, in quale WSS opera, si pu`o attribuire alla “classe” il
valore di “autore”, dunque, a partire da una immagine manoscritta di autore
sconosciuto, si vuole poterne attribuire la paternit`a.
Come si potr`a vedere, WritingSimilarity Search utilizza query k-NN come
strumento di classificazione.
La seguente immagine (Fig. 3.1) vuole presentare, in maniera sintetica, i
passi che il framework segue per riuscire a risolvere il problema.
Figura 3.1: Schema riassuntivo di come WSS opera da classificatore
Il framework deve avere a disposizione una ground-truth di elementi per poter
adoperare le proprie scelte. Ovviamente ci`o richiede la presenza di un data-
base di features utili al confronto. All’atto di query, il framework confronta
le feature estratte dall’immagine di test con quelle presente nel database uti-
lizzando tre step fondamentali: Matching, Distance, Ranking. Ognuna di
queste componenti `e indipendente dall’altra, ci`o per rendere il framework il
pi`u generale possibile.
All’atto di classificazione, WSS utilizza come il k-NN Ranking, ovvero i k
oggetti pi`u simili all’immagine di query: infatti WSS predice la classe, e
3.2 Interfaccia 55
in questo caso l’autore, come quello pi`u presente all’interno dell’insieme di
oggetti restituiti dal Ranking stesso. Si vuole sottolineare come non tutti i
paradigmi che verranno presentati sfruttano tutti i componenti, poich´e, in
determinati casi, non sono applicabili.
WritingSimilarity Search, come gi`a detto, `e una estensione del framework
pi`u generale WindSurf e dunque utilizzer`a caratteristiche e peculiarit`a di
quest’ultimo per poter mantenere una coerenza sullo sviluppo ed esecuzione.
3.2 Interfaccia
L’interfaccia di WSS `e stata modificata per riadattarsi alle nuove funzio-
nalit`a introdotte.
3.2.1 Main GUI
La finestra principale (Fig. 3.2) `e stata modificata rispetto alla precedente
versione. Si `e deciso di togliere la finestra SalientPoint Image in cui veniva
mostrata oltre all’originale, anche l’immagine con i SalientPoint trovato: essa
`e stata rimossa poich`e di poca utilit`a (viene mostrata durante la ricerca kNN).
Al suo posto `e apparsa una finestra con presenti bottoni, divisi per categoria,
che descrivono le principali caratterstiche sel framework.
I tasti presenti, come detto, descrivono le funzioni principali di WSS:
• Open Image: utilizza il plug-in ImageJ e permette di aprire una
immagine che verr`a visualizzata nella finestra relativa.
• Extract Feature (Image): serve per l’estrazione automatica di fea-
ture da un’immagine attraverso gli algoritmi SIFT/SURF o attraverso
i Momenti
56 3. WSS: Writing Similarity Search
Figura 3.2: Finestra principale di WSS
• Extract Feature (Folder): permette l’estrazione automatica di fea-
tures, attraverso SIFT/SURF o Momenti, di tutte le immagini presenti
in una cartella e sotto-cartelle.
• Query: funzione adibita ad effettuare le query sul database basate sulle
features automatiche permettendo sia kNN che kNN for Classification.
• Query with Clustering: basandosi sempre sulle features automati-
che, esegue query utilizzando clustering precedentemente creati.
• Clustering: permette di creare i clusters utilizzando le classi delle
immagini presenti nel database.
3.2 Interfaccia 57
• Extract Paleography Feature: aprir`a un nuovo modulo per permet-
tere l’estrazione semi-automatica di feature paleografiche.
• Show Paleography Feature: permette di mostrare le misurazioni
paleografiche effettuate in precedenza sull’immagine aperta.
• Clustering Paleograohy: similmente al modulo automatico, ven-
gono generati i clusters in base alle immagini analizzate in maniera
paleografica/grafologica.
• Compare Paleography: aprir`a un nuovo modulo per dare la possi-
bilit`a all’utente di comparare le features di una singola immagine con
i clusters generati.
• k-NN Paleography Query: permette di effettuare una query k-NN
utilizzando tutte o solo alcune delle features paleografiche estratte.
3.2.2 Extract Paleography Feature
In figura 3.3 viene mostrata l’interfaccia grafica del modulo di estrazione
delle features paleografiche.
Il modulo, oltre ad avvertire l’utente del database su cui si sta lavorando e del
vincolo imposto sull’utilizzo si mm/cm come unit`a di misura di Graphoskop,
presenta diversi componenti.
Sono disponibili quattro pulsanti:
• Add Image: permette di aprire una nuova immagine.
• Graphoskop: permette di analizzare l’immagine aperta attraverso il
plug-in Graphoskop.
• Extract Office: poich`e Graphoskop permette il salvataggio delle fea-
tures solo su fogli di calcolo, si `e reso necessario una funzione per
l’estrazione delle stesse dai file creati da Graphoskop.
58 3. WSS: Writing Similarity Search
Figura 3.3: Finestra Extract Paleography Feature
• Persistent: permette di salvare le feature estratte attraverso Grapho-
skop (e quindi presenti in foglio di calcolo) in maniera persistente sul
database indicato all’utente.
Vi `e una combobox1
che d`a la possibilit`a all’utente di visualizzare le varie
features estratte sulla tabella sottostante.
All’atto di apertura di un’immagine, se essa risulta gi`a presente nel database
verranno caricate le sue features nella tabella.
Infine, quando l’utente vorr`a salvare in maniera persistente i dati, apparir`a
una finestra di conferma nel quale viene indicato il percorso dell’immagine,
il percorso del foglio di calcolo da cui si sono prese le features ed infine se
1
Menu a tendina.
3.2 Interfaccia 59
l’immagine era gi`a presente o meno nel database, e in caso affermativo di
poterla aggiornare.
60 3. WSS: Writing Similarity Search
3.2.3 Compare Paleography Feature
La sezione Compare Paleography Feature permette all’utente di far un
confronto tra le feature paleografiche di una singola immagine con i cluster
creati durante la fase di clustering. L’interfaccia viene mostrata in figura 3.4.
Figura 3.4: Finestra Compare Paleography Feature
Sono presenti diversi componenti. Prima di tutto, nella barra superiore, oltre
a fornire all’utente il nome del database su cui si sta lavorando, viene data la
possibilit`a di scegliere il cluster da cui estrarre le feature: sono presenti una
combobox per la selezione dell’autore e due checkbox2
con relativo textfield3
che permettono di aumentare la granularit`a inserendo la parola e l’anno del
cluster da analizzare.
Nella sezione principale troviamo:
2
Componente a spunta.
3
Componente per la scrittura di testo.
3.2 Interfaccia 61
• Image Panel: ovvero un pannello per poter visualizzare l’immagine di
query
• Tabella: la tabella in cui vengono visualizzate le features del cluster
selezionato, dell’immagine di query, e la loro distanza4
• Open Query Image: permette di aprire l’immagine di query.
• Extract From Training: estrare le features del cluster selezionato
• Compare: calcola la distanza tra l’immagine e il cluster.
Si noti che se l’utente apre una immagine che non `e stata analizzata, il
programma sollever`a un’errore. Allo stesso modo, accade se l’utente non hai
mai generato i cluster e quindi non ve ne `e alcuno da cui poter estrarre le
features.
4
In questo caso la distanza altro non `e che la differenza tra i valori.
62 3. WSS: Writing Similarity Search
3.2.4 Evaluate Calibro
L’ultima finestra presentata `e Evaluate Calibro. Questa componente `e
raggiungibile solo attraverso il menu della schermata principale, nella sotto-
sezione di Semi-Automatic Features5
e rappresenta la sezione per il calcolo
del Disuguale Metodico del Calibro.
Figura 3.5: Finestra Evaluate Calibro
L’interfaccia `e semanticamente divisa in due sezioni: a sinistra la finestra
per l’estrazione dei valori, a destra il risultato del calcolo del metodico del
calibro.
La finestra a sinistra presenta diversi componenti: sei bottoni, una tabella,
un textfield e un pannello. Il pannello ha il compito di mostrare una ante-
prima dell’immagine in analisi; cos`ı, allo stesso modo, la tabella permette la
visualizzazione delle misurazioni effettuate sull’immagine.
I bottoni invece hanno i seguenti compiti:
5
Main GUI → Tools → Semi-Automatic Feature → Evaluate Calibro
3.2 Interfaccia 63
Open Image Permette l’apertura di una immagine, e, se gi`a presente nel
database, il caricamento dei suoi valori nella tabella.
Graphoskop Come nel modulo di Extract Paleography, vi `e la possibilit`a
di estrazione di misurazioni del medio letterale attraverso Graphoskop.
`E richiesto l’utilizzo della componente forma generica per calcolare il
medio letterale di ogni singola lettera.
Extract Office Permette di caricare in tabella i valori estratti: oltre a dare
la possibilit`a di caricarli dal foglio di calcolo generato da Graphoskop,
`e permesso anche l’utilizzo di un file .txt in cui vengano inserite le
misurazioni effettuate. In questo ultimo caso, la sintassi del file `e rela-
tivamente generica, si possono scrivere le misurazioni sulla stessa riga,
o in righe successive, o inserendo pi`u valori su righe diverse.
Add Il bottone Add, associato al textfield al suo fianco, permette di aggiun-
gere manualmente una misurazione.
Clear Empty Viene data la possibilit`a all’utente di modificare o cancellare
un valore presente nella tabella. Se si rimuovono delle misurazioni,
il tasto Clear Empty aggiorna la tabella, eliminando le righe rimaste
vuote.
Persistent Permette di rendere persistenti i valori presenti in tabella sul
database, associandoli all’immagine visualizzata nel pannello di ante-
prima.
La seconda sezione, adibita a mostrare i risultati, `e suddivisa come segue:
• Due Radio Buttons6
• Una Combobox
• Due Checkbox con associate due Textfield
6
Componente che permette di effettuare una scelta singola fra quelle disponibili
64 3. WSS: Writing Similarity Search
• Un Button
• Cinque Label per la visualizzazione del risultato.
I RadioButton permettono di scegliere se calcolare il calibro sulla singola
immagine aperta, con i valori mostrati in tabella, o su un cluster preceden-
temente generato. Se si ricade su questa seconda scelta, vengono messe a
disposizioni le varie opzioni per decidere il cluster su cui calcolare il calibro.
Il bottone Evaluate Calibro calcoler`a e stamper`a a schermo i risultati del
disuguale metodico del calibro. Infine, l’ultimo bottone Query k-NN aprir`a
un nuovo Dialog per l’impostazione dei parametri utili alla risoluzione di una
query k-NN basata sul Calibro come Pattern.
3.3 Estensione WSS
L’obiettivo della tesi, come gi`a detto, `e stato di aggiungere al framework
WSS la componente d’analisi paleografica.
Per mantenere consistenza con l’intero modulo di Windsurf basato su Re-
gioni, `e stato deciso di creare un nuovo package Paleography all’interno del
quale sono state aggiunte diverse classi per raggiungere l’obiettivo.
In primo luogo verr`a dato una visione generale del package, andando di passo
in passo a descrivere le varie classi.
3.3.1 Package Paleography
Il package Paleography (Fig. 3.6) contiene 4 classi e un ulteriore package.
Le classi presenti sono:
PaleographyImage Rappresentazione di una immagine paleografica
CalibroImage Rappresentazione di una immagine per l’individuazione del
Calibro
3.3 Estensione WSS 65
Figura 3.6: UML Paleography Package
ExtractFromOffice Classe utility per l’estrazione di feature da un foglio
di calcolo
EvaluateCalibro Classe contenente i metodi per il calcolo del disuguale
metodico del calibro.
Il package PaleographyRegion contiene invece la classe astratta Paleography-
Image e diverse sue implementazioni, ognuna rappresentativa di una deter-
minata feature.
3.3.2 PaleographyImage Class
Per riuscire ad ottenere un modello Region-Based, si `e deciso di far esten-
dere PaleographyImage alla classe astratta Image.
Il paradigma Region-Based prevede che ogni immagine sia caratterizzata dal-
le regione di cui essa `e composta: per rispettarne la struttura, la classe
PaleographyImage viene rappresentata da nove Regioni di diverso tipo:
• PaleographyLineSpacingRegion
• PaleographyWritingBodyRegion
66 3. WSS: Writing Similarity Search
• PaleographyWritingBodyASCRegion
• PaleographyWritingBodyDESCRegion
• PaleographyWritingAnglesRegion
• PaleographyWritingAnglesASCRegion
• PaleographyWritingAnglesDESCRegion
• PaleographySpacingWordsRegion
• PaleographyDensityRegion
Ognuna di queste regioni rappresenta un tipo di features, di conseguenza
una immagine paleografica viene rappresentata dal numero di misurazioni
effettuate per ogni tipo di Regione diversa.
Da come si evince dalla figura 3.7, tutti i tipi di regioni estendono, o per
meglio dire, implementano la classe astratta PaleographyRegion, la quale a
sua volta estende la classe Region.
La classe PaleographyRegion, oltre ad avere un campo protected double
value che rappresenta il valore della feature, contiene i seguenti metodi:
• public PaleographyRegion(ImageID id)
Costruttore con parametro in ingresso ImageID per assegnare l’id alla
regione. Inoltre nel costruttore `e presente il metodo setSize(1) per
impostarne la grandezza a uno.
• public void setValue(double v)
Metodo pubblico che imposta il valore v uguale al valore double in
ingresso value.
• public void setFeature(String s)
Metodo pubblico analogo a setValue con la differenza di avere in Input
un oggetto String invece che double
3.3 Estensione WSS 67
Figura 3.7: UML PaleographyImage Class
• public double getValue()
Metodo pubblico che restituisce il valore value come double
• public String getFeature()
Metodo pubblico che restituisce il valore value come String.
• public double distance(Region r)
Metodo @Override pubblico che calcola la distanza tra la Region in
esame e la Region di input r. Il metodo restituisce la differenza in
valore assoluto dei rispettivi valori value.
68 3. WSS: Writing Similarity Search
Se prendiamo in esame una qualsiasi implementazione di PaleographyRegion,
troviamo in aggiunta solo il seguente costruttore
• public PaleographyXYZRegion(ImageID id, double v)
Costruttore che accetta in ingresso la consueta ImageID con in pi`u
il valore double v da assegnare alla variabile value precedentemente
descritta.
Come gi`a detto, la PaleographyImage `e caratterizzata dalle misure di ogni
singola tipo di Region e per riuscire a ottenerne i vettori delle misure vengono
implementati nove campi protected, uno per ogni tipo di regione:
• protected AbstractList<Region> linespacing;
• protected AbstractList<Region> writingbody;
• protected AbstractList<Region> writingbodyasc;
• protected AbstractList<Region> writingbodydesc;
• protected AbstractList<Region> writingangles;
• protected AbstractList<Region> writinganglesasc;
• protected AbstractList<Region> writinganglesdesc;
• protected AbstractList<Region> spacingwords;
• protected AbstractList<Region> density;
La classe PaleographyImage implementa i seguenti metodi:
• public PaleographyImage(ImageID id)
Costruttore con parametro di ingresso ImageID che imposta l’id del-
l’immagine e istanzia i vari vettori.
• public PaleographyImage(ImageID id, String resultString)
Copy Constructor con anche una Stringa contenente le features nel
formato descritto pi`u avanti.
3.3 Estensione WSS 69
• private double getAVG(AbstractList<Region> src)
Metodo privato che restituisce la media del vettore di feature src dato
in input.
• public double[] getAVGs()
Metodo pubblico che restituisce un array di double contenente la media
di ogni tipo di Region.
• public void setFeatures(String vector)
Metodo pubblico che permette di impostare i valori di ogni singola
feature al vettore corrispondente. La stringa vector deve avere questo
formato:
– ’ ’: ovvero stringa vuota. Il metodo allora pulisce il vettore
corrispondente da tutti gli elementi
– v1,...,vn-c1,...,cn-...-s1,...,sn: in cui la stringa ha un
preciso ordine. Ogni ’-’ segna la fine di un vettore di feature
dall’altro, e all’interno del singolo vettore, il carattere ’,’ divide il
valore di una feature dall’altra.
• private void setRegionFeatures(String vector,
AbstractList<Region> v)
Metodo privato di supporto che permette di creare il vettore di Region
a partire da una stringa vector.
• public String getFeatures()
Metodo pubblico che restituisce i vettori di tutte le features come String
usando il formato precedentemente descritto.
• public String getRegionFeature(AbstractList<Region> vector)
Metodo pubblico che restituisce un singolo vettore di Region come
String usando il formato precedentemente descritto.
70 3. WSS: Writing Similarity Search
Vengono inoltre forniti diversi metodi getter e setter per ottenere le features
come double, piuttosto che la loro media, e di impostarne i valori attraverso
array di double o stringhe.
3.3 Estensione WSS 71
3.3.3 WrapperFeaturePaleographyMySQL Class
Per gestire a livello database le immagini e le features paleografiche `e stata
implementata la nuova classe WrapperFeaturePaleographyMySQL, la quale,
allo scopo di mantenere inalterate le funzioni finora presentate, estende la
classe WrapperFeatureMomentsMySQL.
Figura 3.8: UML WrapperFeaturePaleographyMySQL Class
La classe contiene diversi campi final protected che definisco semplicemente
il nome delle tabelle del database.
WrapperFeaturePaleographyMySQL implementa i seguenti metodi:
72 3. WSS: Writing Similarity Search
• public boolean createPaleographyFeatTablesInDB()
Metodo che crea tutte le tabelle necessarie nel database; in particolare
crea 9 tabelle per contenere le features di ogni tipo di Region, una per
gestire i clusters a livello generale, e altre 9 per la gestione dei cluster
di ogni tipo di Region.
• public void insert paleography(Image img, String imageURL)
Data in input una PaleographyImage e il suo path, il metodo inserisce
le features dell’immagine nel database.
• public void insert paleographyFromOffice(String imageURL,
String ExcelURL)
Metodo simile a insert paleography, ma con la possibilit`a di specificare
il percorso dell’immagine e del foglio di calcolo da cui importare i valori.
• public void insert paleographyFromResult(String imageURL,
String resultFeature)
Ulteriore metodo di supporto per inserire una immagine nel databa-
se specificando il path dell’immagine e una stringa rappresentante le
features.
• public String retrievePaleographyFeatureFromID(ImageID id)
Dato l’id dell’immagine, il metodo restituisce le sue features, presenti
nel database, sotto forma di stringa.
• public Image retrieveImage paleography(ImageID id)
Metodo che restituisce una PaleographyImage con i valori di Region
caricati dal database, avendo come input l’id dell’immagine.
• private Image create paleography(String resultFeature,
String imageURL)
Metodo privato di supporto che data una stringa rappresentante le
features, e il path dell’immagine, restituisce una PaleographyImage con
i valori impostati correttamente.
3.3 Estensione WSS 73
• public Image extractFromSingleURL(String imageURL)
Metodo pubblico che restituisce una PaleographyImage, con i valori
caricati dal database, avendo a disposizione il percorso dell’immagine
stessa.
• private String extractFromSingleURLtoString paleography(String
imageURL)
Metodo privato di supporto che restituisce il vettore di features, cari-
cato dal database, sotto forma di stringa.
• private Image
create notConsistent paleography(String resultFeature, String
imageURL)
Metodo privato simile a create paleography che restituisce una Paleo-
graphyImage creando un nuovo id univoco progressivo relativo all’im-
magine se non gi`a presente.
• public Image
extractFromSingleURL notConsistent paleography(String imageURL)
Metodo analogo a extractFromSingleURL che utilizza la versione non
consistente di create paleography.
• public AbstractList<String> getAuthors()
Metodo pubblico che restituisce la lista degli Autori presenti nel data-
base, utilizzando le classi associate alle immagini.
• public void generateAllClustersDB()
Metodo pubblico che genera i Cluster a partire dalle classi delle imma-
gini
• public double[] queryWithClusters(int granularity, String query)
Metodo utilizzato nell’interfaccia Compare Paleography, restituendo un’ar-
ray di double che contengono la media dei valori delle features delle
immagini appartenenti al Cluster richiesto.
74 3. WSS: Writing Similarity Search
• public Vector<ScoredResultImage>
queryKNNPaleographyImage(PaleographyImage image,
ParametricPaleographyDistance PalDistance, int k)
Metodo pubblico che permette di effettuare una query kNN a partire
dall’immagine image, utilizzando la ParametricPaleographyDistance e
con valore k uguale al valore di input.
ParametricPaleographyDistance
Il metodo queryKNNPaleographyImage della classe WrapperFeaturePaleogra-
phyMySQL utilizza la distanza ParametricPaleographyDistance creata appo-
sitamente per la gestione di features paleografiche.
Per mantenere l’interoperabilit`a del framework, la classe estende la classe
astratta Distance e si trova inserita all’interno del relativo package.
La classe richiede di impostare 10 parametri boolean: i primi 9 per i vari tipi
di PaleographyRegion e l’ultimo per valori non nulli.
La distanza si comporta come una distanza euclidea con l’opzione data al-
l’utente di scegliere quali tipi di Region utilizzare (i primi 9 booleani) e di
escludere o meno i valori zero (l’ultimo boolean).
3.3.4 CalibroImage Class
La classe CalibroImage `e la rappresentazione di una immagine per il cal-
colo e la valutazione del disuguale metodico del Calibro.
Si `e scelto di dividerla dalla classe PaleographyImage poich´e, nonostante ca-
ratteristiche comuni basate sull’analisi grafologica, presenta peculiarit`a non
presenti in una immagine analizzata solo mediante feature paleografiche.
Per mantenere il paradigma Region-Based, la classe CalibroImage, la quale
estende la classe astratta Image, viene rappresentata attraverso le regioni di
cui `e composta: nel caso specifico, una nuova specializzazione della classe
astratta PaleographyRegion, ovvero PaleographyXHeightRegion.
3.3 Estensione WSS 75
PaleographyXHeightRegion si comporta in ugual modo a qualsiasi Paleo-
graphyRegion descritte nel paragrafo 3.3.2, con l’unico scopo di rappresentare
l’altezza del medio letterale, ovvero delle lettere medie del testo.
Figura 3.9: UML CalibroImage Class
76 3. WSS: Writing Similarity Search
CalibroImage comprende tre campi protetti:
• protected AbstractList<PaleographyRegion> xheight;
• protected EvaluateCalibro evcal;
• protected Vector<Double> differences;
Se xheight e differences sono vettori usati per la memorizzazione delle singole
misurazioni e per la differenza fra esse, la variabile evcal `e il fulcro della va-
lutazione del Calibro: essa si appoggia alla classe EvaluateCalibro, trattata
nel prossimo paragrafo.
La distinzione dei due campi xheight e differences `e necessaria: il primo, in-
fatti, serve per l’effettivo calcolo del disuguale metodico del calibro,mentre il
secondo come rappresentazione del pattern Calibro dell’immagine stessa.
La classe CalibroImage contiene i seguenti metodi:
• public CalibroImage(ImageID id)
Costrutture che assegna l’id all’immagine e inizializza i campi protected
della stessa.
• public CalibroImage(ImageID id, String resultString)
Copy Constructor che oltre ad inizializzare i campi, attraverso la stringa
resultString, n´e assegna anche i valori
• public String getCalibroType()
Metodo pubblico che restituisce il tipo del Calibro: piccolo, medio o
grande.
• public double getCalibroAVG()
Metodo pubblico che restituisce la grandezza media del letterale medio:
serve per distinguere il tipo di calibro.
• public int getNumDistanze()
Metodo pubblico che restituisce il numero di campane (disuguaglianze)
trovate.
3.3 Estensione WSS 77
• public String getInegualCalibro()
Metodo pubblico che restituisce il grado del disuguale metodico del
calibro.
• public double getAVGStartEnd()
Metodo pubblico che restituisce la distanza tra la prima e l’ultima
campana.
• public double getEachAVG()
Metodo pubblico che restituisce la grandezza media di ogni campana.
• public double[] getXHeightValue()
Metodo che restituisce un array di double delle misurazioni effettuate.
• public double[] getPattern()
Metodo che restituisce il pattern Calibro come array di double.
• public void setFeatures(double src[])
Metodo pubblico che, dato in input un array di double, assegna i valori
sia a xheight che a differences.
• public void setFeatures(String vector)
Ugual metodo a setFeatures(double src[]), con la differenza di accettare
una stringa di valori nel formato v1, . . . , vn.
3.3.5 EvaluateCalibro Class
La classe EvaluateCalibro, come detto precedentemente, `e adibita all’ef-
fettivo calcolo del disuguale metodico del Calibro.
Essa contiene diverse costanti utili per il calcolo e la differenziazione del
calibro, e oltre a implementare diversi metodi, definisce una nuova classe
chiamata DisuguaglianzaMetodica. La classe DisuguaglianzaMetodica rap-
presenta la campana, pi`u volte citata, utilizzata nel calcolo del disuguale
metodico del calibro.
Essa contiene cinque variabili private:
78 3. WSS: Writing Similarity Search
• private double start;
• private double end;
• private double peakValue;
• private int peakOccurency;
• private boolean disugualemetodico;
le quali rappresentano, in ordine, il valore di inizio, di fine e di picco del-
la campana, la frequenza del valore di picco e infine un valore booleano che
distingua i diseguale metodico da quello non-metodico. DisuguaglianzaMeto-
dica implementa diversi metodi getter per ottenere il valore di ogni variabile
precedentemente illustrata pi`u il costruttore che inizializza e assegna un va-
lore alle variabili stesse.
La classe EvaluateCalibro gestisce otto variabili private per il calcolo del
Calibro, e oltre a i metodi di setter e getter di queste ultime, contiene i
seguenti metodi:
• private void update()
Metodo privato chiamato ogni qual volta le misurazioni effettuate sul
letterale medio variano. Esso semplicemente chiama in ordine i metodi
privati successivamente illustrati per aggiornare il valore del Calibro.
• private void setupValues()
Metodo privato che crea l’istogramma di valori e definisce il tipo di
calibro.
• private void createDisuguaglianze()
Metodo privato che crea le disuguaglianze, ovvero le campane, a partire
dall’istogramma creato al passo precedente.
• private void setupAVGsDistance()
Metodo privato che calcola le medie necessarie per il diseguale del
Calibro.
3.3 Estensione WSS 79
• private void evaluateInegualCalibro()
Metodo privato che calcola il grado del disuguale metodico del Calibro.
3.3.6 WrapperFeatureCalibroMySQL Class
In egual modo per le features paleografiche, `e stata creata la classe Wrap-
perFeatureCalibroMySQL per la gestione del calibro nel database.
Per mantenere l’interoperabilit`a e la struttara finora generata, la classe esten-
de WrapperFeaturePaleographyMySQL.
La classe presenta tre campi final protected per la gestione delle tabelle
nel database.
WrapperFeatureCalibroMySQL implementa i seguenti metodi:
• public boolean createCalibroTableInDB()
Metodo pubblico che crea tre tabelle nel database: una per gestire le
features Calibro sulle immagini e due per gestirne i Cluster.
• public void insert calibro(Image img, String imageURL)
Metodo pubblico che inserisce nel database l’immagine CalibroImage
img con le features associate, ricavando l’id grazie all’imageURL.
• public void insert calibroFromResult(String imageURL, String
resultFeature)
Metodo alternativo per inserire le features nel database, utilizzando
invece dell’immagine una stringa di misurazioni.
• private Image
create calibro(String resultFeature, String imageURL)
Metodo privato di supporto che crea una CalibroImage utilizzando le
features resultFeatures e ricavando l’id grazie all’imageURL.
• public String retrieveCalibroFeatureFromID(ImageID id)
Metodo pubblico che restituisce in formato String, le features Calibro
associate all’immagine id.
80 3. WSS: Writing Similarity Search
• public Image retrieveImage calibro(ImageID id)
Metodo pubblico che restituisce una CalibroImage ricavandone le fea-
tures dal database, grazie al suo id.
• public Image extractFromSingleURL(String imageURL)
Metodo alternativo che restituisce una CalibroImage utilizzando il suo
path.
• private String
extractFromSingleURLtoString calibro(String imageURL)
Metodo privato di supporto che restituisce le features presente nel
database associate all’immagine il cui path `e imageURL.
• private Image
create notConsistent calibro(String resultFeature,
String imageURL)
Metodo privato che crea una CalibroImage il cui id viene creato in
maniera non consistente, utilizzando le features date in ingresso.
• public Image
extractFromSingleURL notConsistent calibro(String imageURL)
Metodo pubblico che restituisce una CalibroImage, con id non consi-
stente, utilizzando il suo path imageURL.
• public AbstractList<String> getAuthors()
Metodo pubblico che restituisce la lista di Autori, utilizzando la classe
delle immagini nel database.
• public void generateClusterCalibroinDB()
Metodo pubblico che crea e calcola i vari clusters.
• public CalibroImage
queryWithClusters calibro(int granularity, String query)
Metodo pubblico che permette di effettuare una query sul clusters
selezionato a diversi livelli di granularit`a.
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi
mastertesi

More Related Content

What's hot

Processi stocastici e serie storiche
Processi stocastici e serie storicheProcessi stocastici e serie storiche
Processi stocastici e serie storicheMarco D'Alessandro
 
Pattern Recognition Lecture Notes
Pattern Recognition Lecture NotesPattern Recognition Lecture Notes
Pattern Recognition Lecture NotesRobertoMelfi
 
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...Antonio Sanfelice
 
Valutazione sperimentale di tecnologie per la gestione dei dati per workflow ...
Valutazione sperimentale di tecnologie per la gestione dei dati per workflow ...Valutazione sperimentale di tecnologie per la gestione dei dati per workflow ...
Valutazione sperimentale di tecnologie per la gestione dei dati per workflow ...Francesco De Giorgi
 
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...maaske
 
Profilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiProfilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiPietro Corona
 
Il mio libro - My book (intro)
Il mio libro - My book (intro)Il mio libro - My book (intro)
Il mio libro - My book (intro)pls3d
 
Regolamento concorso completo - Vers. 1.5
Regolamento concorso completo - Vers. 1.5Regolamento concorso completo - Vers. 1.5
Regolamento concorso completo - Vers. 1.5Ancce
 
Modellazione della dinamica di un liquido bifase mediante GPU CUDA
Modellazione della dinamica di un liquido bifase mediante GPU CUDAModellazione della dinamica di un liquido bifase mediante GPU CUDA
Modellazione della dinamica di un liquido bifase mediante GPU CUDAkylanee
 
Dispensa di analisi dei dati
Dispensa di analisi dei datiDispensa di analisi dei dati
Dispensa di analisi dei datiStefano Bussolon
 
Dispensa Interazione Uomo Macchina
Dispensa Interazione Uomo MacchinaDispensa Interazione Uomo Macchina
Dispensa Interazione Uomo MacchinaStefano Bussolon
 
Caratterizzazione di un rivelatore a piatti resistivi (RPC)
Caratterizzazione di un rivelatore a piatti resistivi (RPC)Caratterizzazione di un rivelatore a piatti resistivi (RPC)
Caratterizzazione di un rivelatore a piatti resistivi (RPC)Gerardo Di Iorio
 
Progettare artefatti cognitivi
Progettare artefatti cognitiviProgettare artefatti cognitivi
Progettare artefatti cognitiviStefano Bussolon
 
Learning of non-homogeneous Continuous Times Bayesian Networks Thesis
Learning of non-homogeneous Continuous Times Bayesian Networks ThesisLearning of non-homogeneous Continuous Times Bayesian Networks Thesis
Learning of non-homogeneous Continuous Times Bayesian Networks ThesisGuido Colangiuli
 
Il tutorial di Python
Il tutorial di PythonIl tutorial di Python
Il tutorial di PythonAmmLibera AL
 
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Myrteza Kertusha
 
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientaleInterfaccia utente basata su eye-tracking per sistemi di controllo ambientale
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientaleLuigi De Russis
 

What's hot (20)

Processi stocastici e serie storiche
Processi stocastici e serie storicheProcessi stocastici e serie storiche
Processi stocastici e serie storiche
 
Pattern Recognition Lecture Notes
Pattern Recognition Lecture NotesPattern Recognition Lecture Notes
Pattern Recognition Lecture Notes
 
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
Sviluppo di una libreria orientata agli oggetti per il calcolo di NURBS con a...
 
domenicoCaputiTriennale
domenicoCaputiTriennaledomenicoCaputiTriennale
domenicoCaputiTriennale
 
Valutazione sperimentale di tecnologie per la gestione dei dati per workflow ...
Valutazione sperimentale di tecnologie per la gestione dei dati per workflow ...Valutazione sperimentale di tecnologie per la gestione dei dati per workflow ...
Valutazione sperimentale di tecnologie per la gestione dei dati per workflow ...
 
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
24546913 progettazione-e-implementazione-del-sistema-di-controllo-per-un-pend...
 
Teoria probabilità 4
Teoria probabilità 4Teoria probabilità 4
Teoria probabilità 4
 
Profilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzatiProfilazione utente in ambienti virtualizzati
Profilazione utente in ambienti virtualizzati
 
Il mio libro - My book (intro)
Il mio libro - My book (intro)Il mio libro - My book (intro)
Il mio libro - My book (intro)
 
Regolamento concorso completo - Vers. 1.5
Regolamento concorso completo - Vers. 1.5Regolamento concorso completo - Vers. 1.5
Regolamento concorso completo - Vers. 1.5
 
Modellazione della dinamica di un liquido bifase mediante GPU CUDA
Modellazione della dinamica di un liquido bifase mediante GPU CUDAModellazione della dinamica di un liquido bifase mediante GPU CUDA
Modellazione della dinamica di un liquido bifase mediante GPU CUDA
 
Dispensa di analisi dei dati
Dispensa di analisi dei datiDispensa di analisi dei dati
Dispensa di analisi dei dati
 
Dispensa Interazione Uomo Macchina
Dispensa Interazione Uomo MacchinaDispensa Interazione Uomo Macchina
Dispensa Interazione Uomo Macchina
 
Caratterizzazione di un rivelatore a piatti resistivi (RPC)
Caratterizzazione di un rivelatore a piatti resistivi (RPC)Caratterizzazione di un rivelatore a piatti resistivi (RPC)
Caratterizzazione di un rivelatore a piatti resistivi (RPC)
 
Progettare artefatti cognitivi
Progettare artefatti cognitiviProgettare artefatti cognitivi
Progettare artefatti cognitivi
 
Learning of non-homogeneous Continuous Times Bayesian Networks Thesis
Learning of non-homogeneous Continuous Times Bayesian Networks ThesisLearning of non-homogeneous Continuous Times Bayesian Networks Thesis
Learning of non-homogeneous Continuous Times Bayesian Networks Thesis
 
A.Dionisi Thesis
A.Dionisi ThesisA.Dionisi Thesis
A.Dionisi Thesis
 
Il tutorial di Python
Il tutorial di PythonIl tutorial di Python
Il tutorial di Python
 
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
Progetto e realizzazione di un kernel linux per il controllo dinamico degli s...
 
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientaleInterfaccia utente basata su eye-tracking per sistemi di controllo ambientale
Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale
 

Similar to mastertesi

Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Daniele Ciriello
 
CaputiDomenicoMagistrale
CaputiDomenicoMagistraleCaputiDomenicoMagistrale
CaputiDomenicoMagistraleDomenico Caputi
 
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...fcecutti
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Maurizio Cacace
 
[Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System [Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System Stefano Bonetta
 
Publish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based RoutingPublish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based RoutingNicola Mezzetti
 
Imparare c n.104
Imparare c  n.104Imparare c  n.104
Imparare c n.104Pi Libri
 
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilitàTesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilitàRiccardo Melioli
 
GaPiL - Guida alla Programmazione in Linux
GaPiL - Guida alla Programmazione in LinuxGaPiL - Guida alla Programmazione in Linux
GaPiL - Guida alla Programmazione in LinuxAmmLibera AL
 
Inoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linuxInoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linuxCe.Se.N.A. Security
 
Openfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsOpenfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsLorenzo Stacchio
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMDavide Ciambelli
 
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Pasquale Naclerio
 
Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...
Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...
Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...Matteo Gazzin
 
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...michael_mozzon
 
Applicazioni intelligenzaartificiale
Applicazioni intelligenzaartificialeApplicazioni intelligenzaartificiale
Applicazioni intelligenzaartificialeAntonella79
 

Similar to mastertesi (20)

Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
Reti neurali di convoluzione per la visione artificiale - Tesi di Laurea Magi...
 
CaputiDomenicoMagistrale
CaputiDomenicoMagistraleCaputiDomenicoMagistrale
CaputiDomenicoMagistrale
 
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
Tecniche di Test-driven development in ambito sicurezza informatica e rilevaz...
 
Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques Anomaly detection in network traffic flows with big data analysis techniques
Anomaly detection in network traffic flows with big data analysis techniques
 
Guida C# By Megahao
Guida C# By MegahaoGuida C# By Megahao
Guida C# By Megahao
 
repairpdf_Oy51nCFX
repairpdf_Oy51nCFXrepairpdf_Oy51nCFX
repairpdf_Oy51nCFX
 
[Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System [Thesis] IBSS: Intelligent Brake Support System
[Thesis] IBSS: Intelligent Brake Support System
 
Publish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based RoutingPublish/Subscribe EDI with Content-Based Routing
Publish/Subscribe EDI with Content-Based Routing
 
Imparare c n.104
Imparare c  n.104Imparare c  n.104
Imparare c n.104
 
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilitàTesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
Tesi di Laurea sulla Sicurezza delle Reti Informatiche: Le vulnerabilità
 
Dynamic Scheduling
Dynamic SchedulingDynamic Scheduling
Dynamic Scheduling
 
GaPiL - Guida alla Programmazione in Linux
GaPiL - Guida alla Programmazione in LinuxGaPiL - Guida alla Programmazione in Linux
GaPiL - Guida alla Programmazione in Linux
 
Inoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linuxInoltro di pacchetti ip in sistemi linux
Inoltro di pacchetti ip in sistemi linux
 
Openfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistemsOpenfisca Managing Tool: a tool to manage fiscal sistems
Openfisca Managing Tool: a tool to manage fiscal sistems
 
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEMTesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
Tesi Triennale - Grid Credit System: un portale per la sostenibilità di COMPCHEM
 
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
Implementazione di un sistema di misura di tipo quantitativo per sensori a na...
 
Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...
Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...
Tecniche per la rilevazione e correzione di errori nell'elaborazione automati...
 
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
Implementazione di protocolli e simulatori MATLAB per lo sviluppo del livello...
 
Tesi Tamiazzo09
Tesi Tamiazzo09Tesi Tamiazzo09
Tesi Tamiazzo09
 
Applicazioni intelligenzaartificiale
Applicazioni intelligenzaartificialeApplicazioni intelligenzaartificiale
Applicazioni intelligenzaartificiale
 

mastertesi

  • 1. Alma Mater Studiorum Universit`a di Bologna SCUOLA DI INGEGNERIA Corso di Laurea Magistrale in Ingegneria Informatica Tesi di Laurea in Tecniche e Processi di Data Mining M WritingSimilarity Search, un’architettura software per l’analisi automatica di testi manoscritti: caratteristiche paleografiche tradizionali e low-level feature a confronto. Relatore: Chiar.ma Prof.ssa Ilaria Bartolini Laurendo: Antonio Davide Cal`ı Sessione II Anno Accademico 2014/2015
  • 3.
  • 4. Indice Introduzione 7 1 Windsurf on Basics 9 1.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Windsurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.1 Funzionalit`a . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.2 Histogram-Based Image Retrieval (HBIR) . . . . . . . 15 1.3 Struttura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.4 SIFT/SURF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.4.1 SIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.4.2 SURF . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4.3 SIFT vs SURF . . . . . . . . . . . . . . . . . . . . . . 22 1.5 Momenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.5.1 Invarianza dei descrittori . . . . . . . . . . . . . . . . . 23 1.5.2 Momenti per forme 2-D . . . . . . . . . . . . . . . . . 25 2 Paleografia: ambito di lavoro 31 2.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.2 ImageJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.3 Graphoskop . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.3.1 Funzionalit`a . . . . . . . . . . . . . . . . . . . . . . . . 34 2.3.2 Interfaccia . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.4 Disuguale Metodico del Calibro . . . . . . . . . . . . . . . . . 37 2.4.1 Calcolo del Disuguale Metodico del Calibro . . . . . . . 40 3
  • 5. INDICE INDICE 2.4.2 Calibro come Pattern . . . . . . . . . . . . . . . . . . . 45 3 WSS: Writing Similarity Search 53 3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.2 Interfaccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.2.1 Main GUI . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.2.2 Extract Paleography Feature . . . . . . . . . . . . . . . 57 3.2.3 Compare Paleography Feature . . . . . . . . . . . . . . 60 3.2.4 Evaluate Calibro . . . . . . . . . . . . . . . . . . . . . 62 3.3 Estensione WSS . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.3.1 Package Paleography . . . . . . . . . . . . . . . . . . . 64 3.3.2 PaleographyImage Class . . . . . . . . . . . . . . . . . 65 3.3.3 WrapperFeaturePaleographyMySQL Class . . . . . . . 71 3.3.4 CalibroImage Class . . . . . . . . . . . . . . . . . . . . 74 3.3.5 EvaluateCalibro Class . . . . . . . . . . . . . . . . . . 77 3.3.6 WrapperFeatureCalibroMySQL Class . . . . . . . . . . 79 4 Testing - Preparazione 83 4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 4.2 Descrizione Database . . . . . . . . . . . . . . . . . . . . . . . 84 4.3 Test 1 - Paleografia . . . . . . . . . . . . . . . . . . . . . . . . 86 4.3.1 Test 1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 88 4.3.2 Test 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.3.3 Test 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.3.4 Test 1.4 . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.3.5 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 90 4.4 Test 2 - Calibro . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.4.1 Test 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.4.2 Test 2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.4.3 Test 2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.4.4 Test 2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.4.5 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 103
  • 6. INDICE 5 4.5 Test 3 - SURF . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 4.5.1 Test 3.1 - antonio non 1.jpg . . . . . . . . . . . . . . . 105 4.5.2 Test 3.2 - antonio punto 1.png . . . . . . . . . . . . . . 108 4.5.3 Test 3.3 - antonio questo 1.png . . . . . . . . . . . . . 108 4.5.4 Test 3.4 - antonio rubik 1.png . . . . . . . . . . . . . . 110 4.5.5 Test 3.5 - antonio smetti 1.png . . . . . . . . . . . . . 112 4.5.6 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 113 4.6 Test 4 - Momenti . . . . . . . . . . . . . . . . . . . . . . . . . 115 4.6.1 Test 4.1 - antonio non 1.jpg . . . . . . . . . . . . . . . 116 4.6.2 Test 4.2 - antonio punto 1.png . . . . . . . . . . . . . . 117 4.6.3 Test 4.3 - antonio questo 1.png . . . . . . . . . . . . . 118 4.6.4 Test 4.4 - antonio rubik 1.png . . . . . . . . . . . . . . 119 4.6.5 Test 4.5 - antonio smetti 1.png . . . . . . . . . . . . . 119 4.6.6 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 120 4.6.7 SURF vs Momenti . . . . . . . . . . . . . . . . . . . . 121 4.7 Test 5 - Classificazione . . . . . . . . . . . . . . . . . . . . . . 121 4.7.1 Paradigma SURF . . . . . . . . . . . . . . . . . . . . . 123 4.7.2 Paradigma a Momenti . . . . . . . . . . . . . . . . . . 127 4.7.3 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 129 4.8 Test 6 - Calibro come Pattern . . . . . . . . . . . . . . . . . . 129 4.8.1 Test 6.1 - Granularit`a Pagina . . . . . . . . . . . . . . 130 4.8.2 Test 6.2 - Granularit`a Parola . . . . . . . . . . . . . . 133 4.8.3 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . 137 4.9 Conclusioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 5 Test e Benchmark 145 5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 5.1.1 Metriche: Valutazione al Framework . . . . . . . . . . 145 5.2 Benchmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 5.2.1 Introduzione ai Benchmark . . . . . . . . . . . . . . . . 153 5.2.2 Arabic WI contest . . . . . . . . . . . . . . . . . . . . 156 5.2.3 4NSigComp2010 . . . . . . . . . . . . . . . . . . . . . 157
  • 7. INDICE INDICE 5.3 Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 5.3.1 Montale - Diario Postumo . . . . . . . . . . . . . . . . 159 5.3.2 IAM-HD . . . . . . . . . . . . . . . . . . . . . . . . . . 184 5.3.3 Arabic WIC . . . . . . . . . . . . . . . . . . . . . . . . 198 5.3.4 4NSigComp2010 . . . . . . . . . . . . . . . . . . . . . 201 5.3.5 Conclusione . . . . . . . . . . . . . . . . . . . . . . . . 209 Conclusioni 213 Bibliografia/Linkografia 217
  • 8. Introduzione Negli ultimi anni, il sempre maggiore interesse riguardo l’analisi di dati multimediali e il riconoscimento degli oggetti in essi contenuti, ha portato allo sviluppo di algoritmi sempre pi`u efficaci ed efficienti per l’estrazione di informazioni caratterizzanti gli stessi. Uno dei campi pi`u importanti `e quello delle immagini che, dopo il testo scrit- to, genera il pi`u alto volume per quantit`a di dati. Data la crescente impor- tanza di immagini e la loro quantit`a in continuo aumento, si sono sviluppati, nell’ultima decade, vari modelli di rappresenzatione basati sulle informazioni contenute in esse; a tal proposito, esiste un framework, Windsurf, nato con l’esigenza di processare in maniera efficiente query di tipo content-based sulle immagini, decomposte con paradigma region-based. Si voglia ora pensare a un caso pi`u specifico di analisi di immagini, ovve- ro al problema del falso d’autore, ovvero lo studio di un manoscritto per attribuirne o meno la paternit`a a uno specifico autore. Ad oggi sono stati sviluppati algoritmi in grado di estrarre informazioni da un’immagine model- landola in un insieme di dati virtuali chiamati features, e, attraverso questi, `e possibile confrontare l’immagine di interesse con un insieme di immagini appartenenti a un dataset di cui si `e in possesso, chiamato ground-truth. La ricerca di similarit`a (Similarity Search), dunque, offre all’utente un modello interattivo per l’analisi dell’immagine: diversi paradigmi sono nati per poter risolvere il problema, tra cui, primo fra tutti, il modello SIFT/SURF che offre una soluzione del tutto generale, applicabile, indubbiamente, anche alla risoluzione del problema del falso d’autore. Un secondo modello, sempre di 7
  • 9. 8 INDICE natura general-purpouse, `e il modello Bag of (Visual-)Word, nato per l’analisi di documenti testuali e successivamente evolutosi per adattarsi all’indagine delle immagini. Un ulteriore modello viene rappresentato dal momento di una immagine, ovvero una particolare media dell’intensit`a dei pixel che com- pongono l’immagine. Infine, un modello pi`u specifico per la risoluzione al problema si pu`o trovare nell’analisi paleografica del testo manoscritto: l’idea `e di estrarre dall’immagine le caratteristiche salienti che possono aiutare a rilevare un falso, quali corpo di scrittura, angolo di scrittura, spaziatura fra parole, densit`a di scrittura, etc. Lo scopo di questa tesi `e di estendere, e re-ingegnizzare, il framework Writing Similarity Search, nato con l’obiettivo di rilevare il falso d’autore, implemen- tando l’analisi semi-automatica delle features paleografiche. A questo scopo, si `e deciso di utilizzare un plug-in java gi`a esistente, ImageJ, nato per l’Image Processing e Analysis, integrando il componente Grapho- skop, che permette di estrarre caratteristiche paleografiche di nostro interesse.
  • 10. Capitolo 1 Windsurf on Basics 1.1 Introduzione Windsurf (Wavelet-based INDexing of ImageS Using Region Fragmenta- tion) `e un framework Java per l’estrazione di features a basso livello di imma- gini e per l’elaborazione efficiente di query basato sul paradigma region-based image retrieval (RBIR). In particolare, Windsurf utilizza la trasformata Wavelat per estrarre colore e texture da un’immagine e partizionarla in un insieme di regioni omogenee, ognuna descritta da un set di features relative. Il framework `e in grado di confrontare le immagini esaminando il risultato re- lativo al grado di somiglianza tra le regioni di cui le immagini sono composte. L’intero sistema, con il trascorrere del tempo, `e stato esteso con l’aggiun- ta di metodologie e paradigmi inizialmente non presenti nel software base. Essendo un programma facilmente estendibile, le nuove funzionalit`a non ven- gono date nel pacchetto base, ma risiedono in programmi pi`u specifici, tra cui vi `e anche WritingSimilarity Search, ovvero l’ecosistema utilizzato per il confronto di manoscritti. 9
  • 11. 10 1. Windsurf on Basics Fra le funzionalit`a aggiunte vi sono due nuovi paradigmi: SIFT/SURF e i Momenti. Il capitolo si propone come sorta di riassunto dell’intero framework con le ulteriori funzionalit`a, che verranno successivamente sfruttate per test e produzione di codice. 1.2 Windsurf 1.2.1 Funzionalit`a Windsurf offre numerose funzionalit`a per lo studio e l’analisi dell’imma- gine. Esse sono suddivisibili nelle seguenti categorie: 1. Feature Extraction: definisce i paradigmi di estrazione di features da una o pi`u immagini. 2. Similarity Model: definisce i metodi di Matching offerti per il con- fronto tra immagini. 3. Retrieval Model: definisce i criteri di scelta nell’individuazione del risultato delle query. 4. HBIR: definisce un modello alternativo al paradigma RBIR, in cui l’immagine viene semplicemente rappresentata in base ai colori di cui `e composta. Feature Extraction Per la suddivisione di una immagine in regioni, il framework necessita di pre-processare l’immagine. Successivamente alla segmentazione sar`a possibi- le descrivere ogni singola regione attraverso un vettore di 37-D. Il pre-processing si suddivide in 3 importanti fasi: DWT, Clustering e Feature Indexing.
  • 12. 1.2 Windsurf 11 Figura 1.1: Viene mostrato il processo a cui sono sottoposte le immagini per la suddivisione in regioni DWT La prima fase DWT analizza l’immagine in tempo frequenza, utilizzando la trasformata discreta Wavelet in 2-D. Clustering Durante questa fase, l’immagine viene frammentata in diverse regioni, ognu- na delle quali contiene un insieme di pixel fra loro omogenei per colore e texture. Figura 1.2: Viene mostrato il risultato dell’algoritmo di Clustering K-means applicato alla prima immagine, utilizzando ordinatamente k=2, 10 e 4. Il framework utilizza l’algoritmo K-Means per il clustering, permettendo di suddividere oggetti in K gruppi sulla base dei loro coefficienti di trasformata simili. La composizione digitale dei colori di ogni singolo cluster viene rappresen-
  • 13. 12 1. Windsurf on Basics tata da 4 centroidi, ognungo dei quali rappresenta le 4 sottobande di una immagine: LL, LH, HL, HH. Ogni sottobanda rappresenta la media degli istogrammi di colore tridimensionali RGB. La variazione della texture, invece, viene rappresentata da 4 matrici di cova- rianza 3x3 simmetriche. Feature Indexing La fase finale di Feature Indexing si occupa di tradurre la regione analizzata di features simili in un un vettore 37-D cos`ı composto: • Size, ovvero il numero di pixel contenuto nella regione • 4 Centroidi, per le 4 sottobande, ognuno composto da un vettore 3-D HSV/RGB • 4 Matrici di covarianza 3x3, composta ciascuna da 6 numeri decimali poich`e matrici simmetriche Il vettore cos`ı creato servir`a per il ritrovamento e la comparazione tra le diverse immagine composte da regioni, ognuna delle quali descritta da un proprio vettore di 37 elementi recanti informazioni rispetto al numero di pixel, ai colori e alla texture. Similarity Model La sezione di Similarity Model definisce i metodi di confronto tra le varie immagini per poterne stabilire il grado di similarit`a: ovvero, vengono definiti i criteri di Matching tra le varie regioni che permettono di avere un valore di distanza complessivo tra due immagini. Ogni regione di una immagine viene confrontata con tutte le regione di una seconda immagine tramite una metri- ca che ne calcola la distanza: sulla base di queste, vengono dunque stabilite delle associazioni tra le regioni secondo funzioni di Matching. Windsurf offre due funzioni di Matching: il Matching 1-1 e il Matching N-M.
  • 14. 1.2 Windsurf 13 L’utilizzo di ogni funzione varia a seconda del numero di regioni estratte dal framework, non noto a priori, che dipende dalla peculiarit`a della singola immagine. Matching 1-1 Figura 1.3: Esempio di Matching 1-1 Il Matching 1-1 effettua un match di una regione della prima con una e una sola regione della seconda; nel caso in cui le due immagini abbiano un numero differenti di regioni, per l’immagine che ne ha in eccesso, alcune di essere rimarrano senza un effettivo match. Matching N-M Figura 1.4: Esempio di Matching N-M A differenza del metodo 1-1, il matching N-M prevede che ogni regione di una immagine possa fare match con pi`u regioni dell’altra non ponendo, teo- ricamente, un effettivo limite al numero di regioni.
  • 15. 14 1. Windsurf on Basics All’atto pratico, per`o, l’applicazione impone alcuni vincoli che tengono conto della dimensione totale di ogni immagine. Ad ogni regione un determinato peso in modo tale che la somma di essi equivalga ad 1. Ogni regione effettua uno o pi`u match con il limite del peso ad essa imposto. Retrieval Models Windsurf, data la sua generalit`a, implementa due modelli di ricerca, chiamati Ranking, diversi tra di loro: k-Nearest Neighbors (k-NN) e Skyline. K-Nearest Neighbors Il modello k-NN si basa sul concetto che debbano essere restituiti i k oggetti pi`u vicini rispetto all’oggetto query desiderato. In pratica l’algoritmo attri- buisce ad ogni immagine presente in persistenza una distanza dall’immagine query e ne restituisce le k con distanza minore (o punteggio maggiore). Esaminando successivamente le classi delle k immagini restituite, si pu`o clas- sificare l’immagine query con la classe pi`u presente. La classe dell’immagine pu`o variare a seconda del contesto, ovvero in base alle distanze utilizzate e al k selezionato: diverse distanze e un diverso k possono portare a un risultato differente, come si evince dalla figura. Figura 1.5: Esempio di k-NN, dove l’elemento di query `e il cerchio rosso. In caso di k=3 la classe attribuitagli sarebbe il colore verde, mentre in caso di k=7 sarebbe il colore rosa.
  • 16. 1.2 Windsurf 15 Skyline Un paradigma completamente diverso di risoluzione query `e dato dal model- lo Skyline. Esso non restituisce un valore di distanza per ogni immagine del risultato, ma si basa su un concetto di dominanza. Un’immagine IA, formata dalle regioni ai, domina una immagine IB, for- mata dalle regioni bi, relativamente a una immagine di query Q, se e solo se per ogni: • Per ogni matching qi-bj esiste un matching qi-ak tale che distanza(qi, bj) ≥ distanza(qi, ak) (1.1) • Esiste almeno una regione qi per cui per ogni matching qi-bj esiste un matching qi-ak tale che distanza(qi, bj) > distanza(qi, ak) (1.2) Sia per il modello kNN che per il modello Skyline vengono messi a disposizioni algoritmi che sfruttano l’indicizzazione per permettere esecuzioni delle query pi`u efficienti. 1.2.2 Histogram-Based Image Retrieval (HBIR) A differenza del modello RBIR, esiste un modello concorrente di rappre- sentazione dell’immagine basato unicamente sulla distribuzione dei colori su di un istogramma tridimensionale, quale RGB (Red Green Blue) o HSV (Hue Saturation Brightness). Un concetto simile `e stato sfruttato per la creazione dei centroidi di colori nella fase di clustering di Windsurf precedentemente illustrato.
  • 17. 16 1. Windsurf on Basics Figura 1.6: Esempio di modello HBIR In questo caso l’immagine viene descritta solo attraverso la feature colore, non analizzando pi`u la texture: ovviamente il modello di estrazione features risulta molto pi`u semplice, ma pi`u carente di informazioni. Ad esempio, due immagini molto diverse tra loro, ma con la stessa gamma di colori, risulterebbero simili secondo questo modello, mentre invece due imma- gini rappresentanti lo stesso soggetto ma con uno schema di colori differente porterebbe il modello a riconoscerle come diverse. Inoltre il modello presenta gravi problemi con le immagini in bianco e in nero, in quanto l’appiattimento cromatico porta ad istogrammi molto simili e di difficile confronto. 1.3 Struttura Windsurf `e una libreria Java rilasciata sotto licenza QPL, liberamente scaricabile a scopo didattico. Il framework `e suddiviso in diversi package, ognuno dei quali ha uno scopo specifico: Document, Feature Extractor, Query Processor, Feature Manager e Index Managaer. Document Racchiude la classi relative alla descrizioni di regioni, immagini e feature estratte con i modelli implementati. Si occupa anche di descrivere e fornire le distanze per i metodi utilizzati dal sistema.
  • 18. 1.4 SIFT/SURF 17 Feature Extractor Contiene le classi necessarie all’estrazione delle features dalle immagini e dalle regioni, composto dalle tre fasi descritte precedentemente DWT, Clustering e Feature Indexing. Query Processor Si occupa della risoluzioni delle query su database, implementando gli algo- ritmi di ritrovamento prima descritti kNN e Skyline. Utilizza gli indici sulle features se presenti, altrimenti utilizza algoritmi sequenziali. Feature Manager Pacchetto relativo all’interazione col database: in particolare si occupa di salvare le immagini e a recuperarle al momento necessario. Index Managaer Comprende le classi delegate alla creazione di indici sulle features utili per gli algoritmi di ritrovamento utilizzati dal Query Processor. 1.4 SIFT/SURF SIFT e SURF sono due algoritmi, utilizzati dal Feature Extracture, messi a disposizione dal framework Windsurf per l’estrazione automatica di low- level features di immagini. 1.4.1 SIFT SIFT (Scale Invariant Feature Transform) `e un algoritmo basato sulla Differenza di Gaussiane (DoG), ovvero una particolare approssimazione del Laplaciano della Gaussiana, con lo scopo di individuare keypoints (punti chiave), costituiti da un descrittore a 128 dimensioni, rappresentanti i punti focali dell’immagine. L’algoritmo nasce con lo scopo di essere invariante alla scala e alla rotazione
  • 19. 18 1. Windsurf on Basics dell’immagine. SIFT ricava in primo luogo ottimizzando gli estremi locali nello space-scale dalla serie di Taylor. Successivamente vengono trovati i veri keypoints: ad ognuno di essi viene associato dunque un’orientazione nello spazio e suc- cessivamente viene fatto un confronto fra keypoints vicini, raggruppati per regioni, per attribuirne una direzione locale. Lo scopo `e di rendere l’analisi invariante alla rotazione. Figura 1.7: Immagine sottoposta all’algoritmo SIFT in cui vengono mostrati i keypoints ritrovati. Infine ogni keypoint cos`ı trovato viene descritto attravero un vettore di 128-D che racchiude le features associate: • ad ogni keypoint viene associata una matrice 4x4. • ogni cella della matrice `e descritta da 8 features che descrivono la direzione locale della cella.
  • 20. 1.4 SIFT/SURF 19 Figura 1.8: Immagine sottoposta all’algoritmo SIFT in cui vengono mostrati i keypoints ritrovati. Basandosi sulla Differenza di Gaussiane, SIFT `e un algoritmo molto preciso ma allo stesso tempo computazionalmente complesso. 1.4.2 SURF SURF (Speeded-Up Robust Features) `e un algoritmo di estrazione di features derivate da SIFT, anch’esso invariavante alla scala e alla rotazione. Figura 1.9: Immagine sottoposta all’algoritmo SURF in cui vengono mostrati i keypoints ritrovati.
  • 21. 20 1. Windsurf on Basics L’algoritmo approssima il Laplaciano della Gaussiana utilizzando il modello Box Filter: viene utilizzato il determinante della matrice Hessiana basata su immagini integrali per determinare i keypoints e garantire l’invarianza alla scala. I keypoints vengono individuati nei punti in cui il determinante della matrice `e massimo. L’utilizzo del Box Filter permette l’esecuzione dell’algoritmo in parallelo per diverse scale: questo garantisce un enorme vantaggio computazionale e quin- di una maggiore velocit`a rispetto a SIFT. Figura 1.10: Esempio del Box Filter Per determinare l’orientamento, l’algoritmo utilizza la risposta wavelet Haar 2-D. L’orientamento dominante viene deciso dopo un’analisi dei pesi gaus- siani distribuiti in una finestra di 60◦ : questi vengono tracciati in uno spazio cartesiano e il calcolo viene stimato sommando tutte le risposte in una sliding window orientata con un angolo di π 3 . Figura 1.11: Calcolo dell’orientamento grazie alla sliding window
  • 22. 1.4 SIFT/SURF 21 SURF utilizza nuovamente la risposta wavelet Haar 2-D per la creazione del descrittore dei keypoints, infatti genera una matrice 20sx20s 1 a partire dal- l’intorno dello stesso, la quale a sua volta viene divisa in 16 sottoregioni. Da ogni sottoregioni si estraggono le risposte orizzontali e verticali per la formazione di un vettore 64-D: • si creano blocchi di pixel 4x4 • ogni blocco viene descritto con un vettore 4-D Figura 1.12: Costruzione del descrittore Il vettore viene estratto molto pi`u rapidamente rispetto a SIFT, ma non ottiene lo stesso contenuto informativo, ed `e per questo che `e stata creata una versione a 128-D aggiungendo sommatorie pi`u specifiche sia per dx e |dx|, sia per dy e |dy|. v = dx, dy, |dx| , |dy| (1.3) SURF utilizza il segno del Laplaciano per memorizzare il contrasto dei key- points cos`ı da velocizzare la fase di matching: infatti le regioni vengono 1 s `e la dimensione del keypoints
  • 23. 22 1. Windsurf on Basics confrontate solo se hanno lo stesso contrasto. Figura 1.13: Confrontro keypoints SURF in base al contrasto Per questo motivo, a differenza di SIFT, SURF non `e invariante all’illumina- zione ma `e preferibile in tutti i casi in cui non causa una perdita di precisione avendo una velocit`a computazionale molto maggiore. 1.4.3 SIFT vs SURF I due algoritmi descritti possiedono alcuni elementi in comune: si ricordi che SUFT in parte deriva effettivamente da SIFT. Entrambi sono invarianti alla scala e alla rotazione, ma differiscono per l’in- varianza all’illuminazione, garantita in SIFT, mentre fortemente dipendente in SURF. Essendo basati entrambi su approssimazioni del Laplaciano della Gaussia- na, per quanto gli algoritmi possano sembrare simili, sono in realt`a diversi: a seconda della necessit`a si pu`o preferire il primo a discapito del secondo. In particolare SURF `e molto pi`u veloce nell’estrazione e nel confronto del- le features poich´e si basa su approssimazioni dirette che fanno risparmiare potenza computazionale; SIFT, invece, sfruttando un’approssimazione meno netta `e pi`u lento, ma in molti casi pi`u preciso.
  • 24. 1.5 Momenti 23 1.5 Momenti Nell’elaborazione dell’immagine e in Computer Visioni, il momento del- l’immagine viene definito come una particolare media dell’intensit`a dei pixel che compongono l’immagine stessa. In senso pi`u generale, si dice momento anche una funzione che detiene particolari caratteristiche. Il problema del riconoscimento di forme 2-D necessita di una risoluzione che ne rappresenti in maniera inalterata caratteristiche e informazioni, ovvero necessita di descrittori e features appropriati che sfruttino il dominio in ma- niera pi`u consona. 1.5.1 Invarianza dei descrittori Per garantire un confronto efficace e corretto, i descrittori dell’immagine devono soddisfare i requisiti di invarianza a traslazione, scala e rotazione. Infatti, forme ruotate, ingrandite, rimpicciolite o traslate rispetto alla forma originale devono essere riconosciute come l’originale stessa: ecco perch`e vi `e la richiesta dell’invarianza rispetto a queste caratteristiche. Sono stati fatti molti studi a riguardo per ottenere descrittori con queste caratteristiche. Vi sarebbe anche, da considerare, l’invarianza al rumore, la pi`u difficile da ottenere, ovvero riconoscere una forma anche in presenza di dati distorti. Invarianza alla Traslazione Un oggetto che si sposta nello spazi semplicemente modifica le coordi- nate spaziali dei propri punti: questo porta a una variazione dei descrittori e quindi a una rappresentazione scorretta. L’invarianza deve permettere di riconoscere forme medesime tra loro traslate: se ottenuta diventa indifferen- te la scelta del centro d’origine del piano cartesiano e quindi della posizione sullo spazio della forma considerata.
  • 25. 24 1. Windsurf on Basics Per riuscire ad ottenere l’invarianza alla traslazione, in generale, basta tra- slare la figura in modo tale che il proprio centro di massa venga posizionato sull’origine del piano cartesiano. Invarianza alla Scala Ingrandire o rimpicciolire un oggetto in una immagine `e uno degli ele- menti pi`u distorcenti per lo stesso. Ottenere l’invarianza alla scala permette di riconoscere forme medesime tra loro ingrandite o ridotte come la stessa forma. Per garantire l’invarianza bisogna dividere il vettore delle coordinate della forma 2-D per la propria norma, racchiudendo, successivamente, le coordi- nate normalizzate all’interno dell’unit`a circolare. I valori cos`ı ottenuti, per qualsiasi modifica della scala, vengono riportati nell’intervallo [0,1], annulandone quindi qualsiasi effetto di ingrandimento. Questo procedimento viene chiamato normalizzazione del vettore delle cor- dinate. Invarianza alla Rotazione L’invarianza alla rotazione risulta fondamentale per qualsiasi rappresen- tazione dell’oggetto: infatti la rotazione comporta il completo cambiamento delle coordinate dell’oggetto stesso e conseguentemente dei pixel dell’immagi- ne. Il modo pi`u intuititvo per ottenerne l’invarianza `e di calcolare un angolo caratteristico per ogni forma e ruotare successivamente la forma in esame per riportare il suo angolo caratteristico a 0. Invarianza al Rumore Come gi`a detto, in una immagine il rumore `e la principale fonte di errore nel calcolo dei descrittori di una forma. Descrittori errati portano a confronti errati: diventa quindi fondamentale ottenere l’invarianza al rumore con l’ausilio di filtri sulle forme da analizzare.
  • 26. 1.5 Momenti 25 1.5.2 Momenti per forme 2-D I Momenti sono un’intera famiglia di caratteristiche di una immagine che nel loro insieme la identificano in maniera univoca. Come gi`a detto sono uno strumento nato nel campo del Computer Vision, applicabile a qualsiasi ambito che richieda di riconoscere immagini e forme, o quando vi `e la necessit`a di estrarre feature globali di oggetti collocati nello spazio locale. Esistono molti tipi di Momenti, ognuno con determinate caratteristiche, ma, in generale, tutti si prestano all’analisi di forme 2-D. Una forma 2-D `e formata da un vettore N-dimensionale complesso i cui ele- menti rappresentano le coordinate (x; y) sul Piano Cartesiano. Si definisce quindi la generica forma 2-D come z ∈ Cn : z =        x1 + jy1 x2 + jy2 ... xN + jyN        (1.4) Principal Moments Si definisce Principal Moments di ordine k, k ≥ 1, k ∈ N: Mk(z) = 1 Nk! (zk 1 + zk 2 + · · · + zk N ) = 1 Nk! N n=1 zk n (1.5) Il termine 1/Nk! `e un fattore scalare, mentre N n=1 zk n `e chiamata somma di potenze di ordine k. Essendo k un numero naturale maggiore o uguale a 1, ogni forma 2-D `e potenzialmente caratterizzata da infiniti Principal Momen- ts: di questi, in realt`a, sono sufficienti solo i primi N per rappresentare senza ambiguit`a il vettore della forma 2-D. Le prime N somme di potenze possono essere convertite in polinomi simme- trici delle coordinate della forma 2-D. Questi polinomi possono essere visti
  • 27. 26 1. Windsurf on Basics come i coefficienti di un polinomio di ordine N che ha come radici le coordi- nate della forma stessa. Vi `e dunque una corrispondenza biunivoca tra il polinomio e le prime N som- me di potenze. I primi N Principal Moments formano un insieme completo di invarianti alla permutazione: questo significa che cambiando l’ordine degli elementi del vettore z non si hanno variazioni ai Principal Moments. I Principal Moments, per`o, non garantiscono alcuna invarianza a traslazione, scala e rotazione. Per ottenere questi risultati occorre effettuare un pre- processing sul vettore di coordinate della forma 2-D. Per ottenere l’invarianza alla traslazione e alla scala, si effettua una traslazio- ne della forma intorno al centro di massa della stessa in modo da posizionare il centro di massa traslato sull’origine del piano cartesiano: in questo modo la forma 2-D nello spazio verr`a centrata sul suo baricentro. Se dividiamo il vettore risultato per la propria norma si ottiene anche l’inva- rianza alla scala: infatti ogni punto del vettore avr`a coordinate reali comprese tra [-1,1] annullando cos`ı qualsiasi effetto di modifiche della scala. L’ultimo problema rimane l’invarianza alla rotazione: come gi`a detto `e neces- sario calcolare un angolo caratteristico della forma θ tale per cui, effettuando una rotazione di −θ dell’oggetto, si riporta la forma all’angolo base presta- bilito. Solo dopo aver effettuato i pre-proccesing descritti, si possono calcolare i Principal Moments per ottenere descrittori univoci e fedeli alle forme 2-D.
  • 28. 1.5 Momenti 27 Geometric Moments Si definisce Geometric Moment di ordine (p, q), con p, q > 0 interi, di una forma 2-D caratterizzata dal vettore complesso z N-Dimensionale: Mp,q(z) = N n=1 xp nyp n (1.6) dove xn e yn sono rispettivamente parte reale e parte immaginaria del gene- rico elemento complesso zn. Si definisce il Geometric Moments di ordine n il Geometric Moment Mp,q(z) tale che p + q = n. Determinati Geometric Moments, di un particolare ordine, godono di alcune propriet`a e significati specifici: • M0,0(z) = N n=1 x0 ny0 n = N: rappresenta la massa del vettore z, in particolare per le immagini binarie rappresenta l’area dell’oggetto con- siderato. • M1,0 M0,0 e M0,1 M0,0 : rappresentano le coordinate del centro di gravit`a o del baricentro dell’immagine, rispettivamente all’ascissa e all’ordinata del baricentro. • M2,0 e M0,2: rappresentano i momenti di inerzia della forma 2-D, rispettivamente dell’ascissa e dell’ordinata Come per i Principal Moments, anche i Geometric Moments non godono, in maniera intrinseca, dell’invarianza a scala, traslazione e rotazione. Occorre dunque modificare la definizione classica di Geometric Moments per ottenere le invarianze desiderate. Per ottenere l’invarianza alla traslazione viene definito il Central Geome- tric Moment di ordine (p, q) di una forma 2-D caratterizzata da un vettore
  • 29. 28 1. Windsurf on Basics complesso z N-Dimensionale: Mp,q = N n=1 (xn − xg)p (yn − yg)q (1.7) dove nuovamente xn e yn rappresentano la parte reale e immaginaria di zn, con p, q interi non negativi, mentre xg e yg sono le coordinate di massa della forma z. Definiamo ora il Normalized Central Geometric Moment di ordine (p, q) come Vp,q = Mp,q Mα 0,0 , α = p + q 2 + 1 (1.8) Il Normalized Central Geometric Moment riesce a garantire, oltre l’invarian- za alla traslazione, anche l’invarianza per la scala. Anche per il Geometric Moments, l’invarianza alla rotazione si ottiene cal- colando l’angolo caratteristico θ della forma per poi effettuare la rotazione della forma dell’angolo stesso. In particolare si possono usare i momenti di inerzia per ottenere l’angolo. In caso la derivata seconda di θ sia positiva allora θ = − 1 2 tan−1 2M1,1 M0,2 − M2,0 (1.9) altrimenti θ = − 1 2 tan−1 2M1,1 M0,2 − M2,0 + π 2 (1.10) Complex Moments Si definisce Complex Moment di ordine (p,q) di una forma 2-D caratte- rizzata da un vettore N-dimensionale complesso z: Cp,q(z) = N n=1 (xn + jyn)p (xn − jyn)p = N n=1 zp n · ¯zq n (1.11)
  • 30. 1.5 Momenti 29 dove xn e yn rappresentano la parte reale e immaginaria di zn, mentre p,q sono interi non negativi. I Complex Moment sono definiti similmente ai Geometric Moment, tanto da portare le stesse informazioni della forma 2-D, ma riuscendo ad essere pi`u robusti per l’invarianza rotazionale, ma conseguentemente con maggiore complessit`a di calcolo. Per ottenere le invarianze desiderate, bisogna sottoporre i Complex Moments all’identico pre-processing utilizzato nei Geometric Moments. Hu’s Moments I Hu’s Moments, chiamati anche Invarianti di Hu, sono 7 descrittori che garantiscono autonomamente invarianza alla traslazione, alla scala e alla ro- tazione. Vengono calcolati a partire dai Normalized Central Geomtric Moments e si possono dimostrare essere un caso particolare di Complex Moments. I Hu’s Moments sono definiti come segue: h1 = V2,0 + V0,2 h2 = (V2,0 − V0,2)2 + 4V 2 1,1 h3 = (V3,0 − 3V1,2)2 + (V0,3 − 3V2,1)2 h4 = (V3,0 + V1,2)2 + (V0,3 + 2V2,1)2 h5 = (V3,0 − 3V1,2) · (V3,0 + V1,2) · ((V3,0 + V1,2)2 − 3(V0,3 + V2,1)2 ) +(3V2,1 − V3,0) · (V0,3 + V2,1) · (3(V3,0 + V1,2)2 − (V0,3 + V2,1)2 ) h6 = (V2,0 − V0,2) · ((V3,0 + V1,2)2 − (V0,3 + V2,1)2 ) +4V1,1 · (V3,0 + V1,2) · (V0,3 + V2,1) h7 = (3V2,1 − V0,3) · (V3,0 + V1,2) · ((V3,0 + V1,2)2 − 3(V0,3 + V2,1)2 ) +(3V2,1 − V3,0) · (V0,3 + V2,1) · (3(V3,0 + V1,2)2 − (V0,3 + V2,1)2 )
  • 31. 30 1. Windsurf on Basics Gli Hu’s Moments sono un insieme completo di invarianti, infatti i primi 6 sono invarianti alla traslazione, scala e rotazione, ovvero presa un’immagine e fatta ruotare, traslare o scalare, i primi 6 descrittori h1, . . . , h6 non subiranno variazioni; invece, il settimo momento h7, rappresentando una feature pi`u complessa, varier`a a seconda dell’angolo di rotazione.
  • 32. Capitolo 2 Paleografia: ambito di lavoro 2.1 Introduzione Quando si parla di analisi di immagine, bisogna subito distinguere, o quanto meno particolarizzare il problema se si tratta di analisi di testi ma- noscritti. Il caso che vogliamo trattare, ovvero il falso d’autore, non pu`o che rientrare in questo caso particolare. Ecco dunque che l’image analysis pu`o cambiare il proprio scopo da un general-purpose all’obiettivo in analisi. Il problema viene tradotto in termini di confronto tra pagine manoscritte al fine di stabilire se il testo appartenga o meno all’autore in analisi: natu- ralmente `e necessaria una fase preliminare in cui viene eseguita l’analisi di pagine manoscritte la cui autenticit`a `e sicura, al fine di costruire la nostra ground-truth. Le tecniche pi`u utili per l’analisi dei testi a livello informatico sono la stilo- metria e la paleografia. La prima si basa sull’identificazione di elementi rari a livello lessicale al fine di poter creare un modello sull’autore. Per tale obbiettivo esistono diverse strategie, ma la principale prende il nome di invariante dello scrittore, ovve- ro la ricerca di caratteristiche che non variano all’interno delle opere di un 31
  • 33. 32 2. Paleografia: ambito di lavoro autore. La strada intrapresa da questa tesi si basa invece sull’analisi paleografica. La paleografia si distingue in paleografia antica e paleografia moderna: la prima aveva come obbiettivo stabilire genere, data e luogo di varie scritture analizzandone tutte le caratteristiche ed era incentrata sull’interpretazione delle scritture antiche; in epoca moderna, invece, l’analisi paleografica si `e evoluta con lo studio della grafia dell’autore e sul suo modello stilistico di scrittura. Per perseguire l’obbiettivo di estrazione semi-automatica di caratteristiche paleografica a partire da un testo digitale, si `e scelto di utilizzare i seguenti software: ImageJ e Graphoskop. Un ulteriore modello adottato, basato sempre sulla paleografia, si incentra sul Calcolo Metodico del Calibro, metodo descritto e calcolato per la prima volta da Girolamo Moretti che trova una forte applicazione in campo grafologico. 2.2 ImageJ ImageJ `e un software opensource sviluppato in Java, nato con lo scopo di essere concorrente ai pi`u comuni software commerciali per l’image proces- sing. Esso consente di visualizzare, modificare, analizzare, processare, salvare e stampare immagini a 6, 16 e 32bit. Il programma offre la possibilit`a di calcolare l’area e le statistiche su valori di pixel relative a regioni, chiamate ROI1 , selezionate dall’utente. Essendo basata su archittetura Java, esso `e estendibile mediante l’aggiunta di nuovi plug-in, anch’essi scritti in Java, come, ad esempio, Graphoskop stesso. L’interfaccia grafica, mostrata in figura, contiene una barra dei men`u, una 1 Region Of Interest
  • 34. 2.3 Graphoskop 33 barra degli strumenti, una barra di stato e in fine una progress bar. Figura 2.1: Interfaccia grafica di ImageJ La barra degli strumenti contiene le funzionalit`a per effettuare operazioni di zooming e scrolling sulle immagini, per cambiare i colori, per la selezione delle ROI, etc. . . I plugins sono moduli di codice che permettono di espandere le funzionalit`a di ImageJ: per il corretto funzionamento essi devono essere inseriti all’interno della cartella plugins. ImageJ svolge un ruolo importante per lo svolgimento della seguente tesi, poich´e, solo grazie ad esso `e possibile l’attivazione di Graphoskop, il plug-in scelto per l’analisi paleografica. Inoltre, data l’effettiva necessit`a di utilizzare questo software, si `e deciso di importare all’interno dell’intero framework WSS la barra degli strumenti, cos`ı da poter dare la possibilit`a all’utente di utilizzare le funzioni del software stesso. 2.3 Graphoskop Graphoskop `e uno strumento paleografico, concepito come plug-in di Ima- geJ la cui funzione principale `e di rilevare dati quantitativi di tipo metrologico a partiare da una rappresentazione digitale. Ideato come un supporto per il paleografo, pu`o essere utilizzato sulla maggior parte dei formati immagine: TIFF, GIF, JPEG, BMP, RAW, etc. . . Graphoskop, una volta estratti i dati di interesse, esegue anche alcuni calcoli statistici dei dati raccolti e registra automaticamente tali informazioni su un foglio di calcolo.
  • 35. 34 2. Paleografia: ambito di lavoro 2.3.1 Funzionalit`a Graphoskop si presenta come uno strumento d’ausilio nel rilievo di di- stanze tra punti scelti accuratamente dall’utente e indicati manualmente sul- l’immagine di interesse. Si tratta, dunque, di uno strumento descrittivo che coniuga l’intervento dell’utente all’automatizzazione dei calcoli e alla regi- strazione dei risultati. Presupposto che il plugin lavora su digitalizzazioni dei testi manoscritti, un’a- nalisi ottimale `e difficile da ottenere, poich´e, a seconda di come `e stato ge- nerato il testo digitale l’analisi potr`a differire: si pensi solo alla difficolt`a di ottenere linee di testo perfettamente parallele, o all’irregolarit`a dell’esten- sione delle aste ascendenti e discendenti, o ancora al modulo delle lettere spesso variabile. Queste considerazioni hanno portato a dover far fronte a un costante margine di imprecisione nella valutazione generale: per questo motivo Graphoskop si basa anche su un’analisi statistica per tenere conto di questo margine di imprecisione, che risulta, probabilmente, uno dei maggiori ostacoli all’analisi automatica. Il plugin esegue, per ogni feature estratta, dei calcoli statistici sui dati rac- colti quali media, moda e deviazione standard. Inoltre riesce a rivelare il cosiddetto coefficiente di riempimento in una ROI definita dall’utente, ovvero la percentuale di pixels bianchi e neri nell’area selezionata. Per far ci`o Graphoskop ne crea una copia in memoria, la bina- rizza e ne calcola la percentuale dei pixels. Graphoskop si rivela essere dunque una scorciatoia per i calcoli eseguiti gior- nalmente dai paleografi: infatti necessita ancora dell’intervento umano per la misurazione delle caratteristiche, ma ne semplifica notevolmente i calcoli generando una base di dati utile agli stessi. Il plug-in si basa sulla generazione di un foglio di calcolo per ogni immagine analizzata, e, riassumendo, per ogni caratteristica ne calcola: • media delle distanze che l’utente ha tracciato
  • 36. 2.3 Graphoskop 35 • deviazione standard, ovvero la dispersione dei valori attorno alla media • moda, cio`e il valore pi`u ricorrente Infine Graphoskop permette il salvataggio dell’immagine sottoposta all’ana- lisi, in cui vengono evidenziate le selezioni effettuate dall’utente. 2.3.2 Interfaccia L’interfaccia di Graphoskop `e composta dalla barra degli strumenti di ImageJ, da una finestra secondaria results e dalla finestra proprietaria del plugin. Quest’ultima, corredata da un righello verticale e orizzontale, con- tiene tutti i comandi effettivi del plugin. La finestra results, invece, mostra un’anteprima immediata delle misure effettuate dall’utente che saranno suc- cessivamente registrate nel foglio di calcolo. Il plugin dispone di tre tipi di strumenti di selezione: linea, angolo e ret- tangolo. Tutti e tre devono essere tracciati dall’utente. Ogni categoria di selezione prevede un determinato strumento di analisi paleografica, cos`ı distribuite: • Linea Orizzontale: permette l’analisi di interlinea, aste ascendenti, aste discendenti, distanza aste asc/disc, corpo della scrittura, margine superiore, margine inferiore, distanza generica. • Linea Verticale: permette l’analisi di spazio tra parole, margine interno, margine esterno, intercolonna, distanza generica. • Angolo: permette l’analisi dell’inclinazione aste ascendenti, inclina- zione aste discendenti, angolo di scrittura (ovvero l’inclinazione della penna); • Rettangolo: permette l’analisi di specchio di scrittura e superficie ge- nerica.
  • 37. 36 2. Paleografia: ambito di lavoro L’utente, usando i diversi strumenti, delimita una o pi`u ROI, le quali saranno mostrate sull’immagine corrente. Cliccando “calcola” verr`a chiesto all’uten- te se si vogliono avere anche elementi statistici come la media, deviazione standard, moda, area e densit`a. Infine, scelto un percorso di salvataggio, Graphoskop si adopera per creare il foglio di calcolo. Registrazione dati Al momento del primo salvataggio, Graphoskop crea due fogli di calcolo: uno complessivo chiamato Global e uno per l’immagine analizzata. Il foglio Global contiene la media, deviazione standard e moda dei valori calcolati sull’immagine analizzata: poich`e `e possibile associare ad uno stesso file pi`u immagini, Graphoskop per ognuna di esse crea un foglio di calcolo e aggiunge una riga al foglio Global con i valori relativi. Figura 2.2: Foglio Global Graphoskop, come gi`a detto, crea tanti fogli distinti quante sono le immagini analizzate. Ogni foglio ha il nome del file trattato e su ognuno di essi saranno registrate tutte le misure che l’utente avr`a effettuato. Vengono infine aggiun- te media, deviazione standard e moda per tutti i parametri che le prevedono.
  • 38. 2.4 Disuguale Metodico del Calibro 37 Figura 2.3: Foglio Specifico 2.4 Disuguale Metodico del Calibro Trattiamo ora un modello diverso dalla classica analisi paleografica, ov- vero il disuguale metodico del calibro. Come gi`a detto in descrizione, questo paradigma `e stato creato e illustrato per la prima volta da Girolamo Moretti, nella sua opera Trattato di Gra- fologia risalente al 1914. Il metodo si basa sull’analisi puntuale e ripetuta dell’altezza del medio lette- rale, ovvero dell’altezza delle lettere prive di aste ascendenti e discendenti. Come scrive Moretti, nel Trattato scientifico di perizie grafiche su base gra- fologica (1942)2 parlando della scrittura disuguale metodicamente , ” La disuguaglianza principalmente pu`o essere triplice“ 1. “Quando alcune lettere sono un po’ pi`u piccole, altre pi`u grandi. Questa diversit`a di grandezza deve essere appena percettibile, perch´e altrimenti si avrebbe una cosa sgraziata. 2. Alcune lettere si contorcono leggermente indietro, altre in avanti. Que- sta contorsione deve essere molto leggera, altrimenti si andrebbe alla 2 G. Moretti, Trattato scientifico di perizie grafiche su base grafologica, 1942, p. 180
  • 39. 38 2. Paleografia: ambito di lavoro scrittura contorta. 3. Alcune lettere scattano quasi dalla riga in alto, altre in basso, altre restano al loro posto. Questo scatto deve ripetersi in modo omogeneo, da dare l’impressione come di due cavalli, l’uno calmo, l’altro di sangue attaccati ambedue ad un timone: il calmo procede senza scatti,l’altro, ogni tanto saltella, scatta, ma resta sempre serrato dai suoi finimenti al timone.“ Moretti chiama la disuguaglianza del primo tipo Disuguale metodico del Ca- libro, quella del secondo tipo Disuguale metodico dell’inclinazione, e infine Disuguale metodico dello scattante il terzo tipo. Per la tesi si `e scelto di utilizzare solo il Disuguale metodico del Calibro, data sopratutto l’importanza sottolineata da Moretti stesso. La dimensione delle lettere del medio letterale presenta variazioni a inter- valli che si ripetono in maniera metodica. Moretti, come ipotesi, propone una valore massimo e un valore minimo per la variazione, al di fuori dei quali le variazioni devono essere considerate come rumore. Moretti divide, inoltre, il Calibro in tre tipologie: Calibro Grande, Calibro Medio e Calibro Piccolo. CALIBRO GRANDE Viene definito Calibro Grande la scrittura il cui corpo letterale medio ha una grandezza media superiore ai 5mm. CALIBRO MEDIO Viene definito Calibro Medio la scrittura il cui corpo letterale medio ha una grandezza media compresa tra i 2mm e i 5mm. CALIBRO PICCOLO Viene definito Calibro Piccolo la scrittura il cui corpo letterale medio ha una grandezza media minore ai 2mm. A secondo della tipologia del Calibro, Moretti impone un valore di massimo e uno di minimo diverso: • Valore minimo
  • 40. 2.4 Disuguale Metodico del Calibro 39 – 1 3 (=0.33) di mm per il Calibro Grande e Medio – 1 4 (=0.25) di mm per il Calibro Piccolo • Valore massimo – 2mm per il Calibro Grande – 1.5mm per il Calibro Medio – 1mm per il Calibro Piccolo Infine, per il calcolo finale del Disuguale Metodico del Calibro, Moretti met- te a disposizione tre tabelle, una per ogni tipo di Calibro, che illustrano a seconda della grandezza media delle disuguaglianze metodiche e del numero delle stesse, il grado del disuguale metodico. Calibro Grande Numero di Intervalli Valore dell’intervallo 7 6 5 4 3 2 1 2mm 5/10 4/10 3/10 2/10 1/10 0/10 0/10 1.5mm 6/10 5/10 4/10 3/10 2/10 1/10 0/10 1mm 7-8/10 7/10 6/10 5/10 4/10 3/10 2/10 0.5mm 9/10 8/10 7/10 6/10 5/10 4/10 3/10 0.33mm 10/10 9/10 8/10 7/10 6/10 5/10 4/10 Tabella 2.1: Tabella Disuguale Metodico Calibro Grande
  • 41. 40 2. Paleografia: ambito di lavoro Calibro Medio Numero di Intervalli Valore dell’intervallo 7 6 5 4 3 2 1 1.5mm 5/10 4/10 3/10 2/10 1/10 0/10 0/10 1.25mm 6/10 5/10 4/10 3/10 2/10 1/10 0/10 1mm 7/10 6/10 5/10 4/10 3/10 2/10 1/10 0.75mm 8/10 7/10 6/10 5/10 4/10 3/10 2/10 0.5mm 9/10 8/10 7/10 6/10 5/10 4/10 3/10 0.33mm 10/10 9/10 8/10 7/10 6/10 5/10 4/10 Tabella 2.2: Tabella Disuguale Metodico Calibro Medio Calibro Piccolo Numero di Intervalli Valore dell’intervallo 7 6 5 4 3 2 1 1mm 5/10 4/10 3/10 2/10 1/10 0/10 0/10 0.80mm 6/10 5/10 4/10 3/10 2/10 1/10 0/10 0.75mm 7/10 6/10 5/10 4/10 3/10 2/10 1/10 0.5mm 8/10 7/10 6/10 5/10 4/10 3/10 2/10 0.33mm 9/10 8/10 7/10 6/10 5/10 4/10 3/10 0.25mm 10/10 9/10 8/10 7/10 6/10 5/10 4/10 Tabella 2.3: Tabella Disuguale Metodico Calibro Piccolo 2.4.1 Calcolo del Disuguale Metodico del Calibro Il calcolo del disuguale metodico del calibro `e un processo automatico effettuato dai grafologi per stabilirne il grado del disuguale. La prima de- scrizione, creata e analizzata da Moretti, presentava per`o delle imprecisioni e lacune che non tenevano conto della ripetizione effettiva nelle differenze del medio letterale. Palaferri Nazzareno, uno dei pi`u importanti studenti di Moretti, riprendendo
  • 42. 2.4 Disuguale Metodico del Calibro 41 in mano gli studi del suo maestro, descrive il metodo utilizzato per il calcolo del Disuguale Metodico del Calibro come segue3 : 1. Quantificare in dmm i singoli valori delle lettere, tralasciando le lunghe che vanno al di sopra o al di sotto della zona media. Precisazioni: - Lettere n e u vanno considerati due impulsi e due misure; nella m tre impulsi e tre misure - Le lettere vanno misurate secondo la loro inclinazione - Le lettere vanno misurate dal loro esterno - vanno misurati gli ovali della g e delle d minuscole, e quando chiari, anche i tratti terminali della p 2. Dopo tale campionatura, va calcolato quante volte si ripete una stessa misura 3. Disporre in scala, per ordine crescente, tutte le misure cos`ı ottenute ed eseguire l’istogramma al valore di ripetitivit`a 4. Individuare il numero di disuguaglianze metodiche 5. Ricercare il valore medio di intervallo tra una disuguaglianza e l’altra; per far questo si calcola il campo di variazione totale, ovvero il valore della disuguaglianza pi`u grande meno quella della disuguaglianza pi`u piccola 6. Si divide questo valore per il numero di disuguaglianze meno uno. Il risultato corrisponde al valore medio di ciascuna disuguaglianza meto- dica 7. Si confronta il numero delle disuguaglianze metodiche ottenute con le tabelle offerte da Moretti per i vari tipi di Calibro: si ottiene cos`ı il grado del disuguale metodico. 3 Tratto da L’indagine grafologica e il metodo morettiano di Palaferri Nazzareno
  • 43. 42 2. Paleografia: ambito di lavoro Il processo, purtroppo, presenta alcune imprecisioni e carenze a livello infor- mativo per rendere l’algoritmo completamente automatico. Per il calcolo del disuguale `e necessario avere un numero abbondante di misurazioni, effettua- te, oltretutto, sulla stessa pagina del manoscritto. Secondo diversi grafologi, tra cui Palaferri stesso e Mazzolini Giorgio - grafologo peritale - il numero minimo `e di cento misurazioni. La richiesta di valutare l’altezza del medio letterale su una stessa pagina `e dovuta ad un fattore psicologico di chi scri- ve: ogni soggetto condiziona la propria scrittura e la propria grafia in base al sentimento, all’umore e alla situazione psico-fisica attuale; di conseguenza, se valutassimo misurazioni di uno stesso scrittore in tempi diversi, queste risul- terebbero altalenanti, prive della ripetizione necessaria che il Calibro impone di descrivere e calcolare. Una ulteriore mancanza nella descrizione dell’algoritmo `e la definizione di ci`o che Moretti e Palaferri chiamano campana. Per gli autori una campana altro non `e che la presenza di un picco nell’i- stogramma delle frequenze: per poterne definire una, `e necessario trovare l’inizio, la fine e il picco di esse stessa. Sempre secondo Mazzolini Giorgio, l’inizio della campana si ha ad una mi- sura il cui valore di frequenza `e al di sotto della soglia Lowerbound, e il cui valore della misura successiva (crescente) `e superiore Lowerbound. Mentre, invece, la fine della campana viene individuata al valore di misura, la cui frequenta `e minore della soglia Lowerbound e il cui valore della misura della soglia precedente (decrescente) `e superiore al Lowerbound. Il tipico valore di Lowerbound utilizzato `e cinque. Esempio In conclusione alla sezione, si vuole mostrare un esempio di co- me, manualmente, i grafologi calcolino il disuguale metodico del Calibro. Per l’esempio viene presa in considerazione la seguente immagine manoscrit- ta (Fig. 2.4).
  • 44. 2.4 Disuguale Metodico del Calibro 43 Figura 2.4: Paragrafo di testo Manoscritto Dall’immagine sono stati misurati i seguenti valori sul medio letterale: 1.2 1.9 3 3 2.5 2 2 1.5 1.9 2 2.1 2.5 3.1 2.6 2.8 1.8 1.8 2.8 2.8 2.8 3.2 2.8 2 1.9 2.9 1.1 3.9 2.1 2.5 3.1 3 1.6 1 1.9 2.5 3 2.7 3.5 2 2 1.9 2 1.5 2 3.5 2 1.9 2 4 2.3 2.1 2.1 2.9 2.4 2.1 2 2.1 2.3 2.5 3 2.5 1.5 2.1 2.3 3.1 2.2 2.1 3.1 4 2 2.5 2 3 1.8 3 2.8 2 1.9 2.5 2.9 2.1 2.5 2 1.9 2.5 2.1 1.9 2.6 3.1 2.3 1.9 2 2.1 2.8 3 3.1 3 2.5 3 3.2 Si `e calcolata la media dei valori per determinare la tipologia del Calibro: la media risulta essere 2.403 e di conseguenza l’autore possiede un Calibro Medio. Il passo successivo prevede di ordinare, quantizzare e aggiungere misura- zioni mancanti ai valori appena mostrati. Il risultato `e mostrato in tabella 2.4.
  • 45. 44 2. Paleografia: ambito di lavoro 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 0 0 0 0 0 0 0 0 0 1 1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 1 0 0 3 1 0 3 10 16 11 1 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 4 1 11 2 1 7 3 10 6 2 0 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 0 2 0 0 0 1 2 0 Tabella 2.4: Tabella di valori quantizzati Si `e creato successivamente l’istogramma dei valori mostrato in figura 2.5. Figura 2.5: Istogramma delle misurazioni del medio letterale Dall’istogramma `e stato possibile individuare le campane descritte dall’algo- ritmo; ne sono state individuate quattro: 1. Intervallo [1.8, 2.2] con picco a 2.0 di frequenza 16. 2. Intervallo [2.4, 2.6] con picco a 2.5 di frequenza 11.
  • 46. 2.4 Disuguale Metodico del Calibro 45 3. Intervallo [2.7, 2.9] con picco a 2.8 di frequenza 7. 4. Intervallo [2.9, 3.2] con picco a 3.0 di frequenza 10. Bisogna ora calcolare la differenza tra il centro dell’ultima e della prima cam- pana, ovvero 3.0 − 2.0 = 1. Quest’ultimo deve essere diviso per il numero di campane meno uno, ovvero 3.0−2.0 4−1 = 1 3 = 0.33. Abbiamo trovato il va- lore medio di ogni campana: bisogna ora rivolgersi alle tabelle Morettiane, nello specifico alla tabella del Calibro Medio (Tab 2.2). Il grado del disu- guale metodico del calibro in corrispondenza di 4 campane e di valore di quantizzazione di 0.33 `e 7/10. 2.4.2 Calibro come Pattern L’idea del disuguale metodico del Calibro si basa sull’analisi in frequenza dell’altezza del medio letterale. Quando si parla di frequenza di valori e della sua analisi, nasce subito il con- cetto di ricerca di un pattern all’interno degli stessi, ovvero la ricerca di un modello che si ripete in maniera regolare nello spazio e/o nel tempo. L’analisi pattern matching, e nel suo problema pi`u specifico, di subpattern matching, `e un lavoro ormai studiato da decenni, che presenta un suo stato dell’arte. Il Calibro descritto da Moretti presenta alcune idee richiamabili e associabili ad una analisi e a una ricerca di una ripetizione nella scrittura. Trattare ripetizioni porta l’evoluzione naturale alla ricerca di pattern, cio`e nulla di pi`u che una sequenza di valori che si ripetono in maniera metodica nel tempo. Il problema `e noto, discusso da molti autori e studiosi e permette dunque una analisi utilizzando ci`o che finora `e stato studiato e proposto come buona soluzione allo stesso. Si vuole dapprima presentare un problema pi`u generale, ovvero del pattern matching, che successivamente si particolarizza in un problema derivato, ov- vero del partial pattern matching, di cui possiamo vedere il Calibro come una istanza specifica.
  • 47. 46 2. Paleografia: ambito di lavoro Lo studio del pattern matching nasce nel settore dell’informatica con lo sco- po di trovare un certo motivo, ovvero il pattern, all’interno di un oggetto composito. Il problema `e molto generale, poich´e esso pu`o includere oggetti come stringhe, e quindi la ricerca di una parola all’interno di un testo, come anche il riconoscimento di contorni e forme di un singolo oggetto all’interno di una immagine. Ci`o che si vuole far notare `e che il problema `e molto simile a quel che questo paragrafo sta descrivendo, ovvero una ricerca di un motivo, in questo caso la differenza del medio letterale, all’interno di un testo. Il pattern matching, per`o, richiede che il match, ovvero l’azione di far corri- spondere la stringa di query a una presente nel testo, debba essere un match esatto. Si vuole mostrare un esempio pratico di pattern matching nella sua forma pi`u banale, ovvero la ricerca di una parola all’interno di un testo. Si chiede all’algoritmo di cercare la parola “Rubik ” all’interno del seguente testo: Il cubo di Rubik o cubo magico (Rubik-kocka in ungherese) `e un celebre rompicapo (in particolare un twisty puzzle) inven- tato dal professore di architettura e scultore ungherese Ern˝o Rubik nel 1974. Nell’esempio, la parola viene trovata tre volte, evidenziate in grassetto, e l’al- goritmo finisce con successo. Il Calibro, per`o, non pu`o basarsi su un match esatto di questo tipo, poich´e sfrutta un tipo di feature diverso, non pi`u di stringhe, quanto piuttosto di valori numerici che rappresentano una differen- za tra l’altezza di una lettera e la successiva. Questo tipo di ricerca non pu`o avvenire con una corrispondenza “uno-a-uno” come il pattern matching, in parte, fa, ma vi `e la richiesta di trovare una sotto sequenza in un pattern, ovvero vi si pone la domanda del sub-pattern matching. Il sub-pattern matching `e un caso particolare del pattern matching, in cui non si ha l’intero pattern da dover cercare, ma bisogna invece effettuare un matching tra un sotto pattern e un pattern, che poi venga trovato all’interno di un oggetto successivo.
  • 48. 2.4 Disuguale Metodico del Calibro 47 La ricerca, attualmente, `e un problema aperto, poich´e vi sono determinati elementi che giocano a sfavore della stessa. Una recente pubblicazione, An elastic partial shape matching technique, re- datta da Longin Jan Latecki, Vasileios Megalooikonomou, Qiang Wang e Deguang Yu, propone una buona soluzione a un problema simile, ma di dif- ficolt`a maggiore. Il paper descrivere la risoluzione del problema di poter confrontare due figure attraverso i contorni, e darne un valore di somiglian- za, con la difficolt`a maggiore in cui una delle due figure sia solo una “sotto parte” della figura stessa. Un’esempio descritto nel paper, che si vuole riportare per chiarezza di lettu- ra, `e la somiglianza delle code di pesce. L’immagini di query `e esattamente una coda di un pesce, e vi `e una ricerca all’interno di un dataset compren- dente immagini di pesci. Come si pu`o intuire, non si pu`o avere una ricerca “esatta”, poich´e l’immagine di query non `e identica alle code presenti nel dataset: ecco che il testo cerca di dare una soluzione trattando somiglianze e non identit`a sulle immagini. I problemi descritti e noti in letteratura sono principalmente tre, ovvero il problema della lunghezza, della scala e del rumore. Gli autori propongono e risolvono i problemi introducendo una nuova distanza, chiamata MVM, ba- sata su distanze gi`a pi`u note e utilizzando tecniche proposte in letteratura per ottenere invarianza alle problematiche descritte. Il paper citato viene utilizzato come spunto per creare un modello d’analisi per il nostro problema, ovvero come ricercare la presenza di un “pattern” al- l’interno di un ulteriore “pattern”, presente nella scrittura manoscritta di un autore. Per una pi`u particolare descrizione alla risoluzione del problema, di non interesse in questa tesi, si rimanda alla lettura della pubblicazione stessa. Da tutte le osservazioni finora fatte, si `e voluto dunque creare il modello del Calibro come Pattern, ovvero di una ricerca della frequenza dei valori che vengono utilizzati per il calcolo del disuguale, in maniera metodica all’interno della scrittura di un autore. L’analisi da effettuare, per`o, non pu`o basarsi
  • 49. 48 2. Paleografia: ambito di lavoro sull’effettiva altezza del medio letterale, in quanto, a seconda del momento o dello spazio messo a disposizione all’autore per scrivere, l’altezza stessa potrebbe subire delle variazioni. L’elemento costitutivo del disuguale metodico del calibro, invece, viene de- scritto come La dimensione delle lettere della zona media presenta variazioni a intervalli che si ripetono in maniera metodica. Dunque, il pattern va cercato non nell’effettiva altezza del medio letterale, quanto piuttosto nella variazione di esso. Il motivo principale, dunque, per cui viene utilizzata la differenza di altez- ze e non l’effettiva altezza, va ricercato in un fattore psicologico dell’autore durante la scrittura, alla quale si deve aggiungere la non ovvia presenza o assenza di tratti delimitatori nei fogli di una pagina. Il Calibro come Pattern cerca di individuare una ripetizione della differenza del medio letterale in maniera regolare nel tempo e nello spazio, ovvero cer- ca di individuare un pattern all’interno di una scrittura. Ecco, quindi, che non si rende pi`u necessaria la richiesta di cento misurazioni minime, poich´e per l’analisi `e sufficiente anche una singola parola per cercarne effettivamen- te una regolarit`a. Va, per`o, specificato che all’aumentare delle misurazioni, la presenza di informazioni cresce e ci`o implica un modello sicuramente pi`u ricco, ma con la possibile presenza di rumore ed errore in pi`u. Si vuole sottolineare la grande differenza fra il Calibro inteso come disuguale metodico e il Calibro come Pattern. Si osservi la seguente figura (Fig. 2.6). Le features rosse rappresentano le altezze del medio letterale, e sono le valu- tazioni utilizzate dal calcolo morettiano del disuguale metodico. Il grado del calibro si basa solo su una quantizzazione di queste misure, ovvero non vi cerca un ordine o non vi cerca una effettiva ripetizione, bens`ı tenta di trovare quali siano le “misurazioni” pi`u frequenti e da queste ne calcola un grado sul- l’autore. Se invece si analizzano le features blu estratte, esse rappresentano la differenza delle altezze tra una lettera e la successiva. Queste differenze sono ci`o su cui vogliamo basare il Calibro come Pattern.
  • 50. 2.4 Disuguale Metodico del Calibro 49 Figura 2.6: Analisi e confronto tra disuguale metodico del Calibro e Calibro come Pattern Ci`o che si vuole osservare `e una effettiva richiesta ed esigenza di ordine sul- l’analisi, e conseguentemente una possibilit`a di poter ritrovare un pattern in un testo. Nel calcolo del disuguale metodico non vi `e una possibilit`a di distinguere una lettera da un’altra, o quanto meno una parola dall’altra, poich´e essa analizza solo la frequenza dell’altezza. Con il Calibro come Pattern, invece, si cerca di mantenere una informazione in pi`u, ovvero ci`o che poi viene chiamato motivo, pattern: questo nuovo paradigma, infatti, cerca di ritrovare una ripetizione in questa differenza di altezze, preoccupandosi, dunque, di mantenere anche una sorta di accoppiamento fra le lettere. Se, ad esempio, una parola contiene la sequenza di grafemi “via”, con il di- suguale metodico l’informazione effettiva di questa sillaba all’interno di una parola viene persa, poich´e non si mantengono i rapporti tra le singole let- tere, conseguentemente qualsiasi permutazione di queste lettere potrebbero portare ad uno stesso risultato. Invece, analizzando la sillaba con le diffe- renze di altezze, si cerca di mantenere una informazione ritrovabile in tutte le successive parole che possano contenere la sillaba stessa, come ad esempio “funivia” o “viadotto”. Con questo, dunque, vi `e una possibilit`a in pi`u di poter valutare una effettiva distanza tra le parole, poich´e due autori diversi portano, non necessariamente, a differenze diverse e conseguentemente ad aumentare la dissimilarit`a fra le due scritture. Riprendiamo l’esempio mostrato in figura 2.6. Con il Calibro come Pattern si
  • 51. 50 2. Paleografia: ambito di lavoro cerca di identificare, all’interno di un testo, o nel confronto con altre parole, il pattern indicato dai seguenti valori (0.3, 0.0, 0.5, 0.4, 0.4). Nel calcolo della similarit`a, si confronta un pattern con un altro, cercando di accoppiare nel miglior modo possibile questi valori. Il disuguale metodico, invece, si propone semplicemente di assegnare una fre- quenza sugli stessi, perdendo l’effettiva informazione sulla parola sottoposta all’analisi. Il Calibro come Pattern, dunque, si propone come una tipologia derivante dal calibro classico, ma che tenga conto di informazioni di interesse maggiori, non espresse effettivamente nella descrizione Morettiana. Si noti che il Calibro come Pattern nasce come sperimentazione, dovuta all’esperienza ingegneristica non assimilata da autori quali Moretti, che, no- nostante la loro inesperienza nel campo matematico, sono riusciti a creare un modello che si basi su paradigmi scientificamente noti. Trattasi dunque di un modello nuovo, non esistente nel campo della paleografia e grafologia, il quale si vuole per la prima volta portare a descrizione per vederne il com- portamento e il risultato. L’analisi che viene effettuata, dunque, si basa su conoscenze presenti in un settore informatico ben sviluppato, ovvero del pattern matching, del quale vengono utilizzate idee e concetti, con conseguenti soluzioni proposte, per poter sviluppare il tema e darne una sua identit`a. Il modello creato nella tesi si basa principalmente su due fattori: l’estrazione dell’altezza del medio letterale, con conseguente costruzione di un pattern, e l’analisi e confronto degli effettivi motivi creati nel punto precedente. Per la creazione del modello si deve ancora una volta richiedere l’intervento umano: infatti, con la tesi attuale, non si `e ricercato e studiato alcun modello automatico per l’estrazione automatica della feature richiesta, ovvero dell’al- tezza del medio letterale. Va ricordato che l’approccio semi-automatico, come quello trattato, non pu`o essere privo di errore e rumore, sintomatico dell’u- tente che ne estrae le misurazioni. L’unico modo, attualmente per tentare di rendere in parte meno problema-
  • 52. 2.4 Disuguale Metodico del Calibro 51 tica la presenza di questi errori, `e intervenire sulla ricerca di pattern e nel matching fra essi. Come verr`a successivamente descritto, si `e tentato di risolvere in parte il problema, utilizzando alcune peculiarit`a tipiche del sub-pattern matching. Si vuole nuovamente ricordare che l’analisi del Calibro come Pattern si basa su una naturale evoluzione dell’idea del Calibro introdotta da Moretti, uti- lizzando tecniche ingegneristiche e informatiche pi`u recenti e attuali, ormai studiate e risolte nell’arco dell’ultima decade: tutto ci`o implica una analisi del tutto sperimentale, priva di un supporto teorico sul quale far affidamento. Il Calibro come Pattern, dunque, viene descritto e analizzato attraverso un insieme di concetti e idee che prendono spunto dalle pi`u diverse materie, par- tendo da un’analisi grafologica proposta da Moretti, alla quale si unisce una risoluzione automatica di un problema ben noto quello del pattern matching.
  • 53. 52 2. Paleografia: ambito di lavoro
  • 54. Capitolo 3 WSS: Writing Similarity Search 3.1 Introduzione Writing Similarity Search `e un’applicazione per lo studio e l’analisi di ele- menti caratterizzanti un testo a livello di singola parola, frase, o documento in maniera automatica (SIFT/SURF e Momenti) o semi-automatica (Paleo- grafia). Si basa sul framework WindSurf, con l’obiettivo di focalizzarsi sul testo ma- noscritto. L’obiettivo principale di questa tesi `e di estendere WSS per permettere l’uti- lizzo di nuove tecniche per riconoscere la scrittura manoscritta quali l’analisi paleografica e il disuguale metodico del calibro. Un secondo obiettivo perseguito `e stata l’adattamento e reingegnerizzazione del software ad un unico modello, in modo da rendere il pi`u coerenti possibili i vari moduli del software stesso. Prima di introdurre le nuove funzionalit`a aggiunte all’intero ecosistema, si vuole formalizzare, in maniera concisa, il problema che stiamo affrontando. Il problema generale pu`o essere cos`ı formulato: “Data una immagine di query I, si vuole attribuire alla stessa una classe, dapprima ignota, fra le possibili 53
  • 55. 54 3. WSS: Writing Similarity Search disponibili all’interno della ground-truth.”. Se si entra nel settore pi`u parti- colare del falso d’autore, in quale WSS opera, si pu`o attribuire alla “classe” il valore di “autore”, dunque, a partire da una immagine manoscritta di autore sconosciuto, si vuole poterne attribuire la paternit`a. Come si potr`a vedere, WritingSimilarity Search utilizza query k-NN come strumento di classificazione. La seguente immagine (Fig. 3.1) vuole presentare, in maniera sintetica, i passi che il framework segue per riuscire a risolvere il problema. Figura 3.1: Schema riassuntivo di come WSS opera da classificatore Il framework deve avere a disposizione una ground-truth di elementi per poter adoperare le proprie scelte. Ovviamente ci`o richiede la presenza di un data- base di features utili al confronto. All’atto di query, il framework confronta le feature estratte dall’immagine di test con quelle presente nel database uti- lizzando tre step fondamentali: Matching, Distance, Ranking. Ognuna di queste componenti `e indipendente dall’altra, ci`o per rendere il framework il pi`u generale possibile. All’atto di classificazione, WSS utilizza come il k-NN Ranking, ovvero i k oggetti pi`u simili all’immagine di query: infatti WSS predice la classe, e
  • 56. 3.2 Interfaccia 55 in questo caso l’autore, come quello pi`u presente all’interno dell’insieme di oggetti restituiti dal Ranking stesso. Si vuole sottolineare come non tutti i paradigmi che verranno presentati sfruttano tutti i componenti, poich´e, in determinati casi, non sono applicabili. WritingSimilarity Search, come gi`a detto, `e una estensione del framework pi`u generale WindSurf e dunque utilizzer`a caratteristiche e peculiarit`a di quest’ultimo per poter mantenere una coerenza sullo sviluppo ed esecuzione. 3.2 Interfaccia L’interfaccia di WSS `e stata modificata per riadattarsi alle nuove funzio- nalit`a introdotte. 3.2.1 Main GUI La finestra principale (Fig. 3.2) `e stata modificata rispetto alla precedente versione. Si `e deciso di togliere la finestra SalientPoint Image in cui veniva mostrata oltre all’originale, anche l’immagine con i SalientPoint trovato: essa `e stata rimossa poich`e di poca utilit`a (viene mostrata durante la ricerca kNN). Al suo posto `e apparsa una finestra con presenti bottoni, divisi per categoria, che descrivono le principali caratterstiche sel framework. I tasti presenti, come detto, descrivono le funzioni principali di WSS: • Open Image: utilizza il plug-in ImageJ e permette di aprire una immagine che verr`a visualizzata nella finestra relativa. • Extract Feature (Image): serve per l’estrazione automatica di fea- ture da un’immagine attraverso gli algoritmi SIFT/SURF o attraverso i Momenti
  • 57. 56 3. WSS: Writing Similarity Search Figura 3.2: Finestra principale di WSS • Extract Feature (Folder): permette l’estrazione automatica di fea- tures, attraverso SIFT/SURF o Momenti, di tutte le immagini presenti in una cartella e sotto-cartelle. • Query: funzione adibita ad effettuare le query sul database basate sulle features automatiche permettendo sia kNN che kNN for Classification. • Query with Clustering: basandosi sempre sulle features automati- che, esegue query utilizzando clustering precedentemente creati. • Clustering: permette di creare i clusters utilizzando le classi delle immagini presenti nel database.
  • 58. 3.2 Interfaccia 57 • Extract Paleography Feature: aprir`a un nuovo modulo per permet- tere l’estrazione semi-automatica di feature paleografiche. • Show Paleography Feature: permette di mostrare le misurazioni paleografiche effettuate in precedenza sull’immagine aperta. • Clustering Paleograohy: similmente al modulo automatico, ven- gono generati i clusters in base alle immagini analizzate in maniera paleografica/grafologica. • Compare Paleography: aprir`a un nuovo modulo per dare la possi- bilit`a all’utente di comparare le features di una singola immagine con i clusters generati. • k-NN Paleography Query: permette di effettuare una query k-NN utilizzando tutte o solo alcune delle features paleografiche estratte. 3.2.2 Extract Paleography Feature In figura 3.3 viene mostrata l’interfaccia grafica del modulo di estrazione delle features paleografiche. Il modulo, oltre ad avvertire l’utente del database su cui si sta lavorando e del vincolo imposto sull’utilizzo si mm/cm come unit`a di misura di Graphoskop, presenta diversi componenti. Sono disponibili quattro pulsanti: • Add Image: permette di aprire una nuova immagine. • Graphoskop: permette di analizzare l’immagine aperta attraverso il plug-in Graphoskop. • Extract Office: poich`e Graphoskop permette il salvataggio delle fea- tures solo su fogli di calcolo, si `e reso necessario una funzione per l’estrazione delle stesse dai file creati da Graphoskop.
  • 59. 58 3. WSS: Writing Similarity Search Figura 3.3: Finestra Extract Paleography Feature • Persistent: permette di salvare le feature estratte attraverso Grapho- skop (e quindi presenti in foglio di calcolo) in maniera persistente sul database indicato all’utente. Vi `e una combobox1 che d`a la possibilit`a all’utente di visualizzare le varie features estratte sulla tabella sottostante. All’atto di apertura di un’immagine, se essa risulta gi`a presente nel database verranno caricate le sue features nella tabella. Infine, quando l’utente vorr`a salvare in maniera persistente i dati, apparir`a una finestra di conferma nel quale viene indicato il percorso dell’immagine, il percorso del foglio di calcolo da cui si sono prese le features ed infine se 1 Menu a tendina.
  • 60. 3.2 Interfaccia 59 l’immagine era gi`a presente o meno nel database, e in caso affermativo di poterla aggiornare.
  • 61. 60 3. WSS: Writing Similarity Search 3.2.3 Compare Paleography Feature La sezione Compare Paleography Feature permette all’utente di far un confronto tra le feature paleografiche di una singola immagine con i cluster creati durante la fase di clustering. L’interfaccia viene mostrata in figura 3.4. Figura 3.4: Finestra Compare Paleography Feature Sono presenti diversi componenti. Prima di tutto, nella barra superiore, oltre a fornire all’utente il nome del database su cui si sta lavorando, viene data la possibilit`a di scegliere il cluster da cui estrarre le feature: sono presenti una combobox per la selezione dell’autore e due checkbox2 con relativo textfield3 che permettono di aumentare la granularit`a inserendo la parola e l’anno del cluster da analizzare. Nella sezione principale troviamo: 2 Componente a spunta. 3 Componente per la scrittura di testo.
  • 62. 3.2 Interfaccia 61 • Image Panel: ovvero un pannello per poter visualizzare l’immagine di query • Tabella: la tabella in cui vengono visualizzate le features del cluster selezionato, dell’immagine di query, e la loro distanza4 • Open Query Image: permette di aprire l’immagine di query. • Extract From Training: estrare le features del cluster selezionato • Compare: calcola la distanza tra l’immagine e il cluster. Si noti che se l’utente apre una immagine che non `e stata analizzata, il programma sollever`a un’errore. Allo stesso modo, accade se l’utente non hai mai generato i cluster e quindi non ve ne `e alcuno da cui poter estrarre le features. 4 In questo caso la distanza altro non `e che la differenza tra i valori.
  • 63. 62 3. WSS: Writing Similarity Search 3.2.4 Evaluate Calibro L’ultima finestra presentata `e Evaluate Calibro. Questa componente `e raggiungibile solo attraverso il menu della schermata principale, nella sotto- sezione di Semi-Automatic Features5 e rappresenta la sezione per il calcolo del Disuguale Metodico del Calibro. Figura 3.5: Finestra Evaluate Calibro L’interfaccia `e semanticamente divisa in due sezioni: a sinistra la finestra per l’estrazione dei valori, a destra il risultato del calcolo del metodico del calibro. La finestra a sinistra presenta diversi componenti: sei bottoni, una tabella, un textfield e un pannello. Il pannello ha il compito di mostrare una ante- prima dell’immagine in analisi; cos`ı, allo stesso modo, la tabella permette la visualizzazione delle misurazioni effettuate sull’immagine. I bottoni invece hanno i seguenti compiti: 5 Main GUI → Tools → Semi-Automatic Feature → Evaluate Calibro
  • 64. 3.2 Interfaccia 63 Open Image Permette l’apertura di una immagine, e, se gi`a presente nel database, il caricamento dei suoi valori nella tabella. Graphoskop Come nel modulo di Extract Paleography, vi `e la possibilit`a di estrazione di misurazioni del medio letterale attraverso Graphoskop. `E richiesto l’utilizzo della componente forma generica per calcolare il medio letterale di ogni singola lettera. Extract Office Permette di caricare in tabella i valori estratti: oltre a dare la possibilit`a di caricarli dal foglio di calcolo generato da Graphoskop, `e permesso anche l’utilizzo di un file .txt in cui vengano inserite le misurazioni effettuate. In questo ultimo caso, la sintassi del file `e rela- tivamente generica, si possono scrivere le misurazioni sulla stessa riga, o in righe successive, o inserendo pi`u valori su righe diverse. Add Il bottone Add, associato al textfield al suo fianco, permette di aggiun- gere manualmente una misurazione. Clear Empty Viene data la possibilit`a all’utente di modificare o cancellare un valore presente nella tabella. Se si rimuovono delle misurazioni, il tasto Clear Empty aggiorna la tabella, eliminando le righe rimaste vuote. Persistent Permette di rendere persistenti i valori presenti in tabella sul database, associandoli all’immagine visualizzata nel pannello di ante- prima. La seconda sezione, adibita a mostrare i risultati, `e suddivisa come segue: • Due Radio Buttons6 • Una Combobox • Due Checkbox con associate due Textfield 6 Componente che permette di effettuare una scelta singola fra quelle disponibili
  • 65. 64 3. WSS: Writing Similarity Search • Un Button • Cinque Label per la visualizzazione del risultato. I RadioButton permettono di scegliere se calcolare il calibro sulla singola immagine aperta, con i valori mostrati in tabella, o su un cluster preceden- temente generato. Se si ricade su questa seconda scelta, vengono messe a disposizioni le varie opzioni per decidere il cluster su cui calcolare il calibro. Il bottone Evaluate Calibro calcoler`a e stamper`a a schermo i risultati del disuguale metodico del calibro. Infine, l’ultimo bottone Query k-NN aprir`a un nuovo Dialog per l’impostazione dei parametri utili alla risoluzione di una query k-NN basata sul Calibro come Pattern. 3.3 Estensione WSS L’obiettivo della tesi, come gi`a detto, `e stato di aggiungere al framework WSS la componente d’analisi paleografica. Per mantenere consistenza con l’intero modulo di Windsurf basato su Re- gioni, `e stato deciso di creare un nuovo package Paleography all’interno del quale sono state aggiunte diverse classi per raggiungere l’obiettivo. In primo luogo verr`a dato una visione generale del package, andando di passo in passo a descrivere le varie classi. 3.3.1 Package Paleography Il package Paleography (Fig. 3.6) contiene 4 classi e un ulteriore package. Le classi presenti sono: PaleographyImage Rappresentazione di una immagine paleografica CalibroImage Rappresentazione di una immagine per l’individuazione del Calibro
  • 66. 3.3 Estensione WSS 65 Figura 3.6: UML Paleography Package ExtractFromOffice Classe utility per l’estrazione di feature da un foglio di calcolo EvaluateCalibro Classe contenente i metodi per il calcolo del disuguale metodico del calibro. Il package PaleographyRegion contiene invece la classe astratta Paleography- Image e diverse sue implementazioni, ognuna rappresentativa di una deter- minata feature. 3.3.2 PaleographyImage Class Per riuscire ad ottenere un modello Region-Based, si `e deciso di far esten- dere PaleographyImage alla classe astratta Image. Il paradigma Region-Based prevede che ogni immagine sia caratterizzata dal- le regione di cui essa `e composta: per rispettarne la struttura, la classe PaleographyImage viene rappresentata da nove Regioni di diverso tipo: • PaleographyLineSpacingRegion • PaleographyWritingBodyRegion
  • 67. 66 3. WSS: Writing Similarity Search • PaleographyWritingBodyASCRegion • PaleographyWritingBodyDESCRegion • PaleographyWritingAnglesRegion • PaleographyWritingAnglesASCRegion • PaleographyWritingAnglesDESCRegion • PaleographySpacingWordsRegion • PaleographyDensityRegion Ognuna di queste regioni rappresenta un tipo di features, di conseguenza una immagine paleografica viene rappresentata dal numero di misurazioni effettuate per ogni tipo di Regione diversa. Da come si evince dalla figura 3.7, tutti i tipi di regioni estendono, o per meglio dire, implementano la classe astratta PaleographyRegion, la quale a sua volta estende la classe Region. La classe PaleographyRegion, oltre ad avere un campo protected double value che rappresenta il valore della feature, contiene i seguenti metodi: • public PaleographyRegion(ImageID id) Costruttore con parametro in ingresso ImageID per assegnare l’id alla regione. Inoltre nel costruttore `e presente il metodo setSize(1) per impostarne la grandezza a uno. • public void setValue(double v) Metodo pubblico che imposta il valore v uguale al valore double in ingresso value. • public void setFeature(String s) Metodo pubblico analogo a setValue con la differenza di avere in Input un oggetto String invece che double
  • 68. 3.3 Estensione WSS 67 Figura 3.7: UML PaleographyImage Class • public double getValue() Metodo pubblico che restituisce il valore value come double • public String getFeature() Metodo pubblico che restituisce il valore value come String. • public double distance(Region r) Metodo @Override pubblico che calcola la distanza tra la Region in esame e la Region di input r. Il metodo restituisce la differenza in valore assoluto dei rispettivi valori value.
  • 69. 68 3. WSS: Writing Similarity Search Se prendiamo in esame una qualsiasi implementazione di PaleographyRegion, troviamo in aggiunta solo il seguente costruttore • public PaleographyXYZRegion(ImageID id, double v) Costruttore che accetta in ingresso la consueta ImageID con in pi`u il valore double v da assegnare alla variabile value precedentemente descritta. Come gi`a detto, la PaleographyImage `e caratterizzata dalle misure di ogni singola tipo di Region e per riuscire a ottenerne i vettori delle misure vengono implementati nove campi protected, uno per ogni tipo di regione: • protected AbstractList<Region> linespacing; • protected AbstractList<Region> writingbody; • protected AbstractList<Region> writingbodyasc; • protected AbstractList<Region> writingbodydesc; • protected AbstractList<Region> writingangles; • protected AbstractList<Region> writinganglesasc; • protected AbstractList<Region> writinganglesdesc; • protected AbstractList<Region> spacingwords; • protected AbstractList<Region> density; La classe PaleographyImage implementa i seguenti metodi: • public PaleographyImage(ImageID id) Costruttore con parametro di ingresso ImageID che imposta l’id del- l’immagine e istanzia i vari vettori. • public PaleographyImage(ImageID id, String resultString) Copy Constructor con anche una Stringa contenente le features nel formato descritto pi`u avanti.
  • 70. 3.3 Estensione WSS 69 • private double getAVG(AbstractList<Region> src) Metodo privato che restituisce la media del vettore di feature src dato in input. • public double[] getAVGs() Metodo pubblico che restituisce un array di double contenente la media di ogni tipo di Region. • public void setFeatures(String vector) Metodo pubblico che permette di impostare i valori di ogni singola feature al vettore corrispondente. La stringa vector deve avere questo formato: – ’ ’: ovvero stringa vuota. Il metodo allora pulisce il vettore corrispondente da tutti gli elementi – v1,...,vn-c1,...,cn-...-s1,...,sn: in cui la stringa ha un preciso ordine. Ogni ’-’ segna la fine di un vettore di feature dall’altro, e all’interno del singolo vettore, il carattere ’,’ divide il valore di una feature dall’altra. • private void setRegionFeatures(String vector, AbstractList<Region> v) Metodo privato di supporto che permette di creare il vettore di Region a partire da una stringa vector. • public String getFeatures() Metodo pubblico che restituisce i vettori di tutte le features come String usando il formato precedentemente descritto. • public String getRegionFeature(AbstractList<Region> vector) Metodo pubblico che restituisce un singolo vettore di Region come String usando il formato precedentemente descritto.
  • 71. 70 3. WSS: Writing Similarity Search Vengono inoltre forniti diversi metodi getter e setter per ottenere le features come double, piuttosto che la loro media, e di impostarne i valori attraverso array di double o stringhe.
  • 72. 3.3 Estensione WSS 71 3.3.3 WrapperFeaturePaleographyMySQL Class Per gestire a livello database le immagini e le features paleografiche `e stata implementata la nuova classe WrapperFeaturePaleographyMySQL, la quale, allo scopo di mantenere inalterate le funzioni finora presentate, estende la classe WrapperFeatureMomentsMySQL. Figura 3.8: UML WrapperFeaturePaleographyMySQL Class La classe contiene diversi campi final protected che definisco semplicemente il nome delle tabelle del database. WrapperFeaturePaleographyMySQL implementa i seguenti metodi:
  • 73. 72 3. WSS: Writing Similarity Search • public boolean createPaleographyFeatTablesInDB() Metodo che crea tutte le tabelle necessarie nel database; in particolare crea 9 tabelle per contenere le features di ogni tipo di Region, una per gestire i clusters a livello generale, e altre 9 per la gestione dei cluster di ogni tipo di Region. • public void insert paleography(Image img, String imageURL) Data in input una PaleographyImage e il suo path, il metodo inserisce le features dell’immagine nel database. • public void insert paleographyFromOffice(String imageURL, String ExcelURL) Metodo simile a insert paleography, ma con la possibilit`a di specificare il percorso dell’immagine e del foglio di calcolo da cui importare i valori. • public void insert paleographyFromResult(String imageURL, String resultFeature) Ulteriore metodo di supporto per inserire una immagine nel databa- se specificando il path dell’immagine e una stringa rappresentante le features. • public String retrievePaleographyFeatureFromID(ImageID id) Dato l’id dell’immagine, il metodo restituisce le sue features, presenti nel database, sotto forma di stringa. • public Image retrieveImage paleography(ImageID id) Metodo che restituisce una PaleographyImage con i valori di Region caricati dal database, avendo come input l’id dell’immagine. • private Image create paleography(String resultFeature, String imageURL) Metodo privato di supporto che data una stringa rappresentante le features, e il path dell’immagine, restituisce una PaleographyImage con i valori impostati correttamente.
  • 74. 3.3 Estensione WSS 73 • public Image extractFromSingleURL(String imageURL) Metodo pubblico che restituisce una PaleographyImage, con i valori caricati dal database, avendo a disposizione il percorso dell’immagine stessa. • private String extractFromSingleURLtoString paleography(String imageURL) Metodo privato di supporto che restituisce il vettore di features, cari- cato dal database, sotto forma di stringa. • private Image create notConsistent paleography(String resultFeature, String imageURL) Metodo privato simile a create paleography che restituisce una Paleo- graphyImage creando un nuovo id univoco progressivo relativo all’im- magine se non gi`a presente. • public Image extractFromSingleURL notConsistent paleography(String imageURL) Metodo analogo a extractFromSingleURL che utilizza la versione non consistente di create paleography. • public AbstractList<String> getAuthors() Metodo pubblico che restituisce la lista degli Autori presenti nel data- base, utilizzando le classi associate alle immagini. • public void generateAllClustersDB() Metodo pubblico che genera i Cluster a partire dalle classi delle imma- gini • public double[] queryWithClusters(int granularity, String query) Metodo utilizzato nell’interfaccia Compare Paleography, restituendo un’ar- ray di double che contengono la media dei valori delle features delle immagini appartenenti al Cluster richiesto.
  • 75. 74 3. WSS: Writing Similarity Search • public Vector<ScoredResultImage> queryKNNPaleographyImage(PaleographyImage image, ParametricPaleographyDistance PalDistance, int k) Metodo pubblico che permette di effettuare una query kNN a partire dall’immagine image, utilizzando la ParametricPaleographyDistance e con valore k uguale al valore di input. ParametricPaleographyDistance Il metodo queryKNNPaleographyImage della classe WrapperFeaturePaleogra- phyMySQL utilizza la distanza ParametricPaleographyDistance creata appo- sitamente per la gestione di features paleografiche. Per mantenere l’interoperabilit`a del framework, la classe estende la classe astratta Distance e si trova inserita all’interno del relativo package. La classe richiede di impostare 10 parametri boolean: i primi 9 per i vari tipi di PaleographyRegion e l’ultimo per valori non nulli. La distanza si comporta come una distanza euclidea con l’opzione data al- l’utente di scegliere quali tipi di Region utilizzare (i primi 9 booleani) e di escludere o meno i valori zero (l’ultimo boolean). 3.3.4 CalibroImage Class La classe CalibroImage `e la rappresentazione di una immagine per il cal- colo e la valutazione del disuguale metodico del Calibro. Si `e scelto di dividerla dalla classe PaleographyImage poich´e, nonostante ca- ratteristiche comuni basate sull’analisi grafologica, presenta peculiarit`a non presenti in una immagine analizzata solo mediante feature paleografiche. Per mantenere il paradigma Region-Based, la classe CalibroImage, la quale estende la classe astratta Image, viene rappresentata attraverso le regioni di cui `e composta: nel caso specifico, una nuova specializzazione della classe astratta PaleographyRegion, ovvero PaleographyXHeightRegion.
  • 76. 3.3 Estensione WSS 75 PaleographyXHeightRegion si comporta in ugual modo a qualsiasi Paleo- graphyRegion descritte nel paragrafo 3.3.2, con l’unico scopo di rappresentare l’altezza del medio letterale, ovvero delle lettere medie del testo. Figura 3.9: UML CalibroImage Class
  • 77. 76 3. WSS: Writing Similarity Search CalibroImage comprende tre campi protetti: • protected AbstractList<PaleographyRegion> xheight; • protected EvaluateCalibro evcal; • protected Vector<Double> differences; Se xheight e differences sono vettori usati per la memorizzazione delle singole misurazioni e per la differenza fra esse, la variabile evcal `e il fulcro della va- lutazione del Calibro: essa si appoggia alla classe EvaluateCalibro, trattata nel prossimo paragrafo. La distinzione dei due campi xheight e differences `e necessaria: il primo, in- fatti, serve per l’effettivo calcolo del disuguale metodico del calibro,mentre il secondo come rappresentazione del pattern Calibro dell’immagine stessa. La classe CalibroImage contiene i seguenti metodi: • public CalibroImage(ImageID id) Costrutture che assegna l’id all’immagine e inizializza i campi protected della stessa. • public CalibroImage(ImageID id, String resultString) Copy Constructor che oltre ad inizializzare i campi, attraverso la stringa resultString, n´e assegna anche i valori • public String getCalibroType() Metodo pubblico che restituisce il tipo del Calibro: piccolo, medio o grande. • public double getCalibroAVG() Metodo pubblico che restituisce la grandezza media del letterale medio: serve per distinguere il tipo di calibro. • public int getNumDistanze() Metodo pubblico che restituisce il numero di campane (disuguaglianze) trovate.
  • 78. 3.3 Estensione WSS 77 • public String getInegualCalibro() Metodo pubblico che restituisce il grado del disuguale metodico del calibro. • public double getAVGStartEnd() Metodo pubblico che restituisce la distanza tra la prima e l’ultima campana. • public double getEachAVG() Metodo pubblico che restituisce la grandezza media di ogni campana. • public double[] getXHeightValue() Metodo che restituisce un array di double delle misurazioni effettuate. • public double[] getPattern() Metodo che restituisce il pattern Calibro come array di double. • public void setFeatures(double src[]) Metodo pubblico che, dato in input un array di double, assegna i valori sia a xheight che a differences. • public void setFeatures(String vector) Ugual metodo a setFeatures(double src[]), con la differenza di accettare una stringa di valori nel formato v1, . . . , vn. 3.3.5 EvaluateCalibro Class La classe EvaluateCalibro, come detto precedentemente, `e adibita all’ef- fettivo calcolo del disuguale metodico del Calibro. Essa contiene diverse costanti utili per il calcolo e la differenziazione del calibro, e oltre a implementare diversi metodi, definisce una nuova classe chiamata DisuguaglianzaMetodica. La classe DisuguaglianzaMetodica rap- presenta la campana, pi`u volte citata, utilizzata nel calcolo del disuguale metodico del calibro. Essa contiene cinque variabili private:
  • 79. 78 3. WSS: Writing Similarity Search • private double start; • private double end; • private double peakValue; • private int peakOccurency; • private boolean disugualemetodico; le quali rappresentano, in ordine, il valore di inizio, di fine e di picco del- la campana, la frequenza del valore di picco e infine un valore booleano che distingua i diseguale metodico da quello non-metodico. DisuguaglianzaMeto- dica implementa diversi metodi getter per ottenere il valore di ogni variabile precedentemente illustrata pi`u il costruttore che inizializza e assegna un va- lore alle variabili stesse. La classe EvaluateCalibro gestisce otto variabili private per il calcolo del Calibro, e oltre a i metodi di setter e getter di queste ultime, contiene i seguenti metodi: • private void update() Metodo privato chiamato ogni qual volta le misurazioni effettuate sul letterale medio variano. Esso semplicemente chiama in ordine i metodi privati successivamente illustrati per aggiornare il valore del Calibro. • private void setupValues() Metodo privato che crea l’istogramma di valori e definisce il tipo di calibro. • private void createDisuguaglianze() Metodo privato che crea le disuguaglianze, ovvero le campane, a partire dall’istogramma creato al passo precedente. • private void setupAVGsDistance() Metodo privato che calcola le medie necessarie per il diseguale del Calibro.
  • 80. 3.3 Estensione WSS 79 • private void evaluateInegualCalibro() Metodo privato che calcola il grado del disuguale metodico del Calibro. 3.3.6 WrapperFeatureCalibroMySQL Class In egual modo per le features paleografiche, `e stata creata la classe Wrap- perFeatureCalibroMySQL per la gestione del calibro nel database. Per mantenere l’interoperabilit`a e la struttara finora generata, la classe esten- de WrapperFeaturePaleographyMySQL. La classe presenta tre campi final protected per la gestione delle tabelle nel database. WrapperFeatureCalibroMySQL implementa i seguenti metodi: • public boolean createCalibroTableInDB() Metodo pubblico che crea tre tabelle nel database: una per gestire le features Calibro sulle immagini e due per gestirne i Cluster. • public void insert calibro(Image img, String imageURL) Metodo pubblico che inserisce nel database l’immagine CalibroImage img con le features associate, ricavando l’id grazie all’imageURL. • public void insert calibroFromResult(String imageURL, String resultFeature) Metodo alternativo per inserire le features nel database, utilizzando invece dell’immagine una stringa di misurazioni. • private Image create calibro(String resultFeature, String imageURL) Metodo privato di supporto che crea una CalibroImage utilizzando le features resultFeatures e ricavando l’id grazie all’imageURL. • public String retrieveCalibroFeatureFromID(ImageID id) Metodo pubblico che restituisce in formato String, le features Calibro associate all’immagine id.
  • 81. 80 3. WSS: Writing Similarity Search • public Image retrieveImage calibro(ImageID id) Metodo pubblico che restituisce una CalibroImage ricavandone le fea- tures dal database, grazie al suo id. • public Image extractFromSingleURL(String imageURL) Metodo alternativo che restituisce una CalibroImage utilizzando il suo path. • private String extractFromSingleURLtoString calibro(String imageURL) Metodo privato di supporto che restituisce le features presente nel database associate all’immagine il cui path `e imageURL. • private Image create notConsistent calibro(String resultFeature, String imageURL) Metodo privato che crea una CalibroImage il cui id viene creato in maniera non consistente, utilizzando le features date in ingresso. • public Image extractFromSingleURL notConsistent calibro(String imageURL) Metodo pubblico che restituisce una CalibroImage, con id non consi- stente, utilizzando il suo path imageURL. • public AbstractList<String> getAuthors() Metodo pubblico che restituisce la lista di Autori, utilizzando la classe delle immagini nel database. • public void generateClusterCalibroinDB() Metodo pubblico che crea e calcola i vari clusters. • public CalibroImage queryWithClusters calibro(int granularity, String query) Metodo pubblico che permette di effettuare una query sul clusters selezionato a diversi livelli di granularit`a.