Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
Tartalomjegyzék
1 Abstract ............................................................................................................................. 4
2 Bevezetés .......................................................................................................................... 4
2.1 A probléma felvetése ................................................................................................ 4
2.2 A projekt célja ........................................................................................................... 5
3 Irodalomkutatás ................................................................................................................ 6
3.1 Hasonló rendszerek ................................................................................................... 6
3.2 Felhasználási módszerek ........................................................................................... 7
3.2.1 Rejtett Markov Modellek (Hidden Markov Models, HMMs) ............................ 7
3.2.2 Hibrid módszerek .................................................................................................. 9
3.2.3 Visszacsatolt mesterséges neuronhálózatok (Recurrent Artificial Neural
Networks, RNNs) ....................................................................................................................... 9
3.3 Rendszerek összehasonlítása .................................................................................. 11
3.3.1 A HMM és RNN módszerek egy konkrét összevetése ......................................... 11
3.3.2 ICDAR 2009 (International Conference On Document Analysis and Recognition
2009) ............................................................................................................................. 11
3.4 A feldolgozás lépései ............................................................................................... 13
3.4.1 Sorok kinyerése ............................................................................................... 13
3.4.2 Normalizálás .................................................................................................... 14
3.4.2.1 Sorok elforgatása ........................................................................................ 14
3.4.2.2 Írás dőltségének megszüntetése ................................................................. 14
3.4.2.3 Az írás régióinak normalizálása ................................................................... 15
3.4.2.4 A betűk szélességének normalizálása ......................................................... 15
3.4.2.5 A kép intenzitásértékeinek normalizálása .................................................. 16
3.4.3 Jellemzők kinyerése ............................................................................................ 16
3.4.4 Jellemzők feldolgozása ........................................................................................ 17
3.4.5 Címkézés.............................................................................................................. 17
3.4.6 Nyelvi- modellek, statisztikák és szótárak használata ......................................... 17
3.4.6.1 Szótárak ....................................................................................................... 17
3.4.6.2 Nyelvi modellek ........................................................................................... 17
3.5 Az IAM adatbázis jellegzetességei ........................................................................... 18
3.6 Az irodalomkutatás összegzése ............................................................................... 20
4 Megvalósítás ....................................................................................................................... 21
4.1 A tesztadatok .......................................................................................................... 21
4.2 A vízszintes vonalak meghatározása ....................................................................... 21
4.2.1 Hough transzformáció ..................................................................................... 21
4.2.2 Vízszintes projekció ......................................................................................... 22
4.2.3 Peakiness érték számítás................................................................................. 24
4.2.4 Kontúrkeresés ................................................................................................. 26
4.3 A kézzel írt rész beforgatása ................................................................................... 27
4.4 A sorok szétválasztása ............................................................................................. 29
4.5 A sorok elforgatása ................................................................................................. 30
4.5.1 A ferdeség meghatározása lineáris regresszióval ........................................... 31
4.5.2 A ferdeség meghatározása Kendall-Theil regresszióval .................................. 31
4.5.3 A két módszer összehasonlítása ...................................................................... 32
4.5.4 Az elforgatás megvalósítása ............................................................................ 33
4.6 Az írás dőltségének megszüntetése ........................................................................ 35
4.6.1 A dőlésszög meghatározása a függőleges projekció szórása által .................. 37
4.6.2 A globális dőlésszög meghatározása általánosított projekció által ................ 38
4.6.3 A lokális dőlésszög meghatározása általánosított projekció által ................... 39
4.7 Az írás régióinak normalizálása ............................................................................... 43
4.8 A betűk szélességének normalizálása ..................................................................... 45
4.9 A kép intenzitásértékeinek normalizálása .............................................................. 46
4.10 A normalizálás lépéseinek összefoglalása ........................................................... 47
4.11 A jellemzők kinyerése .......................................................................................... 48
5 Az elkészült program bemutatása ................................................................................... 50
5.1 A modulok közti kapcsolat ...................................................................................... 50
5.2 A program működésének bemutatása .................................................................... 51
5.3 A kiszámolt adatok helyességének tesztelése ........................................................ 52
6 Összefoglalás ................................................................................................................... 54
7 Irodalomjegyzék .............................................................................................................. 55
8 Mellékletek ...................................................................................................................... 58
8.1 Ábragyűjtemény ...................................................................................................... 58
8.2 A HMM és RNN módszerek egy konkrét összevetése ............................................. 65
8.2.1 Az első tesztminta: .......................................................................................... 65
8.2.2 A második tesztminta .......................................................................................... 67
4
1 Abstract
This thesis is about unconstrained offline handwritten text preprocessing,
normalization and feature extraction, using the IAM database (what is available for the
public for free) for testing purposes. This thesis summarizes the previous works about
this topic, and then presents an own solution based on these works. The behavior of the
used algorithms is described in detail, and their outcome is presented by examples. The
further applications of the extracted features are also discussed, like handwritten text
recognition by Hidden Markov Models or Recurrent Artificial Networks but these
solutions are only presented, not implemented.
2 Bevezetés
2.1 A probléma felvetése
Még manapság is gyakran találkozik az ember olyan feladatokkal, amik
egyszerűek, egysíkúak, unalmasak, időigényesek és gépek által mégsem
automatizálhatóak. Ilyen például az adatrögzítés, kézzel írott dokumentumok, jegyzetek,
piszkozatok begépelése, kérdőívek feldolgozása, tesztek, dolgozatok, vélemények
kiértékelése.
A kézzel írott szövegek felismerése lehetővé tenné azok indexelését, kereshetővé
tételét. Ehhez például nem is szükséges a teljes szöveg összes szavának a sikeres
felismerése, elég csak a nagy valószínűséggel felismert szavakat vizsgálni, és azokból a
kulcsfontosságú szavakat meghatározni szövegbányászat segítségével [1], ami alapján a
dokumentum témája besorolható, ezáltal kategorizálható. A keresés így nem
automatizálódik teljesen, de csökkenti az emberi kereséshez szükséges időt, szűkíti a
keresési teret. Ez hasznos lehet például levéltárakban lévő kézzel írott levelek, vagy az
írógépek elterjedése előtt keletkezett dokumentumok esetében.
A teljes mértékben felismert szöveget pedig (a keresésen túl) a gép már képes
lenne felolvasni (például vakoknak) és ha szükséges, akkor a felolvasás előtt egy gépi
fordítást is el tudna végezni, vagy bármi mást, amit a karakteres digitális szöveggel
eddig is lehetett (átjavítás, kibővítés, statisztikák készítése, stb.).
5
2.2 A projekt célja
A projekt célja egy olyan rendszer megépítése, ami az IAM adatbázisban [2]
szereplő tesztképeken lévő kézzel írt szöveget képes elkülöníteni, sorokra bontani és
normalizálni, hogy lehetséges legyen a szövegből a jellemzőket kinyerni, amiket később
fel lehet használni bemenetként egy valamilyen tanítóalgoritmus számára, ami a kézzel
írt szöveg ASCII kóddá alakításáért felelős. A tanítóalgoritmus megvalósítása azonban
már nem témája a dolgozatnak, csupán azok lehetséges megvalósítási módjait mutatja
be nagyvonalakban, különös figyelmet fordítva a jellemzők felhasználásának
mikéntjére. Az IAM adatbázis több mint hatszáz ember bevonásával készített,
körülbelül 1600 oldalnyi lapolvasóval beolvasott formanyomtatvánnyal rendelkezik,
oldalanként 5 – 10 sornyi szabad stílusú, kézzel írt szöveggel. Ez az adatbázis megfelelő
a célra, mivel rengeteg különböző íráskép található meg benne, ezért változatos
tesztadatokkal szolgál.
6
3 Irodalomkutatás
3.1 Hasonló rendszerek
Már a hetvenes évek vége felé megjelentek az első olyan rendszerek, amik
kézzel írt számok felismerésére voltak képesek [3]. Ezek a rendszerek tipikusan egy
behatárolt felhasználási területre összpontosítottak, ilyen területek például a kézzel írott
postai címek felismerése, csekkeken lévő összeg beolvasása. Az ilyen problémák
esetében a felismerendő szavak egy kis szótárban elférnek, amiben tipikusan
városnevek, utcanevek szerepelnek, számok esetén pedig csak tíz különböző megoldás
lehet. Ezek a kritériumok, valamint az, hogy a megnevezett szövegek adott sorrendben,
adott helyen jelenhetnek meg, nagymértékben leegyszerűsítik a problémát. A
formanyomtatványok kézzel történő kitöltése is hasonló eset.
A számjegyek felismerése esetében például létezik már olyan rendszer, ami a
mintáknak csak 0,35%-át ismeri fel tévesen [4]. Ez a rendszer egy sokrétegű (hat) sok
neuronból álló (rétegenként pár ezer) feedforward neuronhálózat, ami tanuláskor a
backpropagation algoritmust használja. A tanulási sebesség gyorsítása érdekében
grafikus kártyákon futtatják az algoritmust.
A levelek kézzel írott szöveggel való címzése (vagy egyáltalán a levelek
küldése) egyre inkább háttérbe szorul az e-mail és a nyomtatott címzés miatt. Az
internetes banki megbízások és hitelkártyák használata szintén egyre inkább kiszorítja a
csekkek használatát. Mindezek ellenére még ma is sokat használják mindkét régebbi
megoldást.
A szövegkörnyezet független, általános, és felhasználó független
kézírásfelismerés azonban sokkal összetettebb probléma. Körülbelül húsz évvel
ezelőttre tehető (’90-es évek vége), amikor létrejöttek az első folyóírással írt szavak
felismerését megcélzó rendszerek. A szövegről itt csak annyit tudunk, hogy egy
megadott nyelven írták [5]. Az íráskép rengeteg stílusú lehet, a szavak nem előre
megadott pozícióban fordulnak elő. A különválasztott karakterek valamilyen osztályozó
algoritmussal felismertethetők, de az egybe írt, összekötött betűk felismerése már nem
egy mintafelismerésen alapuló probléma, sokkal inkább egy szekvencia-felismerésen
alapuló (3.1 ábra). Vissza lehetne vezetni a problémát különálló karakterek
7
felismerésére úgy, hogy szegmentáljuk a szavakat karakterekké, és a karaktereket
ismertetjük fel. Ahhoz azonban, hogy könnyen szegmentálni tudjunk karakterekké,
ahhoz fel kell ismerni az egész szót. Ez egy körkörös függés amit Sayre paradoxonának
szoktak nevezni [7]. A megoldás az, hogy egyszerre próbálunk meg szegmentálni és
felismerni.
3.2 Felhasználási módszerek
A kézírásfelismerés során dominánsan a rejtett Markov modelleket és a
mesterséges neuronhálózatokat használják fel, mint tanítóalgoritmusokat, illetve létezik
e két módszer ötvözete, ahol mindkét módszert felhasználják külön-külön, majd
szavazás alapján szavanként a legbiztosabb eredményt használják fel.
3.2.1 Rejtett Markov Modellek (Hidden Markov Models, HMMs)
A HMM-ek statisztikán és valószínűségszámításon alapuló modellek. A
Markov-lánc tulajdonságait használja fel. Szekvencia mintázatokat képesek leírni. A
szekvenciák állapotokból állnak. A HMM-ek betanítása során, statisztikai módszerekkel
3.1 ábra: A szövegfelismerés fejlődése [6].
8
megállapítható, milyen valószínűséggel követ egy állapot egy másik állapotot a
szekvencián belül. Ezeket állapotátmeneteknek hívjuk. Továbbá egy állapotátmenet
valószínűségét az is meghatározza, hogy az állapotot leíró megfigyelések milyen
valószínűséggel következnek be, amikor az adott állapot áll fenn. A HMM esetében az
állapotok nem ismertek, ezeket próbáljuk meg valószínűsíteni az előző állapot (ami
szintén valószínűsített, kivéve a legelső állapotot), és a megfigyelések függvényében. A
betanítás során épülnek fel a modellek, amik tartalmazzák a valószínűségi kapcsolatot
az állapot és következő állapot, valamint az állapot és az állapot ideje alatt megfigyelt
jellemzők között. A betanítás során a Baum-Welch-algoritmust alkalmazzák a
megfigyelések súlyozásához, és az állapot váltások valószínűségének kiszámításához,
vagyis a HMM paraméterezését kapjuk meg vele [8, 9].
A gyakorlatban az állapotok a címkék (pl.: beszédfelismeréskor egy fonéma,
kézírásfelismeréskor egy karakter, bioinformatikában nukleotid bázisok, aminosavak
(amiknek a szekvenciája fehérjéket épít fel). A megfigyelések pedig a jellemzők
(jellemzővektor). Ezek beszédfelismeréskor lehetnek például: amplitúdó, frekvencia
stb., kézírásfelismeréskor pedig a pixelek elhelyezkedése, eloszlása, stb. A tanítás alatt
modellek jönnek létre (HMM-ek) minden állapothoz. Felismeréskor ezeket a
modelleket próbálja rá a mintára a rendszer, amelyik a legjobban illeszkedik a
szekvenciára, az lesz az új állapot. Az illeszkedés mértéke valamilyen valószínűség lesz,
ezt a Viterbi-algoritmus felhasználásával kapjuk meg.
A HMM-ek nagyon népszerűek a beszédfelismerés esetében, ugyanis a beszéd
tekinthető egy szekvenciának, aminek állapotai nem véletlenszerűen váltják egymást,
hanem felfedezhető az állapotok közt valamilyen statisztikai korreláció. A beszédben a
fonémák egymásutánisága valamilyen rendszert alkot, ez nyelvenként változó. A
kézírás felismerés esetében is hasonló a helyzet, csak ott a karakterek egymásutánisága
alkot rendszert.
A legegyszerűbb HMM-ek nem használatosak, mivel azok esetében egy állapot
csak az előző állapottól függ. A gyakorlatban a Maximum Entrópia Markov-modellt
(MEMM) és a feltételes valószínűségi mezőket (conditional random fields, CRF)
alkalmazzák, mivel ezek nem csak egy kis lokális részt vesznek figyelembe a
valószínűségek kiszámításánál.
9
3.2.2 Hibrid módszerek
A hibrid módszerek több, különböző paraméterekkel felépített HMM-et
használnak, és a végső eredményt a különböző rendszerek eredményeiből számítják ki,
valamilyen „szavazással”. Például ha megkapjuk az összes rendszer eredményét egy
felismerendő szóra, ahol az eredmények a legesélyesebb tíz megoldást tartalmazzák,
akkor ezekből a rendezett listákból kiválasztjuk a legvalószínűbb megoldást [10].
A rendszerek nem csak HMM-ek lehetnek, hanem neuronhálózatok is, illetve
egy konkrét rendszer egyes különböző alrendszerei lehetnek mesterséges
neuronhálózatok és HMM-ek is keverve.
3.2.3 Visszacsatolt mesterséges neuronhálózatok (Recurrent Artificial
Neural Networks, RNNs)
A hagyományos, legegyszerűbb neuronhálózatok alkalmazása célszerű minták
felismerése, osztályozása esetén. Szekvenciák osztályozására (címkézésére) viszont
nem alkalmasak, mivel a szekvencia szegmensei összefüggésben állnak egymással, és
ezt már nem képes figyelembe venni egy feedforward NN, nincs emlékezete. Ez
különálló karaktereknél nem is okoz problémát. A visszacsatolt NN-ek (RNN) viszont
rendelkeznek rövidtávú memóriával, amit számításba tudnak venni az adott
időpillanatban beérkező inputok kiértékelésénél. Ez a kézírás felismerés esetében
rendkívül fontos, mivel sokszor csak a kérdéses karakter környezetében lévő karakterek
ismeretében tudunk következtetni a kérdéses karakterre. A jellemzővektor
tulajdonságainak (az RNN inputja) időbeli változásának nagysága is fontos információ,
és a tulajdonságok súlyozásával a lényeges információk akkor is megmaradnak, ha
zajos az input.
10
Kifejezetten erre a problémára lett kifejlesztve a Long Short-Term Memory
topológiájú RNN (LSTM RNN) (3.2 ábra), ami ezt a rövidtávú emlékezetet terjeszti ki,
így nagyobb időintervallumot képes átfogni [11].
A kézírás felismerés esetében hasznos, ha nem csak az aktuális vizsgált pozíció
előtti jellemzőket ismerjük az adott időpillanatban, hanem az utána lévőeket is. A
kétirányú RNN-ek (Bidirectional RNN, BRNN), két külön rejtett réteggel rendelkeznek,
az egyik balról jobbra dolgozza fel az inputokat, a másik jobbról balra, és ezek
kimenetei közös kimeneti rétegre vannak kapcsolva. A bemeneti réteg annyi neuronból
áll, amennyi jellemzőt kigyűjtünk a normalizált, előfeldolgozott képből (pl. 9), a
kimeneti pedig annyiból, ahány karaktert meg szeretnénk különböztetni egymástól (pl.
angol ábécé kisbetűi: 26 darab) plusz egy, ami a szóközért és egyéb nem osztályozható
jellemzőkért felelős (pl. zaj, túl apró írásjel).
Az RNN output rétegének egy olyan rétegnek kell lennie, ami a szegmentálatlan
(a karakterek össze vannak kötve egymással), független lokális osztályozásokat (mivel
minden időpillanat egy külön osztályozás) képes címkézni. A Connectionist Temporal
Classification (CTC) egy pont e célból kifejlesztett output réteg, ami szegmentálatlan
adatokon is képes a szekvenciák címkéinek valószínűségét meghatározni. Az output
neuronok aktivációi valószínűségi eloszlást adnak, ezeket normalizálni kell úgy, hogy a
címkék valószínűségének összege 1 legyen. Ezután, a normalizált aktivitásokat
felhasználjuk úgy, hogy figyelembe vesszük a már feldolgozott szekvencia részeken
kapott eredményeket (mindkét irányban). Ez egy feltételes valószínűséget fog adni
minden címkére. Így tehát egy címke valószínűsége nem csak az adott időkeretben vett
3.2 ábra: A kézírás felismerés lépései
RNN rendszer esetében [11].
11
jellemzők értékei alapján határozódik meg, hanem figyelembe vannak véve az adott
időkeretet környező időkeretek is (mindkét irányban). Ez nagyban hasonlít a rejtett
Markov-modellekre (HMM, Hidden Markov Model). Ezután ki kell választani azt az
utat, ami a címkék valószínűségét számításba véve a legvalószínűbb. Ez gyakorlatilag
azt jelenti, hogy egy olyan betűsorozatot kell találnunk, ami a leginkább értelmes szót
adja. Ezt a lépést szótárakkal és nyelvi modellekkel lehet támogatni [11, 12].
Ezen módszerek kombinációjaként jön létre a BLSTM RNN, ami – mint majd az
összehasonlításból kiderül – jobb felismerési arányokat ér el mint bármilyen HMM-en
alapuló (vagy hibrid) rendszer [10].
3.3 Rendszerek összehasonlítása
A két fő módszer összehasonlítása egy, a témával foglalkozó nemzetközi
konferencián megemlített eredmények figyelembe vételével, valamint egy konkrét
példán keresztül.
3.3.1 A HMM és RNN módszerek egy konkrét összevetése
A Berni Egyetem weboldalán létrehoztak egy web-alapú interfészt, ahol fel lehet
tölteni saját kézzel írott sorokat, és a kiválasztott rendszer megpróbálja azt felismerni. A
normalizálás és jellemzővektor kiszámítás fázisok mindkét rendszer esetében azonosak,
a jellemzővektor feldolgozását viszont egy HMM és egy RNN alapú rendszerrel is
elvégezhetjük [13]. Az ehhez tartozó ábrák az ábragyűjtemény 8.2-es fejezetében
találhatóak meg.
3.3.2 ICDAR 2009 (International Conference On Document Analysis
and Recognition 2009)
Az ICDAR egy verseny, ahol a nevezők versenyeztethetik egymással a
rendszereiket [10]. Az összes rendszer ugyanazon adatbázisból vett kézzel írott szavakat
kellett hogy felismerjen. Továbbá a betanítás is közös adatbázisból történt (kivéve a
ParisTech(1) nevű rendszert, ami saját adatbázison tanult). Az ICDAR 2009 esetében
francia volt a szöveg, de a rendszereket összevetették úgy is, hogy a csak francia
nyelvben szereplő karaktereket lecserélték angol karakterekre. A versenyre 10 rendszer
12
nevezett be, mindegyik HMM vagy hibrid alapú megoldással működött, kivéve egyet,
amelyik a legjobban teljesített, ami BLSTM RNN alapú rendszer volt. Három alfeladat
volt, mindegyikben első lett. A táblázatok a [10]-ben találhatóak meg.
WR1: Az első feladatban a kézzel írott szavakról el kellett eldönteni, hogy az
adott 100 lehetséges megoldás közül melyik a jó megoldás (Table 1).
WR2: A rendszerek által használt szótár közös volt, és a szótárban csak azok a
szavak szerepeltek, amik a felismerendő szavak voltak (1612 szó) (Table 2).
WR3: Ugyanaz, mint a WR2, csak nagyobb szótárral (5334 szó) (Table 3).
A táblázatokban a top10 azt jelenti, hogy a helyes megoldás benne volt e a
rendszer által adott 10 legvalószínűbb megoldása közt. A top1 pedig azt jelenti, hogy a
legvalószínűbb megoldás volt a helyes megoldás.
A megvalósítandó projekt szempontjából a WR3-as feladat normalized GT
(normalized Ground Truth, a francia nyelvre specifikus karakterek az angol abc
karaktereivé lettek transzformálva a könnyebb felismerés érdekében) top1-es oszlopa a
legérdekesebb, mivel ez tükrözi legjobban a körülményeket, amiben a rendszernek helyt
kellene állnia.
13
1.3 ábra: Horizontális hisztogramok, különböző elforgatási szögek esetében [14].
3.4 A feldolgozás lépései
Az egyes lépések szorosan egymásra épülnek, emiatt minden lépésben
keletkezett hiba összeadódik, ezért törekedni kell minden lépésnél a minél kisebb
hibaarányú feldolgozásra.
3.4.1 Sorok kinyerése
A dokumentum képét el kell forgatni, ha szükséges, ezután a kézírást tartalmazó
részeket kell meghagyni (e rendszer esetében ez utóbbi művelet elhagyható, mivel az
inputról feltételezzük, hogy csak kézzel írott szöveg van rajta, nincsenek ábrák, vagy
képek). A forgatást fokonként végezzük el, és annál a szögnél ahol a binarizált
dokumentum vízszintes hisztogramja a legmélyebb völgyeket és legmagasabb csúcsokat
mutatja, az lesz a megfelelő elforgatási szög (3.3 ábra). [14, 15] Ha pont fejjel lefelé
sikerült ezáltal elforgatni a dokumentumot, az a rossz felismerési arányból szembetűnő
lesz. Illetve hisztogram alapú ellenőrzéssel is meg tudjuk vizsgálni, mivel az írott betűk
a talpukhoz közel sűrűbbek, a tetejüknél ritkábbak. Az alapvonal alá lógó betűrészek
még ritkábbak, mint a magas betűk felső részei. A sorokat elválasztó egyenes
meghatározható a kép vízszintes hisztogramjából. Ahol lokális minimumai vannak a
hisztogramnak, ott lesz a két sort elválasztó egyenes (ábragyűjtemény: 8.1 ábra). Ha egy
vonás átlóg a sorok között, akkor abba a sorba lesz besorolva, ahova a súlypontja esik
[11]. A binarizálás történhet globális és lokális küszöböléssel is, szkennelt képek
esetében a globális módszer is megfelelő lehet. Lokális módszer esetén a Niblack és a
Sauvola algoritmusok jöhetnek szóba [16]. A lokális binarizálás nagyon lassú lehet,
ezért előtte érdemes a képről integrálképet [17] készíteni, ezáltal a futásidő nem fog
14
függeni a mozgó ablak méretétől [16]. Az integrálkép röviden megfogalmazva a pixelek
intenzitásértékeinek akkumulált összege két dimenzióban.
3.4.2 Normalizálás
A normalizálás azért fontos, mert így az azonos, de kissé eldeformálva leírt
karakterek valamilyen szinten azonos alakba hozhatóak, ezáltal csökkentve a
karakterosztályok számát. Ha egy karakter ferdén van leírva, vagy méretbeli
különbségek vannak, nem vethetőek össze egymással, de normalizálás után már igen, és
kinyerhetjük belőlük a jellemzőiket.
3.4.2.1 Sorok elforgatása
Meg kell találni azt az egyenest, lineáris regresszióval, ami a betűk talpára a
legjobban illeszkedik. Amint ez megvan, már könnyű kiszámolni a ferdeség fokát, és
elforgatni a sort a megfelelő szöggel. A betűk talpát úgy találhatjuk meg, hogy egy 1
pixel széles mozgó ablakkal végigmegyünk a képen, és a legalsó fekete pixel helyét
eltároljuk. Ezeket a helyeket használhatjuk fel a lineáris regresszió számításkor [8, 9].
3.4.2.2 Írás dőltségének megszüntetése
Ennél a lépésnél függőleges hisztogramot készítünk a sorról (3.4 ábra).
Elforgatjuk fokonként, és annál a szögnél ahol a függőleges hisztogram a legmagasabb
csúcsokat adja, az lesz az a szög, amit a nyíró algoritmus a nyíró-mátrixban felhasznál.
Ez lényegében az y koordináta és a szög függvényében tolja el az egész sort valamelyik
irányba (kézírás esetében, ha jobbkezes ember írásáról van szó, akkor általában balra)
[18].
3.4 ábra: A dőlt szöveg és a korrigált szöveg projekciói [18].
15
3.4.2.3 Az írás régióinak normalizálása
A sort vízszintesen fel kell osztani három részre (3.5 ábra). Ezt két egyenessel
tesszük meg. A felső alapvonal és az alsó alapvonal között az alacsony betűk vannak
(pl.: a, o, u, stb.). Ezeket az egyeneseket szintén horizontális hisztogramok segítségével
lehet kiszámolni. Meg kell találni a hisztogram deriváltjának két maximumát [8]. Ezt
úgy kapjuk, ha kiszámoljuk a sorösszegek szomszédos értékeinek különbségeit, és
vesszük a két legnagyobbat. További két egyenest kell még meghatározni, amik a sor
tetejét és alját határozzák meg. Mivel a sorok úgy lettek kivágva a sorok kinyerése
lépésben, hogy az írás alatt és felett nincs üres rész, ezért a legfelső és legalsó vonal a
kép első és utolsó sorára esik. A legfelső egyenes határolja például a nagybetűk és a
magas betűk tetejét, a legalsó egyenes pedig a lelógó betűk alját (pl. g, y, j, stb.) [9].
Miután megkaptuk a három régiót, mindhármat normalizálni kell, egy előre megadott
magasságra.
3.4.2.4 A betűk szélességének normalizálása
Meg kell vizsgálni, hogy a középvonal mentén mennyi előtér- és háttérpixel
váltás van. Ez jó becslést ad arra, hogy mennyi betű van az adott sorban. Azt, hogy egy
karakter körülbelül hány pixel széles legyen, azt előre meg kell adni. Ez alapján már
tudjuk normalizálni a betűket szélesség szerint is [8, 11].
3.5 ábra: (a) Az eredeti szöveg. (b) Szöveg a határoló egyenesekkel [8].
16
3.4.2.5 A kép intenzitásértékeinek normalizálása
Mivel nincs megkötés arra, hogy a szöveget író személy milyen tollat
használhat, ezért nagy eltérések fordulhatnak elő a leírt szöveg színében. Mivel az input
képek szürkeárnyalatos képekként kerülnek beolvasásra, így a színinformáció elvész, de
még így is lehetnek különbségek sötétebb és világosabb tónusú tollak esetében,
valamint a papír színe is eltérő lehet az egyes esetekben, ezért az intenzitásértékeket
normalizálni kell a képen [12].
3.4.3 Jellemzők kinyerése
A normalizált képen vízszintesen végigmegyünk egy 1 pixel széles ablakkal. Ez
lesz az időegység, ami a jellemzővektort tartalmazza. Beszédfelismerés esetében a
beszéd az idő múlásának függvényében változik, ott a választott időegység, vagyis a
választott időintervallum, amiből a jellemzőket kinyerik, például 50 ezredmásodperc.
Kézírásfelismerés esetében az írás pozíciója az x koordinátatengelyen az „idő”, a
választott „időegység” pedig például 1 pixel. A jellemzővektor kilencdimenziós, a
következő jellemzőket tárolja (ábragyűjtemény: 8.13 ábra) [11]:
a számtani közepe a pixelek szürkeárnyalatos intenzitásainak,
a pixelek súlypontja,
a súlypont másodrendű nyomatéka,
a legfelső és legalsó pixelek helye,
ezen helyek változásának mértéke a környező ablakokhoz képest,
az előtér és háttér váltások száma a legfelső és legalsó pixelek között,
az előtér pixelek eloszlása a legfelső és legalsó pixelek között.
17
3.4.4 Jellemzők feldolgozása
Az elkészített jellemzővektorokat átadjuk inputként a kiválasztott osztályozónak
(HMM vagy RNN).
3.4.5 Címkézés
Az osztályozó outputja alapján egy címkéző eljárással felcímkézzük a
szekvenciát. A gyakorlatban itt a fonémák, karakterek, nukleotid bázisok helyét kapjuk
meg a szekvenciában.
3.4.6 Nyelvi- modellek, statisztikák és szótárak használata
Végső lépésként alkalmazható módszerek, amik már a nyomtatott karaktereket
felismerő OCR (Optical Character Recognition) rendszerekben is alkalmazásra kerültek.
3.4.6.1 Szótárak
Miután megvannak a valószínűsített karakterek, egybefűzzük őket, és
megvizsgáljuk értelmes szó állt e elő. Ezt szótárak segítségével tehetjük meg. RNN
rendszerek esetében minél nagyobb a szótár mérete, annál pontosabb a felismerés,
HMM rendszerek esetében viszont egy bizonyos méret után romlik. [11]
3.4.6.2 Nyelvi modellek
A szavak közti összefüggéseket is érdemes figyelni. Bizonyos szófordulatok
gyakoribbak Az megelőző egy-két-három szóból valamilyen valószínűséggel
„megjósolható”, hogy milyen szó fog következni, ami hasonlít a következő, már
felismert szóra. Ezeket „n-grams”-nak hívják. Háromnál nagyobb szóösszetételeket nem
érdemes keresni, nem javítják a felismerést. Az „n” jelöli, hogy hány szó hosszúak a
figyelt szóösszetételek. Két szó esetében „bigrams”-nak hívják (vagy „digrams”), három
esetén „trigrams” a neve [5].
18
3.5 Az IAM adatbázis jellegzetességei
Az egyes normalizálási lépések szigorúan egymásra épülnek. Ebből kifolyólag
az egyes normalizálási lépéseket implementálásuk után alapos tesztelés alá kell vetni.
Az input képek a Berni Egyetem Gépi Látás és Mesterséges Intelligencia Kutatási
Csoport adatbázisából származnak [2, 19], amely folyóírással írt angol szövegek
felismerését tanuló algoritmusok tanítása céljából lett létrehozva, de az adatbázis
alkalmas a szövegírók azonosítása vagy verifikálása céljából létrehozott algoritmusok
tesztelésére is. Az adatbázis 1539 beolvasott oldalból áll, amit 657 különböző ember írt,
összesen 1353 sornyi szöveg, ami 115320 szót tartalmaz, amik fel is vannak címkézve,
hogy a tanítóalgoritmusok a betanításnál fel tudják használni. Minden kézzel írott
szöveghez megtalálható a megoldásuk is, továbbá néhány, a normalizálás során
felhasznált paraméter is, mint például a sorok és az írás ferdeségének szöge, a sorok és a
szavak helye, a binarizálás küszöbértéke, az írás három régióját meghatározó két
egyenes paraméterei, satöbbi. Az egyes oldalakon lévő írások külön-külön több stílusú
szöveget tartalmaznak, összesen tizenötöt, többek közt: újságcikkek, tudományos
írások, vallásos témájú írások, regény részletek, stb. Mindegyik oldal be van sorolva
egy kategóriába, ez esetleg segítheti a felismerést a szövegkörnyezet figyelembe
vételével, továbbá több különböző szó jelenik meg az adatbázisban. Egy űrlap négy
részből áll. Az első részben szerepel a „Sentence Database” felirat, és az adott űrlap
kategóriája és a szövegrész azonosítója (az író azonosítója csak a fájlnévben szerepel).
A második rész tartalmazza nyomtatottan azt a szöveget, amit a résztvevőknek kézzel le
kellett írniuk, és a harmadik rész ahova azt írniuk kellett. A negyedik rész ahová az írók
megadhatták a nevüket. Mindegyik rész egy vízszintes vonallal van elválasztva
egymástól. Az üres űrlap mögé egy segédvonalakkal ellátott lapot helyeztek, hogy
minél egyenesebb legyen az írás, továbbá ha nem fért ki az összes szöveg, amit le kellett
volna írni, akkor azt nem szabadott odazsúfolni, ki kellett hagyniuk a résztvevőknek. Az
íróeszközre nem volt megkötés, hogy minél több stílusú írás keletkezzen.
19
A lapolvasóval beolvasott dokumentumok 300dpi-s, 8 bites, szürkeárnyalatos,
PNG képfájlok 2479*3542-es mérettel (pl.: 3.6 ábra és egy nagyobb kép az
ábragyűjteményben: 8.2 ábra).
3.6 ábra: Egy mintakép az IAM adatbázisból.
20
3.6 Az irodalomkutatás összegzése
Ahogyan az irodalom irodalomkutatásból kiderült, az előfeldolgozó lépések
megegyeznek a különböző tanítóalgoritmusok esetében is. A normalizáló lépések során
számos jellemző eltűnik, mint például az írás dőltsége, azért, hogy a tanítóalgoritmusok
betanítása során létrejövő karakterosztályok minél inkább konkrétabbak legyenek.
Mivel egy dőlt „l” betűből és az egyenes „l” betűből is az „l” betű ASCII kódját akarjuk
kapni, ezért a tanítóalgoritmus a dőlt és az egyenes „l” betűk jellemzőiből hoz létre egy
karakterosztályt, ami nem szerencsés, mivel eléggé eltérőek lehetnek a jellemzőik, ezért
szükséges a normalizálás, hogy az azonos betűk jellemzői minél inkább hasonlítsanak
egymásra. Ezért fontos tehát egy hatékony előfeldolgozó- és normalizáló rendszer
kifejlesztése.
Az irodalomkutatás részeként bemutatásra kerültek a részletezett előfeldolgozó
rendszert alkalmazó rendszerek. Ezeknek a rendszereknek az alapvető működése nem
különbözik egymástól nagy mértékben. A tárgyalt előfeldolgozó rendszert tehát
hasznosítani tudják olyan kézírás felismerő rendszerek, amik több különböző író által írt
kézírást céloznak meg felismerni. Viszont nem feltétlen alkalmazható (vagy kevésbé
hatékony) előfeldolgozóként olyan rendszerek esetében, ahol az író személyének
beazonosítása vagy verifikálása a cél, ugyanis az íróra jellemző tulajdonságok egy része
elveszik, mint például a ferdeség, dőlés, betűk nagysága, stb.
21
4 Megvalósítás
4.1 A tesztadatok
Első lépésben a szkennelt dokumentumok orientációját kell megállapítani, hogy
korrigálni lehessen a lapolvasóba esetlegesen ferdén elhelyezett lapok ferdeségét. Erre
azonban nem volt szükség egyetlen dokumentum esetében sem, mivel azok nagyon
pontosan voltak beolvasva, legfeljebb egy fokos ferdeséggel. Ez a kis hiba nem
befolyásolta a későbbi lépések hatásfokát, mivel a dokumentumon lévő szövegrészeket
elválasztó vízszintes vonalak könnyedén megállapíthatóak e feltételek mellett is. A
kézzel írott szövegrész pedig soronként korrigálva lesz ferdeség szempontjából, továbbá
ha a dokumentum ferdén lett beolvasva, még nem biztos, hogy amit ráírtak kézzel
szöveget az is pont olyan nagyságban és irányban van elferdülve, mivel például
lehetséges az az eset, hogy a papírlap mögötti segédvonalakat tartalmazó papír egy
kicsit ferdén volt mögé téve. Csak a nyomtatott betűkkel írt szövegrész ferdeségének
beállítása volna lehetséges, például a szövegrészeket elválasztó vízszintes vonal
ferdesége alapján korrigálni, de mivel a nyomtatott szövegrészre nincs szükség, ezért
felesleges.
4.2 A vízszintes vonalak meghatározása
A vonalak meghatározásához többféle módszer vizsgálatra került. A különböző
módszerek és az elért eredmények e szekcióban kerülnek részletezésre.
4.2.1 Hough transzformáció
A vízszintes elválasztó vonalak helyzete Hough transzformáció [20] segítségével
került volna meghatározásra. Azonban mivel a Canny éldetektáló [21] a vonalak
élpontjait nem egy összefüggő vízszintes egyenesként határozta meg, hanem kisebb
recék és törések jelentek meg benne, ezért a Hough vonaldetektáló csak több kisebb
4.1 ábra: Fals-pozitív vonal a life szó alján.
22
szakaszt talált meg, és nem lehetett meghatározni a vonal pontos helyét. Továbbá több
olyan egyenest is talált, amit nem szabadott volna. A Hough transzformáció
paramétereit nagyon nehéz jól megválasztani, és ha sikerül is egy tesztkép esetében,
más tesztképekre nem garantáltan ad kielégítő eredményt (4.1 ábra).
4.2.2 Vízszintes projekció
Az előző módszer tehát nem alkalmas e probléma megoldására. Egy másik
lehetséges módszer, ha elkészítjük a kép vízszintes projekcióját, vagyis összegezzük a
sorokban lévő pixelek intenzitását. Ezt a projekciót megfelelően elemezve, megkapható
a hosszú fekete vízszintes vonalak helyzete (4.2 ábra).
Egy másik vizsgálható adat, ha binarizáljuk a képet és soronként megszámoljuk
a fekete-fehér váltások számát. A képet Otsu módszerével [22] érdemes binarizálni,
amely egy globális binarizációs módszer, vagyis az egész képet figyelembe veszi. Ez a
módszer akkor alkalmazható, ha a képen jellemzően előtér- és háttérpixelek vannak,
mint például a papír (háttérpixelek) és a rajta lévő írás (előtér pixelek).
4.2 ábra: A kitöltött nyomtatvány vízszintes projekciója.
23
Ez a kép hisztogramjából úgy tűnik ki, hogy két magas, egymástól könnyen
elkülöníthető csúcsot produkál (4.3 ábra).
A küszöböt aszerint határozza meg, hogy a leendő két osztályon (előtér- és
háttérpixelek) belüli variancia a legkisebb legyen. Otsu megmutatta, hogy a két
osztályon belüli variancia minimalizálása azonos a két osztály közötti variancia
maximalizálásával [22]. 4.1 kifejezés: keressük azt a t-t, amire a kifejezés a legnagyobb
értéket adja. A jelöli az osztályok közti varianciát, (a jelöli a varianciát a b a
„between” (közti) rövidítése), a t a küszöbérték, az az osztályba eső pixelek száma, a
az osztályba eső pixelek intenzitásainak átlaga. A bináris képen a soronkénti fekete
fehér pixelek váltakozásának összeszámolása után, az eredmény a 4.4 ábrán látható. Ha
kevés a váltakozás és az előzőleg kapott vízszintes projekció értéke viszonylag magas,
ott feltehetőleg vízszintes fekete vonal található.
A vízszintes projekciót alapul véve meghatározásra került az a három
legvékonyabb csúcs, amiknek magassága legalább 20%-a a legmagasabb csúcsnak.
Mivel a projekció nem a binarizált képből kerül számításra ezért a zaj kiszűrése miatt
csak azok a sorok kerültek figyelembe, amik projekciója legalább 5%-a a legmagasabb
projekció összegű sornak. Azért nem érdemes a binarizált képből készíteni a projekciót,
mert a szürkeárnyalatos kép valamivel részletgazdagabb, az éleknél a színátmenet
4.3 ábra: A kép hisztogramja, és a küszöbérték helye az Otsu módszer által
meghatározva.
(4.1 kifejezés)
24
súlyozottan számítódik az összegbe. Ezzel a módszerrel sikeresen meghatározásra
kerültek a vízszintes vonalak, kivéve azokban az esetekben, amikor az író ráírta a
legalsó vonalra a nevét, vagy a leírandó szöveget, ekkor ugyanis a legalsó vonal túl
széles csúcsot eredményezett a projekcióban, így csak két vonalat talált az algoritmus és
így nem lehetett meghatározni a kézzel írt szövegrészt. A fekete-fehér váltások
számának figyelembe vétele nem javította az eljárás hatékonyságát.
4.2.3 Peakiness érték számítás
A csúcsok vizsgálatához felhasználható az úgynevezett peakiness számítási
módszer, ami az egyes csúcsokhoz egy számértéket rendel, annak függvényében, hogy
mennyire vékony és magas a csúcs (4.5 ábra, 4.2 kifejezés) [23]. A Va jelöli a csúcs
kezdetének a magasságát, a Vb a csúcs végének a magasságát, a P a csúcs legmagasabb
pontjának a magasságát, a W a csúcs szélességét, az N pedig a csúcs területét jelöli. A
legrosszabb eset, ha (ez az eset akkor állhat fenn, ha a csúcs egy téglalap)
ekkor ugyanis a jobb oldali tag zérus lesz, ezáltal az egész kifejezés zérus lesz, a
peakiness érték pedig annál jobb, minél nagyobb szám jön ki.
4.4 ábra: A fekete-fehér váltások száma az egyes sorokban.
(4.2 kifejezés)
25
A kép első 50 oszlopa levágásra került a szkennelés során kialakult bal oldali zaj
miatt (ábragyűjtemény 8.4 ábra) és a kapott kép ez után binarizálva lett, hogy a zajtól
minél inkább mentes legyen, és ebből került meghatározásra a kép vízszintes
projekciója. A tesztfutások során nem sikerült olyan mintát találni a számadatokban,
ami alapján a peakiness érték alkalmas lenne a vízszintes vonalak behatárolására, még
akkor se, ha a binarizált kép vízszintes projekciója előtte simítva lett. Egy tetszőlegesen
választott tesztmintán (ábragyűjtemény 8.5 ábra) A simítás több ablakmérettel és
iteráció számmal is ki volt próbálva. A vízszintes projekcióból (ábragyűjtemény 8.6
ábra) kiszámított peakiness értékek (ábragyűjtemény 8.7 ábra) alapján nem lehet
megállapítani, hogy melyik a keresett három vonal. A vízszintes projekciót simítva egy
5 egység széles átlagoló ablakkal, háromszori iteráció után, a csúcsok valamivel
vékonyabbak és laposabbak lettek, de nem látványos a különbség (ábragyűjtemény 8.8
ábra). Az előbbi projekcióból számított peakiness értékek az ábragyűjtemény 8.9
ábráján vannak ábrázolva. Ezen értékekről szintén nem tűnnek ki a keresett vonalak,
viszont jól látható, hogy így sokkal kevesebb csúcs keletkezett. Az ábragyűjtemény 8.10
ábráján az látható, hogy hogyan néz ki a projekció abban az esetben, amikor egy 9
egység széles átlagoló ablakkal simítjuk a projekciót, négyszeres iterációval. Ami
kitűnik az az, hogy a csúcsok alacsonyabbak és szélesebbek lettek, szögletesebbek. Az
4.5 ábra: A hisztogramon bejelölt paraméterek [19].
26
ezen adatokból számolt peakiness értékek az ábragyűjtemény 8.11 ábráján látszódnak.
Jól kivehetően domináns három csúcs. Ezen három csúcs helye a tesztmintán az
ábragyűjtemény 8.12 ábráján van bejelölve. Ez a három csúcs egyértelműen nem a
három egyenest határozta meg.
4.2.4 Kontúrkeresés
Az ennél egyszerűbb és alkalmasabb megoldás az volt, ha a kép binarizálásra
került, majd végre lett hajtva egy dilatáció, és ezután a kép kontúrjai kerültek
kiszámításra. A dilatáció azért szükséges, mert a vonalakban nyomdahiba miatt
esetleges kisebb, egy-két pixel széles szakadások keletkezhetnek, és így nem maradnak
összefüggőek. A kapott képen kontúrkeresést végrehajtva meghatározásra kerülnek az
egyes összefüggő komponensek befoglaló téglalapjai, és azok a komponensek lesznek a
vízszintes vonalak, amiknek szélessége eléri a teljes kép szélességének 70%-át (4.6
ábra). Ez a megoldás akkor is működik, ha az író ráírt a vonalra, de ekkor az utolsó sor
tartalmazni fogja az elválasztó vonalat is vagy az a sor teljes egészében lemarad (4.7,
4.8 ábra). Ezzel a módszerrel mind az 1539 dokumentumban sikeresen meghatározásra
került a kézzel írott rész.
4.7 ábra: Az önkéntes ráírta a nevét a vonalra
4.8 ábra: Az önkéntes ráírta a kézzel írt sort a vonalra.
4.6 ábra: A vízszintes vonal körülvéve a befoglaló téglalapjával (kék téglalap).
27
4.3 A kézzel írt rész beforgatása
Nyomtatott szövegek esetében a sorok ferdeségét a kép Fourier
transzformáltjának magnitude (nagyság) spektrum részéből lehetséges megállapítani
[24]. Ez a módszer a kézzel írt szövegek esetében is működik (4.9 ábra). Mivel az
adatbázisban lévő képek között nem volt található ferdén írt szöveg, ezért utólag lett
elferdítve két fokkal (ábra: 4.9 (a)), és az lett Fourier transzformálva (ábra: 4.9 (b)). A
transzformáció után gamma korrekciót kell végezni a képen, majd növelni a kontrasztot
(ábra: 4.9 (c)), ezután egy fix küszöbbel binarizálni a képet (ábra: 4.9 (d)) és a kapott
mintából megállapítható a ferdeség foka. A szükséges elforgatás mértéke kiszámítható a
legalsó-legbaloldaliabb és a középső fehér pixelek x tengelyen vett távolságából.
Ez a lépés tulajdonképpen nem szükséges, mivel a későbbi lépésekben a kézzel
írt sorok egyenként vízszintes irányba lesznek forgatva.
28
(a) (b)
(c) (d)
4.9 ábra: (a) Az eredeti szövegrész elforgatva 2 fokkal. (b) A Fourier transzformált kép
(c) Gamma korrekció és kontraszt növelés után. (d) Binarizálás után.
29
4.4 A sorok szétválasztása
Az input kép első 50 oszlopa levágásra kerül. Erre azért van szükség, mert a
szkennelés során a képek bal szélén valami oknál fogva zaj jelenik meg, és binarizálás
után előtér pixelekké válnának (ábragyűjtemény: 8.4 ábra). Ez a rész eltávolítható,
mivel biztosan nem tartalmaz írást, mert a lapolvasóba jobbra igazítva tették bele a
lapokat, és ezért alakult ki zaj a kép bal oldalán. A képet Otsu módszerrel binarizálni
kell és ezután készül vízszintes projekció, majd csak azok a sorok lesznek figyelembe
véve csúcsként, ahol a projekció összege legalább a 10%-a a legnagyobb projekció
összegnek. Ezután a projekcióban lévő csúcsok kezdő- és végpontjai meghatároznak
egy-egy téglalapot az eredeti képen. Azokat a befoglaló téglalapokat veszi csak
figyelembe, amik magassága eléri a legnagyobb befoglaló téglalap magasságának 30%-
át, ezáltal kiszűrhetőek a tévesen sornak észlelt sor részletek. Minden egyes sornak hat
tulajdonsága lesz: a négy oldalának helye, a vízszintes felezővonalának a helye és egy
kép, ami tartalmazza a sorban lévő írást, ami legelőször üres, csak később fognak
belekerülni a kézzel írt vonások (4.10 ábra). Ezután a képen megkeresi az összes olyan
kontúrt, aminek befoglaló téglalapjának területe legalább 25 pixel és van olyan
pixelérték, ami 150-nél kisebb (sötétebb). Ezeket a kontúrokat besorolja az előzőleg
meghatározott sorokba aszerint, hogy a kontúr súlypontja melyik sor közepéhez van a
4.10 ábra: Feketével: a kontúrvonalak és azok befoglaló téglalapjai. Zölddel: a
sorok előzetesen megállapított befoglaló téglalapjai, valamint az egyes
komponensek kontúrvonalainak súlypontjai.
30
legközelebb. A sor határait kibővíti, ha szükséges, hogy ne lógjon le róla az írás, majd a
sorhoz létrehozott képre ráírja az eredeti képről a kontúr befoglaló téglalapjának helyén
lévő írást. Így minden sor egy különálló kép lesz, és a betűk teteje és alja nem vágódik
le.
Problémát okozhat, ha az utolsó sorba már csak egy rövid szó kerül, ugyanis
ekkor a projekciója túl kicsi lesz ahhoz, hogy a 10%-os küszöbértéket elérje, ezért az
utolsó előtti sorhoz csatolja az algoritmus. Ennek megoldására az elkészült képek közül
azokat, amik másfélszer magasabbak, mint az átlagos képmagasság, ketté kell vágni.
Légyegében arra az egy képre alkalmazni kell ugyanazt a módszert, amit az eredeti
képre ahol még egyben volt az összes sor. Keletkezhetnek olyan sorok, amik csak
valami maszatot vagy pontot tartalmaznak, ezek kis méretük miatt utólagosan könnyen
kiszűrhetőek. Előfordulhatnak olyan sorok, amikben a zaj a sor végére kerül, és ez által
egy felesleges üres rész jelenik meg a sor végén a zajjal (4.11 ábra). Ez utólagosan
javítható függőleges projekció elkészítésével és vizsgálatával (a komponensenkénti
zajszűrést nem érdemes szigorítani, mivel az kiszűrné a kisebb íráslejeket is). Az
ábragyűjtemény 8.3 ábráján láthatóak az ábragyűjtemény 8.2 ábráján lévő kitöltött
formanyomtatványból az ismertetett módszerrel kinyert sorok.
4.5 A sorok elforgatása
A sorok elforgatásának első lépése a ferdeség megmérése. Erre két külön
módszer kerül bemutatásra, az egyik az egyszerű lineáris regresszió, a másik a Theil-
Sen féle regresszió, vagy más néven Kendall-Theil regresszió. Mindkettő esetében az
első lépés oszloponként végigmenni a képen, és a legalsó előtér pixel koordinátáit
eltárolni egy listában, később ezt a listát felhasználva kapjuk meg a meredekségét a
regressziós egyenesnek.
4.11 ábra: A jobb alsó sarokban megjelent apró zaj.
31
4.5.1 A ferdeség meghatározása lineáris regresszióval
A lineáris regresszió meghatároz egy egyenest az adott pontok koordinátái
alapján úgy, hogy az egyenes és pontok közti távolságok négyzetösszege minimális
legyen [25]. A regressziós egyenes meredekségét a 4.3 kifejezés szerint kapjuk meg
[25].
Ahol m a regressziós egyenes meredeksége, x és y a pontokhoz tartozó
koordináták, a pontokhoz tartozó x és y koordináták számtani közepe, n pedig az
x és y koordinátapárok (pontok) száma.
4.5.2 A ferdeség meghatározása Kendall-Theil regresszióval
E módszer esetében az összes pont koordinátái közt kiszámítjuk a meredekséget,
és ezeknek a meredekségeknek a mediánja lesz a kiszámított meredekség (4.4 kifejezés)
[26].
Ahol m a regressziós egyenes meredeksége, j > i és i, j {1..n} ahol n az x, y
koordinátapárok száma. Ez a módszer kevésbé érzékeny a kívülálló pontokra (4.12
ábra).
(4.3 kifejezés)
(4.4 kifejezés)
4.12 ábra: (a) Lineáris regresszió, (b) Kendall-Theil regresszió
Látható, hogy a Kendall-Theil regresszió esetében nem változik meg számottevően a
regressziós egyenes pozíciója a kívülálló pontok miatt. A piros pixelek jelölik az
oszlopban lévő legalsó pixelt, kékkel a regressziós egyenes látható.
(a) (b)
32
4.5.3 A két módszer összehasonlítása
Jelen probléma esetében a Kendall-Theil regresszió alkalmazása hatékonyabb,
mivel azoknak a betűk helyén, amiknek az alsó alapvonal alá lógó vonásaik vannak (pl.
y, q, j, stb.) a legalsó előtérpixel jóval az alapvonal alá kerül és ezek „kívülállónak”
fognak számítani. Az egyszerű lineáris regresszió viszont túlbecsülheti a ferdeség
mértékét, és túl nagy szöggel fogja kompenzálni a ferdeséget a forgatásnál, emiatt az
ellentétes irányban lesz ferde az írás (4.13 ábra).
4.13 ábra: Felülről lefelé: (a) az eredeti kép, (b) lineáris regresszió, (c) Kendall-Theil
regresszió, (d) a lineáris regresszió által megállapított meredekség alapján elforgatott
kép, (e) a Kendall-Theil regresszió által megállapított meredekség alapján elforgatott
kép.
Első ránézésre nem szembetűnő, de a (d) képen a szöveg már inkább balról jobbra
emelkedik, minthogy vízszintes lenne, igaz az eltérés igen csekélynek mondható.
(a)
(b)
(c)
(d)
(e)
33
4.5.4 Az elforgatás megvalósítása
Az affin transzformáció koordináták leképzésére alkalmas a meglévő
koordináták függvényében, olyan műveleteknél, mint például az eltolás, átméretezés,
forgatás, nyírás, vetítés tengelyre, tükrözés tengelyre, stb. és ezek konkatenáltja
(egymás utáni alkalmazása egy lépésben), tehát az összes lineáris transzformáció
elvégezhető vele, kiegészítve az eltolással. Ezek a transzformációk végrehajthatóak ha
mátrixszorzással megszorozzuk a transzformálandó koordinátákat a transzformáló
mátrixszal, ezáltal megkapjuk az új koordinátákat. Az affin transzformáció során a
forgatáshoz felhasznált mátrix homogén koordinátás alakja a 4.5 kifejezésben látható, a
koordinátákkal és a mátrixszorzással együtt.
Ahol a az óramutató járásával ellentétes irányban történő forgatás fokban
megadva és kifejezhető a 4.6 kifejezés szerint.
Ha megvannak az új koordináták, akkor arra a helyre beírjuk az eredeti
koordinátákon lévő pixelintenzitást. Ez a gyakorlatban fordítva működik, a célképen
lévő koordinátákhoz keressük a hozzá tartozó eredeti koordináták értékeit, hogy ne
maradjanak kitöltetlen helyek a célképen. Ezek a kitöltetlen helyek azért jöhetnének
létre, mert ha a transzformáció során nem kizárólag csak egész számokkal dolgozunk,
akkor olyan koordinátákat kapunk eredménynek, amik nem egész számok, a pixelek
koordinátái pedig csak diszkrét értékeket vehetnek fel. Ez az eset a visszakereséskor is
bekövetkezhet, ilyenkor a környező pixelek értékei alapján valamilyen módszerrel
interpolálni kell. Interpolációs módszerek lehetnek például:
Legközelebbi szomszéd: ha a legközelebbi pixel értékét választjuk, fűrészfogas élek
jöhetnek létre, viszont nem keletkezik olyan intenzitású pixel az új képen, ami az
eredetin nem volt.
(4.5 kifejezés)
(4.6. kifejezés)
34
Bilineáris interpoláció: ezen interpoláció esetén az élek természetesebbnek hatnak,
viszont létrejöhetnek olyan intenzitású pixelek, amik eddig nem voltak. Bilineáris
interpolációnál a négy szomszédos pixel intenzitásából számítódik ki az új
intenzitás. A vízszintes irányban lévő szomszédok intenzitása súlyozottan
átlagolásra kerülnek, a súly fordítottan arányos a szomszéd távolságával (ezért
lineáris). Ez az átlagolás a függőleges szomszédokkal is kiszámításra kerül, majd
ennek a két átlagnak a számtani átlaga határozza meg az új pixel intenzitását
Bicubic interpoláció: más néven kettős köbös interpoláció, tizenhat szomszédot
vesz figyelembe, simább képet eredményez, viszont az éleknél begyűrűződés
jelenhet meg.
Az egyes interpolációk előnyeit és hátrányait mérlegelve, a bilineáris interpoláció tűnik
a legmegfelelőbbnek e probléma esetében, mert a legközelebbi szomszéd módszer túl
durva közelítést ad, a kettős köbös esetében pedig az éleknél szellemkép jelenhet meg, a
kézírás esetében pedig sok az él, sok a kontúr, ezért nem célszerű a bicubic interpoláció
alkalmazása.
Azon koordinátákon lévő pixelek értékei, amelyeknek koordinátái nem
szerepelnek, az eredeti képen fehérek lesznek. Mivel az új kép mérete különböző lesz az
eredeti kép méretétől, ezért a szöveget befoglaló téglalap mentén körbe kell vágni, hogy
a kép ne tartalmazzon felesleges részeket.
35
4.6 Az írás dőltségének megszüntetése
A probléma megoldására három különböző módszer került implementálásra és
összevetésre, két globális és egy lokális eljárás. Legelső lépésként mindhárom esetben a
kép Otsu-binarizáláson esik át. A globális eljárás esetében a teljes kép azonos
meredekség mellett affin transzformációval nyírásra kerül, lokális esetében pedig
oszloponként eltérő is lehet a nyírás meredeksége [27]. Az affin transzformáció során a
nyíráshoz felhasznált mátrix homogén koordinátás alakja a 4.7 kifejezésben látható.
Az mx az x tengellyel párhuzamos nyírás mértékét adja meg, az my pedig az y
tengellyel párhuzamosat. A tx vízszintes, a ty függőleges eltolást eredményez. Jelen
esetben az mx értékének a megtalálása a feladat, valamint a tx értékét beállítani az 4.8
kifejezés szerint, my és ty értékének nullának kell lennie.
Ahol h a kép magassága. A nyírás soronként eltolja a szöveget vízszintes
irányba, attól függően, hogy hányadik sorról van szó (4.14 ábra). A vízszintes irányú
eltolásra azért van szükség, hogy a nyírás után ne lógjon le a képről a szöveg (4.15
ábra). Interpolációs eljárásnak szintén a bilineáris interpolációt választottam a 4.5-ös
fejezetben tárgyalt okok miatt. Abban az esetben, ha egy pixelhez nem rendelhető
szomszédos pixel az eredeti képről, a pixel intenzitás értéke 255 lesz, vagyis a pixel
(4.7 kifejezés)
(4.8 kifejezés)
4.14 ábra: Egy téglalap és annak nyíráson átesett változata.
36
fehér lesz. A képet -60° és +60° közt fokonként el kell nyírni, majd minden kapott
képen általánosított- vagy függőleges projekciót kell számítani és ezekből egy dőlési
térképet készíteni, amit később felhasználható a három különböző módszer
bemeneteként.
4.15 ábra: Felül az eredeti szöveg, alatta a kiegyenesített változat eltolási korrekció
nélkül, valamint az eredeti képre nem megfeleltethető pixelek feketével ábrázolva.
Legalul fekete helyett fehérrel kitöltve a pixelek, és eltolva a kép, a szükséges
mértékben és a megfelelő irányba. A példán globális módszerrel lett megállapítva a
dőlésszög.
37
4.6.1 A dőlésszög meghatározása a függőleges projekció szórása által
A nyírt képekről függőleges projekció készül, minden egyes projekciónak
kiszámításra kerül a szórása, ez összesen 121 projekció, mivel 121 különböző fokkal
lett elnyírva a kép. Az eredmények a 4.16 ábrán láthatóak. A szórás pont a 60.
oszlopban a legnagyobb, vagyis amikor 0 fokkal lett elnyírva a kép, ez a megoldás
egyértelműen rossz, mivel ránézésre látszik, hogy a szöveg jobbra van dőlve.
A vízszintes projekcióból számított szórással tehát nem lehetséges megállapítani,
hogy dőlt-e a szöveg, a sejtés miszerint minél nagyobb a szórása a vízszintes
projekciónak annál egyenesebbek a betűk, nem bizonyosodott be.
4.16 ábra: Az X tengelyen a nyírási fokok -60-tól +60 fokig, az Y tengelyen a szórás.
Az oszlopdiagram felett a vizsgált kép.
38
4.6.2 A globális dőlésszög meghatározása általánosított projekció által
A módszer a [27] alapján került megvalósításra. Általánosított projekció
esetében az egyes oszlopokban nem az előtérpixelek számát számoljuk meg, hanem
súlyozásra kerülnek azok a pixelek, amik előtt szintén előtérpixelek vannak. A
háttérpixelek közt egyedül álló előtérpixel értéke egy, viszont azon pixelek értéke, amit
előtérpixel előz meg kettővel nagyobb, mint a megelőző pixel értéke. Ezen egybefüggő
részsorozatok összegzésre kerülnek, majd az összeget négyzetre kell emelni. Ezeket a
négyzetösszegeket végül összegezni kell, és ez adja majd meg az oszlopra vonatkozó
általánosított projekciót. Ezzel a módszerrel az egybefüggő vonások négyzetesen
súlyozva vannak hosszuk alapján. Ezt a projekciót minden nyírási szögre el kell végezni
és így megkapunk egy dőlési térképet (4.17 ábra).
A dőlési térképből megállapítható egy globális dőlési szög. Minél világosabb a
terület, annál nagyobb az értéke az általánosított projekciónak az adott pontban. A
sorokban lévő értékeket összegezni kell, a kapott sorösszegeket súlyozni kell az adott
sorhoz tartozó sorszámmal, majd ezeket a súlyozott sorösszegeket össze kell adni, és az
eredményt elosztani a sorok súlyozatlan sorösszegével (4.9 kifejezés).
Ahol i a sorok indexe (sorszáma), n az oszlopok száma, a a dőlési térkép mátrix
egy értéke (adott fok adott oszlopában az általánosított projekció értéke), j pedig az
oszlopindex. A p érték lesz a globális dőlési szög, ami alapján nyírni kell a képet, az
eredmény a 4.18 ábrán látható.
4.17 ábra: A dőlési térkép. Látható, hogy a szöveg körülbelül 30°-40° körül van
eldőlve, mert a fehér csomók a kép alsó részén helyezkednek el. A legfelső sor a -60°-
kal nyírt szöveghez tartozik, a legalsó a +60°-kal nyírthoz.
(4.9 kifejezés)
4.18 ábra: A globális módszerrel kiegyenesített változata a 30. ábrán látható
szövegnek.
39
A kézzel írt szöveg globális dőlésszög alapján az esetek túlnyomó többségében
megfelelő eredményt ad, mivel egy soron belül általában nem változik számottevően a
dőlés mértéke. Egyes kutatások [27] azonban mégis azt az eredményt adták, hogy a
lokális dőlésszög meghatározás 37,3%-ról 42,24%-ra javítja a szószintű felismerési
arányt. A 4.19 ábrán egy általam készített tesztkép van, ami bemutatja, hogy a globális
dőlésszög meghatározás nem működik olyan esetekben, ahol a dőlés mértéke és iránya
változó.
4.6.3 A lokális dőlésszög meghatározása általánosított projekció által
Ez a módszer is a [27] alapján került megvalósításra. Lényege, hogy a képen
oszloponként kerül meghatározásra a lokális optimuma a dőlésszögnek. Ehhez először a
dőlési térképen lévő „csomókat” ki kell terjeszteni a környezetükben, ennek okai
később lesznek tárgyalva. Ha megvannak a lokális optimumok, akkor függőleges
irányban költséget kell számolni a lokális optimumtól való távolság és az általánosított
projekció értékének függvényében. Ez azért szükséges, mert a végső lépésben meg kell
határozni egy útvonalat, ami a lokális optimumokat a legjobban közelíti, és a
szomszédos oszlopok közt a dőlési szög különbsége nem haladja meg az egy fokot. Ezt
a dinamikus programozás módszerével lehet kiszámítani a költségek felhasználásával.
A feltétel, hogy oszloponként ne legyen nagyobb a dőlés mértékének változása egy
foknál, azért fontos, hogy ne legyen túl éles az átmenet és a betűk ne tűnjenek nagyon
torznak.
A következő oldalon áttekintés gyanánt, az egyes lépések részeredményei
kerülnek ábrázolásra.
4.19 ábra: Felül az eredeti kép, alul a sikertelen kiegyenesítés
40
4.20 ábra: (a) eredeti szöveg, (b) általánosított projekció, (c) kiterjesztett
általánosított projekció, (d) lokális optimumok, (e) költségek a lokális optimumoktól
számítva, (f) költségek a globális optimum függvényében, és a globális optimumok,
(g) kiegyenesített szöveg
(a)
(b)
(c)
(d)
(e)
(f)
(g)
41
Az általánosított projekció kiterjesztése (4.20 (c) ábra) azért szükséges, hogy a
későbbi lépésben a globális optimum által meghatározott út ne legyen túl cikk-cakkos, a
csomópontokon lehetőleg minél vízszintesebben haladjon át a globális optimumok által
meghatározott egyenes. A kiterjesztés menete a következő: az egyes pozíciókban az
általánosított projekció értékének négyzetgyökét szét kell teríteni vízszintes irányban
jobbra is és balra is. Egy vizsgált pozíció új értéke fordítottan arányos a vizsgált
csomópont és a pozíció távolságának négyzetével és egyenesen arányos a
csomópontban lévő általánosított projekció értékének négyzetgyökével (4.10 kifejezés).
Egy pozíció csak akkor kap új értéket, ha az nagyobb az aktuális értékénél, tehát ha két
csomópont kiterjesztése átfedi egymást, akkor a dominánsabb érvényesül.
Ahol a az eredeti dőlési térkép, a’ a kiterjesztett dőlési térkép, i a sorindex, j az
oszlopindex, l a távolság, X pedig a létező oszlopindexek halmaza.
A lokális optimumok meghatározása (4.20 (d) ábra) hasonló, mint globális
módszerrel az egész képre vonatkozó dőlési szög meghatározása, azonban itt csak a
képnek az adott oszlopára kell végezni a számítást, nem az egész képre. Ha az
oszlopösszeg zérus (tehát ha nincs előtér pixel az adott oszlopban), akkor a lokális
optimum 0° lesz.
A költségek meghatározása (4.20 (e) ábra) oszloponként történik. A költség
négyzetesen arányos a lokális optimum és az aktuális pozíció közti távolsággal, viszont
ha ez az érték meghaladja az oszlopban található legnagyobb általánosított projekció
négyzetgyökét, akkor az utóbbi érték lesz figyelembe véve (4.11 kifejezés).
Ahol c a költségfüggvény, i a sorindex, j az oszlopindex, a’ a kiterjesztett dőlési
térkép, p’ a lokális optimumok vektora, Y pedig a létező sorindexek halmaza.
(4.10 kifejezés)
(4.11 kifejezés)
42
A legkevésbé költséges út meghatározása (4.20 (f) ábra) rekurzív módon a 4.12
kifejezés szerint kiszámolható.
Ahol q az akkumulált költségfüggvény, c a költségfüggvény, i a sorindex és j az
oszlopindex.
A rekurzív módszer számításigényesség szempontjából nem igazán mondható
hatékonynak, de a dinamikus programozás módszerével, sokkal gyorsabban és
egyszerűbben elvégezhető a feladat. Balról jobbra haladva, oszloponként minden
pozícióra kiszámoljuk az előző oszlopba tartozó három szomszéd közül a legkisebb
költségű költségének és az aktuálisan vizsgált pozíció költségének az összegét. A
szomszédságnál három szomszéd van figyelembe véve, mivel ±1° valamint a 0° eltérés
jöhet számításba a dőlésszög esetén a megszabott kritérium miatt. A részeredményeket
egy mátrixban tároljuk. A mátrix utolsó oszlopában ki kell keresni a minimális elemet,
ez lesz a globális optimum az utolsó oszlopban. Ezután visszafele haladva a három
szomszéd közül mindig azt kell választani, amelyik értéke a legkisebb. Ezzel a
módszerrel megkapjuk a legkisebb költségű utat és ezáltal minden oszlopra a dőlési
szöget. Oszloponként elvégezve a nyírást az oszlophoz tartozó dőlési szöggel
megkapjuk a kiegyenesített írást (4.20 (g) ábra). Látható, hogy a harmadik l betű nem
lett sikeresen kiegyenesítve, mivel a dőlésszögnek túl gyorsan kellett volna változnia.
Az ilyen esetek azonban viszonylag ritkán fordulnak elő természetes kézírás esetében.
A lokális dőlésszög alapján történő kiegyenesítés egyes esetekben nem kívánatos
hibákat produkál, ilyen látható például a 4.21 (a) ábrán.
(4.12 kifejezés)
4.21 ábra: (a) eredeti szöveg, (b) globális dőlésszög meghatározással kiegyenesített
szöveg, (c) lokális dőlésszög meghatározással kiegyenesített
(a)
(b)
(c)
43
4.7 Az írás régióinak normalizálása
Az írást három régióra kell osztani. Az alsó alapvonal és a felső alapvonal közt
van az írás legtöbb része. Meg kell határozni ezt a két vonalat, és ezután az ezek által
meghatározott három régió magasságát egy előre megadott értékre be kell állítani, a
benne lévő eredeti képet pedig ennek függvényében nyújtani vagy zsugorítani kell
függőleges irányban [8]. A [9] szerint a horizontális projekció deriváltja nem ad
megfelelő eredményt, ha az írás felfele vagy lefele ferdül, ezért más módszert
ismertettek. Mivel azonban én az egyik megelőző lépésben már kijavítottam a
ferdeséget (és a dőlést is), a horizontális projekció deriváltja megfelelő kiindulási alapot
ad. Az általam ismertetett módszerrel viszonylag pontosan meghatározhatóak az alsó- és
felső alapvonalak.
E két alapvonal meghatározásához először Otsu módszerrel binarizálni kell a
képet, majd horizontális projekciót készíteni róla és azt deriválni. A deriválás során az
aktuális sor és a szomszédos sor projekciójának különbségének négyzete lesz a derivált
érték minden egyes sorban (4.22 ábra). Azért a különbség négyzetével kell számolni,
hogy súlyozva négyzetesen súlyozva legyen a különbség, mert az kisebb különbségek
nem fontosak. Ezt következően ki kell számolni a derivált projekció súlypontját. Ez
megad egy sorindexet (4.13 kifejezés).
(4.13 kifejezés)
4.22 ábra: A horizontális projekció és annak deriváltja
44
Ahol i a sorindex, n a sorok száma és p a vízszintes projekció deriváltja. Ezután
kiválasztásra kerül a derivált értékeket tartalmazó listából (p) a legjobb 20% értéke és
sorindexe. Jóság alatt azt kell érteni, minél nagyobb az értéke, annál jobb. A megmaradt
listaelemeken kiszámításra kerül a sorindexük és a súlypont sorindexe közti távolság
négyzete. Ezekből a távolságokból szórást kell számítani, majd kiszűrni azokat a
listaelemeket, amik távolsága a súlyponttól nagyobb, mint a szórás fele. A megmaradtak
közül a legmagasabb sorindexű listaelem sorindexe lesz az alsó alapvonal y
koordinátája, és a legmagasabb sorindexű listaelem sorindexe pedig a felső alapvonal y
koordinátája lesz (4.23 ábra).
A két vonal által meghatározható az írás három régiója. Ez a három régió
egyenként 50 pixel magasságú lesz, ehhez át kell méretezni őket. Ez az érték szabadon
választott, én 50-et választottam, így az egész szöveg magassága 150 pixel lesz. Abban
az esetben, ha az eredeti képen a felső vagy az alsó régió magassága kisebb, mint a kép
magasságának a hatoda, akkor az a régió nem kerül átméretezésre, hanem helyette az új
képen csupa háttérpixelekből álló terület lesz. Ezek az esetek akkor fordulhatnak elő, ha
egy olya betű sincs az írásban, amely az alsó alapvonal alá, vagy a felső alapvonal fölé
lógna (4.24 ábra)
4.23 ábra: Pirossal a felső-, narancssárgával az alsó alapvonal látható. A kék
vonalak a legjobb 20%-ba tartozó vonalak.
4.24 ábra: Felül az eredeti szöveg az alapvonalakkal, alatta a függőleges irányban
méretre normalizált szöveg.
45
4.8 A betűk szélességének normalizálása
Ez a lépés a [8]-ben megismertekre alapszik. Első lépésben itt is Otsu
módszerrel binarizálni kell a képet, majd kiszámolni a középvonal helyét, ami az alsó
alapvonal és a felső alapvonaltól egyenlő távolságra helyezkedik el. Ezek után e vonal
mentén végig kell haladni a képen, és megszámolni a az előtérpixelek és háttérpixelek
váltakozásának a számát. Mivel egy vonás két ilyen váltásból áll (először fehérből
feketébe, majd feketéből fehérbe), ezért felezni kell az összeszámolt értéket.
Általánosságban egy betű két vonása halad át a középvonalon. Egyes betűknek három
vonása, pl. m, egyes betűknek pedig csak egy, pl. t. Ezzel a módszerrel egy becslést
lehet adni a sorban lévő betűk darabszámára, de pontosan nem lehet meghatározni,
hiszen ahhoz fel kellene tudni ismerni a betűket, ami ebben a lépésben még nem
lehetséges, mivel ez a lépés még az elő feldolgozás lépéseihez tartozik. Ezután a kép
szélességét a kapott becsült darabszám valahányszorosára kell állítani, és átméretezni a
képet ekkora méretűre. Én paraméternek a 100-at választottam, az így kapott eredmény
a 4.25 ábrán látható.
4.25 ábra: Legfelül a szélességre normalizálatlan kép, középen zöld vonallal látható a
középvonal, alul pedig a szélességre normalizált kép.
46
4.9 A kép intenzitásértékeinek normalizálása
A [12]-ben található módszer alapján lett megvalósítva. Erre a lépésre azért van
szükség, mert a jellemzővektor felépítésénél, az egyik jellemző az oszlopban lévő
intenzitásértékek számtani átlaga lesz. Mivel nincs megkötés a toll típusára, ezért
előfordulhat az, hogy egyes írásképek hol halványabbak, hol sötétebbek (4.26 ábra).
Ezért a képen az intenzitásértékeket hisztogram széthúzásos módszerrel normalizálni
kell, így a legkisebb érték 0, a legnagyobb pedig az egy bájton ábrázolható legnagyobb
érték, 255 lesz. Ezt úgy lehet elérni, ha végigmegyünk az eredeti kép összes pixelén és
kikeressük a legkisebb és legnagyobb intenzitásértéket, és utána még egyszer
végigmegyünk az eredeti képen, és a 4.14 kifejezés szerint kiszámoljuk az új
intenzitásértékeket minden pixelre.
Ahol f’(x,y) az új, f(x,y) pedig a régi képfüggvény. Max és min pedig a régi
(eredeti) képen a legnagyobb és legkisebb intenzitásértékek. A művelet eredménye a
4.27 ábrán látható egy konkrét példán keresztül, ahol az utolsó előtti sor az eredeti kép,
és az utolsó az intenzitásértékekre normalizált.
4.26 ábra: Egy sötét és egy halványabb íráskép.
(4.14 kifejezés)
47
4.10 A normalizálás lépéseinek összefoglalása
Áttekintésként, a normalizálás egyes lépései egy konkrét soron szemléltetve,
hogy össze lehessen vetni az egyes lépések közti különbségeket és a kezdeti állapotot a
végállapottal (4.27 ábra).
4.27 ábra: Felülről lefelé: az eredeti sor, az elforgatott sor, a dőltség megszüntetése,
az írás függőleges régióinak normalizálása, az írás szélességének normalizálása, a
kép intenzitásértékeinek normalizálása.
48
4.11 A jellemzők kinyerése
A [11]-ben felsorolt jellemzőket használtam fel. Az eredeti képből két képet kell
készíteni, az egyik az eredeti kép invertált változata, a másik kép pedig az Otsu
binarizált változata. A képeken oszloponként végig kell menni, és az oszlopban
található pixelekből a jellemzőket ki kell nyerni. Kilenc jellemző kerül kinyerésre, ezek
az alábbiak:
Az oszlopban található pixelek intenzitásátlaga.
A pixelek súlypontja (4.15 kifejezés).
A súlypont másodrendű nyomatéka (4.16 kifejezés).
Az első fekete pixel pozíciója.
Az utolsó fekete pixel pozíciója.
Az előző oszlopban lévő első fekete pixel pozíciójának és a következő
oszlopban lévő első fekete pixel pozíciójának a különbsége
Az előző oszlopban lévő utolsó fekete pixel pozíciójának és a következő
oszlopban lévő utolsó fekete pixel pozíciójának a különbsége
A fekete-fehér váltások száma.
A fekete és fehér pixelek számának aránya a legfelső és legalsó fekete
pixel között.
4.28 ábra: A 4.27 ábrán lévő normalizált szöveg jellemzői ábrázolva egy
diagramon.
49
Az intenzitásátlag kivételével tehát mindig a binarizált kép alapján kell számolni
az értékeket.
Ahol a súlypont y koordinátája. Mivel egy oszlopvektorban keresünk, nincs
szükség az x koordinátára. C az oszlopvektor, y az aktuális sorindex, n a sorok száma. A
kinyert jellemzők grafikus ábrázolása 4.28 ábrán tekinthetőek meg.
(4.15 kifejezés)
(4.16 kifejezés)
50
5 Az elkészült program bemutatása
5.1 A modulok közti kapcsolat
A modulok kapcsolata viszonylag egyszerű, az egyik modul csak egy másik
modul kimenetétől függ (5.1 ábra).
Íráskép behatárolása Sorok szétválasztása Sorok elforgatása
Írás dőltségének megszüntetése
Írás régióinak méretbeli
normalizálása
A betűk szélességének normalizálása
A kép intenzitásértékeinek
normalizálásaJellemzők kinyerése
5.1 ábra: A modulok függőségi sorrendje
51
5.2 A program működésének bemutatása
A program egy konzolalkalmazás. Hat paramétert vár, ezek sorrendben a
következők:
A könyvtár elérési útja, ahol az IAM adatbázis képei vannak.
A könyvtár, ahova a normalizált sorokat és jellemzőiket menti. Az egy
nyomtatványhoz tartozó sorok, külön mappába kerülnek, a mappa neve a
nyomtatvány azonosítója lesz. A mappán belül egy sor fájlneve a sor
sorszáma lesz, ugyanezen a néven, de csv kiterjesztéssel pedig a
jellemzői kerülnek mentésre.
A felső alapvonal fölötti rész leendő magassága pixelben.
Az alsó- és felső alapvonal közti rész leendő magassága pixelben.
Az alsó alapvonal alatti rész leendő magassága pixelben.
Egy betű leendő szélessége pixelben.
Nyírás módja:
o 0: globális
o 1: lokális
5.2 ábra: A program futás közben
52
Ha a felhasználó túl kevés, vagy hibás paramétert ad meg, a program tájékoztatja
erről a felhasználót, és segítségül megjeleníti a várt paraméterek listáját és sorrendjét, és
ezekről egy konkrét példát.
A program sorban elkezdi feldolgozni az bemeneti képeket (5.2 ábra). A
képekről kinyert sorokat párhuzamosan dolgozza fel, egy időben annyit normalizál,
ahány processzormagot lát az operációs rendszer. A normalizált sorok szürkeskálás
PNG képekként kerülnek mentésre, a jellemzők pedig egy pontosvesszővel tagolt
szöveges fájlba kerülnek. A fájl első sora a kép első oszlopának felel meg, és így
tovább. A sorokon belül a kilenc jellemző értéke pontosvesszővel van elválasztva
egymástól. A jellemzők a 4.11-es fejezet szerinti sorrendben követik egymást.
5.3 A kiszámolt adatok helyességének tesztelése
Az íráskép behatárolása modul szemrevételezéssel lett tesztelve. Ez megoldható
volt, ugyanis csak körülbelül 1500 tesztesetet kellett átnézni. A kontúrkereséses
megoldással minden formanyomtatványon sikeresen meghatározásra került a kézírást
tartalmazó régió.
A sorok szétválasztása modul tesztelése sem volt automatizálható. Véletlenszerű
minták alapján viszont behatárolható volt, milyen esetekben ad pontatlan eredményt az
algoritmus, vagyis rosszul szegmentált sorokat. Ezek az esetek általában egymásba lógó
sorok és egy-két szavas sorok esetében fordultak elő, valamint ha nagyobb mennyiségű
tintapaca folyt a lap valamelyik részére, azt is besorolta egy – a legközelebb lévő –
sorba az algoritmus.
A sorok elforgatása esetében nemhogy nem automatizálható a tesztelés, hanem
még ránézésre is nehéz megállapítani, hogy tökéletesen vízszintes-e a sor, mivel 1°-nál
kisebb eltérés egyszerűen nem észrevehető. Annak géppel való megállapítása pedig,
hogy mi lenne az optimális elforgatási szög, már megtörtént a normalizálás során, és
korrigálva lett. A kapott eredményeket szúrópróbaszerűen megvizsgálva, nem találtam
hibás eseteket.
Az írás dőltségének megszüntetése szintén nem tesztelhető objektíven. Az
viszont kitűnt, hogy a lokális dőlésszög meghatározásnál jelentkezhetnek olyan nem
kívánt torzulások, amik furcsává teszik az írásképet. A globális dőlésszög meghatározás
esetében nem jelentkeztek ilyen problémák, és a szúrópróbaszerűen megvizsgált
53
eseteknél nem is adott rosszabb eredményt, mint a lokális módszer. A [26] szerint
viszont a lokális módszerrel javult a szófelismerési arány. Tesztelni tehát ezt a lépést, és
a többi lépést is csak úgy lenne igazán érdemes, ha egy kézírásfelismerő-rendszerrel
felhasználnánk inputként a normalizált képet. Természetesen két teszteset között csak
egyetlen modul működését szabad befolyásolni. Ekkor ugyanis számszerűsített adatokat
kapnánk, és ezek az adatok ráadásul nem azt tükröznék, hogy egy ember szubjektív
véleménye szerint például mennyire találja egyenesnek a szöveget, hanem a kérdéses
konkrét probléma szempontjából adna egy jósági értéket, vagyis arról, hogy az adott
normalizációs lépés elősegíti-e a felismerést. Ugyanez igaz a betűk magasságának és
szélességének normalizálására is, és az intenzitás normalizálására is, valamint a
jellemzők kinyerésére is. Utóbbi esetben azt lenne célszerű vizsgálni, hogy milyen
jellemzők használata esetén kapnánk jobb felismerési arányt.
Az IAM adatbázis rendelkezik egy-két vizsgálható értékkel, amit a készítők által
kifejlesztett algoritmus határozott meg, ilyenek például: a megállapított alsó és felső
alapvonal pozíciója. Sajnos azonban ez sem felhasználható számomra, mivel a sorok
szétválasztása lépésben az ő megoldásuk más eredményt ad, mint az én általam készített
algoritmus, és ezért sokszor már a sorok magassága vagy a sorok befoglaló téglalapja
sem azonos, emiatt a soron belüli alapvonalak pozíciója sem összeegyeztethető az én
általam kapott pozíciókkal.
54
6 Összefoglalás
A bemutatott rendszer képes tehát az IAM adatbázis képeit feldolgozni, a
sorokat szétválasztani, azokat normalizálni és a sorok jellemzőit kinyerni. Ez a rendszer
egy előfeldolgozó rendszer, ami lehetővé teszi, hogy egy szabadon választott tanítási
módszerrel a kinyert jellemzők, és az inputképekhez tartozó megoldások alapján (amit
szintén tartalmaz az IAM adatbázis) betanítsunk egy algoritmust az írás felismerésére.
A sorok szétválasztása nem minden esetben tökéletes, a sorszétválasztó
algoritmuson még lehetne javítani a későbbiekben. Számításigény szempontjából a
legtöbb számítási kapacitást az írás dőltségének megszüntetése igényli, mivel 120-szor
el kell nyírni a kérdéses képet. Mivel a nyírás és a forgatás is mátrixszorzásokkal
megoldható, ezek a lépések általános célra is felhasználható grafikus gyorsító kártyák
segítségével nagymértékben gyorsíthatóak. A sebesség azonban nem kritikus szempont,
mivel az offline felismerés esetében nem szükséges valósidejű felismerés, mint például
az online felismerés esetében.
55
7 Irodalomjegyzék
[1] D. Tikk, R. Farkas, T. Kardkovács Zsolt, L. Kovács, T. Répási, Gy. Szarvas, S. Szaszkó és M.
Vázsonyi, „Szövegbányászat”, Typotex, 2006, pp. 97 – 98
[2] U. Marti, H. Bunke és M. Zimmermann „A full English sentence database for off-line
handwriting recognition”, Proceedings of the 5th International Conference on Document
Analysis and Recognition, 1999, pp. 705 – 708,
http://www.iam.unibe.ch/fki/databases/iam-handwriting-database/ Utolsó
látogatás: 2012.01.05.
[3] F. Ali, T. Pavlidis, „Syntatctic Recognition of Handwritten Numerals”, IEEE Transactions on
Systems, Man and Cybernetics, vol 7, Issue: 7, 1977, pp. 537 – 541
[4] Y. Lecun és C. Cortes, „MNIST handwritten digit database”, New York University Courant
Institute, New York Google Labs, http://yann.lecun.com/exdb/mnist/ Utolsó
látogatás: 2012.01.05.
[5] A. Vinciarelli, S. Bengio és H. Bunke, „Offline Recognition of Unconstrained Handwritten
Texts Using HMMs and Statistical Language Models”, IEEE Transactions on Pattern
Analysis and Machine Intelligence, vol 26, no. 6, 2004, pp. 709 – 720
[6] Parascript Kft., „ICR and OCR Technology from Parascript”, Colorado, Longmont,
http://www.parascript.com/company2/tech_overview.cfm Utolsó látogatás:
2012.01.05.
[7] K. M. Sayre, „Machine Recognition of Handwritten Words: A Project Report”, Pattern
Recognition, vol. 5, no. 3, 1973, pp. 213 – 228
[8] U.-V. Marti és H. Bunke, „Handwritten Sentence Recognition”, Proceedings International
Conference on Pattern Recognition, 2000,
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.33.7716 Utolsó
látogatás: 2012.01.05.
[9] M. Schüßler és H. Niemann, „A HMM-based System for Recognition of Handwritten
Address Words”, Proceedings of Sixth International Workshop on Frontiers in Handwriting
Recognition, Koreai Köztársaság, Taejon, 1998,
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.32.8998 Utolsó
látogatás: 2012.01.05.
[10] E. Grosicki és H. El Abed, 10th International Conference on Document Analysis and
Recognition, 2009, pp. 1398 – 1402
56
[11] A. Graves, M. Liwiczki, S. Fernández, R. Bertolami, H. Bunke és J. Schmidhuber, „A Novel
Connectionist System for Unconstrained Handwriting Recognition”, IEEE Transactions on
Pattern Analysis and Machine Intelligence, vol 31, no. 5, 2009, pp. 855 – 868
[12] M. Wienecke, Gernot A., G. Sagerer, „Experiments in Unconstrained Offline Handwritten
Text Recognition”, In Proceedings of the 8th International Workshop on Frontiers in
Handwriting Recognition, Ontario, Canada, August 2002 IEEE
[13] H. Bunke, „Web-Based Offline Handwritten Text Line Recognizer”,
Svájc, Berni Egyetem Gépi Látás és Mesterséges Intelligencia Kutatócsoport,
http://www.iam.unibe.ch/fki/recognizer/welcome Utolsó látogatás: 2012.01.05.
[14] E. Kavallieratou, N. Fakotakis és G. Kokkinakis, „Skew angle estimation for printed and
handwritten documents using the Wigner-Ville distribution”, Image and Vision Computing
20, 2002, pp. 813 – 824
[15] R. Manmatha és J. L. Rothfeder, „A Scale Space Approach for Automatically Segmenting
Word from Historical Handwritten Documents”, IEEE Transactions on Pattern Analysis and
Machine Intelligence, vol 27, no. 8, 2005, pp. 1212 – 1225
[16] F. Shafait, D. Keysers és T. M. Breuel, „Efficient Implementation of Local Adaptive
Thresholding Techniques Using Integral Images”, www.dfki.uni-
kl.de/~shafait/papers/Shafait-efficient-binarization-SPIE08.pdf Utolsó látogatás:
2012.01.05.
[17] K. D. Derpanis, „Integral image-based representations” York University, Department of
Computer Science and Engineering,
http://www.cse.yorku.ca/~kosta/CompVis_Notes/integral_representations.pdf Utolsó
látogatás: 2012.01.05.
[18] M. Pastor, A. Toselli és E. Vidal, „Projection Profile Based Algorithm for Slant Removal”,
Image analysis and recognition: internaional conference, ICIAR 2004, part 2, 2004, pp. 183
– 190
[19] U. Marti és H. Bunke, „The IAM-database: An English Sentence Database for Off-line
Handwriting Recognition”, Int. Journal on Document Analysis and Recognition, Volume 5,
2002, pp. 39 – 46
[20] P.V.C. Hough, Machine Analysis of Bubble Chamber Pictures, Proc. Int. Conf. High Energy
Accelerators and Instrumentation, 1959
[21] J.F. Canny, „Finding Edges and Lines in Images”, Master’s thesis, MIT, 1983
57
[22] N. Otsu, „A threshold selection method from gray-level histograms". IEEE Transactions.
Sys., Man., Cyber. 9 (1), 1979, pp. 62 – 66
[23] M. Shah, „Fundamentals of Computer Vision”, Mubarak Shah, 1997, pp. 56 – 57
[24] W. Postl, „Detection of linear oblique structure and skew scan in digitized documents”,
Proceedings of International Conference on Pattern Recognition, 1986, pp. 687 – 689
[25] J. Fidy, G. Makara, „Biostatisztika”, InforMed 2002 Kft, 2005,
http://www.tankonyvtar.hu/statisztika/biostatisztika-080904-56 Utolsó látogatás:
2012.01.05.
[26] Civil and Environmental Engineering, Texas Tech University, „Alternative Regression
Methods”, Data Analysis for Civil and Environmental Engineers, Summer 2010, pp. 1 – 4,
http://cleveland2.ce.ttu.edu/teaching/ce_5333SU10/ce5333SU10-
Meeting07/AlternateRegression/F001-ce5333-AlternativeRegression.pdf Utolsó látogatás:
2012.01.05.
[27] A. Kuhn, „Using Local Slant Correction to Normalize Handwritten Text Samples”, University
of Bern, December 2005, http://scg.unibe.ch/archive/projects/Kuhn03a.pdf Utolsó
látogatás: 2012.01.05.
58
8 Mellékletek
8.1 Ábragyűjtemény
8.1 ábra: A sorok szétválasztásának lépései: (a) Eredeti kép. (b) Projekciós profil. (c)
Simított projekciós profil. Láthatóak a csúcsok. (d) Sorok szétválasztása a simított
projekciós profilban található csúcsok alapján.
59
8.2 ábra: Egy kitöltött formanyomtatvány az IAM adatbázisból [19].
60
8.3 ábra: Az ábragyűjtemény 8.2 ábráján található kitöltött formanyomtatványból
kinyert sorok.
61
8.4 ábra: Az eredeti formanyomtatvány és binarizált változata. Jól kivehető a lap bal
szélén a zaj miatt kialakult fekete csík.
62
8.6 ábra: a 8.5 ábráról készített vízszintes projekció
8.5 ábra: a tesztkép peakiness módszerhez
8.7 ábra: a 8.6 ábra értékeiből számított peakiness értékek
63
8.8 ábra: vízszintes projekció 5 szélességű átlagoló ablakkal, háromszori iteráció
után
8.9 ábra: a 8.8 ábra értékeiből számított peakiness értékek
8.10 ábra: vízszintes projekció 9 szélességű átlagoló ablakkal, négyszeri iteráció
után
64
8.11 ábra: a 8.10 ábra értékeiből számított peakiness értékek
8.12 ábra: a 8.11 ábra értékei alapján berajzolt három csúcs helye
65
8.2 A HMM és RNN módszerek egy konkrét összevetése
A Berni Egyetem weboldalán publikusan elérhető kézírás felismerő rendszerrel
[13] elvégzett kézírás felismerés, az én kézírásommal tesztelve. Az én írásomat még
nem ismerhette a rendszer, ezért nem is sikerült tökéletesen felismernie egyik
módszerrel sem. Érdekes azonban megfigyelni, hogy a második tesztminta esetében az
RNN-es módszer csak egy szót rontott el, azonban az az egy szó viszont pont jó a
HMM-es módszer esetében. Egy RNN-HMM szavazásos hibrid módszer esetében,
lehet, hogy tökéletes felismerést kaptunk volna.
8.2.1 Az első tesztminta:
A sor ferdeségének javítása után:
A szöveg dőlésének javítása után:
Az írás régióinak normalizálása után:
A betűk szélességének normalizálása után:
A végső, normalizált kép:
66
A jellemzővektorok kinyerése [13]:
Felismerés eredménye HMM-el:
That's He'll evolution I've ever Isn't it .
Felismerés eredménye RNN-el:
This is a editing recognition bat
8.13. ábra: a jellemzővektor grafikus ábrázolása [13].
67
8.2.2 A második tesztminta
Itt megpróbáltam szebben írni:
A sor ferdeségének javítása után:
A szöveg dőlésének javítása után:
Az írás régióinak normalizálása után:
A betűk szélességének normalizálása után:
A végső, normalizált kép:
68
A jellemzővektorok kinyerése: [13]
Felismerés eredménye HMM-el:
They're I'd ' tend writing recognition Ted .
Felismerés eredménye RNN-el:
This is a hand riding recognition test .