Hlavní navigace

Grafika v UNIXu - výstupní rozlišení a půltónování

Stanislav Brabec

Většina výstupních zařízení nedokáže přímo zobrazovat vektorové obrazy ani plynulé stupnice šedi, ale skládá obraz z drobných teček plné barvy. Proto má výstupní rozlišení a půltónování takový význam pro kvalitu tisku. V dnešním dílu se dozvíte více o výstupním rozlišení, o frekvenci rastru, hodnotách DPI a LPI a o napravování chyb vznikajících při nízkém rozlišení.

Nejdůležitějším parametrem výstupního zařízení je bezesporu rozlišení. Rozlišení při skenování jsme věnovali část čtvrtého dílu našeho seriálu, nyní si téma dokončíme.

Výstupní rozlišení

Pokud zařízení pracuje na rastrovém principu, pak v naprosté většině případů skládá obraz z drobných bodů – pixelů (zkomolená zkratka anglického picture element – element obrázku) – rozmístěných v čtvercové nebo obdélníkové síti. Body mohou nabývat pouze dvou (tiskárny) nebo určitého množství (obrazovky) diskrétních hodnot. Vzájemná vzdálenost těchto bodů dává jednu důležitou informaci o kvalitě zařízení. Toto rozlišení se udává většinou v bodech na palec (DPI) nebo na centimetr.

Pokud je rozlišení tiskárny menší než 200 DPI, jsou jednotlivé body jasně patrné i z běžné čtecí vzdálenosti. Do této kategorie dnes patří jen faxy.

Pokud je rozlišení tiskárny 300–400 DPI, jsou jednotlivé body z běžné čtecí vzdálenosti jen nepatrně viditelné. Výrazně se však ještě může projevovat zkreslení písmen a tloušťky čar.

Při rozlišení 600–800 DPI (běžné laserové tiskárny) lidské oko jednotlivé pixely běžně nevidí. Lze je však spatřit u ostrých špiček a jemně stoupajících čar a školené oko je stále ještě schopné spatřit jemné deformace písmen. S vzrůstající hodnotou rozlišení tyto jevy postupně ustupují. Při rozlišení 1200 DPI jsou již nepatrné a při rozlišení 1800 DPI lidskému oku zcela mizí.

Přesto však rozlišení špičkových osvitových jednotek (4000 DPI a více) není zbytečné, protože má vliv na kvalitu rastrů.

Rozlišení a PostScript

Efekty spojené s nízkým rozlišením řeší v PostScriptu několik technik.

U písem se jedná o zeštíhlení (hinting – viz desátý díl našeho seriálu), které zaručí, že např. dřík písmena L bude stejně silný jako dřík písmena R.

Tabulka č. 210

výsledek setstrokeadjust
Čáry o tloušťce 1,1 pixelu (naznačeny zeleně): nahoře bez korekce setstrokeadjust, dole s korekcí.

U čar jde o operátor setstrokeadjust (Level 2). Bez jeho nastavení se obarví pixely, jejichž střed leží uvnitř čáry. To může způsobit, že čára jedné a téže tloušťky bude kreslená různým počtem pixelů v závislosti na poloze. Nastavením setstrokeadjust se zavede korekce, která zajistí vždy stejnou tloušťku čáry.

Vyhlazování (antialiasing)

Tabulka č. 211

výsledek vyhlazování
Obrazec vlevo je kreslený bez vyhlazování, napravo s vyhlazováním. Na dolních obrázcích je 4× zvětšený ukázkový výřez.

Některá výstupní zařízení mají opačný problém – malé rozlišení, ale naproti tomu vysoký počet dostupných odstínů (např. obrazovka). Je-li potřeba na nich co nejlépe zobrazit vektorovou grafiku, musí se naopak provádět vyhlazování hran. Jde o postup, při kterém se čáry nekreslí ostře ohraničené, ale ty pixely, které leží na hranici různě obarvených oblastí, se vybarvují směsí barev oblastí, na kterých bod leží. Výpočtem hodnoty směsí se zabývá několik algoritmů, jejichž použití závisí na formě a množství vstupních dat. Univerzální, ovšem výpočetně nejnáročnější metodou, je podvzorkování, kdy se celý obraz vypočte ve vyšším rozlišení a poté se každému bodu přiřadí průměr několika hodnot.

U všech algoritmů vyhlazování je třeba brát v úvahu gama korekci.

Rozklad obrazu (půltónování)

Rastrování slouží k převodu bitové hloubky vstupních dat do bitové hloubky výstupního zařízení, která je typicky menší.

Zatímco některá zařízení mají problém s vykreslením osamoceného bodu (např. laserové tiskárny či běžný ofsetový tisk), jiným naopak nesvědčí větší vyplněné plochy (např. inkoustovým tiskárnám). Proto také vznikly metody používající různé rozkladové obrazce:

Bodový rozklad: Při rozkladu polotónů bodovým rozkladem vzniká množství osamocených bodů ve velikosti jednoho pixelu. Ty jsou pro lidské oko nejméně patrné, ale nejvíce náchylné na změnu velikosti při tisku. Bodový rozklad je vhodný pro indexované obrázky, inkoustové tiskárny a inkoustové plotry. Hustota bodů je zde dána rozlišením výstupního zařízení. Někdy se tento typ rozkladu po vzoru elektrotechniky nazývá frekvenční modulace.

Rastrový rozklad: Při rastrovém rozkladu vzniká ve víceméně stejném rozestupu množství různě velkých bodů. Tento rozestup je dán výrobcem zařízení anebo uživatelem. Hustota rastrů se udává v linkách na palec (LPI) nebo centimetr a nazývá se frekvence rastru. Rastrový rozklad je vhodný pro laserové tiskárny a ofsetový tisk. Někdy se nazývá amplitudová modulace.

