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

  1. 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.


  2. 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.

zobrazení průběhu chyby


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.

ukázka testovací stránky
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