HMI - ovládání, zobrazování, vizualizace

HMI-AUTOMATIZACE - ŘÍZENÍ - ZNAKY
Provoz webu zajišťuje:

www.hapesoft.cz

Zobrazování znaků

Charakteristika

Schopnost zobrazování znaků, obecně grafických symbolů, je základním předpokladem k tomu, aby bylo možno předat obsahově rozšířenou informaci ze zařízení (výsledek, hlášení, stav) směrem k uživateli. V prostředí výpočetní techniky prošly principy zobrazování několika proměnami odpovídající technologickým možnostem i možnostem řízení v dané době.

Různé způsoby zobrazování znaků byly známy, nebo o nich bylo uvažováno ještě dříve, než vešly v praktické využití. Nemuselo se ani jednat o technologickou nebo součástkovou základnu ale i o to, že výkon výpočetní techniky byl relativně nízký a výkonové prostředky bylo nutno více věnovat zpracování algoritmu programu než pro složitější, i když efektnější, zobrazování. Z tohoto důvodu byly výsledky zobrazovány v minimální a úsporné formě za použití "jednoduchých" zobrazovacích zařízení, později byly výsledky tisknuty (jako první tiskárny se nejčastěji používaly tiskárny odvozené z dálnopisů). S tím souvisí i tehdejší absence médií pro ukládání výstupních dat.

Vektorové vykreslování

Princip vektorového vykreslování, ač je složité, je paradoxně nejstarší možností zobrazení znaku. Samotný psaný text je složen z mnoha křivek (úsečky, oblouky, elipsy), které je možno rozdělit na nekonečně mnoho malých úseček, jejichž složením je sestaven znak. V nejjednodušším případě je znak vykreslen jako linka (první typy), složitější vykreslování pak představuje vykreslení obrysu a vyplnění plochy znaku. Na obrázku 1 jsou zobrazeny případy vektorového vykreslení znaku, pro zobrazování není vykreslení pouze obrysu bez výplně příliš vhodné.

Vektorové vykreslení znaku
Obrázek 1
Vektorové vykreslení znaku (linka, obrys, plné).

Vykreslování paprskem na stínítko

Z technického hlediska se jedná o vykreslení znaku na stínítku obrazovky (CRT monitory) paprskem. První případ z obrázku 1 je relativně jednoduchý pro znaky, bez zaoblení, protože představuje úsečky, které je možno matematicky popsat a vygenerovat pro zobrazení. Problematické jsou znaky obsahující zaoblení, generování oblouku křivky je výpočetně náročné, proto se znaky graficky přiměřeně redukují na jednodušší tvar, který výrazně ušetří požadavky na výkon zobrazovacího generátoru. Redukce však nesmí narušit podobnost znaku s předlohou. Na obrázku 2 jsou znázorněny příklady redukce zaoblení a nahrazení přímkami.

Redukce zobrazení znaku
Obrázek 2
Redukce zobrazení znaku.

Z obrázku je patrné, že poslední uvedený příklad narušuje podobnost znaku (konflikt B a 8), pro použití ve výpočetní technice je postačující poslední možná redukce tvaru (první uvedená redukce ještě obsahuje nadbytečné vrcholy). Vektorové vykreslení znaku po redukci zaoblení a vrcholů je zobrazeno na obrázku 3 pro patkové (vlevo) a bezpatkové (vpravo) písmo.

Vektorové vykreslení znaku
Obrázek 3
Vektorové vykreslení znaku.

Generátor znaku obsahuje souřadnice n-bodů - vrcholů přímek a vykreslování probíhá postupně z bodu do bodu. Offsetem a rotací je možno vykreslit znak na libovolné místo stínítka v požadovaném natočení bez deformace a změnou násobku hodnot i změnit velikost bez ztráty podobnosti k předloze. Vykreslování začíná v některém vhodném bodě, například rohu, začátku linky a pokračuje ve směru šipky. Pokud by mělo dojít k dvojímu překreslení linky (návratu paprsku), je vhodné paprsek vypnout, aby nedocházelo k přesvětlení tohoto úseku a opět jej zapnout na začátku další linky. Vypínání je ale nezbytně nutné v případě, že nelze znak vykreslit "jedním tahem", např. znak E a zapnutý paprsek by nesprávně vykresloval tvar písma a návrat po stejné "stopě" je přes několik bodů.

Aplikace: vektorové CRT monitory

Vykreslování na matici (rastr)