Čárový rozklad: Při čárovém rozkladu vzniká na obrazu množství rovných nebo klikatých čar. Podobně jako u bodů lze rozlišit dva různé typy rozkladu – frekvenční (čáry mění hustotu) a amplitudový (čáry mění tloušťku). Při návrhu tohoto rozkladu je třeba vzít v úvahu, že čáry bývají viditelné lépe než body. Nejznámějším typem tohoto rozkladu je šrafování a nejčastěji se tento rozklad používá u pisátkových plotrů.

Možné postupy rozkladu obrazu

Vlastní algoritmus rozkladu silně ovlivňuje jeho použitelnost v různých programech. Pomineme-li triviální a nepoužitelné metody, lze rozklad obrazu provést několika způsoby:

Tabulka č. 212

Floyd-Stenibergův rozklad
Obrázek ze třetího dílu s Floyd-Steinbergovým rozkladem.

Difúze chyby (error diffusion):

Jde o metodu rozkladu na body. Při tomto postupu se provádí „aproximace“ vstupní hodnoty černou nebo bílou (případně jinými dostupnými odstíny). Při této „aproximaci“ vzniklá „chyba“ je pak podle určité rozptylové matice rozptýlena do okolních bodů (z výpočetních důvodů pouze do těch, které jsme ještě „neaproximovali“. Při „aproximaci“ dalších bodů pak místo původních hodnot bereme v úvahu hodnoty upravené rozptylem chyby. Při vhodně volené rozptylové matici získáme nepravidelný jemný bodový rozklad. Mezi nejznámější rozptylové matice patří Floyd-Steinberg, Sierra a Stucki.

Nevýhodou algoritmů difúze chyby je nutnost znát v době tvorby rastru hodnoty ve všech bodech obrazu. To vylučuje možnost rozumné integrace této metody do PostScriptu.

Tabulka č. 213

vyplnění Hilbertovou křivkou
Obrázek vyplněný Hilbertovou křivkou.

Stochastické rastry (stochastic screens):

Stochastické rastry vznikají neopakujícím se umístěním bodů nebo čar do prostoru. Některé z těchto metod využívají přímo náhodný generátor. Jejich problémem je najít dostatečně náhodný a rychlý generátor. Při implementaci jiných metod se používají různé sofistikované postupy – např. vyplňování Hilbertovou křivkou nebo s použitím neopakujících se funkcí. Vlastnosti stochastických rastrů se silně mění s použitým algoritmem, většinou se jedná o kvalitní, avšak výpočetně náročné metody.

Tabulka č. 214

Bayerovo seskupení
Obrázek rozložený pomocí Bayerova seskupení.

Pole prahů (threshold array):

Máme zadáno čtvercové nebo obdélníkové pole (buňku) s prahovými hodnotami pro jednotlivé body. Při rozkladu pak hodnoty z buňky pravidelně opakujeme. Jde o jednoduchý, rychlý a široce rozšířený algoritmus. Vhodně navržené buňky se používaly u indexovaných obrazovek a u jehličkových tiskáren. V PostScriptu se jedná o půltónování typu 3.

Tabulka č. 215

bodové seskupení
Obrázek rozložený na klasické kruhové body.

Funkce bodu (spot function):

Je zadána velikost buňky a vhodná dvourozměrná funkce v intervalu mezi −1 a 1. Buňku zobrazíme do tohoto intervalu a vypočteme hodnotu funkce. Zjistíme hodnoty funkce pro středy buněk, setřídíme je podle velikosti (jsou-li stejné, řadíme libovolně) a jednotlivým středům buněk přiřadíme hodnotu prahu (rovnoměrně rozdělenou mezi 0 a 1). Tím jsme pomocí jednoduché funkce rychle vytvořili libovolně velké pole prahů. Tato metoda je vůbec nejrozšířenější metodou pro tvorbu rastrů. V PostScriptu se jedná o půltónování typu 1.

(ukázky rozkladu viz pgmtopbm z balíku NetPBM)

Našli jste v článku chybu?

26. 11. 2001 21:38

Stanislav Brabec (neregistrovaný)

V případě PS Level 2 tiskárny je třeba použít příslušné PostScriptové operátory nebo hlavičkový soubor - rastrům ještě věnuji celý příští díl. V případě GhostScriptu to také funguje, navíc je ještě možnost řádkové volby -dDITHERPPI=hodnota_v_lpi, která nastaví implicitní frekvenci rastru. Prohlédněte si soubor /usr/share/ghostscript/verze/lib/gs_init.ps. Tam je pár zajímavých řádek řešících volbu rastru.

26. 11. 2001 8:14

Honza (neregistrovaný)

Predpokladejme, ze mam postscript a v nem vlozenou bitmapu (napr. pomoci jpeg2ps, ktery jen nejak ten jpeg obali, nebot ps jpeg-kompresi podporuje). Chci ho vytisknout A) na ps level 2 tiskarne, B) pomoci gs na tiskarne podporujici rekneme PCL5. Jak zvolit, jaky druh pultonovani se pouzije a jaky je nejvhodnejsi (nejde o pomer kvalita/narocnost, jen o to prvni :-) Je to otazka ps, zarizeni, nebo jen nejakeho nastaveni?

Honza Houstek



Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Podnikatel.cz: Změny v cestovních náhradách 2017

Změny v cestovních náhradách 2017

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Vitalia.cz: Potvrzeno: Pobyt v lese je skvělý na imunitu

Potvrzeno: Pobyt v lese je skvělý na imunitu