1 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INTELIGENTNÍCH SYSTÉMŮ FACULTY OF INFORMATION TEC...
ˇ ´ UCEN ´I TECHNICKE ´ V BRNE ˇ VYSOKE BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ´ ´ U ˚ USTAV INTELIGENTN´ICH SYSTEM FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS
ˇ CKA ˇ CTE BRAILLOVA P´ISMA PRO ANDROID OS
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2012
ˇ DANIEL BOKIS
ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ´ ´ U ˚ USTAV INTELIGENTN´ICH SYSTEM FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS
ˇ CKA ˇ CTE BRAILLOVA P´ISMA PRO ANDROID OS BRAILLE READER FOR ANDROID OS
´ RSK ˇ ´ PRACE ´ BAKALA A BACHELOR’S THESIS
´ AUTOR PRACE
ˇ DANIEL BOKIS
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2012
´ Ing. BORIS PROCHAZKA
Abstrakt Tato pr´ ace se zab´ yv´ a anal´ yzou a rozpozn´an´ım znak˚ u Braillova p´ısma ve fotografii poˇr´ızen´e mobiln´ım telefonem. Popisuje ˇreˇsen´ı n´avrhu a implementace aplikace pro rozpozn´av´ an´ı na mobiln´ı platformˇe Android OS. Popsan´e obecn´e principy anal´ yzy a zpracov´an´ı obrazu jsou vˇsak uplatniteln´e rovnˇeˇz u jin´ ych syst´em˚ u.
Abstract This thesis deals with the analysis and recognition of the Braille characters from a photo taken by a mobile phone. It describes design and implementation of application for recognition on Android OS mobile platform. Described general principles of analysis and processing of image are also applicable in other systems.
Kl´ıˇ cov´ a slova Braill, Braillovo p´ısmo, Android OS, zpracov´an´ı obrazu, rozpozn´an´ı znak˚ u, v´ ypoˇcet mobiln´ım telefonem
Keywords Braille, Android OS, image processing, character recognition, mobile computing
Citace ˇ cka Braillova p´ısma pro Android OS, bakal´aˇrsk´a pr´ace, Brno, FIT VUT Daniel Bokiˇs: Cteˇ v Brnˇe, 2012
ˇ cka Braillova p´ısma pro Android OS Cteˇ Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto bakal´ aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım pana Ing. Borise Proch´ azky. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kter´ ych jsem ˇcerpal. ....................... Daniel Bokiˇs 14. kvˇetna 2012
Podˇ ekov´ an´ı T´ımto bych r´ ad podˇekoval panu Ing. Borisi Proch´azkovi za konzultace a tak´e sv´e pˇr´ıtelkyni a kamar´ ad˚ um za pomoc pˇri sh´ anˇen´ı testovac´ıch vzork˚ u.
c Daniel Bokiˇs, 2012.
Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
´ Uvod Na svˇetˇe je pˇribliˇznˇe 285 milion˚ u zrakovˇe postiˇzen´ ych lid´ı. Z toho je asi 39 milionu slep´ ych [1]. M´ısto klasick´eho textu mohou nevidom´ı pouˇz´ıt Braillovo p´ısmo, kter´e je moˇzn´e ˇ e republice m˚ ˇc´ıst hmatem. V Cesk´ uˇzeme toto p´ısmo nal´ezt na mnoha veˇrejn´ ych m´ıstech. Nejtypiˇctˇejˇs´ım m´ıstem jsou v´ ytahy, d´ale pak vlaky, autobusov´a n´adraˇz´ı a jin´a m´ısta obsahuj´ıc´ı informaˇcn´ı sdˇelen´ı. Mnoho nevidom´ ych a slabozrak´ ych vˇsak toto p´ısmo neovl´ad´ a. Napˇr´ıklad v USA dok´ aˇze ˇc´ıst Braillovo p´ısmo pouze 10% slep´ ych [2]. Mohlo by tak b´ yt ˇz´ adouc´ı, vytvoˇrit program, kter´ y by dok´azal pˇreloˇzit Braillovo p´ısmo z fotografie poˇr´ızen´e pˇrenosn´ ym zaˇr´ızen´ım. V dneˇsn´ı dobˇe n´astupu chytr´ ych telefon˚ u jiˇz existuj´ı funkce, dovoluj´ıc´ı nevidom´ ym tato pomˇernˇe komplikovan´a zaˇr´ızen´ı ovl´adat. Jedn´ a se napˇr´ıklad o syst´em pˇrevodu textu na hlas, kter´ y je aktivov´an postupn´ ym posouv´an´ım prstu nad jednotliv´ ymi prvky na displeji. Mohlo by n´as napadnout, ˇze by bylo jednoduˇsˇs´ı, vytvoˇrit aplikaci schopnou rozpoznat z fotografie bˇeˇzn´ y psan´ y text. Probl´em je vˇsak ten, ˇze nevidom´ y psan´ y text nevid´ı a tak nev´ı, kde pˇresnˇe se vyskytuje a tedy nev´ı co m´a fotit. Proto se zamˇeˇr´ıme na rozpozn´ an´ı Braillova p´ısma, jeˇz m˚ uˇze nevidom´ y snadno lokalizovat hmatem. C´ılem t´eto pr´ ace je tedy n´ avrh metod, kter´e umoˇzn´ı rozpoznat jednotliv´e znaky Braillova p´ısma z fotografie poˇr´ızen´e mobiln´ım telefonem a dok´aˇz´ı znaky pˇrev´est na psan´ y text. Tyto metody jsou n´ aslednˇe uplatnˇeny v praxi a to v aplikaci vytvoˇren´e pro mobiln´ı telefon. Ta m˚ uˇze slouˇzit jako pomoc pro nevidom´e, nebo jako pˇrekladaˇc pro bˇeˇzn´e nadˇsence, kter´e zaj´ım´a, co jednotliv´e n´ apisy v Braillovˇe p´ısmu znamenaj´ı. Aplikace by teoreticky mohla bˇeˇzet na jak´emkoliv v´ ykonˇejˇs´ım mobiln´ım telefonu s fotoapar´ atem, nez´ avisle na jeho operaˇcn´ım syst´emu. V posledn´ı dobˇe vˇsak nejrychleji roste trh s mobiln´ımi telefony vybaven´ ymi operaˇcn´ım syst´emem Android. Podle informac´ı z roku 2011 j´ım bylo osazeno 48,8% nov´ ych zaˇr´ızen´ı zakoupen´ ych v tomto roce [3]. Pro srovn´ an´ı druh´ y byl syst´em iOS s pouh´ ymi 19,1%. Z tohoto d˚ uvodu je naˇse aplikace implementov´ana pr´avˇe pro operaˇcn´ı syst´em Android. Samotn´ a pr´ ace zaˇc´ın´ a dvˇema teoretick´ ymi kapitolami. Prvn´ı z nich se zab´ yv´a obecnˇe Braillov´ ym p´ısmem a v druh´e jsou pˇribl´ıˇzeny z´akladn´ı principy syst´emu Android. Tˇret´ı kapitola popisuje n´ avrh rozpozn´ av´ an´ı znak˚ u Braillova p´ısma ve fotografii. Tato kapitola je z cel´e pr´ace stˇeˇzejn´ı a zde popsan´e metody jsou n´aslednˇe pouˇzity ve v´ ysledn´e aplikaci. Samotn´ a implementace vˇcetnˇe popisu uˇzivatelsk´eho rozhran´ı a pouˇzit´ ych optimalizac´ı je pˇribl´ıˇzena ve ˇctvrt´e kapitole. V posledn´ı kapitole jsou diskutov´any v´ ysledky testov´an´ı a prezentov´ana celkov´a u ´spˇeˇsnost vytvoˇren´e aplikace. V z´avˇeru jsou pak zhodnoceny dosaˇzen´e v´ ysledky a navrˇzena moˇzn´ a vylepˇsen´ı do budoucna.
2
Kapitola 1
Braillovo p´ısmo Tato kapitola se zab´ yv´ a Braillov´ ym p´ısmem a jeho principy. V prvn´ı ˇc´asti textu je pops´ana historie, grafick´ a podoba p´ısma a z´aklady s´emantick´eho v´ yznamu. Druh´a ˇc´ast se pak zab´ yv´ a normami a jazykov´ ymi modifikacemi Braillova p´ısma.
1.1
Z´ akladn´ı informace
Braillovo slepeck´e p´ısmo je speci´aln´ı druh p´ısma urˇcen´ y pro nevidom´e a slabozrak´e [4]. Funguje na principu plastick´ ych bod˚ u, kter´e ˇcten´aˇr vn´ım´a hmatem. P´ısmo je pojmenov´ano podle Louise Brailla, tehdy patn´ actilet´eho francouzsk´eho nevidom´eho, kter´ y p´ısmo vytvoˇril u ´pravou vojensk´eho syst´emu, umoˇzn ˇuj´ıc´ıho ˇcten´ı za tmy. Kaˇzd´e p´ısmeno tvoˇr´ı mˇr´ıˇzka ˇsesti bod˚ u uspoˇr´ adan´ ych do obd´eln´ıku 2x3. Na jednotliv´e body se odkazuje ˇc´ısly 1-6. Nˇekter´e z tˇechto bod˚ u jsou pak vyv´ yˇseny. T´ımto zp˚ usobem je moˇzn´e zak´odovat 26 , tedy 64 r˚ uzn´ ych znak˚ u. Pr´ azdn´ y znak se pouˇz´ıv´ a pro mezeru, tedy zb´ yv´a 63 pouˇziteln´ ych znak˚ u. Vzhledem k tomu, ˇze kaˇzd´ a pozice m˚ uˇze nab´ yvat pouze dvou stav˚ u, je Braillovo p´ısmo netradiˇcn´ım pˇr´ıkladem pouˇzit´ı bin´ arn´ıho k´ odu mimo poˇc´ıtaˇcovou techniku. ˇ ısla a velk´a p´ısmena Z´akladn´ı sada obsahuje pˇredevˇs´ım mal´a p´ısmena a interpunkci. C´ se tvoˇr´ı pomoc´ı prefix˚ u. Napˇr´ıklad p´ısmeno b“, B“ a ˇc´ıslice 2 se zap´ıˇs´ı stejn´ ym znakem, ” ” jen u velk´eho p´ısmene a ˇc´ıslice je pouˇzit odpov´ıdaj´ıc´ı prefixov´ y znak (obr. 1.1).
b
B
2
Obr´ azek 1.1: Pˇr´ıklad uˇzit´ı prefix˚ u. Existuje tak´e modifikace, kde se k ˇsestibodov´e mˇr´ıˇzce pˇridala dalˇs´ı ˇrada dvou bod˚ u, ˇc´ımˇz poˇcet pouˇziteln´ ych symbol˚ u vzrostl na 255. Takto je moˇzn´e zapsat vˇsechny znaky ASCII tabulky. Osmibodov´e p´ısmo se vˇsak v praxi pˇr´ıliˇs nepouˇz´ıv´a, proto se mu v t´eto pr´aci nebudeme vˇenovat.
3
1.2
R˚ uzn´ e jazyky a normy Braillova p´ısma
Jedn´ım z probl´em˚ u Braillova p´ısma je jeho nejednotnost v r˚ uzn´ ych jazyc´ıch [5]. Jelikoˇz m´a pouze 63 pouˇziteln´ ych znak˚ u, nelze zak´odovat znaky vˇsech jazyk˚ u v jedn´e spoleˇcn´e normˇe. Hlavn´ı rozd´ıly jsou samozˇrejmˇe ve znac´ıch s diakritikou, z´akladn´ı sada znak˚ u je u jazyk˚ u pouˇz´ıvaj´ıc´ı latinku v´ıcem´enˇe obdobn´a. Existuj´ı i varianty Braillova p´ısma pro jazyky nepouˇz´ıvaj´ıc´ı latinku, jako je ˇreˇctina, hebrejˇstina ˇci ˇc´ınˇstina, japonˇstina a dalˇs´ı. V t´eto pr´aci se ale zamˇeˇr´ıme hlavnˇe na p´ısmo ˇcesk´e a anglick´e. Braillovo p´ısmo se d´a tak´e pouˇz´ıt pro matematick´e [6] anebo hudebn´ı z´apisy [7]. Tyto normy jsou vˇsak od klasick´eho textu naprosto odliˇsn´e a prakticky se nenach´az´ı na veˇrejn´ ych m´ıstech, kde n´as Braillovo p´ısmo zaj´ım´a. Proto se jimi tak´e nebudeme bl´ıˇze zab´ yvat. I v jazyc´ıch pouˇz´ıvaj´ıc´ıch latinku se vyskytuje v´ıce forem. Existuje z´akladn´ı forma (plnopis, Grade 1), ve kter´e se slova pˇrepisuj´ı znak po znaku a d´ale komplexnˇejˇs´ı forma (zkratkopis, Grade 2), ve kter´e kaˇzd´ y znak reprezentuje tak´e skupinu hl´asek. Tedy napˇr´ıklad anglick´ a spojka ”and”se ve formˇe Grade 1 zap´ıˇse tˇremi znaky a v Grade 2 pouze jedn´ım (obr. 1.2). V ˇceˇstinˇe se s touto komplexnˇejˇs´ı formou nesetk´ame, ale napˇr´ıklad v angliˇctinˇe je bˇeˇzn´ a a z´ akladn´ı formu pouˇz´ıvaj´ı prakticky pouze zaˇc´ateˇcn´ıci.
and
and
(angličtina – Grade 1)
(angličtina – Grade 2)
Obr´ azek 1.2: Porovn´an´ı spojky ”and”v Grade 1 a Grade 2. U formy Grade 2 je vˇsak ten probl´em, ˇze jsou nˇekter´e zkratky reprezentov´any stejn´ ym znakem jako samostatn´ a p´ısmena (napˇr. not a n). Stejnˇe tak nen´ı v´ yjimkou, ˇze se pod jedn´ım znakem skr´ yv´ a v´ıce zkratek. O spr´avn´e reprezentaci tak rozhoduje um´ıstˇen´ı znaku v r´amci slova a v dan´em kontextu [8]. Rozpozn´an´ı jiˇz tedy vyˇzaduje urˇcitou inteligenci a pˇr´ıpadnˇe kontrolu ve slovn´ıku vˇsech slov dan´eho jazyka. Z d˚ uvodu zjednoduˇsen´ı a s pˇrihl´ednut´ım k tomu, ˇze se v ˇcesk´em jazyce zkratkopis nepouˇz´ıv´a, nebudeme se v t´eto pr´aci stupnˇem Grade 2 zab´ yvat.
4
Kapitola 2
Android OS Android je pomˇernˇe nov´ y open source operaˇcn´ı syst´em pro mobiln´ı zaˇr´ızen´ı vyvinut´ y spoleˇcnost´ı Google a uskupen´ım OHA. V t´eto kapitole si nejprve pˇredstav´ıme kl´ıˇcov´e vlastnosti a principy tohoto syst´emu. D´ale jsou zde pops´any zp˚ usoby tvorby aplikac´ı pro tento syst´em a nakonec se budeme zab´ yvat technikami pro vyuˇzit´ı fotoapar´atu a pˇrevodu textu na zvuk, coˇz jsou nezbytn´e souˇc´ asti pl´anovan´e aplikace.
2.1
Z´ akladn´ı principy
Architektura syst´ emu Architektura syst´emu je rozdˇelena do nˇekolika vrstev (obr. 2.1) pˇriˇcemˇz kaˇzd´a vrstva vyuˇz´ıv´ a sluˇzeb poskytovan´ ych vrstvou pod n´ı. Applications Contacts
Phone
Browser
….
Application Framework Activity Manager
Window Manager
Content Providers
View system
Package Manager
Resource Manager
Notification Manager
Telephony Manager
Libraries
Android Runtime
Surface Manager
Media Framework
SQLite
Core Libraries
Open GL
WebKit
SSL
Dalvik Virtual Machine
Linux Kernel Device Drivers
Power Management
Obr´ azek 2.1: Achitektura syst´emu Android.
5
Vrstvy poˇc´ınaje spodn´ı jsou [9, 10]: • Linux Kernel – Linuxov´e j´adro poskytuje hardwarovou abstraktn´ı vrstvu, coˇz Androidu dovoluje pracovat na r˚ uzn´ ych platform´ach nyn´ı i v budoucnu. Android internˇe pouˇz´ıv´ a Linux pro spr´avu pamˇeti, spr´avu proces˚ u, s´ıt´ı a dalˇs´ı sluˇzby operaˇcn´ıho syst´emu. Samotn´ y uˇzivatel vˇsak prakticky s Linuxem nikdy nepˇrijde do styku a tak´e program´ ator jej nikdy nebude volat pˇr´ımo, k tomu slouˇz´ı vyˇsˇs´ı vrstvy. • Libraries – Dalˇs´ı vrstvou jsou knihovny, kter´e jsou ps´any v jazyce C nebo C++ a jsou kompilov´ any pˇr´ımo pro urˇcitou hardwarovou architekturu telefonu. Daj´ı se zde nal´ezt napˇr´ıklad knihovny zodpovˇedn´e za vykreslov´an´ı oken (Surface Manager), datab´ azovou podporu (SQLite), grafick´e knihovny (OpenGL, SGL, Freetype), medi´aln´ı knihovny pro pˇrehr´ av´ an´ı audia a videa (Media Framework) anebo knihovny urˇcen´e pro integrovan´ y webov´ y prohl´ıˇzeˇc (SSL, WebKit). Tyto knihovny existuj´ı pouze proto, aby byly vol´ any z vyˇsˇs´ıch vrstev, samostatnˇe fungovat nemohou. • Android Runtime – Dalˇs´ı vrstva navazuj´ıc´ı na linuxov´e j´adro obsahuj´ıc´ı aplikaˇcn´ı virtu´ aln´ı stroj zvan´ y Dalvik a tak´e z´akladn´ı knihovny, kter´e poskytuj´ı vˇetˇsinu funkc´ı dostupn´ ych v z´ akladn´ıch knihovn´ach jazyka Java. Virtu´ aln´ı stroj Dalvik – Jedn´a se o jednu z kl´ıˇcov´ ych souˇc´ast´ı cel´eho Android OS (v dalˇs´ım textu jen ”Android”). M´ısto toho, aby Android vyuˇz´ıval klasick´ y virtu´aln´ı stroj od Javy, jako je napˇr´ıklad Java ME (Java Mobile Edition), vyuˇz´ıv´a sv˚ uj vlastn´ı virtu´ aln´ı stroj, kter´ y je v´ıce optimalizov´an pro bˇeh na mobiln´ıch zaˇr´ızen´ıch. Hlavn´ım rozd´ılem oproti tradiˇcn´ı Javˇe je ten, ˇze virtu´aln´ı stroj Dalvik spouˇst´ı .dex soubory, kter´e jsou pˇri kompilaci vytvoˇreny ze standardn´ıch .class a .jar soubor˚ u. Tyto .dex soubory jsou kompaktnˇejˇs´ı a efektivnˇejˇs´ı na mobiln´ıch zaˇr´ızen´ıch, kter´e maj´ı slabˇs´ı procesor, limitovanou pamˇet’ a nap´ajen´ı na baterii. V´ ysledkem t´eto optimalizace m˚ uˇze b´ yt souˇcasn´ y bˇeh v´ıce instanc´ı virtu´aln´ıho stroje v jednu chv´ıli. Tato vrstva je tedy pohonem vˇsech aplikac´ı a spolu s knihovnami utv´aˇr´ı pracovn´ı prostˇred´ı pro dalˇs´ı vrstvu. • Application Framework – Tato vrstva poskytuje tˇr´ıdy pouˇziteln´e pˇri programov´ an´ı aplikac´ı. Poskytuje tak´e abstrakci pro pˇr´ıstup k hardwaru, spravuje uˇzivatelsk´e rozhran´ı a aplikaˇcn´ı zdroje. Mezi v´ yznamn´e ˇc´asti patˇr´ı: – Activity Manager – ˇc´ ast ˇr´ıd´ıc´ı ˇzivotn´ı cyklus aplikac´ı, v´ıce v kapitole 2.1. – Views – komponenty pouˇz´ıvan´e pˇri konstrukci uˇzivatelsk´eho rozhran´ı aplikace. Mohou to b´ yt r˚ uzn´e mˇr´ıˇzky, seznamy, textov´a pole, tlaˇc´ıtka nebo tak´e napˇr´ıklad vloˇzen´ y prohl´ıˇzeˇc. – Notification Manager – umoˇzn ˇuje aplikac´ım zobrazovat r˚ uzn´a upozornˇen´ı v stavov´em ˇr´ adku. – Content Providers – umoˇzn ˇuj´ı aplikac´ım sd´ılet data, v´ıce v n´asleduj´ıc´ı kapitole. – Resource Manager – podporuje pˇr´ıstup k extern´ım zdroj˚ um jako je grafika, ˇci textov´e ˇretˇezce. • Application – V t´eto vrstvˇe nalezneme jak vestavˇen´e aplikace, tak aplikace tˇret´ıch stran. Obˇe tyto skupiny jsou si rovnocen´e, jelikoˇz vyuˇz´ıvaj´ı stejn´e API knihovny. Samotnou aplikac´ı tedy m˚ uˇze b´ yt napˇr´ıklad spr´avce kontakt˚ u, sms, webov´ y prohl´ıˇzeˇc, nebo i hra. 6
Z´ akladn´ı komponenty Bˇehem programov´ an´ı aplikace pro syst´em Android se setk´av´ame se ˇctyˇrmi hlavn´ımi objekty [11]: • Activities – Aktivita je blok vlastn´ıho uˇzivatelsk´eho rozhran´ı, ta ˇc´ast, kterou uˇzivatel vid´ı na obrazovce. M˚ uˇzeme si ji pˇredstavit jako analogii okna v klasick´ ych poˇc´ıtaˇcov´ ych aplikac´ıch. • Content Providers – Poskytuj´ı abstraktn´ı vrstvu nad jak´ ymikoliv daty uloˇzen´ ymi na zaˇr´ızen´ı tak, aby byla jednoduˇse dostupn´a pro dalˇs´ı aplikace. Program´ator se nemus´ı starat, jak jsou data fyzicky uloˇzena, pracuje pouze s handlerem a content provider se postar´ a o spr´ avn´e proveden´ı poˇzadovan´e operace, at’ uˇz se jedn´a o data uloˇzen´ a v SQLite datab´ azi, klasick´e soubory na zaˇr´ızen´ı ˇci soubory na internetov´em serveru. • Intents – Jsou syst´emov´e zpr´avy oznamuj´ıc´ı aplikac´ım v´ yskyty urˇcit´ ych ud´alost´ı. M˚ uˇze se jednat napˇr´ıklad o hardwarov´e zmˇeny (vloˇzen´ı SD karta), pˇr´ıchoz´ı data (pˇr´ıchod SMS zpr´ avy), nebo ud´alosti aplikac´ı (spuˇstˇen´ı aplikace z hlavn´ıho menu). Program´ ator vˇsak nen´ı omezen pouze na naslouch´an´ı a reagovan´ı na zpr´avy, m˚ uˇze tak´e vytv´ aˇret vlastn´ı. Je moˇzn´e napˇr´ıklad spouˇstˇet jin´e aplikace, nebo d´at vˇedˇet o urˇcit´e nastal´e situaci. • Services – Sluˇzby jsou na rozd´ıl od pˇredeˇsl´ ych objekt˚ u navrˇzeny tak, aby bˇeˇzely dlouhodobˇe a nez´ avisle na jin´ ych aktivit´ach. M˚ uˇze se napˇr. jednat o pˇrehr´av´an´ı hudby, pˇrestoˇze byl samotn´ y pˇrehr´ avaˇc zavˇren a jeho aktivita tedy jiˇz neexistuje.
Vestavˇ en´ e funkce Pˇri programov´ an´ı v Android SDK m˚ uˇzeme vyuˇz´ıt nˇekolik vestavˇen´ ych funkc´ı, kter´e n´ am pomohou snadnˇeji vyv´ıjet aplikace [11]: • Uloˇ ziˇ stˇ e – Umoˇzn ˇuje aplikaci vyuˇz´ıt jak uloˇziˇstˇe telefonu, tak napˇr´ıklad SD kartu pro ukl´ ad´ an´ı nebo ˇcten´ı soubor˚ u. • S´ıt’ – Zaˇr´ızen´ı Android jsou typicky schopn´e pˇripojen´ı k Internetu. Toho m˚ uˇzeme vyuˇz´ıvat bohatˇe, od surov´ ych Java socket˚ u aˇz po vloˇzen´ y webov´ y prohl´ıˇzeˇc do aplikace. • Multimedia – Aˇckoliv m´ a vˇetˇsina zaˇr´ızen´ı schopnost pˇrehr´at ˇci zachytit zvuk a video, moˇznosti se mohou u jednotliv´ ych zaˇr´ızen´ı r˚ uznit. Napˇr´ıklad jen nˇekter´e zaˇr´ızen´ı disponuj´ı pˇredn´ı kamerou. Nejprve se vytvoˇr´ı dotaz na moˇznosti zaˇr´ızen´ı a podle odpovˇedi je lze d´ ale v aplikaci vyuˇz´ıt. • GPS – Jelikoˇz m´ a vˇetˇsina zaˇr´ızen´ı s Androidem GPS modul, je moˇzn´e jej vyuˇz´ıt napˇr. pro zobrazen´ı pozice na mapˇe, nebo pro sledov´an´ı pohybu telefonu. • Sluˇ zby telefonu – Zaˇr´ızen´ı s Androidem jsou z velk´e vˇetˇsiny mobiln´ı telefony. Tyto funkce umoˇzn ˇuj´ı aplikac´ım spravovat hovory, zas´ılat a pˇrij´ımat SMS zpr´avy a vˇsechny ostatn´ı telefonick´e funkce.
7
Spr´ ava aplikac´ı a jejich ˇ zivotn´ı cyklus Na rozd´ıl od klasick´ ych operaˇcn´ıch syst´em˚ u, aplikace v syst´emu Android m´a omezenou kontrolu nad vlastn´ım ˇzivotn´ım cyklem. Aplikace mus´ı neust´ale naslouchat zmˇenˇe sv´eho stavu a b´ yt vˇzdy pˇripravena na n´ahl´e ukonˇcen´ı. Standardnˇe obsahuje kaˇzd´ a aplikace sv˚ uj vlastn´ı proces, kter´ y vytv´aˇr´ı vlastn´ı instanci virtu´aln´ıho stroje Dalvik. O spr´ avu syst´emov´ ych zdroj˚ u se ale st´ale star´a samotn´ y Android za u ´ˇcelem zaruˇcen´ı neust´ al´e odezvy zaˇr´ızen´ı. Ve v´ ysledku to m˚ uˇze znamenat, ˇze proces m˚ uˇze b´ yt bez varov´ an´ı n´ asilnˇe ukonˇcen, aby syst´em uvolnil zdroje pro aplikace s vyˇsˇs´ı prioritou. Existuje 5 stav˚ u procesu (obr. 2.2) [10]: • Aktivn´ı (v popˇred´ı) – proces, kter´ y je zrovna zobrazen na popˇred´ı a uˇzivatel s n´ım pracuje, m´ a samozˇrejmˇe nejvyˇsˇs´ı prioritu. Jedn´ a se o proces, kter´ y se syst´em bude snaˇzit za kaˇzdou cenu udrˇzet odezvyschopn´ y. Bude ukonˇcen pouze pokud bude poˇzadovat v´ıce pamˇeti, neˇz kolik je pro zaˇr´ızen´ı dostupn´e. • Viditeln´ e – proces, kter´ y je viditeln´ y, ale ne na popˇred´ı. M˚ uˇze se jednat napˇr. o proces za dialogem, kter´ y je v popˇred´ı. Standardnˇe nebude ukonˇcen, pokud to nen´ı zapotˇreb´ı pro bezprobl´emov´ y bˇeh procesu v popˇred´ı.
1. Aktivní proces
Kritická priorita
2. Viditelný proces
Vysoká priorita
3. Proces spuštěné služby
4. Proces v pozadí
Nízká priorita
• Spuˇ stˇ en´ e sluˇ zby – proces, kter´ y je bˇeˇz´ıc´ı sluˇzbou. Sluˇzby pracuj´ı v po5. Prázdný proces zad´ı bez pˇr´ım´eho viditeln´eho rozhran´ı. Protoˇze sluˇzby nejsou v pˇr´ım´e interakci s uˇzivatelem, maj´ı m´ırnˇe menˇs´ı prioritu Obr´azek 2.2: Stavy proces˚ u. neˇzli viditeln´e procesy. Jelikoˇz jsou sluˇzby st´ ale d˚ uleˇzit´e, nebudou ukonˇceny, pokud to nebude nezbytnˇe nutn´e pro aktivn´ı nebo viditeln´e procesy. • V pozad´ı – je proces, kter´ y nen´ı viditeln´ y uˇzivateli a byl pozastaven. Tento proces nen´ı kritick´ y a m˚ uˇze b´ yt ukonˇcen, pokud jsou potˇreba zdroje pro viditeln´e a aktivn´ı procesy. Proces si mus´ı pˇred ukonˇcen´ım uchovat sv˚ uj stav pro pˇr´ıpad, kdy uˇzivatel zm´ aˇckne tlaˇc´ıtko zpˇet a bude oˇcek´avat, ˇze aplikaci nalezne v p˚ uvodn´ım stavu. • Pr´ azdn´ e – proces, kter´ y neobsahuje ani sluˇzbu, ani ˇz´adnou aktivitu. Pro vyˇsˇs´ı v´ ykon Android ˇcasto nech´ av´ a proces v pamˇeti i po tom, co ukonˇcil sv˚ uj ˇzivotn´ı cyklus. Tato optimalizace zrychluje znovu spuˇstˇen´ı aplikace. Tyto procesy jsou v pˇr´ıpadˇe nedostatku pamˇeti ihned ukonˇceny.
8
2.2
Tvorba aplikac´ı pro Android OS
Tato ˇc´ ast se zab´ yv´ a principy a z´aklady tvorby aplikac´ı pro Android.
Android SDK N´astroje pro v´ yvoj aplikac´ı pro Android jsou obsaˇzeny v SDK, kter´ y je dostupn´ y pro ˇradu syst´em˚ u. Nejjednoduˇsˇs´ı je jeho pouˇzit´ı pomoc´ı modulu do Eclipse, kter´ y nalezneme pod zkratkou ADT (Android Development Tools) [12]. Je ale moˇzn´e pouˇz´ıvat tak´e pˇr´ıkazovou ˇr´adku SDK. V´ yhodou SDK je implementace emul´atoru zaˇr´ızen´ı s Androidem, coˇz n´am umoˇzn ˇuje otestovat vˇetˇsinu funkˇcnosti aplikace i bez re´aln´eho telefonu [13]. Logicky m´a emul´ator i sv´a omezen´ı, jako je re´ aln´e pouˇzit´ı kamery, telefonov´an´ı, simulace baterie apod. Velkou v´ yhodou ale m˚ uˇze b´ yt otestov´ an´ı n´ami vytvoˇren´e aplikace pro r˚ uzn´e verze syst´emu, ˇci r˚ uzn´e rozliˇsen´ı a velikosti obrazovky a to bez nutnosti vlastnit nˇekolik fyzick´ ych zaˇr´ızen´ı. Samotn´e programov´ an´ı prob´ıh´ a v Javˇe s vyuˇzit´ım Android API a nˇekolika specifick´ ych soubor˚ u XML.
Manifest Z´akladem kaˇzd´e aplikace pro Android je soubor AndroidManifest.xml, uloˇzen´ y v hlavn´ı sloˇzce projektu. Nejz´ akladnˇejˇs´ı informac´ı v manifestu je atribut package koˇrenov´eho prvku manifest, kter´ y urˇcuje n´ azev bal´ıku. V manifestu je moˇzn´e specifikovat spousta dalˇs´ıch vˇec´ı, kde mezi nejd˚ uleˇzitejˇs´ı patˇr´ı [11]: • Opr´ avnˇ en´ı – Aby aplikace mohla pouˇz´ıvat nˇekter´e funkce syst´emu, jakoˇzto napˇr. telefonov´ an´ı, fotoapar´ at, zjiˇstˇen´ı polohy pomoc´ı GPS, nebo aby z´ıskala pˇr´ıstup ke kontakt˚ um, mus´ı b´ yt v manifestu nastavena pˇr´ısluˇsn´a povolen´ı. Tyto specifikovan´a povolen´ı pak vid´ı uˇzivatel aplikace pˇri instalaci softwaru a souhlasem stvrd´ı, ˇze tyto funkce ˇci zdroje m˚ uˇze aplikace pouˇz´ıvat. Pˇr´ıkladem m˚ uˇze b´ yt povolen´ı pouˇz´ıv´an´ı fotoapar´atu: <uses-permission android:name="android.permission.CAMERA"/> • Minim´ aln´ı verze syst´ emu – Android, stejnˇe jako kaˇzd´ y jin´ y syst´em, proch´ az´ı urˇcit´ ym v´ yvojem a jednotliv´e jeho verze pˇrin´aˇsej´ı vylepˇsen´ı i zmˇeny. Nˇekter´e z tˇechto zmˇen maj´ı vliv na samotn´e SDK a pˇrin´aˇsej´ı tak napˇr´ıklad nov´e tˇr´ıdy, metody a parametry nedostupn´e v pˇredchoz´ıch verz´ıch. Nˇekdy tak m˚ uˇze b´ yt u ´ˇceln´e zajistit, aby aplikace byla spustiteln´ a pouze na syst´emu s urˇcitou minim´aln´ı verz´ı SDK. N´ asleduj´ıc´ım ˇr´ adkem nastav´ıme minim´aln´ı verzi 8 (odpov´ıd´a Androidu verze 2.2): <uses-sdk android:minSdkVersion="8" /> • Specifikace aplikace – Samotn´ ym j´adrem manifestu je element , kde specifikujeme samotn´e souˇc´asti aplikace, jako jsou aktivity , sluˇzby <service>, content providery <provider> a dalˇs´ı. D´ale je zde moˇzn´e nastavit napˇr. ikonu a n´ azev aplikace zobrazovan´e v menu zaˇr´ızen´ı. V nejd˚ uleˇzitˇejˇs´ım elementu samotn´e aktivity nastavujeme jm´eno tˇr´ıdy (parametr android:name), zobrazovan´e jm´eno aktivity (parametr android:label) a ˇcasto tak´e podˇr´ızen´ y prvek , kter´ y specifikuje, za jak´ ych podm´ınek bude aktivita zobrazena. 9
Tvorba grafick´ eho rozhran´ı Aˇckoli je moˇzn´e vytv´ aˇret a spojovat prvky grafick´eho rozhran´ı ˇcistˇe pomoc´ı Java k´odu, existuje ve v´ yvoji Android aplikac´ı i jin´ y, v´ yhodnˇejˇs´ı zp˚ usob. T´ım je specifikace rozvrˇzen´ı pomoc´ı XML souboru [11]. V tomto souboru se definuj´ı jednotliv´e prvky a hierarchick´e vazby mezi nimi, pomoc´ı form´ atu XML. Nespornou v´ yhodou je fakt, ˇze prostˇred´ı Eclipse obsahuje grafick´ y editor, pomoc´ı kter´eho m˚ uˇzeme jednoduˇse vytv´aˇret a umist’ovat jednotliv´e elementy a generuje se n´ am pˇrehledn´e XML, kter´e je lehce ˇciteln´e a upraviteln´e. Takov´ yto XML soubor je v projektu povaˇzov´an za zdroj a je v psan´em k´odu pˇr´ıstupn´ y pomoc´ı souboru R.java, kter´ y je v projektu automaticky generov´an. Pomoc´ı nˇej m˚ uˇzeme pˇriˇradit dan´e rozhran´ı poˇzadovan´e aktivitˇe, a tak´e pˇristoupit k jednotliv´ ym prvk˚ um rozhran´ı a pracovat s nimi (reagovat na stisk apod.).
Lokalizace aplikace Tvorba lokalizovan´ ych aplikac´ı je v syst´emu Android velice jednoduch´a. Syst´em vyuˇz´ıv´ a tzv. Resource-Switching [12], kdy jsou aplikaci automaticky vybr´any zdroje, kter´e nejl´epe vyhovuj´ı dan´emu zaˇr´ızen´ı a jeho nastaven´ı. V praxi to znamen´a, ˇze m˚ uˇzeme m´ıt pˇripraveny napˇr. rozd´ıln´e obr´ azky pro r˚ uzn´ a rozliˇsen´ı zaˇr´ızen´ı, jin´a rozvrˇzen´ı pro svislou a horizont´aln´ı polohu, lokalizovan´e ˇretˇezce pro r˚ uzn´e jazyky a mnoho dalˇs´ıch variac´ı. Samotn´ a lokalizace se t´ yk´ a ˇretˇezc˚ u uloˇzen´ ych v souboru /res/values/strings.xml. Napˇr´ıklad ˇcesk´e jazykov´e verze dos´ahneme vytvoˇren´ım sloˇzky /res/values-cs a um´ıstˇen´ım pˇreloˇzen´eho souboru strings.xml do t´eto sloˇzky [13]. Jakmile je v mobiln´ım telefonu nastaven ˇcesk´ y jazyk, aplikace bude po spustˇen´ı automaticky s uˇzivatelem komunikovat ˇcesky. V pˇr´ıpadˇe nastaven´ı jak´ehokoliv jin´eho jazyka budou pouˇzity v´ ychoz´ı ˇretˇezce, typicky lokalizovan´e do angliˇctiny. Pˇrizp˚ usobit mus´ıme tak´e samotnou aplikaci a v jej´ım zdrojov´em k´odu nepouˇz´ıvat konstantn´ı ˇretˇezce, ale vyuˇz´ıvat v´ yhradnˇe ˇretˇezce ze zdroj˚ u. Podobn´ ym zp˚ usobem je moˇzn´e pracovat s jin´ ymi typy zdroj˚ u. Napˇr. odliˇsn´e rozvrˇzen´ı pro horizont´aln´ı natoˇcen´ı um´ıst´ıme do sloˇzky /res/layout-land.
10
2.3
Pr´ ace s fotoapar´ atem
Fotoapar´ at lze v uˇzivatelsk´e aplikaci vyuˇz´ıvat dvˇemi zp˚ usoby [10]: • Pomoc´ı Intent – nejjednoduˇsˇs´ı zp˚ usob jak z´ıskat obr´azek ze zabudovan´eho fotoapar´ atu. Z uˇzivatelsk´e aplikace se pomoc´ı zpr´avy (Intent) spust´ı aktivita kamery, kde si uˇzivatel m˚ uˇze mˇenit jak´ekoliv nastaven´ı. Po potvrzen´ı vyfocen´e fotografie je obraz pˇred´ an zpˇet do programu. Z´ıskan´ y obr´azek pak m˚ uˇzeme v aplikaci pˇr´ımo vyuˇz´ıt jako bitmapu, nebo pomoc´ı metody MediaStore.EXTRA OUTPUT uloˇzit origin´aln´ı fotografii na specifikovan´e um´ıstˇen´ı. • Ovl´ ad´ an´ım kamery – abychom mohli pˇristupovat ke kameˇre pˇr´ımo, potˇrebujeme nejprve pˇridat opr´ avnˇen´ı do souboru manifestu, viz kap. 2.2. V aplikaci pot´e pouˇz´ıv´ame objekt Camera, u kter´eho programovˇe specifikujeme nastaven´ı kamery, a poˇrizujeme obr´ azky. Nevyvol´ av´ ame tedy nativn´ı aktivitu kamery jako v prvn´ım pˇr´ıpadˇe, ale vˇsechny akce ovl´ ad´ ame sami. Hlavn´ı v´ yhodou tohoto pˇr´ıstupu je integrace funkce fotoapar´ atu pˇr´ımo do aplikace, tedy zobrazen´ı n´ahledu do n´ami urˇcen´eho prostoru a sn´ım´ an´ı obr´ azk˚ u na z´ akladˇe stisku n´ami specifikovan´ ych tlaˇc´ıtek. Vyfocen´a fotografie je pak v aplikaci reprezentov´ana jako pole byt˚ u se kter´ ym m˚ uˇzeme d´ale pracovat.
2.4
Pˇ revod textu na zvuk
Jiˇz od verze 1.6 Android obsahuje modul pro pˇrevod textu na zvuk s n´azvem Pico [13]. Ten dovoluje jak´ekoliv aplikaci pˇreˇc´ıst textov´ y ˇretˇezec na z´akladˇe zvolen´eho nastaven´ı. V nastaven´ı modulu je moˇzn´e vybrat jazyk, pomoc´ı kter´eho bude ˇcten´ı prov´adˇeno a tak´e rychlost tohoto ˇcten´ı. Pro samotn´e pouˇzit´ı je tak´e nutn´e nainstalovat zvolen´e slovn´ıky z internetu. V samotn´e aplikaci vyuˇzijeme funkci pˇrevodu textu na zvuk pomoc´ı dodan´eho API a objektu tˇr´ıdy android.speech.tts.TextToSpeech. Pˇred samotn´ ym pouˇzit´ım pˇrevodu v aplikaci, mus´ıme zkontrolovat, zda dan´e zaˇr´ızen´ı obsahuje zdroje potˇrebn´e pro samotn´ y pˇrevod (zejm´ena jazykov´e soubory). Tuto kontrolu provedeme spuˇstˇen´ım pˇreddefinovan´e aktivity s akc´ı TextToSpeech.Engine.ACTION CHECK TTS DATA. V´ ysledkem t´eto aktivity je informace, zda jsou zdroje v poˇr´ adku, ˇci nikoliv. Pokud zdroje chyb´ı, spust´ıme pˇreddefinovanou aktivitu instalace tˇechto zdroj˚ u. V pˇr´ıpadˇe, ˇze jsou zdroje pˇr´ıtomny, m˚ uˇzeme prov´est samotn´ y pˇrevod n´ asleduj´ıc´ımi pˇr´ıkazy: TextToSpeech mTts = new TextToSpeech(context, listener); mTts.speak("Sample text", TextToSpeech.QUEUE_ADD, null); Zadan´ y text je pot´e pˇreˇcten jazykem, kter´ y byl vybr´an v nastaven´ı. N´astroj Pico vˇsak bohuˇzel obsahuje jen nˇekolik z´ apadn´ıch jazyk˚ u: angliˇctinu, nˇemˇcinu, francouzˇstinu, italˇstinu ˇ y text pˇreveden´ a ˇspanˇelˇstinu. Cesk´ y napˇr´ıklad pomoc´ı anglick´ ych slovn´ık˚ u bude tedy velice zkreslen´ y. K zakoupen´ı jsou ale dostupn´e i jin´e komerˇcn´ı moduly pro pˇrevod textu na zvuk a nˇekter´e z nich obsahuj´ı pr´ avˇe i ˇceˇstinu. V´ ybˇer takov´eho modulu a pˇr´ıpadn´eho ˇcesk´eho jazyka pak prob´ıh´ a v glob´ aln´ım nastaven´ı zaˇr´ızen´ı a samotn´a tvorba aplikac´ı vyuˇz´ıvaj´ıc´ıch pˇrevod se v˚ ubec nezmˇen´ı.
11
Kapitola 3
N´ avrh rozpozn´ an´ı Braillova p´ısma v obraze Vˇetˇsina publikovan´ ych vˇedeck´ ych ˇcl´ank˚ u, t´ ykaj´ıc´ıch se rozpozn´an´ı Braillova p´ısma, se zab´ yv´a rozpozn´ an´ım cel´ ych stran p´ısma vytlaˇcen´eho v pap´ıru, tedy obvykle knih pro zrakovˇe postiˇzen´e. Obr´ azek cel´e strany p´ısma je obvykle z´ısk´an pomoc´ı scanneru [14, 15]. Takto z´ıskan´ y obraz je dobˇre a rovnomˇernˇe osvˇetlen, nen´ı obvykle nespr´avnˇe natoˇcen a neobsahuje tolik ruch˚ u. Tyto vlastnosti umoˇzn ˇuj´ı uplatnit jednoduˇsˇs´ı formy pˇredzpracov´an´ı, neˇzli je tomu u fotografie veˇrejn´eho prostranstv´ı poˇr´ızen´e mobiln´ım telefonem. Existuj´ı tak´e fixn´ı normy vytlaˇcov´ an´ı Braillova p´ısma do pap´ıru a tak je na z´akladˇe znalosti DPI moˇzn´e urˇcit absolutn´ı velikost znak˚ u a mezer mezi nimi [16]. Programy popsan´e v tˇechto pracech jsou tak´e navrhov´ any pro pouˇzit´ı na poˇc´ıtaˇci, a tak si mohou dovolit pouˇz´ıt ˇcasovˇe a prostorovˇe n´aroˇcnˇejˇs´ı metody. Oproti fotografii Braillova p´ısma na veˇrejn´em prostranstv´ı, jsou zde jin´e probl´emy a to pˇredevˇs´ım s oboustrann´ ymi dokumenty. Tyto algoritmy mus´ı rozhodnout, zdali se jedn´ a o teˇcku vytlaˇcenou, ˇci vystouplou [17]. Vˇetˇsina princip˚ u popsan´ ych v tˇechto publikac´ıch vˇsak nen´ı uplatniteln´a v naˇsem pˇr´ıpadˇe. Naopak zde mus´ıme ˇreˇsit spoustu jin´ ych probl´em˚ u. Pˇri n´avrhu pouˇzit´ ych metod mus´ıme br´at ohled na to, ˇze z´ısk´ av´ ame obr´azek z mobiln´ıho telefonu a veˇrejn´eho prostranstv´ı. Nen´ı tak v´ yjimkou, ˇze z´ıskan´ a fotografie nen´ı ˇr´adnˇe zaostˇren´a, typicky nen´ı orientov´ana naprosto rovnˇe a m˚ uˇze b´ yt vyfotografov´ana ve ˇspatn´ ych svˇeteln´ ych podm´ınk´ach. Z´ıskan´e teˇcky a mezery mezi nimi jsou tak´e pokaˇzd´e jinak velk´e. Jedin´ ym nalezen´ ym zdrojem, kter´ y popisuje pˇresnˇe tuto problematiku, je ˇcl´anek A Braille Recognition System by the Mobile Phone with Embedded Camera [18]. N´asleduj´ıc´ı n´avrh jedˇ anek ovˇsem notliv´ ych krok˚ u rozpozn´ av´ an´ı byl tedy inspirov´an pˇredevˇs´ım t´ımto zdrojem. Cl´ obsahuje pouze z´ akladn´ı myˇslenky, a tak jsou jednotliv´e popsan´e postupy a algoritmy z valn´e vˇetˇsiny vlastn´ı.
12
Samotn´e rozpozn´ av´ an´ı se skl´ ad´a z nˇekolika krok˚ u. Pˇredstavme si jejich z´akladn´ı princip, pˇriˇcemˇz podrobnosti budou pops´ any v t´eto kapitole n´ıˇze. Prvotn´ım u ´konem aplikace je samotn´e z´ısk´ an´ı obr´azku. Pˇred detekc´ı jednotliv´ ych teˇcek ze z´ıskan´eho obrazu, mus´ıme fotografii nejprve pˇredzpracovat. Pro rychSpuštění programu lejˇs´ı pr´aci s obrazem jej nejprve pˇrevedeme do stupˇ n˚ u ˇsedi. Teˇcky, kter´e reprezentuj´ı Braillov´e znaky typicky Získání obrázku barevnˇe vyˇcn´ıvaj´ı z pozad´ı, jsou bud’to vyvedeny jinou barvou, nebo zachyt´ıme jejich odlesk ˇci st´ın. Pro jejich Předzpracování odliˇsen´ı aplikujeme na obr´azek prahov´an´ı. V samotn´em obr´azku vˇsak m˚ uˇze b´ yt kromˇe teˇcek Braillova p´ısma i cel´ a Detekce objektů ˇrada jin´ ych ruch˚ u, napˇr´ıklad text, neˇcistoty nebo odlesky. a odstranění ruchu Nˇekter´e z nich m˚ uˇzeme rozpoznat a pˇred dalˇs´ım zpracov´an´ım odstranit. Seskupení V dalˇs´ı f´azi jiˇz tedy m´ame sadu teˇcek a ty seskup´ıme do jednotliv´ ych ˇr´adk˚ u a sloupc˚ u. Na z´akladˇe um´ıstˇen´ı Analýza a překlad v ˇr´adc´ıch a sloupc´ıch n´aslednˇe sestav´ıme jednotliv´e znaky a ty pot´e pˇreloˇz´ıme na souvisl´ y text. Pˇreklad ˇc´ıseln´e hodnoty na znak z´avis´ı na pouˇzit´em jazyku. Po dokonˇcen´ı je Obr´azek 3.1: Diagram f´ az´ı moˇzn´e zpracovat dalˇs´ı fotografii. Cel´ y pr˚ ubˇeh je demonaplikace. strov´an v diagramu 3.1. D´ale v t´eto kapitole budou podrobnˇeji pops´any konkr´etn´ı postupy tˇechto f´az´ı, smˇeˇruj´ıc´ı k rozpozn´ an´ı Braillova p´ısma v obraze. Jednotliv´e metody jsou prokl´ad´any demonstraˇcn´ımi obr´azky, kter´e zn´ azorˇ nuj´ı jejich funkci. Kapitola je ˇclenˇena do jednotliv´ ych blok˚ u rozpozn´av´ an´ı a tyto bloky obsahuj´ı popis jednotliv´ ych rozpozn´avac´ıch technik.
3.1
Pˇ redzpracov´ an´ı obrazu
Pˇredzpracov´ an´ı obrazu patˇr´ı mezi nejd˚ uleˇzitˇejˇs´ı ˇc´asti spolehliv´eho rozpozn´av´an´ı. Pokud je bˇehem tohoto procesu ztracena nˇejak´a informace, n´asleduj´ıc´ı kroky ji jiˇz neobnov´ı. Proto je d˚ uleˇzit´e zvolit takov´e metody, kter´e rozpoznaj´ı maximum teˇcek Braillova p´ısma v obraze a to nejl´epe tak, aby pˇri nich vzniklo co nejm´enˇe ruˇsen´ı a teˇcky by tak mohly b´ yt d´ ale snadno zpracov´ any. V t´eto ˇc´ asti se sezn´am´ıme jak s obecn´ ymi principy pˇredzpracov´an´ı, tak s konkr´etn´ımi metodami pouˇzit´ ymi v t´eto pr´aci.
Pˇ revod do odst´ın˚ uˇ sedi Jelikoˇz klasick´e metody pˇredzpracov´an´ı poˇc´ıtaj´ı s ˇsedot´onov´ ym obrazem a barva pro n´as v tomto pˇr´ıpadˇe nem´ a velkou informaˇcn´ı hodnotu, obraz nejprve pˇrevedeme do odst´ın˚ u ˇsedi podle vztahu [19]: I = 0.299 ∗ R + 0.587 ∗ G + 0.144 ∗ B
(3.1)
Kde R, G a B reprezentuj´ı z´ akladn´ı barevn´e sloˇzky a I d´av´a v´ yslednou hodnotu ˇsedi.
13
Prahov´ an´ı Teˇcky Braillova p´ısma jsou vˇzdy viditelnˇe odliˇsiteln´e od sv´eho pozad´ı, at’ uˇz jsou vyvedeny jinou barvou, nebo zachyt´ıme jejich st´ın ˇci odlesk. Fakt, ˇze jsou viditeln´e, znamen´ a, ˇze maj´ı teˇcky od sv´eho pozad´ı odliˇsnou hodnotu jasu. Prahov´ an´ı se pouˇz´ıv´ a k pˇreveden´ı obrazu s v´ıce u ´rovnˇemi jasu na obraz se dvˇemi u ´rovnˇemi jasu (ˇcern´ a a b´ıl´ a). Pro kaˇzd´ y pixel se vyhodnot´ı, zda je jeho hodnota jasu niˇzˇs´ı ˇci vyˇsˇs´ı neˇz zadan´ y pr´ ah a podle toho je mu pˇriˇrazena hodnota 0, ˇci 1 (pˇr´ıpadnˇe 255). Prahov´ an´ı m˚ uˇze b´ yt glob´ aln´ı, nebo lok´aln´ı [20]: • Glob´ aln´ı prahov´ an´ı – u tohoto zp˚ usobu prahov´an´ı je zvolena nebo nalezena urˇcit´ a hodnota prahu T a pot´e se sekvenˇcnˇe proch´az´ı cel´ y obraz. Pokud plat´ı f (x, y) ≥ T , je pixelu pˇriˇrazena 1, jinak 0. Pr´ah je moˇzno stanovit r˚ uzn´ ymi zp˚ usoby. Je moˇzn´e zkouˇsen´ım vybrat hodnotu, kter´a d´av´a nejlepˇs´ı vizu´aln´ı v´ ysledek, ale k tomu je potˇreba uˇzivatelova aktivita, coˇz je v tomto pˇr´ıpadˇe nepˇr´ıpustn´e. Budou n´as zaj´ımat metody, kter´e jsou schopny urˇcit pr´ah automaticky. K tomuto slouˇz´ı nˇekolik metod, napˇr´ıklad Otsuova metoda [21]. Jak ale m˚ uˇzeme vidˇet na obr. 3.1 b), glob´aln´ı prahov´ an´ı nen´ı vhodn´e v pˇr´ıpadˇe nerovnomˇern´eho osvˇetlen´ı ˇci rozd´ıln´ ych hodnot jasu v r˚ uzn´ ych ˇc´ astech obrazu. • Lok´ aln´ı prahov´ an´ı – neboli tak´e adaptivn´ı ˇci dynamick´e prahov´an´ı. Hlavn´ı v´ yhodou je vˇetˇs´ı u ´spˇeˇsnost pˇri prahov´an´ı sn´ımku s nerovnomˇern´ ym osvˇetlen´ım, viz obr. 3.1. Princip lok´ aln´ıho prahov´ an´ı spoˇc´ıv´a v tom, ˇze je postupnˇe zkoum´ano okol´ı kaˇzd´eho bodu a hodnota prahu T je vˇzdy vypoˇctena pro toto okol´ı. Okol´ı je urˇceno maskou o urˇcit´e velikosti, kter´ a se pohybuje po obraze. Pro urˇcen´ı hodnotu prahy v tomto okol´ı je moˇzn´e vyuˇz´ıt statistick´e funkce nebo napˇr´ıklad jiˇz zm´ınˇenou Otsuovu metodu. V´ ysledek prahov´ an´ı je pak z´avisl´ y na zvolen´e velikosti masky. Do t´eto skupiny patˇr´ı napˇr´ıklad metoda p-procentn´ıho prahov´ an´ı [22], Wellnerova metoda [23], nebo jej´ı modifikace s vyuˇzit´ım integr´aln´ıho obrazu [24].
a)
b)
c)
d)
Obr´ azek 3.2: R˚ uzn´e zp˚ usoby prahov´an´ı. a) origin´aln´ı obr´azek. b) glob´aln´ı prahov´ an´ı s v´ ypoˇctem prahu pomoc´ı Otsuovy metody. c) lok´aln´ı prahov´an´ı metodou p-procentn´ıho prahov´ an´ı. d) lok´aln´ı prahov´an´ı Wellnerovou metodou s pouˇzit´ım integr´ aln´ıho obrazu.
14
V naˇsem pˇr´ıpadˇe, kdy je fotografie z mobiln´ıho telefonu ˇcasto nerovnomˇernˇe osvˇetlen´ a, pouˇzijeme zajist´e Lok´ aln´ı prahov´ an´ı. Konkr´etnˇe pouˇzijeme modifikaci Wellnerovy metody s vyuˇzit´ım integr´ aln´ıho obrazu [24]. Jak m˚ uˇzeme vidˇet na obr. 3.1 d), tato metoda dosahuje nejlepˇs´ıch v´ ysledk˚ u.
Lok´ aln´ı prahov´ an´ı s vyuˇ zit´ım integr´ aln´ıho obrazu Tato metoda byla publikov´ ana ve ˇcl´anku Adaptive Thresholding Using the Integral Image [24]. V t´eto pr´ aci si pop´ıˇseme z´akladn´ı princip t´eto metody a jej´ı v´ yhody. Integr´ aln´ı obraz je technika, pomoc´ı kter´e jsme schopni efektivnˇe spoˇc´ıtat sumu hodnot pixel˚ u v urˇcit´e oblasti obrazu. Tuto sumu m˚ uˇzeme rovnˇeˇz spoˇc´ıtat bez integr´aln´ıho obrazu, proch´ azen´ım a sˇc´ıt´ an´ım vˇsech bod˚ u v dan´e oblasti. V pˇr´ıpadˇe adaptivn´ıho prahov´an´ı vˇsak potˇrebujeme poˇc´ıtat okol´ı kaˇzd´eho pixelu a to by bylo klasick´ ym zp˚ usobem velmi pomal´e. Pokud bychom aplikaci provozovali na klasick´em poˇc´ıtaˇci, ˇcasov´ y dopad by pˇri dneˇsn´ıch v´ ykonech procesor˚ u nebyl tak velk´ y. Naˇse aplikace je ale navrhov´ana pro mobiln´ı telefon s ˇcasto slab´ ym procesorem, a tak mus´ıme db´at tak´e na efektivnost metod. Z toho d˚ uvodu pouˇzijeme nam´ısto klasick´eho pˇr´ıstupu integr´aln´ı obraz, pomoc´ı kter´eho dok´aˇzeme spoˇc´ıtat sumu oblasti s konstantn´ım poˇctem operac´ı nez´avisle na jej´ı velikosti a to pouze s line´ arn´ı sloˇzitost´ı pˇredzpracov´an´ı. Pˇredzpracov´ an´ım se mysl´ı v´ ypoˇcet integr´aln´ıho obrazu z dan´e ˇsedot´onov´e fotografie. V´ ypoˇcet pro kaˇzd´ y bod, ilustrov´ an na obr. 3.3, prob´ıh´a podle n´asleduj´ıc´ıho vzorce: I(x, y) = f (x, y) + I(x − 1, y) + I(x, y − 1) − I(x − 1, y − 1).
(3.2)
Kde I(x, y) je hodnota integr´ aln´ıho obrazu a f (x, y) u ´roveˇ n jasu ˇsedi v dan´em bodˇe.
3 4 3 2
2 0 2 1
0 3 4 3 a)
1 4 1 2
3 5 5 6 7 9 1217 10142127 12172735 b)
(x1, y1)
(x2, y2)
c)
Obr´ azek 3.3: Integr´ aln´ı obraz. a) vstupn´ı matice. b) vypoˇc´ıtan´ y integr´aln´ı obraz. c) pouˇzit´ı integr´ aln´ıho obrazu k v´ ypoˇctu sumy ˇsed´e oblasti. Kdyˇz m´ ame vypoˇc´ıtan´ y integr´aln´ı obraz, suma jak´ehokoliv obd´eln´ıku s krajn´ımi body naznaˇcen´ ymi v obr. 3.3 c), m˚ uˇze b´ yt v konstantn´ım ˇcase spoˇc´ıt´ana pomoc´ı n´asleduj´ıc´ı rovnice: y2 x2 X X
Zde vid´ıme, ˇze suma jakkoliv velk´e oblasti, se na rozd´ıl od klasick´eho proch´azen´ı vˇsech pixel˚ u, spoˇc´ıt´ a pouze pomoc´ı tˇr´ı operac´ı sˇc´ıt´an´ı a odˇc´ıt´an´ı, coˇz je velk´a ˇcasov´a u ´spora. Je sice nutn´e nejprve z fotografie vypoˇc´ıtat integr´aln´ı obraz, to vˇsak znamen´a jen jeden pr˚ uchod nav´ıc pˇres vˇsechny pixely. Z d˚ uvod˚ u optimalizace je dokonce moˇzn´e poˇc´ıtat integr´aln´ı obraz jiˇz v prvn´ım pr˚ uchodu, kdy fotografii pixel po pixelu pˇrev´ad´ıme do odst´ın˚ u ˇsedi. Z´ıskanou sumu n´ aslednˇe pouˇzijeme pro v´ ypoˇcet pr˚ umˇern´e hodnoty dan´e oblasti. 15
Prahov´ an´ı samotn´e je zaloˇzeno na Wellnerovˇe metodˇe [23], kter´a prahuje obr´azek pomoc´ı jedin´eho pr˚ uchodu. Ta v koncepci porovn´av´a kaˇzd´ y pixel s pr˚ umˇernou hodnotou jeho okol´ı. Pokud je hodnota pixelu t procent menˇs´ı neˇz pr˚ umˇer, je nastavena hodnota ˇcern´e (0), jinak b´ıl´e. Okol´ı u Wellnerovy metody je br´ano jako s naposledy zpracovan´ ych pixel˚ u, coˇz m˚ uˇze b´ yt nepˇresn´e, jelikoˇz nen´ı uvaˇzov´ano okol´ı do vˇsech smˇer˚ u od pixelu. Pr´avˇe zde vyuˇzijeme v´ yhodu integr´ aln´ıho obrazu a budeme poˇc´ıtat pr˚ umˇer oblasti velk´e s∗s pixel˚ u, se stˇredem ve zkouman´em pixelu. T´ımto do pr˚ umˇeru zahrneme okol´ı pixelu ze vˇsech stran. Velikosti hodnot t a s z´ aleˇz´ı na konkr´etn´ı aplikaci a pro tuto pr´aci byly zvoleny experiment´alnˇe na z´akladˇe nˇekolika testovac´ıch obr´azk˚ u. Optimalizace - jelikoˇz se zab´ yv´ame n´avrhem aplikace urˇcen´e pro mobiln´ı telefon, je pro n´as ˇz´ adouc´ı, aby byly metody co nejl´epe optimalizov´any. Hlavn´ım nedostatkem t´eto metody je nutnost proch´ azen´ı cel´eho obr´azku dvakr´at. Jednou pro v´ ypoˇcet integr´aln´ıho obrazu, podruh´e pro samotn´e prahov´an´ı. Poˇcet krok˚ u pˇredzpracov´an´ı fotografie je tedy celkovˇe 2 ∗ width ∗ height. To je vˇsak moˇzn´e vylepˇsit. M˚ uˇzeme prov´est prahov´an´ı pro pixel (x − s/2, y − s/2), ve stejn´em kroku jako v´ ypoˇcet integr´aln´ıho obrazu v bodˇe (x, y) [24]. T´ımto bude v´ ypoˇcet prov´adˇen pro n´ asleduj´ıc´ı poˇcet pixel˚ u: s s s2 (w ∗ h) + ( ∗ w) + ( ∗ h) − ( ) 2 2 4
(3.4)
Kde w reprezentuje ˇs´ıˇrku fotografie a h jej´ı v´ yˇsku. Pro obr´ azek velikosti 600∗450 px a s rovnu 40 se jedn´a o cca 1,86x m´enˇe operac´ı. Jelikoˇz je pˇredzpracov´ an´ı jedna z nejv´ıce ˇcasovˇe n´aroˇcn´ ych f´az´ı navrhovan´eho programu, jedn´a se o znateln´e zrychlen´ı cel´eho pˇrekladu.
3.2
Detekce objekt˚ u a odstranˇ en´ı ruchu
Po uplatnˇen´ı prahov´ an´ı, je nutn´e v obraze detekovat objekty, kter´e byly prahov´an´ım nalezeny. Pˇri detekci objekt˚ u je ale detekov´ano kromˇe opravdov´ ych teˇcek tak´e mnoho ruch˚ u. M˚ uˇze se jednat napˇr´ıklad o odlesky, text ˇci jin´e neˇcistoty v obraze. Pro zjednoduˇsen´ı anal´ yzy teˇcek Braillova p´ısma je nutn´e tyto ruchy odstranit. V t´eto ˇc´asti se budeme zab´ yvat konkr´etn´ımi technikami pro detekci objekt˚ u v obraze a jejich klasifikac´ı jako potenci´aln´ı teˇcku ˇci ruch. Jako vstup je uvaˇzov´an bin´arn´ı obraz, kde barva pozad´ı je ˇcern´a (hodnota 0) a barva potenci´ aln´ıch objekt˚ u b´ıl´ a (hodnota 1, resp. 255).
Detekce objekt˚ u Ze vˇseho nejdˇr´ıve mus´ıme v obraze detekovat shluky pixel˚ u b´ıl´e barvy, tedy potenci´aln´ı objekty. Pro identifikaci spojen´ ych oblast´ı v obraze je moˇzn´e pouˇz´ıt algoritmus barven´ı [25]. C´ılem tohoto algoritmu je pomoc´ı dvou pr˚ uchod˚ u cel´eho obrazu opatˇrit kaˇzdou spojitou oblast neopakuj´ıc´ım se pˇrirozen´ ym ˇc´ıslem. Dalˇs´ımi technikami pak mus´ıme z´ıskat informace o tvaru tˇechto identifikovan´ ych oblast´ı, o jejich velikosti apod. V t´eto pr´ aci ale vol´ıme jin´ y pˇr´ıstup. Vyuˇzijeme algoritmu sem´ınkov´eho vyplˇ nov´an´ı [19], kter´ y se prim´ arnˇe vyuˇz´ıv´ a na obarvov´an´ı spojit´ ych rastrov´ ych oblast´ı. V poˇc´ateˇcn´ım pixelu (sem´ınku) se zkontroluje, zdali je barva rozd´ıln´a od pozad´ı a pokud ano, pixel se obarv´ı a algoritmus se rekurzivnˇe spust´ı na sousedn´ı pixely ve ˇctyˇr-okol´ı. Princip je n´azornˇe zobrazen na obr. 3.4. 16
1. krok
2. krok
3. krok
Obr´ azek 3.4: Princip sem´ınkov´eho vyplˇ nov´an´ı. Pro detekci objekt˚ u postupnˇe po ˇr´adc´ıch proch´az´ıme obraz, a pokud naraz´ıme na pixel b´ıl´e barvy (okraj shluku pixel˚ u), spust´ıme algoritmus sem´ınkov´eho vyplˇ nov´an´ı. Algoritmus postupnˇe projde vˇsechny pixely shluku a obarv´ı je na ˇcerno. T´ım objekt zmiz´ı z obrazu, coˇz je nezbytn´e k tomu, aby nebyl shluk znovu analyzov´an pˇri pr˚ uchodu dalˇs´ım ˇr´adkem. Naˇs´ım c´ılem vˇsak nen´ı pouze obarvov´an´ı shluk˚ u, n´ ybrˇz poˇc´ıt´an´ı poˇctu pixel˚ u oblast´ı a tak´e v´ ypoˇcet minim´ aln´ı a maxim´ aln´ı x a y hodnoty shluku. Tyto hodnoty jsou z´ısk´av´any jiˇz bˇehem samotn´eho obarvov´ an´ı a n´aslednˇe slouˇz´ı k v´ ypoˇctu ˇs´ıˇrky a v´ yˇsky shluku a tak´e k urˇcen´ı pozice jeho stˇredu. Na obr. 3.5 m˚ uˇzeme vidˇet, ˇze bylo detekov´ano i spousta ˇsumu a ruch˚ u. V dalˇs´ıch kroc´ıch je pops´ano, jak se jich zbavit.
a)
b)
Obr´ azek 3.5: V´ ysledek detekce objekt˚ u. a) origin´aln´ı obr´azek. b) objekty (ˇcervenˇe) po detekci. Jak m˚ uˇzeme vidˇet, oproti dvoupr˚ uchodov´emu algoritmu barven´ı, popsan´eho v prvn´ım odstavci, sem´ınkov´e vyplˇ nov´ an´ı proch´az´ı cel´ y obraz jen jednou. Poˇcet operac´ı samozˇrejmˇe naroste kaˇzd´ ym ”zasazen´ım sem´ınka”a spuˇstˇen´ım samotn´eho algoritmu obarvov´an´ı oblasti. Pokud vˇsak uv´ aˇz´ıme, ˇze je po prahov´an´ı vˇetˇsina obrazu vyvedena ˇcernou barvou a je zde jen nˇekolik objekt˚ u, kter´e jsou obarvov´any, jedn´a se o znaˇcnou ˇcasovou u ´sporu. Nav´ıc jsme schopni bˇehem operace barven´ı pˇr´ımo poˇc´ıtat poˇcet pixel˚ u dan´eho shluku a dalˇs´ı potˇrebn´e informace. To pˇri sekvenˇcn´ım proch´azen´ı u algoritmu barven´ı nen´ı moˇzn´e. Jelikoˇz algoritmus sem´ınkov´eho vyplˇ nov´an´ı vyuˇz´ıv´a rekurzi, hroz´ı zde pˇreteˇcen´ı prograˇ sen´ım m˚ mov´eho z´ asobn´ıku pˇri vyplˇ nov´ an´ı velk´ ych oblast´ı. Reˇ uˇze b´ yt nastaven´ı urˇcit´e meze poˇctu pixel˚ u, kter´e algoritmem zpracov´av´ame. Po dos´ahnut´ı t´eto meze se algoritmus ukonˇc´ı a zbytek shluku je analyzov´ an dalˇs´ım posunem v obraze. Zde se vˇsak m˚ uˇze objevit probl´em u velk´ ych oblast´ı, kter´e jsou takto rozdˇeleny do v´ıce ˇc´ast´ı. Vzhledem k tomu, ˇze je aplikace navrhov´ ana pro mobiln´ı telefon, nem˚ uˇzeme si dovolit d´at mez pˇr´ıliˇs velkou a m˚ uˇze se tedy st´ at, ˇze by mohly b´ yt rozdˇeleny i velk´e kandid´atn´ı teˇcky. Lepˇs´ı variantou je nahrazen´ı rekurze z´ asobn´ıkem, kdy dok´ aˇzeme detekovat libovolnˇe velk´e objekty a t´ım detekci zpˇresnit.
17
Podm´ınky objekt˚ u Ve chv´ıli, kdy skonˇc´ı algoritmus vyplˇ nov´an´ı, m´ame k dispozici poˇcet pixel˚ u kaˇzd´eho zkouman´eho shluku, jeho ˇs´ıˇrku a v´ yˇsku. Jiˇz v t´eto f´azi m˚ uˇzeme na z´akladˇe tˇechto informac´ı nˇekter´e shluky vyˇradit a prohl´ asit je za ruch. Jsou tˇri z´akladn´ı typy ruch˚ u: 1. Zaprv´e se jedn´ a o pˇr´ıliˇs mal´e ˇci velk´e objekty (napˇr. jednopixelov´e ruchy ˇci kus ˇspatnˇe vyprahovan´eho pozad´ı). Stanov´ıme zde mez, mezi kterou se mus´ı pohybovat poˇcet pixel˚ u shluku. 2. D´ ale se jedn´ a o shluky, kter´e jsou moc ˇsirok´e ˇci vysok´e (napˇr. ˇsmouhy, nˇekter´ a p´ısmena, ˇc´ıslice). Zde vypoˇcteme pomˇer mezi ˇs´ıˇrkou a v´ yˇskou a opˇet urˇc´ıme mez, za kterou objekt prohl´ as´ıme za ruch. 3. Posledn´ı podm´ınkou je pomˇer skuteˇcn´eho poˇctu pixel˚ u k obsahu obd´eln´ıku, kter´ y shluk opisuje. Kupˇr´ıkladu kruh, reprezentuj´ıc´ı teˇcku, opisuje ˇctverec. Ovˇsem napˇr´ıklad mal´e p´ısmeno s“ tak´e opisuje zhruba ˇctverec. Zat´ımco obsah kruhu odpov´ıd´a cca 80% ” obsahu opsan´eho ˇctverce, u mal´eho p´ısmena s“ je to cca 50%. M˚ uˇzeme tedy urˇcit ” mez, kterou mus´ı pˇrekraˇcovat pomˇer obsahu opsan´eho obd´eln´ıku a skuteˇcn´eho obsahu shluku, aby byl shluk povaˇzov´an za kandid´atn´ı teˇcku.
a)
b)
Obr´ azek 3.6: Uplatnˇen´ı podm´ınek. a) vˇsechny objekty po detekci. b) objekty vyhovuj´ıc´ı podm´ınk´ am. Shluky, kter´e na z´ akladˇe tˇechto podm´ınek nejsou vyhodnoceny jako ruch, pˇrid´ame do seznamu objekt˚ u, se kter´ ym d´ ale pracujeme. Jednotliv´e meze jsou urˇceny experiment´aln´ım mˇeˇren´ım s t´ım, ˇze nejsou pˇr´ıliˇs striktn´ı. Radˇeji prohl´as´ıme v´ıce ruch˚ u za kandid´aty, kter´e jsme schopni vyˇradit d´ ale, neˇz abychom oznaˇcili re´aln´e teˇcky za ruchy a t´ım d´ale zp˚ usobili chybu pˇrekladu. Na obr. 3.6 se m˚ uˇzeme pˇresvˇedˇcit, ˇze jen pomoc´ı jednoduch´ ych podm´ınek, v´ yraznˇe zredukujeme poˇcet ruch˚ u.
Podobnost Re´alnˇe jsou vˇsechny teˇcky Braillova p´ısma v obraze stejnˇe velk´e, a i kdyˇz se jejich tvar m˚ uˇze m´ırnˇe mˇenit napˇr´ıklad na z´ akladˇe osvˇetlen´ı, jsou si tvarovˇe pˇribliˇznˇe podobn´e. Dalˇs´ım krokem odstranˇen´ı ruch˚ u je tedy eliminace objekt˚ u, kter´e si nejsou podobn´e s ostatn´ımi objekty. V obraze m˚ uˇze b´ yt velk´e mnoˇzstv´ı objekt˚ u, kter´e maj´ı pˇribliˇznˇe kruhov´ y tvar a vyhovuj´ı vˇsem podm´ınk´ am popsan´ ym v pˇredeˇsl´e sekci, i kdyˇz se jedn´a o ruchy. Tyto ruchy jsou ˇcasto r˚ uznˇe velk´e a tak lze konstatovat, ˇze pokud se v obraze nevyskytuj´ı alespoˇ n dalˇs´ı dva objekty podobn´e zkouman´emu objektu, jedn´a se o ruch. Pro zkoum´ an´ı podobnost´ı postupnˇe proch´az´ıme seznam objekt˚ u a kontrolujeme kaˇzd´ y objekt. Kontrolou rozum´ıme druh´ y cyklus proch´azen´ı seznamu a srovn´av´an´ı aktu´aln´ıho objektu s ostatn´ımi v seznamu. V druh´em cyklu proch´az´ıme seznam pouze d´ale od aktu´aln´ıho 18
objektu, jelikoˇz objekty um´ıstˇen´e pˇred aktu´aln´ım objektem jiˇz byly s t´ımto objektem srovn´av´ any. Samotn´ a podobnost se urˇcuje opˇet mez´ı pomˇeru poˇctu pixel˚ u objekt˚ u a pomˇeru ˇs´ıˇrek a v´ yˇsek. Ve chv´ıli, kdy zjist´ıme, ˇze je nˇekter´ y objekt s aktu´aln´ım podobn´ y, zv´ yˇs´ıme poˇc´ıtadlo podobnost´ı u obou tˇechto objekt˚ u. Aˇz se tedy bude zkoumat objekt, v tomto cyklu vyhodnocen´ y jako podobn´ y, bude jiˇz m´ıt informaci o tom, ˇze je jeden podobn´ y objekt um´ıstˇen´ y pˇred n´ım. Pokud m´a aktu´aln´ı objekt po prozkoum´an´ı poˇc´ıtadlo podobnost´ı menˇs´ı neˇz tˇri, znamen´ a to, ˇze objekt nem´a v obraze dostateˇcn´ y poˇcet podobn´ ych objekt˚ u a bude smaz´ an. T´ımto pˇr´ıstupem je pomˇernˇe efektivnˇe srovn´an kaˇzd´ y s kaˇzd´ ym objektem a v d˚ usledku v´ yraznˇe zredukov´ an poˇcet ruch˚ u v obraze. Na obr´azku 3.7 c) vid´ıme uk´azku uplatnˇen´ı t´eto techniky.
Osamocen´ e objekty Po odstranˇen´ı ruch˚ u na z´ akladˇe podobnost´ı, mohou v obraze st´ale z˚ ustat skupiny ruch˚ u, ˇ kter´e jsou si tvarem ˇci velikost´ı podobn´e. Casto vˇsak nejsou tyto skupiny podobn´ ych ruch˚ u um´ıstˇeny bl´ızko u sebe. Tyto ruchy lze tedy identifikovat na z´akladˇe faktu, ˇze se teˇcky Braillova p´ısma vyskytuj´ı vˇzdy ve skupin´ach a tak m˚ uˇzeme prohl´asit, ˇze pokud se v urˇcit´e vzd´alenosti od objektu nenach´ az´ı podobn´ y objekt, jedn´a se o ruch.
a)
b)
d)
c)
e)
Obr´ azek 3.7: Odstranˇen´ı ruch˚ u. a) origin´aln´ı obr´azek. b) v´ ysledek po uplatnˇen´ı podm´ınek. c) po porovn´ an´ı podobnosti. d) odstranˇen´ı osamocen´ ych obj. e) odstranˇen´ı mal´ ych obj. Jelikoˇz v pˇredchoz´ım kroku z´ısk´av´ame seznam podobn´ ych objekt˚ u ke kaˇzd´emu objektu, m˚ uˇzeme postupnˇe zkoumat seznam tˇechto podobn´ ych objekt˚ u a vyhodnotit, zda jsou k aktu´ aln´ımu objektu bl´ızk´e. Pokud se zkouman´ y objekt nach´az´ı v okol´ı aktu´aln´ıho, inkrementujeme poˇc´ıtadlo bl´ızk´ ych objekt˚ u a to jak u aktu´aln´ıho objektu, tak u objektu, kter´ y byl vyhodnocen jako bl´ızk´ y. Jako okol´ı objektu uvaˇzujeme prostor pˇetin´asobku ˇs´ıˇrky a pˇetin´ asobku v´ yˇsky na kaˇzdou stranu od stˇredu zkouman´eho objektu. Pokud aktu´aln´ı objekt nem´ a po ukonˇcen´ı zkoum´ an´ı ˇz´adn´ y podobn´ y objekt v jeho okol´ı, je smaz´an ze seznamu objekt˚ u. Tato metoda vykazuje v´ yborn´e v´ ysledky a redukuje poˇcet ruch˚ u aˇz o polovinu, coˇz je moˇzn´e vidˇet na uk´ azkov´em obr´azku 3.7 d). 19
Mal´ e objekty V´ ystupem pˇredchoz´ıho kroku je sada objekt˚ u, z nichˇz je vˇetˇsina teˇcek. Mohou se ale objevit tak´e ruchy, kter´e jsou si podobn´e a jsou nav´ıc um´ıstˇeny ve skupinˇe. Vˇetˇsinou se jedn´ a o ruchy, kter´e jsou k teˇck´ am pomˇernˇe mal´e. Pokud by se jednalo o ruchy pˇribliˇznˇe velk´e jako teˇcky, kter´e proˇsly vˇsemi filtry, je nutn´e je analyzovat. Pro odstranˇen´ı mal´ ych objekt˚ u vypoˇcteme pr˚ umˇernou velikost oblasti vˇsech objekt˚ u a odstran´ıme ty, kter´e maj´ı oblast menˇs´ı neˇz 60% pr˚ umˇeru. Toto ˇc´ıslo bylo urˇceno experiment´alnˇe na z´akladˇe nˇekolika testovac´ıch obr´ azk˚ u. Jak vid´ıme na obr. 3.7 e), odstranˇen´ım mal´ ych objekt˚ u se n´am obr´azek vyˇcist´ı od zb´ yvaj´ıc´ıch mal´ ych ruch˚ u, kter´e by n´am pˇri dalˇs´ım zpracov´an´ı mohly dˇelat probl´emy. V obraze se mohou vyskytovat tak´e ruchy, kter´e jsou vˇetˇs´ı neˇz teˇcky, tˇechto je ale obvykle m´ alo a jsme schopni je odstranit pˇri seskupov´an´ı.
Shrnut´ı V´ ystupem tˇechto ˇctyˇr krok˚ u je zredukovan´ y seznam objekt˚ u, kter´e by mˇel obsahovat pouze kandid´ atn´ı teˇcky. Mezi re´ aln´ ymi teˇckami se m˚ uˇze vyskytnou tak´e ruch velice podobn´ y teˇcce a v bl´ızkosti teˇcek (moˇzno pozorovat na obr. 3.7 v horn´ı ˇc´asti obr´azku). Ten je ale moˇzn´e odhalit aˇz v n´ asleduj´ıc´ıch postupech.
3.3
Seskupen´ı
V t´eto ˇc´ asti bude pops´ an proces seskupen´ı teˇcek do jednotliv´ ych znak˚ u Braillova p´ısma. Zaˇrazen´ım teˇcek do skupin odpov´ıdaj´ıc´ım norm´am Braillova p´ısma, nejen ˇze z´ısk´ame re´aln´e znaky sloˇzen´e z teˇcek, ale tak´e se zbav´ıme pˇr´ıpadn´ ych ruch˚ u, kter´e do tohoto uspoˇr´ad´ an´ı nezapadaj´ı. Fotografie Braillova p´ısma m´a tu nev´ yhodu, ˇze jsou teˇcky od fotoapar´atu vˇzdy jinak vzd´ aleny a t´ım p´ adem jsou vˇzdy jinak velk´e. Jsou tak´e jinak velk´e, pokud se jedn´ a o teˇcky odliˇsen´e od pozad´ı jinou barvou, nebo jen o zachycen´e odlesky teˇcky. S t´ım souvis´ı nemoˇznost zaveden´ı urˇcit´ ych normalizovan´ ych rozmˇer˚ u a nutnost vˇsechny vztahy urˇcovat dynamicky. Pˇredevˇs´ım se pak jedn´a o rozliˇcnost mezer mezi jednotliv´ ymi znaky a jejich sloupci.
Detekce ˇ r´ adk˚ u Ze vˇseho nejdˇr´ıve seskup´ıme teˇcky do jednotliv´ ych ˇr´adk˚ u. Seskupen´ı je moˇzn´e prov´est na z´akladˇe vertik´ aln´ı pozice objekt˚ u (souˇradnice y). Jelikoˇz detekce objekt˚ u prob´ıhala zpracov´an´ım pixel˚ u obrazu postupnˇe po ˇr´adc´ıch, v seznamu objekt˚ u jsou objekty seˇrazeny od toho um´ıstˇen´eho nejv´ yˇse po ten nejn´ıˇze, tedy pˇresnˇe podle souˇradnic y. Postupnˇe tedy proch´az´ıme seznam vˇsech objekt˚ u (v t´eto chv´ıli jiˇz kandid´atn´ıch teˇcek) a poˇc´ıt´ame rozd´ıl y souˇradnic mezi aktu´ aln´ım a pˇredchoz´ım objektem. Pokud je absolutn´ı hodnota rozd´ılu menˇs´ı neˇz polovina v´ yˇsky objektu, jsou tyto dvˇe teˇcky ve stejn´em ˇr´adku. Pokud tomu tak nen´ı, je aktu´ aln´ı ˇr´ adek ukonˇcen a teˇcka je pˇrid´ana do ˇr´adku nov´eho. ˇ R´adek je reprezentov´ an seznamem teˇcek a ukonˇcen´ım se rozum´ı seˇrazen´ı teˇcek podle jejich hodnoty x, v´ ypoˇcet v´ yˇsky a pozice ˇr´adku a jeho pˇrid´an´ı do seznamu ˇr´adk˚ u. V´ ypoˇcet v´ yˇsky a pozice ˇr´ adku je proveden pr˚ umˇerem tˇechto hodnot u prvn´ı a posledn´ı teˇcky v seznamu ˇr´ adku.
20
Seskupen´ı ˇ r´ adk˚ u C´ılem dalˇs´ıho kroku je seskupen´ı detekovan´ ych ˇr´adk˚ u do skupin po tˇrech ˇr´adc´ıch, kter´e spolu reprezentuj´ı ˇr´ adek znak˚ u Braillova p´ısma. Mimo jin´e t´ımto postupem chceme odstranit ˇr´adky ruch˚ u, kter´e jsou tvarem podobn´e teˇck´am, ale vyskytuj´ı se mimo skupiny re´aln´ ych teˇcek p´ısma, kter´e jsou uspoˇr´ ad´ any s jistou pravidelnost´ı. V samotn´em algoritmu postupnˇe proch´az´ıme vˇsechny ˇr´adky rozpoznan´e v pˇredeˇsl´em kroku a seskupov´ an´ı je prov´ adˇeno na z´akladˇe porovn´av´an´ı mezer mezi jednotliv´ ymi ˇr´adky. Vlastn´ı algoritmus se ˇr´ıd´ı n´ asleduj´ıc´ımi kroky: 1. Do seznamu pˇrid´ ame ˇr´ adek (first). 2. Do seznamu pˇrid´ ame ˇr´ adek (second ) a spoˇc´ıt´ame mezeru mezi first a second (space) na z´ akladˇe rozd´ılu pozice y. 3. Pokud je space 3x vˇetˇs´ı neˇz v´ yˇska ˇr´adku second, smaˇze se ze seznamu first a pokraˇcujeme na bod 2. 4. Do seznamu pˇrid´ ame ˇr´ adek (third ) a spoˇc´ıt´ame mezeru mezi second a third (space2 ) na z´ akladˇe rozd´ılu pozice y. 5. Spoˇc´ıt´ ame pomˇer space2 /space (ratio). Pod´ıv´ ame se na dalˇs´ı ˇr´ adek (next) a spoˇc´ıt´ame mezeru mezi third a next (space3 ) na z´ akladˇe rozd´ılu pozice y. Spoˇc´ıt´ ame pomˇer space3 /space2 (ratio2 ). 6. Pokud se ratio2 v´ıce bl´ıˇz´ı k jedn´e (tzn. mezery jsou si v´ıce podobn´e) neˇz ratio a z´aroveˇ n next obsahuje v´ıce teˇcek neˇzli first, smaˇzeme first a pokraˇcujeme na bod 4. 7. Z´ıskan´ y seznam tˇr´ı ˇr´ adk˚ u prohl´as´ıme za pr´avoplatnou skupinu a pokraˇcujeme opˇet na bod 1. Pomoc´ı podm´ınky v kroku 3. odstran´ıme ˇr´adky, kter´e jsou od dalˇs´ıch vzd´aleny v´ yraznˇe v´ıce, neˇz by tomu mˇelo b´ yt u ˇr´ adk˚ u Braillova p´ısma. Podm´ınkou v kroku 6. se odstran´ı ruchy, kter´e se vyskytuj´ı tˇesnˇe nad, nebo pod ˇr´adky s re´aln´ ymi teˇckami. Vych´az´ıme z pˇredpokladu, ˇze mezi ˇr´ adky Braillova p´ısma jsou pravideln´e mezery a to se ned´a ˇr´ıct o ˇr´adc´ıch pˇr´ıpadn´ ych ruch˚ u. Odstranit
SKUPINA 0
SKUPINA 1
a)
b)
Obr´ azek 3.8: Seskupen´ı ˇr´ adk˚ u. a) origin´aln´ı obr´azek. b) ˇr´adky (modˇre) a skupiny (zelenˇe). 21
V´ ysledn´e skupiny ˇr´ adk˚ u jsou tedy sloˇzeny vˇzdy ze tˇr´ı ˇr´adk˚ u. M˚ uˇze n´as vˇsak napadnout, co se stane, kdyˇz se v obraze vyskytuj´ı skupiny znak˚ u, kter´e obsazuj´ı pouze dva ˇr´adky m´ısto tˇr´ı. Algoritmus seskupen´ı by v takov´emto pˇr´ıpadˇe selhal. Tento jev je vˇsak v praktick´em uˇzit´ı Braillova p´ısma nepravdˇepodobn´ y a tak m˚ uˇzeme prohl´asit, ˇze skupina mus´ı m´ıt tˇri ˇr´adky. Na obr´ azku 3.8 vid´ıme pˇr´ıklad detekovan´ ych ˇr´adk˚ u a jejich skupin.
Detekce sloupc˚ u ve skupinˇ e Pro dalˇs´ı zpracov´ an´ı je nutn´e v kaˇzd´e skupinˇe detekovat sloupce teˇcek. Pro samotnou detekci vloˇz´ıme vˇsechny teˇcky ze tˇr´ı ˇr´adk˚ u skupiny do jednoho seznamu a seˇrad´ıme podle souˇradnice x. Pak je princip podobn´ y jako u detekce ˇr´adk˚ u, tedy postupnˇe proch´az´ıme cel´ y seznam a kontrolujeme rozd´ıl horizont´aln´ı pozice aktu´aln´ıho a pˇredchoz´ıho prvku. Na rozd´ıl od detekce ˇr´ adk˚ u zde pouˇzijeme toleranci rovnou polovinˇe ˇs´ıˇrky objektu. Z´aroveˇ n se v kaˇzd´em zpracov´ an´ı teˇcky pˇriˇrad´ı ˇc´ıslo ˇr´adku, ve kter´em je um´ıstˇena. Tato informace bude d´ ale pouˇzita pˇri zkoum´ an´ı, kter´e teˇcky ve znaku Braillova p´ısma jsou obsazeny. Jednotliv´e sloupce jsou reprezentov´any sadou teˇcek a obsahuj´ı tak´e svou x pozici a ˇs´ıˇrku. Tyto dvˇe hodnoty jsou opˇet vypoˇcteny pr˚ umˇerem odpov´ıdaj´ıc´ıch hodnot teˇcek sloupce.
Anal´ yza mezer a pr´ azdn´ ych sloupc˚ u Znaky Braillova p´ısma nemus´ı vˇzdy tvoˇrit dva sloupce teˇcek, v ˇrade z nich je teˇckami obsazen jen jeden sloupec a ten druh´ y je tvoˇren mezerou. Dalˇs´ım pˇr´ıpadem moˇzn´e mezery mezi sloupci teˇcek, je mezera mezi slovy znak˚ u Braillova p´ısma. Na z´akladˇe velikost´ı mezer mezi jednotliv´ ymi sloupci, m˚ uˇzeme takov´eto pˇr´ıpady odhalit, chybˇej´ıc´ı sloupce doplnit a ulehˇcit si pr´ aci v n´ asleduj´ıc´ım kroku sestavov´an´ı znak˚ u. a
a
b
c
d
b
Obr´ azek 3.9: Oznaˇcen´ı mezer v Braillovˇe p´ısmu. Mezery mezi sloupci teˇcek Braillova p´ısma m˚ uˇzeme rozdˇelit do ˇctyˇr skupin, viz obr. 3.9. Nejmenˇs´ı jsou mezery mezi sloupci jednotliv´ ych znak˚ u (a), pak mezery mezi kompletn´ımi znaky (b) a d´ ale jiˇz zmiˇ novan´e mezery pˇri vynechan´em sloupci (c) a mezi slovy (d). Posledn´ı dvˇe skupiny se v nˇekter´ ych pˇr´ıpadech nemusej´ı vyskytnout, zejm´ena pokud zpracov´av´ame fotografii zachycuj´ıc´ı m´ alo znak˚ u (typicky ˇc´ıslice ve v´ ytahu). Abychom urˇcili, jak velk´a mus´ı b´ yt mezera, aby byla povaˇzov´ ana za vynechan´ y sloupec, zjist´ıme, jak´a je nejvˇetˇs´ı mezera mezi kompletn´ımi znaky. Vˇetˇs´ı mezera neˇz tato, automaticky znamen´a vynechan´ y sloupec nebo mezeru mezi slovy. O mezeru mezi slovy se jedn´a, pokud je zkouman´a mezera vˇetˇs´ı, neˇz prostor dan´ y dvojn´ asobkem mezery mezi znaky a dvojn´asobkem ˇs´ıˇrky sloupce teˇcek. Mezera mezi slovy by tedy mˇela b´ yt velk´a jako kompletn´ı pr´azdn´ y znak vˇcetnˇe mezer kolem nˇej.
22
Nejvˇetˇs´ı mezeru mezi kompletn´ımi znaky urˇc´ıme anal´ yzou vˇsech mezer mezi sloupci v obraze. Ty z´ısk´ ame prozkoum´ an´ım vˇsech sloupc˚ u a porovn´an´ım jejich vz´ajemn´e horizont´aln´ı pozice (souˇradnice x ). Z´ıskan´e mezery seˇrad´ıme a pot´e rozdˇel´ıme do skupin podle podobnosti. Hledanou hodnotu by mˇel spr´avnˇe obsahovat posledn´ı prvek druh´e skupiny. Nˇekdy jsou ale rozd´ıly mezi mezerami prvn´ı a druh´e popsan´e skupiny (obr. 3.9 a a b) velmi mal´e a mezery jsou tak zaˇrazeny do stejn´e skupiny podobnosti. Takov´a skupina vˇsak bude obsahovat vˇetˇsinu mezer mezi sloupci v obraze, a tak pokud m´a prvn´ı skupina velikost v´ıce neˇz 70% z celkov´eho poˇctu mezer, m˚ uˇzeme prohl´asit, ˇze hledanou hodnotu obsahuje posledn´ı prvek z t´eto prvn´ı skupiny. Tento v´ ypoˇcet mus´ıme prov´est pro mezery v kaˇzd´e skupinˇe zvl´ aˇst’, vlivem osvˇetlen´ı totiˇz mohou jednotliv´e skupiny znak˚ u obsahovat jinak velk´e mezery.
SKUPINA 0
Obr´ azek 3.10: Detekovan´e sloupce. Pr´azdn´e kruhy indikuj´ı doplnˇen´e pr´azdn´e sloupce. Po zjiˇstˇen´ı poˇzadovan´e meze, postupnˇe proch´az´ıme jednotliv´e sloupce v kaˇzd´e skupinˇe a analyzujeme jejich mezery. Pokud vyhodnot´ıme, ˇze se jedn´a o mezeru mezi jednotliv´ ymi slovy, vloˇz´ıme do tohoto m´ısta speci´alnˇe oznaˇcen´ y sloupec reprezentuj´ıc´ı tuto mezeru. Pokud se jedn´ a o vynechan´ y sloupec, vloˇz´ıme do tohoto m´ısta jeden pr´azdn´ y sloupec, kter´ y neobsahuje ˇz´ adn´e teˇcky. V obr´ azku 3.10 vid´ıme pˇr´ıklad detekovan´ ych sloupc˚ u a doplnˇen´ ych pr´azdn´ ych sloupc˚ u podle popsan´ ych podm´ınek. Dvojice pr´azdn´ ych sloupc˚ u, reprezentuj´ıc´ı mezeru mezi znaky, je v programu reprezentov´ ana jen jedn´ım sloupcem s pˇr´ıznakem mezery.
Sestaven´ı znak˚ u Braillova p´ısma V posledn´ım kroku seskupov´ an´ı n´am zb´ yv´a sestavit jednotliv´e znaky Braillova p´ısma z analyzovan´ ych a doplnˇen´ ych sloupc˚ u. Kaˇzd´ y znak je sloˇzen ze dvou sloupc˚ u, a jelikoˇz m´ame doplnˇen´e pr´ azdn´e sloupce, jako nejjednoduˇsˇs´ı pˇr´ıstup se nab´ız´ı br´at postupnˇe vˇzdy dva sloupce a prohl´ asit je za znak. Toto vˇsak nelze pouˇz´ıt vˇzdy. Jak vid´ıme na obr. 3.10, prvn´ı sloupec ve skupinˇe netvoˇr´ı lev´ y sloupec znaku Braillova p´ısma, n´ ybrˇz prav´ y a tak nem˚ uˇzeme za znak prohl´ asit prvn´ı dva sloupce.
Obr´ azek 3.11: Sestaven´e znaky.
23
Abychom urˇcili, zda je prvn´ı sloupec prav´ y, ˇci lev´ y, porovn´ame mezery mezi prvn´ımi sloupci. Pokud je mezera mezi prvn´ım a druh´ ym sloupcem vˇetˇs´ı, neˇz mezera mezi druh´ ym a tˇret´ım sloupcem, znak je tvoˇren druh´ ym a tˇret´ım sloupcem a prvn´ı sloupec je v sestaven´em znaku jako prav´ y. Pokud podm´ınka neplat´ı, je znak tvoˇren prvn´ım a druh´ ym sloupcem. Tento probl´em se nevyskytuje jen na zaˇc´atku kaˇzd´e skupiny, ale tak´e po kaˇzd´e mezeˇre mezi slovy. I tam je nutn´e prov´est toto srovn´an´ı mezer. Dalˇs´ım pˇr´ıpadem, kter´ y komplikuje sestaven´ı, je situace, kdy se pˇred mezerou mezi slovy vyskytuje znak, kter´ y obsahuje pouze lev´ y sloupec. Prav´ y sloupec pochopitelnˇe nebyl doplnˇen, jelikoˇz m´ısto nˇej byla doplnˇena mezera. Jednoduch´ ym ˇreˇsen´ım je podm´ınka, kdy kontrolujeme, zdali druh´ y sloupec, urˇcen´ y pro sestaven´ı znaku, nen´ı mezera. Pokud ano, je na jej´ı m´ısto (tedy do prav´eho sloupce) vloˇzen pr´azdn´ y sloupec a mezera je zpracov´ana v dalˇs´ım kroku. Na obr´ azku 3.11 vid´ıme znaky, kter´e byly sestaveny ze sloupc˚ u vyobrazen´ ych na obr. 3.10. M˚ uˇzeme si vˇsimnout, ˇze zde doˇslo k situaci, ˇze byl prvn´ı sloupec spr´avnˇe zaˇrazen jako prav´ y.
3.4
Anal´ yza a pˇ reklad
Posledn´ım krokem cel´eho zpracov´an´ı je pˇreklad sestaven´ ych znak˚ u na jejich textov´e ekvivalenty. Vzhledem k pozici teˇcek ve znaku Braillova p´ısma, je moˇzn´e kaˇzd´ y znak zak´odovat do bin´ arn´ıho tvaru na z´ akladˇe toho, zda jsou pozice ve znaku obsazeny, ˇci nikoliv. Takto z´ıskan´e bin´ arn´ı ˇc´ıslo pot´e pˇrevedeme na dekadickou hodnotu a pomoc´ı n´ı prohled´av´ame pˇr´ısluˇsnou jazykovou tabulku znak˚ u a prefix˚ u a pˇriˇrazujeme znaku v´ yznam. Podle rozdˇelen´ı znaku ilustrovan´eho na obr. 3.12 zap´ıˇseme v´ yslednou hodnotu znaku v decim´ aln´ım tvaru podle vztahu: hodnota znaku = b1 + 2 ∗ b2 + 4 ∗ b3 + 8 ∗ b4 + 16 ∗ b5 + 32 ∗ b6
b1
b4
b2
b5
b3
b6
(3.5)
Obr´ azek 3.12: Mapov´an´ı ˇc´ast´ı znaku Braillova p´ısma. Kromˇe znak˚ u samotn´ ych mus´ıme sledovat tak´e mezery mezi slovy. Ty jsou d˚ uleˇzit´e nejen pro oddˇelen´ı slov, ale tak´e jako ukonˇcen´ı platnosti nˇekter´ ych prefix˚ u. Po uplatnˇen´ı prefix˚ u, m˚ uˇzeme znaky sestavit do slov a v´ ysledn´ y ˇretˇezec zobrazit na obrazovce mobiln´ıho zaˇr´ızen´ı. T´ım je proces pˇrekladu dokonˇcen.
24
Kapitola 4
Implementace aplikace pro Android OS Tato ˇc´ ast bakal´ aˇrsk´e pr´ ace vyuˇz´ıv´a poznatky z´ıskan´e v pˇredeˇsl´ ych kapitol´ach a popisuje implementaci rozpozn´ avac´ı aplikace pro operaˇcn´ı syst´em Android. Kapitola obsahuje pˇribl´ıˇzen´ı jednotliv´ ych souˇc´ ast´ı aplikace, popis uˇzivatelsk´eho rozhran´ı a jeho ovl´ad´an´ı a nakonec popisuje pouˇzit´e optimalizace. Aplikace byla vyv´ıjena v prostˇred´ı Eclipse za pomoc´ı modulu ADT, obsahuj´ıc´ıho Android SDK. Funkˇcnost aplikace byla pr˚ ubˇeˇznˇe testov´ana pomoc´ı emul´ator˚ u obsaˇzen´ ych v tomto modulu. Pro pouˇzit´ı na re´aln´em telefonu bylo nutn´e pomoc´ı ADT vyexportovat aplikaci do souboru form´ atu .apk, kter´ y je instal´atorem aplikac´ı na platformu Android.
4.1
Souˇ c´ asti aplikace
Aplikace BrailleReader je rozdˇelena do nˇekolika logick´ ych celk˚ u, kter´e mezi sebou komunikuj´ı. Architektura aplikace vˇcetnˇe naznaˇcen´ ych vazeb je zn´azornˇena na obr. 4.1. Pln´e modr´e ˇsipky naznaˇcuj´ı pevnou n´ avaznost tˇechto krok˚ u, naopak pˇreruˇsovan´e ˇsipky ukazuj´ı voliteln´ y pˇrechod do t´eto souˇc´ asti.
Úvodní obrazovka Vyfocení fotografie
Otevření obrázku
Zpracování obrázku a překlad na text Pomocné třídy
TTS
Obr´ azek 4.1: Architektura aplikace. ´ Upln´ y n´ azev bal´ıku t´eto aplikace je com.fitvutbr.BrailleReader. Odkazovan´e soubory obsahuj´ıc´ı implementaci jsou uloˇzeny ve sloˇzce /src/com/fitvutbr/BrailleReader/.
25
V´ yznam jednotliv´ ych souˇc´ ast´ı je n´asleduj´ıc´ı: ´ • Uvodn´ ı obrazovka. Aktivita, kter´a je nastavena jako spouˇstˇeˇc cel´e aplikace. Obsahuje u ´vodn´ı logo a uˇzivatel se zde rozhoduje, zda obr´azek, urˇcen´ y ke zpracov´an´ı, vyfot´ı vestavˇen´ ym fotoapar´atem, nebo vybere z galerie. V kaˇzd´em z tˇechto pˇr´ıpad˚ u je vytvoˇrena zpr´ ava (Intent) urˇcuj´ıc´ı, kter´a aktivita se m´a spustit. Pot´e je sledov´ana n´ avratov´ a hodnota t´eto aktivity a z n´ı je extrahov´an poˇzadovan´ y obr´azek. Z´ıskan´ y obr´ azek je n´ aslednˇe pˇred´ an ke zpracov´an´ı. Implementace t´eto aktivity se nach´az´ı v souboru HomeScreen.java. • Vyfocen´ı fotografie. Obr´ azek je z´ısk´an pomoc´ı vestavˇen´e aktivity fotoapar´atu. Ta je zu ´vodn´ı obrazovky spuˇstˇena pomoc´ı zpr´avy s akc´ı ACTION IMAGE CAPTURE. Samotn´ a data obr´ azku jsou pot´e obsaˇzena v extra informac´ıch n´avratov´e zpr´avy a bitmapu z nich z´ısk´ ame funkc´ı getParcelableExtra(). • Otevˇ ren´ı obr´ azku. V t´eto aktivitˇe je obsluhov´an v´ ybˇer obr´azku z vestavˇen´e pamˇeti telefonu. Nejprve je zavol´ ana aktivita pro z´ısk´an´ı obsahu s nastaven´ ym filtrem v´ ybˇeru obr´ azk˚ u. Tento poˇzadavek m˚ uˇze b´ yt dokonˇcen nˇekolika programy a kaˇzd´ y z nich m˚ uˇze vracet jinou informaci. Konkr´etnˇe v t´eto aplikaci, jsou spr´avnˇe interpretov´any n´ avratov´e hodnoty z aplikace vestavˇen´e galerie a program˚ u, kter´e vracej´ı pˇr´ımo URI obr´ azku. URI je pot´e pˇrevedeno na cestu k obr´azku a tato cesta je pomoc´ı extra informac´ı zpr´ avou pˇred´ ana zpˇet u ´vodn´ı obrazovce. Tato aktivita je implementov´ana v souboru OpenImage.java. • Zpracov´ an´ı obr´ azku a pˇ reklad na text. Stˇeˇzejn´ı aktivita, ve kter´e je zpracov´av´ an obr´ azek Braillova p´ısma a je z´ısk´an jeho textov´ y pˇreklad. Obr´azek je do t´eto aktivity pˇred jej´ım spuˇstˇen´ım pˇred´ an z u ´vodn´ı obrazovky. Tato souˇc´ast je podrobnˇeji pops´ana v sekci 4.1 a implementace je uloˇzena v souboru ProcessImage.java. • TTS. Aktivita obsluhuj´ıc´ı pˇrevod z´ıskan´eho textu na zvuk (Text-To-Speech). Text je zde pˇred´ an z pˇredch´ azej´ıc´ı ˇc´asti a aktivita je vytvoˇrena podle princip˚ u popsan´ ych v sekci 2.4. Po kontrole dostupnosti zdroj˚ u a zah´ajen´ı ˇcten´ı dan´eho textu je aktivita ukonˇcena a bˇeh pokraˇcuje v pˇredch´azej´ıc´ı ˇc´asti. Zdrojov´ y k´od implementace je v souboru TTS.java. • Pomocn´ e tˇ r´ıdy. Aktivita zpracov´an´ı obr´azku ke sv´emu bˇehu vyuˇz´ıv´a nˇekolik pomocn´ ych tˇr´ıd, kter´e reprezentuj´ı jednotliv´e souˇc´asti Braillova p´ısma. Tyto tˇr´ıdy jsou: – Objekt. Tˇr´ıda reprezentuj´ıc´ı jednotliv´e rozpoznan´e objekty v obraze. Obsahuje informace o ˇs´ıˇrce a v´ yˇsce objektu, jeho pozici v obraze, seznam vˇsech bod˚ u vyuˇzit´ y pro vykreslen´ı a tak´e pomocn´e ukazatele jako je poˇcet podobn´ ych a bl´ızk´ ych objekt˚ u. Tyto informace jsou vyuˇzity v postupech popsan´ ych v kapitole 3. Zdrojov´ y k´ od t´eto tˇr´ıdy nalezneme v souboru Obj.java. ˇ adek. Tˇr´ıda popisuj´ıc´ı reprezentaci ˇr´adk˚ – R´ u teˇcek Braillova p´ısma. Kromˇe seznamu objekt˚ u v tomto ˇr´adku obsahuje tak´e informaci o pozici a v´ yˇsce ˇr´adku. Definici tˇr´ıdy nalezneme v souboru Line.java. – Sloupec. Vyj´ adˇren´ı jednotliv´ ych sloupc˚ u znak˚ u Braillova p´ısma. Tˇr´ıda obsahuje seznam objekt˚ u v dan´em sloupci, jeho pozici, ˇs´ıˇrku a mezeru k dalˇs´ımu sloupci. Je zde tak´e implementov´ana metoda pro v´ ypoˇcet dekadick´e hodnoty tohoto sloupce na z´ akladˇe obsazenosti jednotliv´ ych pozic´ı ve sloupci. Zdrojov´ y k´ od implementace je v souboru Column.java. 26
– Znak. Touto tˇr´ıdou je reprezentov´an jeden znak Braillova p´ısma, kter´ y je sloˇzen ze dvou sloupc˚ u teˇcek. Mimo to obsahuje tak´e svou pˇreloˇzenou dekadickou hodnotu. Ta je z´ısk´ ana souˇctem dekadick´e hodnoty prvn´ıho sloupce a osmin´asobku dekadick´e hodnoty sloupce druh´eho. Tento vztah vych´az´ı z rozloˇzen´ı prezentovan´eho na obr. 3.12 a vzorce 3.5. Definici t´eto tˇr´ıdy nalezneme v souboru BraillChar.java. – Skupina. Tato tˇr´ıda vyjadˇruje jednu skupinu znak˚ u Braillova p´ısma a v podstatˇe jen obaluje seznamy pˇredeˇsl´ ych tˇr´ıd. Nejprve jsou seskupeny ˇr´adky, pot´e jsou v t´eto skupinˇe detekov´any sloupce a n´aslednˇe jsou tyto sloupce pˇrevedeny na jednotliv´e znaky. Implementaci t´eto tˇr´ıdy je v soubotu Group.java.
Zpracov´ an´ı obr´ azku a pˇ reklad na text V t´eto ˇc´ asti aplikace jsou implementov´any vˇsechny postupy popsan´e v kapitole 3. Aby byla st´ ale s uˇzivatelem udrˇzov´ ana aktivita, je informov´an o pr˚ ubˇehu zpracov´an´ı pomoc´ı dialogu (ProgressDialog). Aby bylo moˇzn´e tento dialog vytvoˇrit a mˇenit zobrazovan´ y text, podle toho kter´ a ˇc´ ast pr´ avˇe prob´ıh´a, je nutn´e samotn´e zpracov´an´ı spustit v samostatn´em vl´aknˇe. S aktivitou v pozad´ı, kter´a obsahuje tento dialog, komunikuje vl´akno pomoc´ı handleru, kter´emu zas´ıl´ a zpr´ avy o aktu´aln´ım pr˚ ubˇehu. Tento handler pot´e zpr´avy pˇrij´ım´a a interpretuje. Stejn´ ym zp˚ usobem, tedy zasl´an´ım zpr´avy, vl´akno informuje o sv´em ukonˇcen´ı a vyvol´ a t´ım dialog zobrazuj´ıc´ı v´ ysledn´ y text. Jednotliv´e kroky popsan´e v kapitole 3 jsou zde reprezentov´any funkcemi, kter´e obvykle vytv´aˇrej´ı ˇci modifikuj´ı seznamy pomocn´ ych objekt˚ u popsan´ ych v´ yˇse. Po pˇreveden´ı znak˚ u na jejich ˇc´ıseln´e hodnoty, zb´ yv´ a jen jejich pˇreklad na jednotliv´a p´ısmena. Abychom to mohli udˇelat, potˇrebujeme m´ıt k dispozici tabulku znak˚ u pro dan´ y jazyk a tak´e potˇrebujeme porozumˇet aplikov´ an´ı prefix˚ u. Tabulka znak˚ u je v programu reprezentov´ana jako zdroj ˇretˇezcov´ ych hodnot. U tabulek znak˚ u pro r˚ uzn´e jazyky tedy aplikujeme stejn´a pravidla jako pro lokalizovan´e ˇretˇezce pouˇzit´e v aplikaci. Samotn´e XML t´eto tabulky pro ˇcesk´ y jazyk je tedy uloˇzeno v souboru /res/values-cs/chars.xml a m´a n´asleduj´ıc´ı strukturu: ^# ... ab ... 12 ...