Vykreslování na matici předpokládá displej/monitor v provedení (LCD, plazma i CRT), který má zobrazovací matici konstruovánu tak, že sousední body leží těsně vedle sebe a tvoří souvislou plochu v obou osách displeje (nejedná se tedy o znakově orientovaný displej) a jednotlivé body matice jsou dostatečně malé. Zobrazované znaky mohou ale nemusí být pevně předefinovány ve formě vektorových fontů, popisující tvar znaku ve formě konstrukce z bézierových křivek. Tato konstrukce představuje vyjádření obrysu znaku jako spojitou, převážně hladkou a uzavřenou křivku, která ohraničuje vyplněnou plochu znaku. Přepočtem jednotlivých bodů a parametrů všech křivek je možno dosáhnou různé velikosti zobrazovaných znaků se zachováním podobnosti s předlohou. Na obrázku 4a je znázorněn znak definovaný vektorovým fontem v různých velikostech.

Vektorové vykreslení znaku pomocí fontu
Obrázek 4a
Vektorové vykreslení znaku pomocí fontu.

Výhoda vektorového fontu je zřejmá, znak vypadá stejně (stejné proporce) ve všech velikostech. Pro ilustraci konstrukce fontu pomocí bézierových křivek u největšího znaku naznačeno dělení obrysu na jednotlivé křivky. Nevýhodou je potřeba specielního grafického HW, označovaného jako grafický procesor potřebného výkonu.

Vyhlazování vektorového písma

V případě, že provádíme vykreslování vektorového fontu na matici, dochází k určité deformaci obrysu křivky. Vektorový popis křivky sice zaručuje, že křivka bude hladká ale matice displeje touto vlastností nedisponuje. Nebudeme-li uvažovat dodatečné vyhlazování hran, které je realizováno doplňkovým softwarem, je obrysová křivka deformována, respektive bodově odstupňována podle velikosti zobrazovacích bodů matice, viz obrázek 4b.

Skutečná hrana znaku na maticovém displeji
Obrázek 4b
Skutečná hrana znaku na maticovém displeji (značně zvětšeno).

O tom, jestli bude nebo nebude daný bod matice displeje tvořit obrys znaku (a bude zobrazen) se rozhodne podle toho, překrývá-li obrysová křivka znaku střed obrazového bodu matice displeje. Trochu složitější je situace, pokud budeme uvažovat doplňkové vyhlazování hrany. V tomto případě se vyhodnocuje kolik procent plochy bodu matice displeje je součástí hrany. Podle výsledku se bodu přiřadí intenzita jeho svitu. Pro jednoduchost příkladu zobrazení uvažujme monochromatický displej s možností nastevní úrovně svitu bodu, viz obrázek 4c.

Vyhlazená hrana znaku na maticovém displeji
Obrázek 4c
Vyhlazená hrana znaku na maticovém displeji (značně zvětšeno).

Vyhlazení není tedy realizováno přidáním většího počtu bodů (technicky není možné) ale ošálením lidského oka, které tuto korekci hrany přijme jako hladkou linii.

Aplikace: LCD grafický monitor, PDP grafický monitor, i CRT monitor

Mezi částí kapitoly "Vykreslování paprskem na stínítko" a "Vykreslování na matici (rastr)" leží historicky následující část ...

Vykreslování z rastru, bitmapy, matice

Bitmapa, matice znaku

Rastr, matice, bitmapa znaku je organizované seskupení bodů stejného rozměru X,Y pro všechny znaky stejné velikosti, kdy jednotlivé body obsahují informaci (ano/ne) o přítomnosti zobrazovaného bodu konkrétního znaku. Pro kvalitní popsání znaku v této podobě je potřeba i většího počtu bodů. Čím více bodů bude k dispozici, tím lépe se podaří přenést obrys (tvar) znaku do maticové reprezentace. Příklady konverze znaku v hrubém (5x7 bodů) a jemnějším (8x14 bodů) rozlišení jsou uvedeny na obrázku 5.

Příklady rastrů znaku
Obrázek 5
Příklady rastrů znaku.

Na obrázku je znázorněn znak B v modré barvě, který je v obou případech stejných rozměrů a proporcí. Na první pohled je patrné, že použití matice (naznačena červeně) malých rozměrů (vlevo) není vhodné, protože znak nelze relevantně umístit tak, aby byly zachovány původní proporce, navíc nízké rozlišení nemusí dovolit správné zobrazení všech znaků, například znaku %. Použití jemnější matice (vpravo) je již dostačující a znak je možno převést na bitmapu v přiměřené kvalitě. Body (bity v matici) vyznačené černě jsou pak při zobrazování vysvíceny (zobrazeny), bílé body nikoliv.

Řádkové vykreslování paprskem na stínítko

