7. Čtečka Braillova písma
Ing. Pavel Šimek, Praha
7.1 Úvod
Člověk žijící v současné společnosti, neustále
komunikuje s ostatními lidmi a institucemi v písemné formě, a proto je nutné
vyvinout metody, jak umožnit písemnou komunikaci mezi nevidoucími a vidoucími spoluobčany.
Nejsnadnější cestou je použití dnešní moderní techniky. Tato umožní vidoucím občanům
porozumět písemnému jazyku nevidoucích: Braillovu písmu.
7.2 Motivace
Úkolem této práce je vyvinout a ukázat metodu jak
vidoucímu člověku za pomoci počítačové techniky umožnit číst Braillovo písmo bez jeho
konkrétní znalosti. V dnešní době mají nevidoucí lidé problémy s komunikací
s oficiálními úřady, jejichž pracovníci nejsou schopni číst Braillovo písmo.
Výzkum, v rámci projektu, měl ukázat postup, pomocí něhož bude běžný pracovník
úřadu schopen převést fyzickou stránku s Braillovým písmem na čitelný text.
7.3 Požadavky
Pro převod Braillova písma do textového tvaru je
třeba počítač s připojeným scanerem (digitální zařízení na snímání libovolného
textu či obrázku pro počítačové zpracování). Na kvalitě tohoto digitálního zařízení
je velmi závislá kvalita výsledného převodu. Je požadováno, aby rozměry snímané předlohy
zůstaly zcela zachovány, a proto není možné doporučit jakékoli ruční scanery, kde
potencionálně může vzniknout velmi vysoká chyba při snímání vlivem posunu papíru
nebo jeho deformací. Také osvětlení nemusí být vždy stejné a je závislé na deformaci
papíru, které tvoří jednotlivé tečky Braillova písma. Při ručním snímání by mohlo
při velkém zatížení ručního scaneru dojít k deformaci fyzických proporcí vytlačených
teček a tím také k výrazně horšímu převodu na text. Je tedy vhodné doporučit
alespoň stolní scaner, který umí digitalizovat předlohu s rozlišením
200 DPI (Dots Per Inch) a v 256 odstínech šedi.
Tudíž postačující poměr levné černobílé stolní scanery, které lze v dnešní době
pořídit za necelých 6 tisíc korun. Běžná rozlišovací schopnost scanerů je alespoň 300 PDI,
která naše požadavky přesahuje.
Vlastní program na převod digitalizované předlohy
je platformově nezávislý a nevyžaduje žádné specifické požadavky na použitý počítač.
Vstupem tohoto programu je vlastní obrázek ve formátu Microsoft Windows Bitmap verze 3.0
a výstupem je neformátovaný text, který je vypsán na standardní výstup.
Formát Microsoft Windows Bitmap byl zvolen
pro jeho všeobecnou rozšířenost na všech platformách a také pro to, že je velmi dobře
dokumentován a definován. Jeho nevýhoda je pouze neexistence kompresního schématu.
7.4 Popis postupu pro získání výsledného textu
- Za pomoci nainstalovaného scaneru a programu, který umí komunikovat se scanerem,
převedeme fyzickou stránku Braillova písma do digitální podoby a uložíme výsledný obrázek
do souboru ve formátu Microsoft Windows Bitmap. Zde je nutno připomenout, že dokumenty
k digitalizaci se pokládají lícem na plochu scaneru tudíž i stránka
s Braillovým písmem se musí položit lícní stranou na plochu stolního scaneru.
Na lícní straně Braillovské stránky tečky písma vystupují z papíru.
- Obrázek připravený dle bodu 1. zkonvertujeme pomocí programu ctecka na text a
zkontrolujeme výsledný převod. Při zjištění závadnosti převodu textu je nutno zapnout
otočení předlohy o 180 stupňů pomocí parametru programu /F a to tak, aby horní okraj
sejmutého Braillova textu skutečně odpovídal hornímu okraji. Při psaní programu ctecka,
bohužel není známa žádná zaručená metoda, která by automaticky zjistila, kde se nachází
horní okraj stránky. Jediné přibližné rozlišení je možné provést podle okraje vytištěných
znaků, kde platí, že u levého okraje stránky jsou znaky zarovnány na stejnou
počáteční pozici a u pravého okraje stánky končí tam, kde skončil odstavec nebo kde
je konec řádky. Toto nastavení není vždy pravdivé neboť závisí na způsobu tisku. Lze
zapnout i režim tisku, kde je konec řádky ignorován a tisk pokračuje na stejné
řádce dále.
7.5 Popis Programu Čtečka = (ctecka)
Program pro převod Braillova písma pracuje ve třech
hlavních fázích.
První fáze slouží pro nalezení vlastních vytlačených bodů Braillova písma. Pro nalezení
teček Braillova písma byla zvolena metoda hledání podle vzoru, kde s předem definovaným
vzorem je prohledáván obrázek a pokud je shodnost vzoru a vlastního obrázku větší než předem
definovaná hranice, poté je daná pozice prohlášena za pozici tečky a zaznamenána.
Nalézání se řídí několika důležitými konstantami.
První z nich udává rozmezí barev šedi, které jsou považovány za shodné. Tj. pokud
rozdíl barvy vzoru a barvy obrázku je menší než ColorError, potom dané barvy jsou shodné
a je generována shoda.
V praxi bylo zjištěno, že barva pozadí stránky
není na celé ploše sejmutého obrázku konstantní a může velmi ovlivňovat výsledek hledání.
Barva pozadí se zjišťuje pro každou řádku obrázku zvlášť a její počáteční hodnota je
nastavena na průměr prvních vzorků barev na prvním 1 mm sejmutého obrázku. Poté je barva
pozadí upravována podle průběhu v řádku. Řádky obrázku jsou při čtení upravovány podle
aktuální hodnoty barvy pozadí tak, aby výsledná barva byla normalizována na předem
požadovanou hodnotu pozadí. Tato hodnota pozadí odpovídá hodnotě pozadí porovnávaného
obrazu vzoru tečky.
Celkově je možno říci, že vlastní hledání
teček Braillova písma je velmi zdlouhavá záležitost, závisející hlavně na rychlosti
počítače. Při rozpoznávání teček dochází k prohledávání celého obrázku, kde na každou
pozici v obrázku je proveden konstantní počet aritmetických výpočtů. Celkový čas
převodu je lineárně závislý na ploše sejmutého obrázku.
Z důvodů výrazného zrychlení je prováděna
predikace, která nám udává jestli jednotlivé řádky obsahují pro nás nějakou informaci.
Řádek obsahuje informaci pouze tehdy, pokud barva v řádku má nějaké výrazné lokální
výkyvy. Tj. pokud je rozdíl mezi sousedními barvami větší než hodnota ColorError, potom
je daná pozice "zajímavá" a pro každou řádku jsou uchovány první pozice a poslední zajímavá
pozice. Vlastní hledání vzoru potom probíhá pouze mezi těmito pozicemi. Tato optimalizace
vykazuje nepřesnost pro místa s lehce zašpiněnými nebo jinak poničenými oblastmi
na papíře s Braillovým písmem. Tyto lokální chyby jsou také detekovány jako "zajímavé"
a je s nimi počítáno. Tuto nedokonalost optimalizace se dále snaží vylepšit druhá
fáze optimalizace.
Další optimalizace bere v úvahu více řádků
najednou. K vlastnímu zpracování je připuštěna pouze taková posloupnost řádků, která
obsahuje takovou kombinaci řádků s "zajímavými pozicemi" jež zaručuje alespoň možnost
nalezení tečky.
Při detekci tečky (úroveň chyby je pod danou hranicí)
je zaznamenána pozice detekce a hodnota chyby pro danou pozici. Při detekci nových teček
je nejdříve prohledán seznam známých teček a pokud nová tečka je ve vzdálenosti menší než
je polovina vzdálenosti mezi tečkami v jednom znaku Braillova písma, jsou porovnány
chyby a tečka s menší chybou je uložena do seznamu.
Průběh chyby pro jeden řádek při porovnání
s předloženým vzorem za pomoci korekce pozadí je uveden v grafu
na obrázku 7.1.
Obrázek 7.1: Průběh chyby pro jeden řádek
Z grafu je patrné, že úroveň chyby je poměrně
konstantní v pozadí a lokálně klesá pro hledanou tečku. Z analýzy grafu
vyplývá ještě jedna možnost optimalizace a to pokud je nalezena tečka, jejíž chyba
je větší než již předtím nalezená tečka, je možno přeskočit následující pozice
v rozsahu mezery tečkami, protože teoreticky není mezi těmito tečkami žádná další.
Druhá fáze se snaží poskládat z těchto bodů
Braillovy znaky ve standardní mřížce 2x3 body. Toto skládání je velmi náročné, protože znaky
Braillova písma nemají stejný počet teček a jsou tvořeny žádnou (mezera) až 6 tečkami.
Rozhodnout kam patří detekovaná tečka je poměrně jednoduché při velké hustotě teček.
Při malé hustotě teček je nutné vytvořit globální mřížku a do ní přichytit jednotlivé tečky
a za pomocí této globální mřížky poté detekovat jednotlivé Braillovy znaky.
Největší problém vzniká při zpracování celé stránky
textu najednou. Protože algoritmicky nelze snadno zjistit, jestli byla daná stránka někdy
pootočena a tak nelze aplikovat mřížku, která je rovnoběžná s řádky daného obrázku
a bylo by třeba obrázek pootočit. Způsob, jakým lze toto obejít, je v lokalizaci
vyhledávání mřížky pro každý řádek zvlášť a tím předejít chybám, které by se projevily
na plné délce stránky. Je logické, že vyhnout se chybě 1 mm na délce strany formátu A4
je velmi náročný úkol, a proto nelze zpracovávat do mřížky celý text najednou, ale
po částech, které garantují nezávislost na chybě mnohem větší než je
1 mm na 30 cm (formát A4).
Třetí fáze provede překlad znaků Braillova písma
2x3 na text podle převodní tabulky, která umožňuje nadefinovat více převodních tabulek.
Zde dochází k poslednímu problému a tím je prosazení neexistence nějaké obecně platné
normy pro české Braillovo písmo a s tím související možnosti nesprávného převodu
Braillova písma na text. Tento program si neklade za cíl převádět ze všech možných kódováních
do textového tvaru, ale hlavní práce spočívá v bodech 1 a 2. Fáze 3 je pouze závěrečná
fáze a zasloužila by si více prostoru pro výzkum, který by se zabýval sjednocením
Braillova písma a vytvořením specifikace pro jednotlivá kódování včetně definice speciálních
znaků pro speciální účely.
7.6 Implementace
Vlastní program je napsán v jazyce C++ pomocí
objektů. Program definuje několik objektů.
Objekt ImageFile, který slouží pro čtení obrázku
z disku a stará se o veškeré činnosti s tím související. Obrázek je čten
z disku postupně po řádcích, které jsou ihned dekódovány a v paměti jsou
potom uloženy pouze hodnoty barev. Při požadavku pouze barev typu odstínů šedi, platí
že RGB (Red-Green-Blue) složky barvy jsou stejné a tak je výsledná barva reprezentována
jedním bytem. Formát BMP se vyznačuje jednou poměrně zajímavou vlastností a to tím, že
vlastní řádky obrázku jsou uloženy v souboru od zdola nahoru. To znamená, že řádka
s nejvyšší y-ovou hodnotou následuje hlavičku souboru a řádka s y-pozicí
0 je poslední v souboru. Tomuto uložení je přizpůsoben vlastní prohledávací
algoritmus, který zpracovává postupně řádky v pořadí od zdola nahoru. Objekt
používá buffer pouze pro takový počet řádků, který zcela stačí pokrýt rozsah
hodnot pro detekci tečky (pro rozlišení 200 DPI to, je konkrétně více než 14 řádků, kde
tečka má zhruba rozměr 14x14 bodů). Tento přístup umožňuje minimalizovat nároky na paměť.
Jedna stránka formátu A4 zabere při rozlišení 200 DPI zhruba 4 MB diskového prostoru a na
čtení tohoto obrázku nám zcela postačuje buffer pro 20 řádků, který zabere zhruba 35 KB
paměti. Při zpracování nedochází k více přístupům na disk pro jeden bod obrázku
a čtení celého obrázku do paměti počítače se jeví jako zcela nadbytečné a nežádoucí. Pokud
bychom chtěli rozšířit možnost zpracování na více vstupních formátů, potom by se musel
upravit i vlastní postup zpracování obrázku a to tak, aby odpovídal uložení řádků obrazu
v souboru.
Objekt Page slučuje fázi 2 a 3, tj. hledání teček a
hledání Braillových znaků. Tento objekt sdílí buffer s objektem ImageFile. Definuje
metodu Detect ( ), která slouží pro detekci jednotlivých teček a je možné ji případně
přepsat efektivnější metodou než je prosté porovnávání obrazu předlohy. Fáze rozpoznávání
mřížky znaků Braillova písma je tvořena pomocí procedur pro vytvoření histogramu jednotlivých
os. Osy x a y jsou zpracovány nezávisle. V histogramu musí existovat jednoznačné shluky
detekovaných pozic a tyto pozice definují mřížku. Dále jsou doplněny pozice mřížky, kde
nebyly detekovány žádné tečky (mřížka zjištěna na základě detekovaných teček nemusí být
hustá natolik, aby definovala úplnou mřížku). Po zajištění kompletní mřížky jsou pozice
jednotlivých teček přepočteny jako indexy do os x a y mřížky. Na základě znalosti indexů
jsou poté postupně vytvářeny znaky Braillova písma.
Objekt convert, který slouží pro převod znaků
Braillova písma na text podle zadané abecedy. Tento objekt by zasloužil rozhodně více
pozornosti, ale jak je uvedeno výše pro nedostatek konkrétních specifikací Braillovských
abeced je napsán tak, aby byl schopen dekódovat alespoň základní prvky abecedy bez možnosti
dekódování speciálních znaků (Př. matematické symboly).
7.7 Závěr
Výše popsaný postup umožňuje převod jednostranně
tištěného Braillova písma na neformátovaný text. Časová náročnost postupu je velmi závislá
na rychlosti počítače, na kterém je spuštěn program ctecka. Rychlost převodu jedné stránky
se pohybuje řádově v minutách.
Zatím není uspokojivě vyřešen převod Braillovských stránek, které jsou
tištěny oboustranně, zde dochází k poměrně velkým chybám při rozpoznávání
teček Braillova písma a jejich následnému složení do znaků. Je třeba ještě vyladit
rozlišovací algoritmus tak, aby jeho úspěšnost byla větší a tím se snížila možnost nalezení
teček na nesprávném místě.
Na základě testování bychom doporučili, aby dokumenty s Braillovským
písmem určené k počítačovému zpracování na začátku stránky obsahovaly několik
znaků s 6 tečkami, podle nichž by bylo možné rozhodnout o otočení stránky.
Tato značka by také výrazně zjednodušila počáteční nalezení mřížky pro rozpoznávání
Braillovských znaků a také by pomohla odstranit otočení předlohy, které neumožňuje správný
převod teček na Braillovské znaky.
Při praktických testech se také projevila nemožnost převodu stránek Braillova
písma, které jsou svázány ve vazbě, protože při scanování z vazby dochází k velmi
výraznému zkreslení proporcí stránky.
Výsledný program umožňuje převod jednostranně tištěných stránek
s Braillovým písmem na text a byl odzkoušen na scaneru HP ScanJet 4c, kde vzor
pro Braillovy stránky byl vytištěn na tiskárně Index Everest a program ctecka byl
spuštěn na počítači typu PC Pentium s operačním systémem Windows 95 a také
na počítači Silicon Graphicss s operačním systémem Irix 5.3. Při scanování byly použity
standardní ovladače a programy dostupné na daném počítači.
Příloha C
Testovací stránka v Braillově písmu
Následující testovací stránka obsahuje text:
Ahojky,
toto je pokusny souboru.
Program umi rozeznat i cislice například 0123456789.
Ctecka byla napsana v programovacim jazyce C s pouzitim
objektove technologie.
Obrázek C.1: Testovací stránka
PŘEDCHOZÍ KAPITOLA
OBSAH
NÁSLEDUJÍCÍ KAPITOLA
[Domů
| Zpět]
Náměty a připomínky zasílejte na: web@braillnet.cz
Copyright © 1995 - 1999 SONS