Pro vykreslování paprskem na stínítko se využívá jako zdroj tvaru bitová mapa znaku, ve které je bodově zakódován tvar znaku. Princip je takový, že jednotlivé body znaků jsou postupně snímány po řádcích, tak, jak je vychylován elektronový paprsek v CRT trubici po obrazovkových řádcích. Tedy, nejprve se sejme a vykreslí horní řada bodů, tvořící vrcholy všech znaků na řádku, následně druhá, třetí ... n-tá řada, ale, podle toho, jestli se pracuje s celými snímky nebo půlsnímky CRT obrazovky, vykreslují se obrazovkové řádky postupně (1, 2, 3 ... n) nebo se vykreslují nejprve liché (1, 3, 5, ... m) a následně sudé (2, 4, 6, ... n) obrazovkové řádky. Použití půlsnímků má tu výhodu, že eliminuje oscilaci jasu podle místa aktuálního vykreslování (plocha obrazovky ve vertikálním směru je paprskem obsloužena relativně 2x rychleji a vydává rovnoměrnější jas, řešením je i zvýšení snímkové frekvence). Na obrázku 6 je zobrazen princip pohybu paprsku po obrazovce a příklad vykreslení znaku, čárkovaně vyznačený pohyb je při zhasnutém běhu paprsku.

Pohyb paprsku po obrazovce a vykreslení znaku
Obrázek 6
Pohyb paprsku po obrazovce a vykreslení znaku.

Kvalitu (preciznost, podobnost) zobrazeného znaku určuje "jemnost" rastrové matice, která definuje jednotlivé body znaku, tedy počet bodů, ze kterých je znak tvořen. Pro úspornost bývaly používány matice s pouze 5x7 body, které poskytovaly základní tvarovou informaci i tvaru znaku. Dekodér nebo generátor znaků, potom obsahoval alespoň základní sadu znaků (číslice, velká abeceda, interpunkce), případně rozšířenou sadu s malými znaky a semigrafikou. Zobrazování háčků a čárek, resp. znaků národních nebylo zpravidla uvažováno.

Podle způsobu práce s generátorem znaků ale i v závislosti na režimu zobrazování monitoru (snímek nebo půlsnímky) je možno dosáhnout trvalé (HW definované) změny velikosti zobrazovaného znaku. Příklad rastru znaku a zobrazení na stínítku je uveden na obrázku 7a.

Rastr znaku a zobrazení
Obrázek 7a
Rastr znaku a možná zobrazení.

Praktické využití však vyžaduje, aby byla změna velikosti znaku volitelná. U znaků, které jsou definovány jako bodový rastr je toto problematické, protože je možno volit velikost znaku pouze v násobcích, vyjadřující počet opakování jednoho bodu. Výsledek takovéto změny velikosti není příliš uspokojivý a ztrácí se podobnost, viz obrázek 7b.

Nedokonalá změna velikosti rastrového znaku
Obrázek 7b
Nedokonalá změna velikosti rastrového znaku.

Pro generování zvětšeného znaku na obrázku 5c je použit rastr znaku shodný s obrázkem 5b, HW řízením je opět možno dosáhnout (pevné) dvojí velikosti zobrazení. Tato metoda změny velikosti znaku není dokonalá, dochází ke značnému zkreslení v rozích znaku, kde se očekává zaoblení.

Řešením této nedokonalosti a zlepšením grafického podání je zavedení fontů rastrového písma, které alespoň pro omezený počet velikostí znaku poskytuje odpovídající grafické podání, dodržující podobnost, viz obrázek 7c (porovnejte s obrázkem 7b).

Vylepšená změna velikosti rastrového znaku
Obrázek 7c
Vylepšená změna velikosti rastrového znaku.

Aplikace: CRT monitor

Upozornění
Nejlepší grafické podání, podobnost s předlohou poskytuje bitmapové písmo v zobrazení 1:1, tedy tak, jak je primárně rastrem definováno.

Vykreslování na matici (rastr)

Vykreslování bitmapového písma na matici LCD nebo plazmového displeje je principielně shodné s předchozím případem, liší se technologie a princip fungování zobrazovací plochy. V tomto případě se taktéž postupně snímají jednotlivé grafické řádky (vertikální adresa) a body na nich. Podle stavu bodu (má nebo nemá být zobrazen) je aktivován nebo deaktivován grafický sloupec (horizontální adresa) a bod je na displeji zobrazen v případě, že je v jednom okamžiku současně aktivní vertikální i horizontální adresa bodu (řádek i sloupec).

Výše popsaný princip vychází, respektive je odvozen od řádkového pohybu paprsku po obrazovce, kdy jsme v konkrétním časovém okamžiku omezeni právě na jeden vykreslovací bod. V případě, že je grafická karta, řadič displeje integrován dohromady s vlastní zobrazovací plochou je situace odlišná. V takovém to případě není nutno ovládat bod po bodu, ale je možno přenášet celý řádek bodů najednou, tedy adresně se aktivuje jeden konkrétní řádek (pro všechny body na řádku) a k tomuto se aktivují všechny sloupce, které odpovídají požadavku na zobrazení bodu. Výhoda je zřejmá, tedy rychlost aktualizace zobrazovacích bodů na ploše displeje. 

Pro názornost je na obrázku 8 znázorněno zobrazení znaku na maticovém LCD displeji.

Rastrový znak na LCD displeji
Obrázek 8
Rastrový znak na LCD displeji.

V levé části obrázku je znázorněna předloha generovaného znaku v matici 5x7, uprostřed prosté dvojnásobné zvětšení a vpravo vylepšená grafické podání použitím zvětšeného bitmapového fontu.

Vyhlazování rastrového písma

Vyhlazování rastrového písma má význam tehdy, je-li zvětšení původního tvaru znaku takové, že se obrys písma skokově mění o 2 a více zobrazovanýc bodů. V takovémto případě je možno použít algoritmus, který dopočítá chybějící body v místě skokové změny a tyto doplní. Tato metoda není příliš spolehlivá, protože se těžko odhaduje jedná-li se například o vnitřní roh znaku nebo o vniřní zaoblení. V takovém případě je potřeba mimo velikosti skoku vyhodnocovat i diagonální směr, je-li nebo není-li v tomto směru vnitřní roh. Tomuto pak odpovídá i zobrazení zvětšení znaku na obrázku 8 s tím, že pro generování velkého pravého znaku není použita zvětšená zdrojová matice znaku, ale vyhlazování. Pokud se po zvětšení obrys písma skokově mění o 3 a více bodů bude algoritmus vyhlazování komplikovanější

Aplikace: LCD znakový displej, FVD znakový displej, LED displej, elektromechanický displej, méně časté užití pro LCD grafický monitor, PDP grafický monitor

Pseudografické zobrazení

Pseudografické zobrazení znaku je do jisté míry podobné s bitmapovým vyjádřením znaku, rozdíl je v tom, že bitmapa je nahrazena vhodně umístěnými segmenty tak, že jeden segment sdružuje několik bodů matice. Podle zamýšleného účelu použití se používá zobrazení se 7 nebo více segmenty pro jeden znak, viz obrázek 9.

Různá provedení segmentového zobrazování
Obrázek 9
Různá provedení segmentového zobrazování.

Při použití malého počtu segmentů jsou možnosti zobrazení znaků omezené, ale pro zobrazení číslic je využití 7 segmentů plně dostačující a je možno zobrazit i znaky abecedy užívané v hexadecimální soustavě (A, b, C, c, d, E, F) a některé další znaky (G, H, J, L, n, o, P, r, t, u, Y, -, °, ^, =), které je možno vyjádřit omezeným počtem segmentů aniž by došlo k záměně s jiným znakem nebo byl znak extrémně neshodný s předlohou. Prakticky je nejrozšířenější provedení se 7 a 16 segmenty. Provedení s 9 segmenty je v podstatě částečným vylepšením zobrazení na 7 segmentech. Zobrazení se 14 segmenty není špatné ale při zvládnutí této technologie výroby je výhodnější ji již aplikovat na 16 segmentů (například pro zobrazení "[", které by kolidovalo s "C".

S použitím většího počtu segmentů roste i možnost zobrazení dalších znaků (číslice, znaky). I přes určitou standardizaci je toto zobrazení více vhodné pro zobrazování velkých písmen abecedy, než pro písmena malá, u kterých neodpovídá zobrazení předloze a ani zobrazení specielních znaků není ideální a úplné a vyžaduje určitý cvik ve čtení.

Aplikace: Nixie trubice, VFD displej, LED displej, LCD znakový displej, elektromechanický displej


HMI-AUTOMATIZACE - ŘÍZENÍ - ZNAKY

Reference:

    Vektorový font:
  • J. Foley, A. van Dam, S. Feiner, J. Hughes: Computer Graphics, Principles and Practice, 127-131, 976-979
  • Jiří Žára a kol.: Počítačová grafika, principy a algoritmy, 119-126
  • Vektorové a bitové fonty - základy tisku
  • Bézierova křivka:
  • Gerald Farin: Curves and Surfaces for CAGD. A practical guide. 5. Aufl. Academic Press, San Diego 2002, ISBN 1-55860-737-4
  • David Salomon: Curves and Surfaces for Computer Graphics. Springer Science+Business Media, Inc., 2006, ISBN 0-387-24196-5
 
Publikovaný obsah je určen pouze pro individuální studium.
Není povolena distribuce, prodej, přetisk a použití textu a/nebo vyobrazení (úplný, dílčí a/nebo částečný), použití ke školení a/nebo výuce (hromadné, skupinové nebo zadávané), veřejné a/nebo skupinové prezentace a ani jiné formy šíření v hmotné a/nebo nehmotné podobě.