Grafika v UNIXu. Stanislav Brabec (utx@penguin.cz)



Podobné dokumenty
VYUŽITÍ POČÍTAČOVÉ GRAFIKY

Barvy a barevné modely. Počítačová grafika

Reprodukce obrazových předloh

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Počítačová grafika SZŠ A VOŠZ MERHAUTOVA 15, BRNO

Světlo, které vnímáme, představuje viditelnou část elektromagnetického spektra. V

Webové stránky. 6. Grafické formáty pro web. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

Základy práce v programovém balíku Corel

Co je počítačová grafika

Skenery (princip, parametry, typy)

Osvědčené postupy pro zpracování tiskových dat s vynikající kvalitou tisku

1. Polotóny, tisk šedých úrovní

Barvy a barevné systémy Formáty obrázků pro WWW

DATOVÉ FORMÁTY GRAFIKY, JEJICH SPECIFIKA A MOŽNOSTI VYUŽITÍ

Konverze grafických rastrových formátů

Úvod do počítačové grafiky

Barvy a barevné systémy Formáty obrázků pro WWW

III/ 2 Inovace a zkvalitnění výuky prostřednictvím ICT

Ondřej Baar ( BAA OO6 ) Prezentace ZPG 2008 Kalibrace Barev. Kalibrace Barev. Ondřej Baar 2008 ~ 1 ~

Rastrová grafika. Grafický objekt je zaznamenán jednotlivými souřadnicemi bodů v mřížce. pixel ( picture element ) s definovanou barvou

Rozšíření bakalářské práce

Počítačová grafika. OBSAH Grafické formy: Vektorová grafika Bitmapová (rastrová grafika) Barevné modely

Počítačová grafika. Studijní text. Karel Novotný

Jak dosáhnout toho, aby jednotlivá zařízení (monitor, skener, tiskový stroj) tlumočily barvu co nejvěrněji?

Rastová a vektorová grafika

VY_32_INOVACE_INF.19. Inkscape, GIMP, Blender

INFORMATIKA. Grafické studio ve škole

VY_32_INOVACE_INF4_12. Počítačová grafika. Úvod

Úvod do počítačové grafiky

Rastrová grafika. body uspořádané do pravidelné matice

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

POČÍTAČOVÁ GRAFIKA. Počítačová grafika 1

POPIS PROSTŘEDÍ PROGRAMU GIMP 2. Barvy 2. Okno obrázku 4 ZÁKLADNÍ ÚPRAVA FOTOGRAFIÍ V GRAFICKÉM EDITORU 6. Změna velikosti fotografie 6

DIGITÁLNÍ FOTOGRAFIE

Kde se používá počítačová grafika

On-line škola mladých autorů , pořadatel: ČVUT FEL. Jak na obrázky? Martin Žáček

Webové stránky. 16. Obrázky na webových stránkách, optimalizace GIF. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

IVT. Rastrová grafika. 8. ročník

Rastrové počítačové obrazy (poněkud sporně často označované jako bitmapové) jsou pravděpodobně nejběžnější variantou obrazů v počítači.

Omyly, mýty a skutečnost

Corel Photo-Paint Úpravy bitmapových obrázků - efekty

Střední škola průmyslová a umělecká, Opava, příspěvková organizace, Praskova 399/8, Opava, IČO: Projekt: OP VK 1.5

Téma: Barevné modely, formáty souborů

Skenování. Ing. Jiří Nechvátal. Jihočeská vědecká knihovna v Českých Budějovicích. nechvatal@cbvk.cz

Kapitola 11 / Barevný tisk

DTP1. Typy barev. Označení barevnosti. Barevný tisk. (příprava textu pomocí počítače) Kapitola 11 / Barevný tisk

Světlo. Podstata světla. Elektromagnetické záření Korpuskulární charakter. Rychlost světla. Vlnová délka. Vlnění, foton. c = ,8 km/h

Úpravy fotografie s kalibrační tabulkou x-rite do verze adobe phostohop CS5 a camera RAW 6 (proces 2010)

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Práce s obrazovým materiálem CENTRUM MEDIÁLNÍHO VZDĚLÁVÁNÍ. Akreditované středisko dalšího vzdělávání pedagogických pracovníků

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Střední škola průmyslová a umělecká, Opava, příspěvková organizace, Praskova 399/8, Opava, IČO: Projekt: OP VK 1.5

Gama monitoru. Michael v.ostheim

POČÍTAČOVÁ GRAFIKA. Lenka Bednaříková

Obsah. Úvod Barevná kompozice Světlo Chromatická teplota světla Vyvážení bílé barvy... 20

Grafické systémy. Obrázek 1. Znázornění elektromagnetického spektra.

GRAFICKÉ FORMÁTY V BITMAPOVÉ GRAFICE

Monitory a grafické adaptéry

Moderní multimediální elektronika (U3V)

ŠKOLNÍ VZDĚLÁVACÍ PROGRAM DR. J. PEKAŘE V MLADÉ BOLESLAVI

Kde se používá počítačová grafika (PG)?

Elektromagnetické záření. Zdroj:

DTP1. (příprava textu pomocí počítače) Kapitola 3 / Obrázky a rastrování

Kalibrace monitoru pomocí Adobe Gamma

1. ZÁKLADNÍ POJMY POČÍTAČOVÉ GRAFIKY

zdroj světla). Z metod transformace obrázku uvedeme warping a morfing, které se

Předtisková příprava a tisk. 1. Ofsetový tisk. 2. Tiskové rozlišení

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

DUM 14 téma: Barevné korekce fotografie

Informatika Počítačová grafika Mgr. Jan Jílek (v.11/12) Počítačová grafika

ČISTÁ SÍLA BARVY. Kontrola a kreativita od fotografování až k editaci

Informační a komunikační technologie. Základy informatiky. 5 vyučovacích hodin. Osobní počítače, soubory s fotografiemi

Tvorba posterů v PowerPointu a InDesignu

Webové stránky. 13. Obrázky na webových stránkách, modul Uložit pro web a zařízení. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch

Color Management System

Digitalizace historických negativů

digitalizace obrazových předloh perovky

DTP1. (příprava textu pomocí počítače) Petr Lobaz,

Průvodce kvalitou barvy

Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/

Průvodce kvalitou barev

Využití ICT techniky především v uměleckém vzdělávání. Akademie - VOŠ, Gymn. a SOŠUP Světlá nad Sázavou

Monochromatické zobrazování

Vývoj počítačové grafiky. Tomáš Pastuch Pavel Skrbek

Barvy na počítači a grafické formáty

DTP 2. Radek Fiala. Podpořeno z projektu FRVŠ 584/2011. Radek Fiala DTP 2

Co je to DTP. Albrechtova střední škola, Český Těšín, p.o. Označení materiálu (přílohy):

Průvodce kvalitou barev

Digitální učební materiál

Práce na počítači. Bc. Veronika Tomsová

digitální fotografický proces

Pavel Roubal Výukový modul projektu: Nové formy výuky ve školách kraje Vysočina

Pořízení rastrového obrazu

9. Software: programové vybavení počítače, aplikace

Informační a komunikační technologie Inovace výuky prostřednictvím šablon pro SŠ

Digitální fotoaparáty

Digitální fotoaparáty

ZÁKLADNÍ TERMINOLOGIE V COLOR MANAGEMENTU

Zvyšování kvality výuky technických oborů

Vyšší odborná škola a Střední škola,varnsdorf, příspěvková organizace. Šablona 15 VY 32 INOVACE

Transkript:

Grafika v UNIXu Stanislav Brabec (utx@penguin.cz) Na základě stejnojmenného seriálu na serveru Root (http://www.root.cz/) do knižní podoby převedl Slávek Banko (slavek.banko@axis.cz) 2001 2002

Obsah 1 Přehled softwaru 11 1.1 Převodníky a knihovny grafických formátů............................ 11 1.2 Prohlížeče.............................................. 12 1.3 Bitmapové editory......................................... 12 1.4 Vektorové editory.......................................... 13 1.5 Skenování a digitální fotografie.................................. 13 1.6 Tisk................................................. 13 1.7 Písma................................................ 13 1.8 Barvy................................................ 14 1.9 3D grafika.............................................. 14 1.10 Typografie.............................................. 14 2 Než začneme skenovat 15 2.1 Gama křivka základ úspěchu.................................. 15 2.2 K čemu je to v praxi?....................................... 17 2.3 Ukázky............................................... 17 2.4 Další čtení.............................................. 18 3 Co (ne)umí skener 19 3.1 Výběr skeneru........................................... 19 3.2 Základní parametry........................................ 19 3.3 Problémy skenerů.......................................... 20 3.4 Testy kvality............................................ 20 3.5 Výběr rozlišení........................................... 20 4 Skenujeme 23 4.1 XSane................................................ 23 4.2 Výběr rozlišení........................................... 24 4.3 Výběr rozsahu........................................... 24 4.3.1 Výběr rozsahu po barvách, nebo výběr spřažený.................... 24 4.3.2 Automatický výběr rozsahu................................ 25 3

4 OBSAH 4.3.3 Výběr rozsahu dle histogramu............................... 25 4.3.4 Ruční výběr rozsahu.................................... 25 4.4 Výběr gama korekce........................................ 25 4.5 Výběr bitové hloubky....................................... 26 4.6 Ukázky úprav............................................ 26 4.7 Výběr výřezu............................................ 26 5 Tipy a triky pro skenování 29 5.1 Rozbíjíme rastr........................................... 29 5.2 Čistit nebo retušovat?....................................... 30 5.3 Newtonovy kroužky a přilepené fotografie............................ 31 5.4 Černá a bílá lepenková podložka................................. 31 5.5 Boj s neostrostí........................................... 31 5.5.1 Jednoduché doostření................................... 32 5.5.2 Maskování neostrosti.................................... 32 5.5.3 Nelineární filtr zvýraznění hran............................. 32 5.5.4 Iterativní metody...................................... 32 5.5.5 Analytické metody a doostření neuronovou sítí..................... 32 5.5.6 Ukázky........................................... 32 5.6 Pérovky v šedích, černobíle v barvách.............................. 32 6 Barevná kalibrace skenerů, OCR 37 6.1 Barevná kalibrace skeneru..................................... 37 6.1.1 Ukázky práce s barevným profilem skeneru....................... 38 6.1.2 Studiové skenery...................................... 38 6.1.3 Malý skript na závěr.................................... 39 6.2 OCR................................................. 40 7 Tiskárny, tiskový proces 43 7.1 Počítačové tiskárny a digitální tiskové stroje........................... 43 7.2 PostScriptový paradox proprietárních operačních systémů................... 44 7.3 Ofsetový tisk............................................ 44 7.4 Sítotisk............................................... 44 7.5 Hlubotisk, litografie, ražba, tampónový tisk........................... 45 7.6 Copy printer............................................ 45 7.7 Příprava průhledné předlohy pro ofsetový tisk.......................... 45 7.8 Tiskové značky........................................... 45 7.9 Archová montáž.......................................... 46

OBSAH 5 8 PostScript 49 8.1 PostScript Level 1, PostScript Level 2, PostScript LL3..................... 50 8.2 Co PostScript neumí........................................ 51 8.3 PostScript a Ghostscript...................................... 51 8.4 Strukturovaný PostScript, DSC.................................. 51 9 Postscriptové formáty a písma 53 9.1 EPS, EPSF, EPSI......................................... 53 9.2 PPD................................................. 53 9.3 AFM................................................. 54 9.4 Formáty písem........................................... 54 9.4.1 Type 0 (2)......................................... 54 9.4.2 Type 1 (1)......................................... 54 9.4.3 Type 2 (3)......................................... 55 9.4.4 Type 3 (1)......................................... 55 9.4.5 Type 9, 10, 11, 32 (3)................................... 55 9.4.6 Type 14 (3)......................................... 55 9.4.7 Type 42 (3) a TrueType.................................. 55 9.4.8 Intellifont.......................................... 55 9.4.9 METAFONT........................................ 56 9.5 Krátké příklady........................................... 56 10 Řešení problémů s PostScriptem 61 10.1 Není vidět náhled.......................................... 61 10.2 EPS nelze vložit do TEXu..................................... 61 10.3 Aplikace při vkládání EPS hlásí, že nemá písmo, přestože v EPS souboru písmo je..... 62 10.4 Obrázky TIFF s kompresí CCITT G3/G4 nefungují...................... 62 10.5 Převod RGB CMYK je nepřesný................................. 63 10.6 Nesprávná délka hlavičky filtru s obrazovými daty....................... 63 10.7 Příkaz nastavení stránky...................................... 63 10.8 Progresivní jpeg dct........................................ 63 10.9 Postscriptové soubory mají po spojení špatná písma...................... 63 10.10Špatná informace v DSC...................................... 64 10.11Falešný strukturovaný PostScript................................. 64 10.12Interpolace nefunguje........................................ 64 10.13PDF nejde vytisknout....................................... 64 10.14Obrázek i písmo jsou kvalitní na obrazovce, ale ne při tisku.................. 64 10.15Porušení podmínek operátoru seac................................ 65 10.16Písmo spadlo, v Ghostscriptu přitom funguje.......................... 65 10.17Poděkování............................................. 65

6 OBSAH 11 Postscriptové omyly a problémy s písmy 67 11.1 Časté omyly o PostScriptu..................................... 67 11.1.1 PDF dává méně kvalitní výstup.............................. 67 11.1.2 Znalost PostScriptu mi v dnešní době k ničemu nebude................ 67 11.1.3 PostScript je ukecaný jazyk............................... 67 11.1.4 Ghostscript a Stuffit jsou od stejné firmy........................ 68 11.2 Závady písem a znakových sad.................................. 68 11.2.1 Závadná diakritika..................................... 68 11.2.2 Špatné podřezávání (kerning)............................... 68 11.2.3 Chybějící znaky...................................... 69 11.2.4 Chybí svaznice fi, fl, ffi, ffl................................ 69 11.2.5 Chybí ďľľť......................................... 69 11.2.6 Chybí ŽŠŤžšť........................................ 70 11.2.7 Chybí Ůů a všechna písmena s háčky, příp. jsou znaky náhodně umístěné...... 70 11.2.8 Chybí Ůů a všechna písmena s háčky kromě ŽŠžš................... 70 12 Vektorová grafika 71 12.1 Převodníky............................................. 71 12.2 Vektorové editory.......................................... 71 12.3 Neinteraktivní vektorové editory................................. 73 12.3.1 METAPOST........................................ 73 12.3.2 pstricks........................................... 73 12.3.3 Gnuplot........................................... 75 13 Interaktivní vektorové editory 77 13.1 Sketch................................................ 77 13.2 Sodipodi............................................... 78 13.3 Kontour............................................... 78 13.4 StarDraw.............................................. 79 13.5 GYVE................................................ 79 13.6 Xfig a Figurine........................................... 79 13.7 GIMP................................................ 80 13.8 ImPress............................................... 81 13.9 Scribus................................................ 81 13.10Dia.................................................. 82 14 Výstupní rozlišení a půltónování 83 14.1 Výstupní rozlišení......................................... 83 14.2 Rozlišení a PostScript....................................... 83 14.3 Vyhlazování (antialiasing)..................................... 84 14.4 Rozklad obrazu (půltónování)................................... 84 14.5 Možné postupy rozkladu obrazu.................................. 85

OBSAH 7 15 Tiskové rastry 87 15.1 Rastry................................................ 87 15.2 Úhel rastru............................................. 87 15.3 Omezení počtu šedí......................................... 88 15.4 Fyzikální a digitální frekvence rastru............................... 88 15.5 Rastry a PostScript........................................ 89 15.6 Příklady............................................... 89 16 Přenosové funkce, výroba PDF a postscriptové triky 93 16.1 Převod PostScriptu na PDF.................................... 94 16.2 PostScriptové triky......................................... 95 16.2.1 Vyrastrování do souboru.................................. 95 16.2.2 Word2eps.......................................... 95 16.2.3 Bitová maska v TEXu................................... 96 16.2.4 Jednoduchá separace do dvou barev........................... 96 17 Bitmapové formáty TIFF a JPEG 97 17.1 TIFF................................................. 97 17.1.1 TIFF a komprese...................................... 98 17.2 JPEG................................................ 98 17.2.1 Opakovaná komprese JPEG................................ 99 18 Další bitmapové formáty 101 18.1 GIF................................................. 101 18.2 PNG................................................. 101 18.2.1 MNG a JNG........................................ 102 18.3 BMP a ICO............................................. 102 18.4 JBIG................................................. 102 18.5 EPS................................................. 102 18.6 Speciální formáty.......................................... 102 18.7 Komprese a velikost souboru................................... 103 19 Malinová nebo čokoládová? 105 20 Všestranné razítko 111 20.1 Ukázky............................................... 112 21 Barevné úpravy obrázků 115 21.1 Nástroje, jež pracují se všemi komponentami najednou..................... 115 21.2 Nástroje, jež pracují s každou komponentou zvlášť....................... 115 21.3 Nástroje, jež pracují s barvami.................................. 116 21.4 Intuitivní barevné úpravy..................................... 116 21.5 Příklad............................................... 116

8 OBSAH 22 Úvod do teorie barev 119 22.1 Spektrometrie............................................ 119 22.2 Barevná teplota a tepelné vyzařování............................... 120 22.3 Kolorimetrie............................................. 120 22.4 Vztah mezi aditivními a subtraktivními systémy........................ 121 22.5 Další základní barvy?....................................... 122 22.6 Vhodné osvětlení aneb kdy kolorimetrie nestačí?........................ 122 22.7 Další odkazy............................................ 122 23 Přesné barvy 125 23.1 Přímé a kompozitní barvy..................................... 125 23.2 Barevné vzorníky.......................................... 125 23.3 Fotografie.............................................. 126 23.4 Barevná kalibrace.......................................... 126 23.5 Barevný profil............................................ 126 23.6 Druhy barevných profilů...................................... 126 23.7 Použití barevných profilů..................................... 126 24 Barevná kalibrace vstupních zařízení 129 24.1 Pomůcky pro barevnou kalibraci................................. 129 24.1.1 Denzitometr......................................... 129 24.1.2 Barevná kalibrační tabulka................................ 129 24.1.3 Zásadní požadavek kalibrace vypnout veškerou automatiku............. 130 24.2 Co je to věrná reprodukce?.................................... 130 24.3 Vstupní zařízení a jejich profily.................................. 131 24.3.1 Skenery........................................... 131 24.3.2 Fotoaparáty......................................... 131 24.3.3 Čočkový efekt........................................ 132 24.3.4 Digitální kamery a fotoaparáty.............................. 132 25 Kalibrace monitorů a barevný tisk 133 25.1 Výstupní zařízení a jejich profily................................. 133 25.1.1 Monitory.......................................... 133 25.1.2 Kalibrační sondy...................................... 134 25.1.3 Barevný tisk........................................ 134 25.1.4 Analytická separace.................................... 134 25.1.5 Úroveň černé a celkové krytí................................ 135 25.1.6 Kalibrace barevného tisku................................. 135 25.1.7 Barevný nátisk....................................... 135 25.1.8 Tisk............................................. 136 25.1.9 Kalibrace osvitových jednotek a nátisků......................... 136 25.1.10 Jiné barevné systémy................................... 136

OBSAH 9 26 Doplnění pojmů 137 26.1 Barevné prostory.......................................... 137 26.2 Percentuální uniformita...................................... 137 26.3 Gama................................................ 137 26.4 Gamut................................................ 138 26.5 Bílý bod, černý bod a úrovně................................... 138 26.6 Iluminant.............................................. 138 26.7 Barevná teplota........................................... 138 26.8 Vizuální posouzení a barevná teplota............................... 138 26.9 Převodní tabulky (LUT) barevného profilu........................... 138 26.10Zobrazovací záměr rendering intent............................... 139 26.11Korekce chyb při tvorbě barevných profilů............................ 139 26.12Duplexní tisk............................................ 139 26.13Bichromie.............................................. 139 27 Základní 3D algoritmy 141 27.1 3D na 2D.............................................. 141 27.2 Popis tělesa............................................. 142 27.3 Viditelnost objektů......................................... 142 27.4 Metody zobrazování........................................ 142 28 Fotorealistické zobrazení 145 28.1 Modely pro šíření, odraz a lom světla............................... 145 28.2 Metody sledování paprsku (ray tracing)............................. 146 28.3 Radiační princip.......................................... 146 28.4 Přístroje pro 3D grafiku...................................... 146 29 Fraktály, animace, holografie, 3D galerie 151 29.1 Fraktály v grafice.......................................... 151 29.2 Ambientní osvětlení........................................ 152 29.3 Animace............................................... 152 29.4 Dynamicky modelované objekty.................................. 153 29.5 Urychlující metody......................................... 154 29.6 Holografie.............................................. 154 29.7 Závěr................................................. 155 30 (Ne)vážně o grafice 157 30.1... tak musí uhnout hora..................................... 157 30.2 Jak vypadá nejlákavější hamburger?............................... 157 30.3 S kým fotografovali ten nový letní model?............................ 157 30.4 Co znamenají podivné značky na reklamních dopisech?..................... 158 30.5 Napsal jsem to na počítači!.................................... 158 30.6 A to koště bych prosil dát pryč................................... 158

10 OBSAH Seznam obrázků 161 Odkazy 167

Kapitola 1 Přehled softwaru Když se řekne UNIX, málokomu se vybaví grafické pracoviště, a to přesto, že první grafické stanice byly UNIXové. Od té doby však uběhlo mnoho času. Na začátku našeho seriálu se porozhlédneme po tom, co možná najdete na disku nebo ve své distribuci, zcela určitě pak na Internetu. Ačkoliv by se mohlo zdát, že svobodných programů pro grafiku na UNIXu není až tak mnoho, opak je pravdou. Od neumělých pokusů, které zapadly dříve, než stačily dosáhnout verze 0.01-alpha, až po téměř dokonalé nástroje, za které by se nemusela stydět žádná softwarová firma. (Však i D. E. Knuth, autor TEXu prohlásil: Kdyby se TEX prodával, byl by velmi drahý. O GIMPu lze říci totéž.) K práci nepotřebujeme jen obrovské balíky s tisícem funkcí stejně dobře nám poslouží i jednoduché nástroje, které svou jedinou funkci zvládají dokonale. V našem seriálu o grafice se budeme věnovat pouze programům s otevřeným kódem. S jedinou výjimkou se v následujícím seznamu také jedná o svobodný software. Protože pod slovem grafika si můžeme představit leccos, začneme poněkud nudným přehledem části toho, co z jejích různých oblastí lze na webu najít. Zdaleka ne všechny grafické nástroje potřebují okna příkazová řádka je mocným nástrojem zvlášť pro dávkové zpracování obrázků. 1.1 Převodníky a knihovny grafických formátů Má-li počítač zobrazovat nějakou grafiku, musí obsahovat grafickou kartu a obslužný software (X-server). Dalšími prvky v pozadí jsou knihovny a převodníky grafických formátů. Snad prvním grafickým převodníkem je pbmplus[45] od Jefa Poskanzera. Grafické formáty sice hloupé a neúsporné (pbm + pgm + ppm = pnm Portable any Map), ale mimořádně jednoduché, stejně jako možnost zpracování obrázků rourou z příkazové řádky, byly základem úspěchu tohoto balíku. Jeho poslední verze sice vyšla před deseti lety, ale jeho následníka, NetPBM[41], najdete zřejmě v každé distribuci. Převzal veškerý kód (i chyby) z pbmplus a přidal vše, co napsali autoři z různých konců Sítě (= světa). Umí převést různé grafické formáty z/do pnm a obsahuje množství filtrů. Jeho novějším následníkem je ImageMagick[87]. Univerzální grafický formát nahradil aplikačním rozhraním, tzv. delegáty. Uživatel má k dispozici jen jeden konvertor (convert), který ovládá všechny formáty. Na rozdíl od NetPBM neztratí ImageMagick speciální informace v souboru (rozlišení, barevný profil, hodnota gama, průhlednost apod.). K tomu přibyly interaktivní grafický editor/převodník (display), několik dalších převodních a kombinačních programů a v neposlední řadě i perlové aplikační rozhraní. Za své robustní rozhraní platí větší paměťovou a časovou náročností v porovnání s NetPBM. Práci s populárním ztrátovým grafickým formátem JPEG[94] (Joint Photographic Experts Group) zajišťuje v UNIXu téměř výhradně stejnojmenná knihovna[86]. K ní jsou přibaleny programy cjpeg a djpeg pro převod do pnm (jak jinak) a programy pro práci s jpeg soubory. (Při vývoji programu Netscape[112] 11

12 KAPITOLA 1. PŘEHLED SOFTWARU byly některé části této knihovny urychleny přepsáním do MMX kódu, přestože je však tento kód pod licencí GPL, zatím jsem tyto úpravy nikde samostatně na síti neviděl.) Již méně populární je stejně zajímavý ztrátový grafický formát JBIG[93] pro čárovou grafiku. Knihovna pro práci s ním viz [4]. Pokud vás zajímá podpora nejnovější verze formátu JPEG2000[92], musíte se poohlédnout po projektu Jasper[69]. Bezztrátovou JPEG kompresi LJPEG (DICOM) pak zpracuje například knihovna jpeg se záplatami z Image- Magick u[3]. Pokud se budeme zabývat typografií, zřejmě se nám hodí i bezztrátový převod formátu JPEG do PostScriptu pomocí prográmku jpeg2ps[117]. Relativně novým standardem webové grafiky je PNG[103] (Portable Network Graphics). Oproti formátu GIF (viz dále) nabízí licenční svobodu, plnou barevnost, nezávislost na nastavení gama křivky a kvalitní bezztrátovou kompresi. Jeho mladším bratříčkem je Multiple-image Network Graphics[102], což je obdoba PNG pro animovanou grafiku. Obě specifikace zároveň obsahují i referenční knihovnu, podpora pro obě je zahrnuta v projektu Mozilla[110]. Ke knihovně PNG nejsou přiloženy žádné pomocné aplikace, a tak za všechny, co jich na webu je, uvedu jen pnmtopng[104]. Další populární grafický formát TIFF[5] (Tagged Interchange File Format, další specifikace formátu viz [32], [1] a [33]) v UNIXu opět zpracovává téměř výhradně jediná knihovna libtiff[105]. K ní je opět přibaleno několik nástrojů a převodníků. Pokud je chcete používat profesionálně, aktualizujte na verzi 3.5.7 (starší verze tiff2ps měla závažné problémy, zvlášť na PostScriptových interpretrech od firmy Adobe). Ostudná kauza s firmou Unisys způsobila, že byl z balíku oddělen dodatek pro neamerické občany jménem tifflzw. Kdo sleduje dění kolem patentových zákonů, jistě tuší, co je obsahem tohoto dodatku. Pokud nejste zrovna v USA, můžete jej k libtiff připojit bez obavy z tučné pokuty (zatím). Zmíněná kauza zasáhla ještě mnohem citelněji software pro práci s formátem GIF. Když jsem hledal odkazy na knihovnu libgif, která byla ještě před pár lety běžně dostupná, dostal jsem se po pár přesměrováních na stránku (i v USA) právně čistého projektu libungif[37]. Ten ovšem GIF nezapíše... Nějakým zázrakem libgif zůstala ještě na archivech Metalab[12] (prohledávač od Unisysu zřejmě neumí FTP). Formáty PostScript a PDF [34] nejsou jen grafickými formáty, jsou to jazyky pro popis stran (alespoň PostScript si tento název zaslouží). Při profesionální práci s tištěnou grafikou se jim nevyhneme. Jsou to jediné formáty svého druhu, pracují s nimi tiskárny, osvitové jednotky, barevné plotry i některé X- servery. V zpracování těchto formátů vyniká Ghostscript[77], který nechybí snad na žádném UNIXovém počítači. Užitečné jsou též psutils[67], sada jednoduchých nástrojů pro úpravy PostScriptových souborů (přestránkování, seskupování a výběr stran apod.). Z převodníků a knihoven grafických formátů ještě stojí za zmínku alespoň libwmf[152] pro formát Windows MetaFile. Tím jsme sice zdaleka nevyčerpali všechny, ale pro začátek si vystačíme. 1.2 Prohlížeče Prohlížečů je dnes na Internetu obrovské množství. Každá grafická nadstavba obsahuje minimálně jeden. Za všechny zmíním jeden z prvních kvalitních prohlížečů, a sice sharewarový xv[150] od Johna Bradleyho. Přestože od vydání jeho zatím poslední verze uplynulo již sedm let, patří dodnes mezi špičku. Jeho návrh je přísně ergonomický, skvěle jsou vyřešeny ořezávání, zvětšování, a pro svůj účel je vizuální prohlížeč adresářů mnohonásobně rychlejší než většina univerzálních nástrojů. To z xv činí užitečný nástroj na jednoduché úpravy obrázků. Na jeho domovské stránce najdete již kolem dvou desítek oprav a vylepšení. Pokud potřebujeme pracovat s mnoha obrázky v různých formátech, dobře nám poslouží i moderní správce souborů Nautilus[29] se svými automatickými náhledy (zvládne i formát xcf, interní formát GIMPu). 1.3 Bitmapové editory Na poli bitmapových editorů je jednoznačným králem GIMP[78] (The GNU Image Manipulation Program). Používají jej weboví návrháři i filmová studia (viz gimp-16[23]). Pokud vám GIMP přijde příliš náročný, můžete si vybrat některý z jednodušších editorů na Metalabu[11], např. xpaint. Ke GIMP u se v dalších pokračováních zcela jistě vrátíme.

1.4. VEKTOROVÉ EDITORY 13 1.4 Vektorové editory Vektorový editor je poměrně náročným programátorským úkolem. Přesto i zde máme na výběr. Asi nejznámější je Kontour[98], součást KDE[95] KOffice[97], před zásahem právníků firmy Adobe známý pod názvem KIllustrator. Klasickým editorem, i když bez podpory Bézierových křivek, je xfig[155] s převodníkem transfig. Dalším vektorovým editorem je GYVE[83]. 1.5 Skenování a digitální fotografie Zde je výběr poměrně malý, zato je v něm soustředěna většina podpory, což je poměrně výhodné, protože nákup nového skeneru nás nenutí používat jiný software změníme jen ovladače. Chcete-li koupit skener nebo digitální fotoaparát, jistě tyto stránky navštivte. Ne každý výrobce považuje UNIXové ovladače za samozřejmost! Projektem pro skenování je SANE[31] (Scanner Access is Now Easy). Dnes je rozdělen na dvě části ovladače a grafická rozhraní. Ovšem nejpopulárnějším grafickým skenovacím rozhraním je bezesporu XSane[156]. Podobným projektem pro digitální fotoaparáty je gphoto[81]. 1.6 Tisk Pokud nemáme PostScriptovou tiskárnu, jistě budeme tisknout přes již zmíněný Ghostscript[77]. Jeho zajímavým rozšířením je projekt Omni[30], který nabízí mezivrstvu pro tvorbu tiskárnových ovladačů i mnoho nových ovladačů. Existují však i další podobné projekty např. gnome-print[101]. Kvalitní barevný tisk se pak snaží řešit projekt gimp-print[25]. 1.7 Písma Občas můžeme koupit levná a použitelná CD plná písem za několik set, ale za opravdu profesionální CD s písmy se ještě dnes platí i šesticiferné sumy. (Kolik z toho asi dostanou dnes žijící tvůrci písem?) Naštěstí i zde jsou jiné možnosti. Několik desítek počeštěných základních vektorových písem věnovala firma URW[151] pro projekt Ghostscript[77]. Firma SuSE[149] je pak překódovala pro Latin-2. Další zajímavá a kvalitní písma lze najít v TEXových archivech. V balíku GNU Intlfonts[2] jsou další písma z projektu Omega[71]... Podobně jako grafické formáty, i formáty písem mají své knihovny - freetype[75] (verze 1 a 2 mají různá rozhraní) a t1lib[13]. Z pomocných nástrojů jsou užitečné ttfutils[35], type1inst[14] a t1utils[99]. Do poslední kategorie patří programy, které by vlastně neměly existovat. Nabízejí automatické počeštění výstupů různých programů, které češtinu (zatím) ignorují (Mosaic, Netscape, Mozilla... ). Jsou to ogonkify[68] a počešti[26]. Existují též rozumnější nástroje pro automatizované počeštění písem. O nich se zmíníme v některé z dalších kapitol.

14 KAPITOLA 1. PŘEHLED SOFTWARU 1.8 Barvy Zde jsou zatím největší problémy, které se vyskytují jak v oblasti technické, tak i právní, a doba, kdy bude GIMP pracovat v barevném prostoru CMYK za pomoci knihovny GEGL[76], je zatím ještě vzdálená. Takže uvedu jen seznam zajímavých odkazů, které se vyplatí sledovat. Jsou to: Generic Colour Management System[24], SCARSE[148]: Scanner CAlibration ReaSonably Easy, Free Color Management[74], rozcestník Coloraid[59], ICClib[43], gcmm[100] pro GIMP. Jen málo projektů z této kategorie již dosáhlo rozšíření. Jsou to LCMS[106] s rozhraním pro práci s barevnými profily ICC [60], již zmíněný gimp-print[25] pro barevný tisk a Ghostscript[77] s implementovanou podporou nezávislých barevných prostorů. 1.9 3D grafika V této oblasti existuje mnoho zajímavých projektů. Za všechny uvedu pouze Radiance[38] implementující zajímavou radiační metodu, a Persistence of Vision (T M) Ray Tracer (PovRay)[120], pracující na principu klasického rekurzivního sledování paprsku. 1.10 Typografie TEX[64] jsem si ponechal na konec, neboť k němu se ještě po čase vrátíme. Pomineme-li textové procesory, je TEX v podstatě jediným zástupcem svobodných typografických programů. Žádný DTP nástroj s otevřeným kódem a grafickým rozhraním zatím, pokud vím, neexistuje. Z toho, co si s TEXem nainstalujeme, stojí s souvislosti grafikou za zmínku dva balíky: pstricks grafická nadstavba pro práci s PostScriptem na úrovni TEXu a ConTEXt poměrně nový formát TEXu s rozsáhlými grafickými možnostmi. Tak, a máme to za sebou. V další kapitole se již začneme zabývat vlastní grafikou. Pokud byste ještě neměli dost brouzdání po Internetu, můžete v grafickém adresáři archivu Metalab[9] ještě dlouho pátrat po zajímavých projektech...

Kapitola 2 Než začneme skenovat Možná jste již slyšeli něco o barevných profilech nebo alespoň o gama křivce. Uživatelům komerčních systémů na klíč bývají tato tajemství skryta pod rouškou magického co vidíš, to dostaneš, často s dovětkem Hlavně se nikdy nepokoušej něco změnit v Nastavení monitoru a Nastavení tiskových barev! Ale nám, kteří chceme dostat dobrý výsledek i bez těchto magických nastavení, nezbývá, než pochopit základní souvislosti. Již dlouho je známo, že lidské oko vnímá trojbarevně. První modely, které měly vytvářet libovolnou barvu kombinaci tří základních barev, byly tedy jasné systém RGB (červená zelená modrá) pro aditivní míchání (tam, kde se jednotlivé příspěvky sčítají např. obrazovky nebo barevná světla) a systém CMY (azurová purpurová žlutá) pro systémy subtraktivní (tam, kde se jednotlivé příspěvky potlačují např. míchání barev). Ve školních učebnicích se setkáváme i dnes s pěknými diagramy s barevnými kroužky. Jenže tak jednoduché to zase není. Fyzikální podstata světla ani lidské vnímání takovou symetrii nevykazují, a pokud se pokusíte na základě těchto poznatků převést z obrazovky cokoli na papír, díru do světa s tím věru neuděláte (zvlášť modrou pak nepoznáte). Obrázek 2.1: Kruhy Z těchto představ vznikly jednoduché barevné prostory RGB, CMY, HSV a další. Měly však mnoho nevýhod. Nevystihovaly citlivost lidského oka a byly závislé na použitých základních barvách (a barvivech). A tak vznikla věda o vnímání barev kolorimetrie. 2.1 Gama křivka základ úspěchu Bezesporu nejdůležitější hodnotou, která musí zajímat dokonce i ty, kteří pracují černobíle, je gama. Pod tímto číslem se skrývá mocnina, podle níž je světelná intenzita závislá na vstupní veličině. Podle fyzikálních zákonů o vlivu elektromagnetického pole na elektrony, putující z elektronového děla na stínítko obrazovky, je jas funkcí přibližně 2,5 mocniny přivedeného napětí. Napětí je pak (většinou) lineárně závislé na hodnotě, která je zapsaná ve videopaměti (není však přímo úměrné, neboť napětí při hodnotě nula nemusí být nulové). Nekorigované PC má tedy hodnotu gama 2,5. Některé platformy se však snaží korigovat toto zkreslení přímo v hardwaru nebo na nízkých úrovních operačního systému (např. NeXT na koriguje 1/2,5. mocninou na 1,0, Mac 1/1,45. mocninou na 1,8, SGI 1/1,7. mocninou na 1,47). Tato opravná funkce se nazývá gama korekce. 15

16 KAPITOLA 2. NEŽ ZAČNEME SKENOVAT Nelineární je však i tiskový proces. Většina tiskových procesů pracuje s drobnými černými či barevnými tiskovými body v plné barvě. Tyto body může na jedné straně zmenšovat potlačení tiskového bodu (podleptání tiskové desky, potlačení osamělého náboje u laserového tisku či tepelná setrvačnost u tepelného tisku), na druhé straně je zvětšuje nárůst tiskového bodu (nahromadění barvy v místě tiskového bodu). Ukazuje se, že u světlých barev (do 3 5 %) převažuje potlačení, ve zbytku škály pak výrazně převažuje nárůst. Všechny tyto procesy je možné matematicky modelovat a korigovat. Lze však vzít zavděk i přibližným odhadem. V tomto případě si vystačíme s poznatkem, že souhrn těchto vlivů odpovídá přibližně 1,8 mocnině světlosti předlohy. Naproti tomu skenery (a snímače digitálních fotoaparátů a kamer) jsou přibližně lineární jejich hodnota gama odpovídá přibližně 1. Podobně jsou na tom i filmové osvitové jednotky. A nakonec je nelineární i vnímání lidského oka. Zdroj světla, který vnímá člověk subjektivně jako poloviční, má ve skutečnosti zářivost jen 18 %. Lidské vnímání světelné intenzity je zhruba logaritmické. Přesné rozlišování barev pálilo v době před nástupem počítačů zejména výrobce barev pro tiskárny a textilky, a tak se v roce 1931 sešli odbornící na barvy v organizaci CIE[56] (Commission Internationale de l Eclairage) a vytvořili hypotetického standardního pozorovatele a jemu odpovídající barevný prostor, nezávislý na použité technologii. Tento prostor, dnes nazývaný CIE-XYZ, umožňuje popsat jakoukoliv barvu (dokonce i takovou, kterou nelze namíchat ze třech základních), či přesněji vjem z této barvy, pouze dvěma hodnotami (velmi zjednodušeně je lze nazvat poměrná červenost a poměrná modrost ). Třetí hodnotou je pak světlost barvy. Obrázek 2.2: Diagram CIE-XZY Ukázka barevného diagramu CIE-XZY tak, jak jej zobrazí ppmcie z balíku NetPBM[41]. Trojúhelník uprostřed vymezuje barvy popsatelné systémy RGB (kladnými hodnotami), na oblouku na obvodu jsou barvy spektra, uprostřed pak bílé body pro různé barevné teploty. Po nástupu počítačů vznikla potřeba přizpůsobit prostor CIE-XYZ tak, aby bylo možné co nejomezenějším počtem bitů, které budou každé složce přiděleny, pokrýt co nejlépe možnosti barevného rozlišení oka (odborně se to nazývá perceptuální uniformita). A tak vznikly barevné prostory CIE L*u*v* a CIE L*a*b*, oba značně výpočetně náročné. To sice nevadí při přípravě pro tisk, ale při zobrazování v reálném čase ano. S dalšími podobnými prostory přišli tvůrci norem pro barevné televizní vysílání. A tak vznikly jednoduché barevné prostory, které používají pouze mocninnou gama korekci. Pro nás je nejdůležitější srgb[153] s gama korekcí 2,2. Při testech se ukázalo, že obraz na obrazovce nevypadá nejpodobněji originálu tehdy, je-li hodnota gama zcela vykorigovaná, jak by se dalo čekat, ale tehdy, odpovídá-li tato hodnota 1/1, 1 1/1, 2 mocnině gama. V anglosaské literatuře se tento efekt nazývá rendering intent a má zřejmě souvislost s osvětlením okolí. Stručné shrnutí: Fyzikální jevy při zobrazování způsobují, že se barevné hodnoty v obrázcích nezobrazuje lineárně, ale podle jisté, přibližně mocninné gama křivky. Abychom tuto nelinearitu vykompenzovali, musíme provést korekci gama, což je tedy záměrné zkreslení barevných hodnot tak, aby co nejlépe kompenzovaly zkreslení monitoru a nelinearitu lidského oka.

2.2. K ČEMU JE TO V PRAXI? 17 2.2 K čemu je to v praxi? Když sečteme všechny výše uvedené vlivy dohromady, zjistíme, že je vhodné ukládat obrázky s hodnotou gama zhruba 2,2. Od této hodnoty se také odvíjí mnoho zobrazovacích norem, např. srgb[153] pro Web, dále Photo CD, i standardy analogové a digitální televize. Takové obrázky mají mnoho výhod vypadají přirozeně na většině obrazovek bez jakékoliv korekce (zpětnou korekci zajistí sama obrazovka), celkem slušně si vystačí s osmibitovou škálou a potřebná korekce pro tisk je také minimální. Mají však i nevýhody, na které musíme pamatovat. Některé filtry z kreslících programů dávají na obrázcích s vykompenzovanou gamou odlišné výsledky, které pak neodpovídají fyzikální podstatě jevu, který simulují (rozostření, zaostření, rozklad na body apod.). V takových případech je vhodné pracovat s lineárním barevným prostorem, pokud možno šestnáctibitovým, a gamu zkorigovat teprve ve výsledku. Máme tedy dvě možnosti: Co nejdříve (nejlépe ještě ve skeneru nebo digitálním fotoaparátu) gama křivku vykorigovat úpravou naměřených hodnot 1/2, 2 mocninou ( zesvětlit je ) a následně již obrázek ukládat jako zkorigovaná osmibitová data. Tato metoda je ideální tehdy, nepotřebujeme-li s obrázkem provádět žádné na gama křivce silně závislé úpravy. Data budou již bez jakékoliv úpravy zobrazitelná na obrazovce. Pro tisk je můžeme dokorigovat ( ztmavit ) 1, 22 mocninou. Bez této korekce vyjdou o málo světlejší než originál (ale stále ještě přijatelné). Pokud chceme obrázek připravit jen pro tisk, provedeme korekci pouze na 1/1, 8 mocninu a pro náhled na obrazovce jej přisvětlíme 1/1, 22 mocninou. Gama korekci umí provést například program XSane[156] i SANE[31], dokonce i ve skeneru (pokud to umí skener), umí to GIMP[78] v tabulce Úrovně (horní prostřední číslo), umí to i pnmgamma z NetPBM[41]. Druhou možností práce, které dáme přednost, chceme-li data dále zpracovávat pomocí různých filtrů, je práce v lineárním barevném prostoru. V tomto případě musí náš software umět provádět gama korekci při náhledu na obrazovku. Uměl to například GIMP-1.1[78], ale modul display gamma z něj byl před vydáním verze 1.2 odstraněn. Umí to i náhled v XSane[156]. Korekci gama v tomto případě provedeme až na konci, těsně před tiskem nebo digitálním výstupem. Nechceme-li v tomto případě přijít o rozlišení v tmavých odstínech, musíme počítat zhruba s 14bitovými daty. 2.3 Ukázky Obrázek 2.3: Fotografie bez kompenzace gama Lineárně naskenovaný obrázek před korekcí gama. Obrázek se zobrazí příliš tmavý, stíny se ztrácejí. Obrázek 2.4: Fotografie s kompenzací gama Tentýž obrázek po provedení korekce gama vypadá na obrazovce podobně jako původní fotografie. Na obrázku 2.5 jsou v horní polovině pruhy vykresleny plnou barvou s 0 %, 25 %, 50 %, 75 % a 100 %, ve spodní polovině jsou pak složeny z bílých a černých teček v příslušném poměru. Na obrázku 2.6 jsou odstíny horních pruhů upraveny tak, aby odpovídaly hodnotě gama 2,2. Zatímco na prvním obrázku mají

18 KAPITOLA 2. NEŽ ZAČNEME SKENOVAT horní a dolní pruhy viditelně odlišné odstíny, na druhém obrázku je tento rozdíl do značné míry vykompenzován korekcí gama (záleží na nastavení černé na monitoru). Obrázek 2.5: Stupnice bez kompenzace gama Obrázek 2.6: Stupnice s kompenzací gama Okolní osvětlení znemožňuje, aby jas monitoru začínal na nule (tedy aby funkce inzenzity byla čistě mocninná). Je třeba hledat kompromisní nastavení takové, kdy jsou nejnižší nenulové hodnoty na hranici viditelnosti. Na obrázku 2.7 jsou tmavé a světlé terčíky. Pokud nevidíme ani jeden tmavý terčík, znamená to, že je třeba zvýšit jas monitoru. Pokud je vidíme všechny jasně, je třeba jas snížit. Pokud naopak nevidíme světlé terčíky, je monitor přesvícený a není již schopen rozlišovat světlé odstíny. Obrázek 2.7: Tmavé a větlé terčíky Dolní polovina obrázku 2.8 byla nejdříve uložena v osmibitovém lineárním modelu a teprve poté byla gama vykompenzována. Při detailním pohledu vidíme, že přechod je v oblasti nejtmavších barev skokový. Obrázek 2.8: Stupnice 2.4 Další čtení Nezmínili jsme se zde o mnoha detailech, jako např. o doporučeném odchýlení od mocninné křivky v gama korekci nejtmavších odstínů. K barevným profilům jsme se též nedostali vrátíme se k nim v některé z pozdějších kapitol. K dalšímu čtení doporučuji každému vážnějšímu zájemci skvěle zpracované stránky Charlese Poyntona [88] o barvách a gama křivce. Na stránkách projektu SCARSE[148] jsou též výborně zpracované informace od Andreie Frolova a kalibrační obrázky.

Kapitola 3 Co (ne)umí skener V této kapitole se již vrhneme na praxi, a to pěkně od začátku. Skenování je v současné době nejrozšířenější způsob, jak dostat obrázek do počítače. Dnes se podíváme, co můžeme od skeneru chtít a jak nejlépe zvolit rozlišení. 3.1 Výběr skeneru Pokud teprve o koupi skeneru uvažujete, je první část této kapitoly určena právě pro vás... V našem seriálu se budeme věnovat digitální fotografii jen minimálně. (Digitální fotoaparát nemám, a tak toto téma nechávám povolanějším na Rootu například najdete článek [122].) Pokud chceme v Linuxu skenovat, před koupí skeneru určitě navštívíme stránky projektu SANE[31] nebo Parallel Port Scanners under Linux[53] či USB Scanners under Linux[54] (zelená zde nemusí ještě znamenat bezproblémový provoz). Nenajdeme-li tam vybraný skener, můžeme do vyhledávače napsat SANE <jméno skeneru> nebo se podívat na firemní www stránku. Nenajdeme-li podporu pro SANE a ani výrobce nenabízí ovladač pro Linux/SANE, skeneru se vyhneme. Skupina uživatelů skenující pod Linuxem není natolik početná, aby dokázala přimět výrobce k napsání ovladačů pro Linux či alespoň uvolnění dokumentace. 3.2 Základní parametry Kromě podpory pod Linuxem (a ceny) by nás měly zajímat základní schopnosti. Měli bychom vědět, jak velkou plochu potřebujeme skenovat (čím větší, tím dražší skener), zdali chceme skenovat transparentní (průhledné), či reflexní (neprůhledné) předlohy (skenery, které umějí oboje, bývají dražší). Zajímat by nás měly i technické parametry. Prvním z nich je rozlišení. Důležité je optické rozlišení, udává se v bodech (vlastně pixelech) na palec (DPI), u digitálních fotoaparátů pouze v pixelech (na celý obraz). Až šestnáctinásobně větší údaj, který mnozí výrobci uvádějí jako tzv. softwarové rozlišení, patří do kategorie mediální masáže (totéž platí o digitálním zoomu digitálních fotoaparátů). Skener se softwarovým rozlišením 9 600 DPI totiž často nerozliší ani čáru o tloušťce třicetinásobku tohoto rozlišení. Zmíním se ještě o dalším rozlišení, které rádi používají výrobci digitálních fotoaparátů. Nejsou-li buňky CCD snímačů ve čtvercové síti (všechny tři barvy v každém bodu) a mají-li jinou geometrii, výrobce někdy uvádí pod různými názvy další nevěrohodné rozlišení podle počtu snímacích bodů. Pro převod na směrodatný údaj zde musíme znát fyzickou geometrii. Např. TV kamera s udávaným rozlišením 640 480 pixelů může mít skutečné svislé rozlišení menší v lichých řadách totiž chybí modrocitlivý prvek, v sudých červenocitlivý, chybějící hodnoty dopočítá elektronika. Výrobce ušetří třetinu snímačů a běžný uživatel to nepozná. Věrohodnější údaj o rozlišení nám v tomto případě poskytne celkový počet snímacích elementů vydělený třemi (počet barev). V tomto přípaně by odpovídal hodnotě 320 pixelů svisle. 19

20 KAPITOLA 3. CO (NE)UMÍ SKENER Optické rozlišení 300 DPI je naprosté minimum, které dostačuje pro skenování fotografií a jejich tisk do měřítka 1:1. Skenery s menším rozlišením jsou dobré již jen na faxování nebo pro web. Na dobře vypadající čárovou grafiku je pak minimum 600 DPI. Větší rozlišení uvítáme, budeme-li skeny zvětšovat. Mnohem vyšší požadavky jsou pak na skenování kinofilmů. S 2 400 DPI (optickými) si vystačíme na zvětšeninu do velikosti A4. Druhým důležitým parametrem je bitová hloubka. Pokud jste četli předchozí kapitolu pozorně, jistě pochopíte, proč 12 až 14 bitů není luxusem, ani když vaše skeny budou jen osmibitové. Důvodem je gama korekce a podání nejtmavších odstínů. Dalším důvodem jsou i nekontrastní předlohy. Výhodné je, lze-li nahrát gama křivku přímo do skeneru. Existují dva typy těchto skenerů s digitální převodní tabulkou zde může gama korekci zajistit převodní tabulka mezi A/D převodníkem a datovou částí; a s analogovou gama korekcí (někdy i s analogovým řízením jasu a kontrastu), kde může gama korekci zajistit analogový prvek vřazený před A/D převodník. Lze říci, že osmibitový skener s analogovou gama korekcí podá tmavé odstíny lépe, než desetibitový s digitální gama korekcí. Pokud je snímač dobře nastavený, ztrácí analogová gama korekce s nástupem levných 12 a 14bitových A/D převodníků na významu. Jediná digitální tabulka nahradí analogovou gama korekci, kontrolu jasu a kontrastu, a dokonce může provádět část barevné kalibrace. Skenery vyšší třídy mají některé doplňkové funkce řízení jasu výbojky, automatickou kalibraci, možnost skenování prostorových předloh do určité výšky a další. 3.3 Problémy skenerů Parametry, které již na reklamních prospektech nebývají uvedeny, jsou ostrost linií a kvalita podání jasové a barevné škály. Mnohé skenery s celkem vysokým optickým rozlišením i bitovou hloubkou degradují svou použitelnost neostrostí. Jiné nejsou schopny rozlišit 5% šedou od bílé či 95% šedou od černé. Některé mohou mít velké problémy se skenováním čistých barev. Některé skenery dokonce přidávají do obrázku nežádoucí rušivé obrazce (většinou se jedná o svislé nebo šikmé čáry, často patrné v tmavých či světlých místech předloh). Neostrost a barevná nepřesnost je částečně kompenzovatelná digitálně, ale na ostatní problémy nepomůže ani nejpečlivější zpracování. Jiné skenery dávají dobré výsledky pouze v nejvyšším rozlišení. Tak můžeme být nuceni skenovat vždy velké objemy dat. Dobré je též znát rychlost skenování. Paralelní skenery mívají problémy protlačit větší objemy dat přes sběrnici. Lepší SCSI a USB skenery tyto problémy nemívají. U levných skenerů však někdy dvojnásobné zvětšení rozlišení znamená dvacetinásobné prodloužení skenování! Některé SCSI skenery též blokují sběrnici i na několik sekund. Připojíte-li na stejnou sběrnici systémový disk nebo běžící vypalovačku, budete mít za chodu skeneru problémy. Pokud není linuxový ovladač naší SCSI karty dobře napsaný, můžeme se též dočkat nepříjemného zpomalení (bohužel to platí i o některých SCSI kartách přibalených ke skeneru). 3.4 Testy kvality Vůbec nejlepší je před koupí skeneru najít v domácím albu nejsvětlejší a nejtmavší fotografii (avšak obě dobře prokreslené), nechat si je na zkoušku naskenovat v různých rozlišeních a pak si skeny co nejdůkladněji prohlédnout. Není též špatné naskenovat barevnou kalibrační tabulku nebo nahlédnout do věrohodného srovnávacího testu (pokud je na vychválený skener o deset stránek dál reklama, najdeme si jiný časopis). Důležitým testem může být naskenování fotografie s hrubým povrchem, které u některých skenerů dopadne velmi špatně a obrázek je poset drobnými odlesky. 3.5 Výběr rozlišení Rozlišení je jeden z nejdůležitějších údajů pro každé skenování. Jeho hodnota ovlivní velikost nejmenších viditelných detailů v obrázku. Zvolíme-li příliš malé, obrázek je mlhavý nebo se objeví viditelné čtvercové

3.5. VÝBĚR ROZLIŠENÍ 21 pixelizování, je-li velké, platíme za to větším objemem dat a delší dobou zpracování. Podobně jako v případě skenerů se rozlišení udává v bodech na palec (DPI), někdy též v bodech na centimetr. Pro jeho volbu je důležité znát cílovou velikost obrázku a zařízení, pro které bude určen. Běžně se používá následující empirické pravidlo, které platí pro běžná výstupní zařízení a grafiku v šedích nebo barvách (např. fotografie): Rozlišení na cílovém médiu má být alespoň dvojnásobné než frekvence rastru výstupního zařízení. Frekvenci rastru si vysvětlíme v kapitole věnovaném tisku, prozatím si vystačíme s tabulkou, která platí pro měřítko 1:1. Pokud je cílová velikost jiná, použijeme přímou úměru. Rozlišení čárové grafiky pak volíme s ohledem na schopnosti lidského oka. Čáry v rozlišení nad 400 DPI přestávají být viditelně zubaté. Avšak až do rozlišení 1 800 DPI se pozorovatelně zlepšuje kresba ostrých úhlů a tenkých linií. Hodnoty v tabulce 3.1 berte jako orientační empirické hodnoty. Jsou situace, kdy vyšší rozlišení význam má, jindy nikoliv. Rozlišení v DPI Médium pro fotografie pro čárovou grafiku Obrazovka 72 100 144 200 (reserva pro vyhlazování) Fax 60 90 204 98 Fax fine režim 80 120 204 192 Laserová tiskárna 300 DPI 105 140 300 Laserová tiskárna 600 DPI 210 280 600 Laserová tiskárna 1 200 DPI 240 300 600 900 Barevná inkoustová tiskárna, barevný plotter 150 400 (dle kvality) 400 600 Barevná laserová tiskárna 200 400 (dle kvality) 400 600 Ofsetový tisk, běžný papír 280 350 600 900 Ofsetový tisk, křídový papír 300 350 600 1 200 Bezvodý ofsetový tisk, křídový papír 550 650 900 1 800 Tabulka 3.1: Výběr rozlišení Většina skenerů neumí své rozlišení měnit fyzicky, a proto tak činí elektronicky, mnohdy značně primitivními algoritmy např. pouhým přeskočením náboje z některých čidel. Pokud má např. váš skener rozlišení 600 DPI, zkuste naskenovat jemný obrázek v rozlišení 550 DPI. Pokud se na každých 10 pixelech objeví zřetelná skoková linie, je vhodné se takovým rozlišením vyhnout. Je tedy vhodné volit rozlišení, které je celým zlomkem optického rozlišení, případně je s ním v poměru malých celých čísel. Případné snížení rozlišení provedeme až v počítači pomocí chytřejších algoritmů. Začátečníci často přikládají tiskové velikosti obrázku v počítači (v délkových jednotkách) přehnanou pozornost. Tento údaj slouží pouze k usnadnění práce s obrázkem a často se stane, že se v některých programech ztratí (a objeví se místo něj např. hodnota 72 DPI). Bez hodnoty rozlišení je údaj o tiskové velikosti bezcenný. Naopak známe-li jej, platí jednoduchá rovnice: velikost (v palcích) rozlišení v DPI = velikost v pixelech Je třeba vždy pamatovat na zásadní rozdíl mezi zmenšením pixelové reprezentace obrázku (přepočítáním obrázku) a pouhou změnou velikosti pro tisk bez přepočítání (obrázek při něm změní rozlišení, ale pixelová reprezentace zůstane stejná). V současné verzi GIMPu nastavujeme obě veličiny nezávisle na sobě ve stejných tabulkách Nový obrázek a Velikost obrázku. V dalších kapitolách nás čeká ještě rozbíjení rastru, tipy a triky, barevná kalibrace skeneru, a nakonec se podíváme na OCR.

22 KAPITOLA 3. CO (NE)UMÍ SKENER

Kapitola 4 Skenujeme Nevěřme však tomu, že ten nejlepší skener udělá vše za nás. Často to bez naší pomoci nepůjde. Dnes si projdeme možnosti XSane a význam základních voleb obrázků rozsahu, gama korekce a bitové hloubky pro praxi. 4.1 XSane Jedno z nejlepších rozhraní pro skenování je jistě XSane. Popíšeme si proto práci s ním důkladněji a vysvětlíme si i význam jednotlivých voleb. U některých uvedeme alternativy pro pozdější úpravy pomocí balíků GIMP[78], NetPBM[41] a ImageMagick[87] (convert). Abychom dosáhli dobrých výsledků při jakémkoliv skenování, je nutné správně zvolit několik hodnot: rozsah barev (barevnou dynamiku), gama křivku, rozlišení a bitovou hloubku. V minulé kapitole jsme si vysvětlili význam rozlišení, dnes si popíšeme i ostatní. Než začneme skenovat, ujasníme si, zda budeme požadovat fotografii s maximální dynamikou, nebo s maximální věrností. V prvním případě máme otevřenou možnost různých vylepšení, v druhém případě se budeme striktně držet hodnot daných barevností originálu. Obrázky s vysokou dynamikou často vypadají na pohled lépe, než ty zcela shodné s předlohou. Obrázek 4.1: Pohled na XSane 23

24 KAPITOLA 4. SKENUJEME 4.2 Výběr rozlišení U XSane máme na výběr dvě možnosti šoupátko a roletka s vybranými hodnotami. Proč jsou pro kvalitní skenování vhodné pouze hodnoty z roletky (a to ještě jenom ty, které jsou celým zlomkem optického rozlišení nebo jsou s ním v poměru malých celých čísel), jsme si vysvětlili v minulé kapitole. V jiných programech lze rozlišení změnit později, ale jedná se již jen o přepočítávání původního obrázku. Pokud však potřebujeme větší rozlišení, než skener nabízí, je digitální zvětšení jedinou šancí. Někdy je vhodné i digitální zmenšení (např. u zrnitých podkladů, postačí-li výstup v nižším zozlišení). GIMP[78]: Obrázek Velikost Obrázku... Přepočítání obrázku zadáváme v horní polovině tabulky, v dolní polovině pak velikost pro tisk. Změna velikosti pro tisk však neovlivňuje obrazová data, pouze zapíše tuto informaci do souboru. Důležité je nastavení Prostředí Typ interpolace v předvolbách, kterým ovlivníme algoritmus, pomocí něhož GIMP přepočítá data (čím pomalejší, tím kvalitnější). NetPBM[41]: pnmscale a pnmscalefixed Convert[87]: -sample (algoritmus nejbližší soused) Obrázek 4.2: Fotografie 540 DPI Obrázek naskenovaný v rozlišení 540 DPI na levném skeneru s optickým rozlišením 600 DPI (tj. poměr větších celých čísel 9/10). Při zvětšení vystupuje čtvercová interferenční síť. Obrázek 4.3: Fotografie 540 DPI Obrázek naskenovaný v rozlišení 600 DPI, který byl zmenšený na 540 DPI až v počítači. Interferenční síť se neobjevila. 4.3 Výběr rozsahu Výběr vstupního a výstupního rozsahu ovlivňuje dynamiku obrázku. Velký vstupní rozsah vede k méně kontrastním obrázkům, příliš malý vstupní rozsah uřezává nejsvětlejší či nejtmavší hodnoty a obrázek je v těchto partiích plochý. Při výběru výstupního rozsahu můžeme vzít ohled na možnosti výstupního zařízení a jeho rozsah. Pro obrazovku je vhodný plný výstupní rozsah, pro ofsetový tisk zhruba 3 % 97 %. Při výběru máme hned několik možností: 4.3.1 Výběr rozsahu po barvách, nebo výběr spřažený (hlavní okno, trojbarevné tlačítko vpravo dole) Zatímco spřažený režim mění dynamiku všech barev stejně a barevný tón se nemění, výběr po barvách mění dynamiku každé barvy zvlášť a může změnit barevné podání obrázku. Většinou k lepšímu, ale u barevně nevyvážených kompozicí (zelený míč na trávníku) obrázek zčásti ztratí barevnost.

4.4. VÝBĚR GAMA KOREKCE 25 4.3.2 Automatický výběr rozsahu (normalizace, hlavní okno, třetí tlačítko vpravo dole) Je to nejrychlejší metoda. Na náhledu vybereme obdélníkový rozsah uvnitř skenovaného obrázku. Stiskneme tlačítko Automaticky upravit a vše je připraveno. Automatický výběr nás většinou připraví o několik nejtmavších a několik nejsvětlejších odstínů. GIMP[78]: Obrázek Barvy Auto Normalizovat nebo Obrázek Barvy Úrovně... / Automaticky NetPBM[41]: pgmnorm a ppmnorm (bez parametrů nebo s možnými volbami pro změnu vstupního rozsahu) Convert[87]: -normalize 4.3.3 Výběr rozsahu dle histogramu (šoupátka v hlavním okně a okně histogramu) Otevřeme-li si obrázek s histogramem, můžeme pozorovat poměrné zastoupení barev podle jejich tmavosti. Volbu kontrastu a jasu či přímo šoupátka mezních hodnot nastavíme dle svého názoru. Na náhledu si zkontrolujeme výsledek. GIMP[78]: Obrázek Barvy Úrovně... (spřažený i po barvách) NetPBM[41]: Histogram lze vypočítat pomocí pnmhistmap 4.3.4 Ruční výběr rozsahu (pipetky v okně náhledu) Na náhledu najdeme nejtmavší a nejsvětlejší místo a jejich barvu nabereme pipetkami v náhledovém okně. Podobně můžeme zvolit i místo neutrálně šedé pro volbu dodatečné gama korekce. V GIMPu je možné klepnout do obrázku a nabrat barvu v dialogu Obrázek Barvy Křivky..., dialog Obrázek Barvy Úrovně... bohužel zatím toto neumí. 4.4 Výběr gama korekce Jak již bylo řečeno v minulé kapitole, budeme často potřebovat obrázky s gama korekcí. Mnoho skenerů, dnes již i v kategorii těch nejlevnějších, umožňuje nahrát gama křivku přímo do skeneru. Skener skenuje 10, 12, nebo 14bitová data, provádí korekci a do počítače odesílá již korigovaná 8bitová data. U SANE/XSane je tato možnost standardně vypnutá a aktivuje se rozšířenou volbou Použít vlastní gama tabulku (Use Custom Gamma Table). XSane má navíc možnost automatického přizpůsobení hodnoty gama podle dynamiky obrázku (pokud jej zapneme v předvolbách). Současná verze XSane ovšem k tomu neumí při skenování do souboru automaticky přičítat cílovou gama korekci (při skenování pro tisk to umí), takže si musíme pomoci ručním přičtením požadované hodnoty. Po naměření hodnoty jednoduše 12 klikneme na šoupátko gama křivky (a tím zvýšíme hodnotu o 1,2 na 2,2 vhodné pro srgb[153]; obdobně klikneme jen 8 při skenování pro tisk bez další korekce). Pokud automatickou úpravu hodnoty gama nevyužijeme, stačí si napevno nastavit požadovanou hodnotu. GIMP[78]: Obrázek Barvy Úrovně... (hodnota nahoře uprostřed) NetPBM[41]: pnmgamma (implicitní hodnota je 2,2, možnost korekce dle CIE pomocí -cieramp) Convert[87]: -gamma

26 KAPITOLA 4. SKENUJEME 4.5 Výběr bitové hloubky Pokud provedeme gama korekci již ve skeneru, vystačíme si většinou s osmi bity. Chceme-li však provádět úpravy až v počítači, je lepší zvolit vyšší bitovou hloubku a snížit ji až po provedení gama korekce. Tím ovšem vyloučíme možnost použít k mezikrokům programy, které tyto obrázky nezpracují (např. GIMP- 1.2). Pokud oželíme jemné rozlišení nejtmavších odstínů, vystačíme si s osmi bity vždy. V XSane tuto volbu najdeme mezi rozšířenými volbami. Pokud u některých ovladačů sken vůbec nevyjde, je pro vyšší bitovou hloubku nutné vypínat volbu Použít vlastní gama tabulku (Use Custom Gamma Table). GIMP[78]: Verze 1.2 umí pouze hloubku 8 bitů, lze použít gimp-16[23]. NetPBM[41]: Bez problémů pracuje s vícebitovými daty (od verze z roku 2000 podporuje i binární vícebitovou reprezentaci). Změnu bitové hloubky můžeme provést např. pomocí pnmdepth (zadává se maximální hodnota maxval, např. 65535, nikoliv bitová hloubka). Convert[87]: -depth (umí hodnoty 8 a 16) 4.6 Ukázky úprav Obrázek můžeme dále jemně dolaďovat pomocí dalších úprav (křivky, kontrast), ale to je již věc subjektivního názoru na požadovaný vzhled obrázku. 4.7 Výběr výřezu Je sporné, zdali provádět konečnou volbu výřezu již v náhledu skenovacího programu. Za prvé je nepřesný a můžeme tak obrázek podříznout, nebo naopak oříznout nedostatečně. Za druhé některé filtry vyžadují několik pixelů rezervy na okraji obrázku, aby měly dostatek vzorků pro svou činnost (doostření, vyčištění apod.). Je proto dobré nabrat více, nez je potřebné, a konečný ořez provést později.

4.7. VÝBĚR VÝŘEZU 27 Obrázek 4.4: Sken bez úprav Obrázek bez jakýchkoliv úprav, jen s gama korekcí. Tento levný skener dává načervenalý výsledek. Obrázek 4.5: Sken se spřaženým rozsahem Obrázek naskenovaný s automatickým výběrem rozsahu ve spřaženém režimu. Obrázek je kontrastnější, avšak nádech nezmizel. Obrázek 4.6: Sken s rozsahem po barvách Obrázek naskenovaný s automatickým výběrem rozsahu po barvách. Obrázek změnil barevné podání a automatika odstranila načervenalý nádech. Obrázek 4.7: Kalibrovaný sken Pro srovnání je připojen i obrázek upravený za použití barevného profilu skeneru (o něm budeme psát v dalších kapitolách) v maximální bitové hloubce. Obrázek 4.8: Špatně nastavené úrovně Nastavení příliš malého vstupního rozsahu obrázek poškodí, je pak sice velmi kontrastní, ale nepoužitelný. Obrázek 4.9: Sken se správně upravenými úrovněmi Obrázek 4.7 po vhodné úpravě úrovní (a gama křivky) vypadá kontrastněji a výrazněji nejlépe ze všech uvedených.

28 KAPITOLA 4. SKENUJEME

Kapitola 5 Tipy a triky pro skenování V této kapitole se dozvíme, co je to moiré a jak se mu vyhnout. Ukážeme si, jak lze napravit neostré obrázky a jak se retušuje Razítkem. Poznáme několik užitečných postupů při skenování problematických předloh. 5.1 Rozbíjíme rastr Pokud skenujeme již vytištěné obrázky, může dojít k interferenci mezi rastrem obrázku a rozlišením zařízení. V časopisech občas najdeme obrázky, na kterých jasně vidíme toto typické moiré (čti moaré) vznikající popsanou interferencí. Abychom se mu vyhnuli, je vždy třeba rastr odstranit (rozbít). Moiré je totiž zrádný jev a jeho projevení je věc (pseudo)náhody nemusí se objevit na obrazovce ani na zkušebním tisku, dokonce ani na digitálním nátisku, ale až na filmu. Aby moiré nevzniklo již při skenování, je nutné naskenovat obrázek ve vyšším rozlišení (alespoň dvojnásobném), než je frekvence původního rastru, a následně jej programově zmenšit. Pro zmenšení nesmíme použít metodu nejbližší soused (pokud máme špičkový skener, který sám snižuje rozlišení lepším postupem, není tento krok nutný). Pro malá rozlišení (do 60 70 % frekvence rastru) to stačí. Pro větší rozlišení (do 250 %) pak musíme ještě použít filtry, které obrázek vyhladí. Vhodný je filtr zvaný medián (běžný nebo adaptivní), rozostření konvoluční tabulkou (vyplněnou čtvercově shodnými hodnotami) nebo nelineární filtr v režimu optimálního odhadu. Filtry můžeme používat opakovaně, dokud nebude obrázek hladký beze zbytků rastru (kontrolujeme nejméně v měřítku 1:1). Pro ještě větší rozlišení použijeme běžný nebo rekurzivní medián s příslušným průměrem rozostření, případně mnohokrát za sebou použijeme optimální odhad. Na rozbíjení rastru není příliš vhodné Gaussovo rozostření. Gama korekci provádíme až po rozbití rastru. Před ním je účinek gama korekce nedefinovatelný. Nakonec obrázek ořízneme, protože pro okrajové pixely nelze rastr rozbít. Pro lepší podání tmavých barev je možné při zpracování změnit bitovou hloubku. Vlastní skenování může být osmibitové (snímáme jen barevné tečky). Všechny filtry k rozbíjení rastru obrázek lehce rozostří; můžeme jej však po těchto úpravách ještě doostřit. Nejproblematičtější je rozbití rastru v obrázku s drobným textem. Často musíme sken ponechat ve vysokém rozlišení (nad 250 % frekvence rastru) a výše uvedené filtry mohou narušit i drobné linky textu. Lze tedy použít pouze standardní (nerekurzivní a neadaptivní) medián nebo ploché rozostření se sníženým průměrem. Můžeme přitom experimentovat s vhodnými prahovými hodnotami. Částečně rozbitý rastr pak lze vyhladit pomocí pomalého selektivního Gaussova rozostření. Ukázka kompletního postupu: Budeme předpokládat rastr obrázku 150 LPI (linek na palec), požadované rozlišení 300 DPI (bodů na palec). Obrázek z knihy Cesta do říše Velkého chána, Kvasnička a Hampl, 1998 29

30 KAPITOLA 5. TIPY A TRIKY PRO SKENOVÁNÍ GIMP[78]: Soubor Získat XSane [zařízení] gama nastavíme na 1. Obrázek Velikost obrázku... Poměr 0,5. Rozlišení přepíšeme na 300 (aby se nezměnila informace o velikosti pro tisk). Filtry Vylepšení Vyčistit... Adaptivní: ano, Rekurzivní: ne, Poloměr: 3, Úroveň černé: -1, Úroveň bílé: 256 (ve starších verzích GIMPu lze poslední dvě hodnoty nastavit jen na 0 a 255) Po první aplikaci filtru: Obrázek Barvy Úrovně... gama (prostřední hodnota horní lišty) na 2,2 (pro srgb) Pokud obrázek ještě není čistý, opakujeme Filtry Vylepšení Vyčistit..., dokud nedosáhne požadované čistoty. NetPBM[41]: Jsou zde dvě ukázky s různými filtry. První je včetně změny bitové hloubky pro lepší podání tmavých barev. Velikost rozostřovacího čtverce pro pnmsmooth musí být dostatečná, aby pokryla celou buňku rastru. scanimage --resolution=600 [další parametry] --mode=color \ pnmdepth 65535 pnmscale.5 \ pnmsmooth -size 3 3 \ pnmgamma -cieramp pnmdepth 255 >obrazek.ppm Druhá možnost: scanimage --resolution=600 [další parametry] --mode=color \ pnmscale.5 \ pnmnlfilt.4.8 pnmnlfilt -.3.7 \ pnmgamma -cieramp >obrazek.ppm Obrázek 5.1: Moiré Nerozbijeme-li rastr, může v tisku způsobit moiré. Obrázek 5.2: Čistý obrázek Po rozbití rastru budeme mít jistotu, že se moiré nemůže objevit. Obrázek 5.3: Detail moiré Obrázek 5.4: Ukázka rozbití rastru 5.2 Čistit nebo retušovat? To je dilema každého skeneristy. Každá nečistota se objeví ve skenu jako rušivá tečka. Nepracujeme-li v bezprašné místnosti, občasným problémům se neubráníme ani při pečlivém čištění. Pro čištění je ideální

5.3. NEWTONOVY KROUŽKY A PŘILEPENÉ FOTOGRAFIE 31 látková nebo papírová utěrka, která nepouští chlupy. Čistíme-li vlhkou cestou, nesmí čistič zanechávat mastný povrch ani nesmí vytvářet různé konzervační povlaky. GIMP[78]: Máme dvě možnosti automatickou opravu pomocí Filtry Vylepšení Vyčistit... (je nutné experimentálně najít vhodné nastavení viz též předchozí kapitola) nebo ruční překrytí Razítkem. Obrázek 5.5: Ukázka retuše razítkem Rychlokurs retušování Razítkem: Poblíž vadného místa nabereme tlačítkem Control podobný vzorek. Poté jej přeneseme (s vhodnou velikostí stopy) na vadné místo. Celý obrázek si prohlédneme nejméně v měřítku 1:1 a (na ukázce 2:1). Automatické vyčištění předlohy nám také přijde vhod, pokud náš skener neumí čistě seskenovat fotografie na hrubém papíře a pokryje je řadou bílých plošek. V tomto případě je vhodné skenovat v co nejvyšším rozlišení a experimentovat s automatickým čištěním ihned po naskenování a po případném zmenšení. 5.3 Newtonovy kroužky a přilepené fotografie Přilepení fotografie způsobuje na skenu typické tmavší fleky. Jejich původcem jsou stopy mastnoty na fotografii nebo na desce skeneru, případně vlhkost. Lze se bránit dvojím způsobem buď dokonalým odmaštěním (a vysušením) fotografie a skeneru a snížením přítlaku na fotografii, nebo spolehlivěji, kvalitněji a nákladněji s pomocí těkavého smáčedla. Lze též použít retušovací Razítko. S Newtonovými kroužky (jemnými soustřednými barevnými kruhy) se setkáme hlavně při skenování filmů. Boj s nimi je problematický ve specializovaných prodejnách je možné zakoupit sprej proti Newtonovým kroužkům. 5.4 Černá a bílá lepenková podložka Pokud je jednostranná předloha na tenkém papíře, bílá podložka odstraní ze skenu výraznou kresbu papíru. Častým problémem je též prokopírování rubu předlohy. Tomu lze naopak zabránit podložením předlohy černou podložkou. Výjimkou je levný hlazený papír týdeníků, kde černá podložka nepravidelně prosvítá. Zde volíme vhodný šedý podklad. Výborně nám poslouží ochranné lepenkové desky, mezi něž někteří výrobci vkládají pauzovací papíry a fólie. 5.5 Boj s neostrostí Častým problémem levných skenerů a fotoaparátů je neostrost. Uvádím zde několik metod k částečné kompenzaci tohoto problému. S případným mírným šumem si opět poradí pomalé selektivní Gaussovo rozostření. Pro silné doostření je lépe pracovat s gama nekorigovanými prostory. Při skenování obrázku, který bude doostřován, nezapomeňte na několik pixelů rezervy na okraji obrázku, aby měl filtr dostatek vzorků pro svou činnost. Okrajové pixely nelze doostřit a je vhodné je oříznout.

32 KAPITOLA 5. TIPY A TRIKY PRO SKENOVÁNÍ 5.5.1 Jednoduché doostření Funguje na principu zvýšení odlišnosti jednotlivých pixelů od průměrné hodnoty okolí. Filtr je velmi rychlý, zvýraznění je velmi vysoké. Nepříjemný je pouze zřetelný nárůst šumu v obrázku. GIMP[78]: Filtry Vylepšení Doostřit... 5.5.2 Maskování neostrosti Filtr rozostří obrázek Gaussovým rozostřením, poté zjistí rozdíl oproti původnímu obrázku, vynásobí jej zadaným koeficientem a přičte k původnímu obrázku. Ve výsledku je méně šumu, lze doostřit i více rozostřené obrázky. Je pomalejší než jednoduché zaostření. Při vyšším stupni doostření se však kolem hran objevuje nežádoucí obrys. Alternativní metoda používá Laplaceův operátor. GIMP[78]: Filtry Vylepšení Maskovat rozostření... Convert[87]: -sharpen 5.5.3 Nelineární filtr zvýraznění hran Nelineární filtr s hodnotou alfa mezi 0, 1 a 0, 9. Postupuje podobně jako jednoduché doostření, avšak nepracuje lineárně. Má opět problémy s šumem, ale pro malé stupně rozostření dává velmi dobré výsledky. GIMP[78]: Filtry Vylepšení NL Filtr... NetPBM[41]: pnmnlfilt 5.5.4 Iterativní metody Jde o varianty předchozích metod, avšak doostření není provedeno najednou, ale v několika postupných krocích (s nižšími nastavenými hodnotami). Za cenu zpomalení získáme mírné vylepšení ostrosti. 5.5.5 Analytické metody a doostření neuronovou sítí Tyto metody zde uvádím pro úplnost, neboť se s nimi běžně nesetkáváme. Fyzikální proces rozostření je analyticky nasimulován rovnicemi. Do rovnic je dosazen výstupní obraz jako známá hodnota a původní obraz jako neznámá. Výsledkem je soustava integrálních rovnic o statisících neznámých, která se pak numerickými metodami vyřeší. Jde o výpočetně náročnou metodu, vyžadující navíc vysoké bitové hloubky. V běžné praxi není tato metoda k ničemu, ale software pro zpracování výstupu z tomografu používá právě tento princip. Podobně pracuje i doostření neuronovou sítí. Na modelových případech se síť učí z rozostřeného obrazu vytvářet zaostřený. Pokud se poté vyskytne stejný typ rozostření, neuronová síť jej zaostří. 5.5.6 Ukázky 5.6 Pérovky v šedích, černobíle v barvách Chceme-li skenovat tenké čáry levným skenerem, často se stane, že čáry zcela zmizí. Abychom se tomu vyhnuli, naskenujeme fotografii v šedích, provedeme doostření a teprve potom převedeme obrázek do čárové grafiky.

5.6. PÉROVKY V ŠEDÍCH, ČERNOBÍLE V BARVÁCH 33 Obrázek 5.6: Neostrý obrázek Detail snímku z předchozí kapitoly. Levný skener snímá neostře. Obrázek 5.7: Maskování rozostření Maskování rozostření. Nejsou problémy s šumem, ale na hranách již dochází ke vzniku jemné kontury. (GIMP[78]: Maskování rozostření 5,0/0,5/0) Chceme-li černobíle naskenovat barevnou předlohu, zjistíme, že u mnoha levných skenerů je tmavost barev v černobílém režimu v rozporu s jejich vnímáním (příliš světlá zelená či tmavá červená apod.). Pak je lepší obrázek naskenovat barevně a teprve v počítači jej převést do šedí. V další kapitole dokončíme povídání o skenerech a poté se zaměříme na výstupní zařízení.

34 KAPITOLA 5. TIPY A TRIKY PRO SKENOVÁNÍ Obrázek 5.8: Iterativní maskování rozostření Opakováním maskování rozostření s nižšími hodnotami dosáhneme lepší ostrosti a vznik kontury oddálíme. (vícekrát GIMP[78]: Maskování rozostření 1,7/0,12/0) Obrázek 5.9: Iterativní maskování rozostření v lineárním prostoru Předchozí operace provedená v lineárním prostoru (ostatní ukázky byly připraveny v gama korigovaném prostoru). Je patrná vyšší ostrost ve stínech. GIMP je však pouze osmibitový, a tak na tmavých barvách narostl kvantizační šum. Obrázek 5.10: Doostření Doostřením obrázku se neostrost též částečně kompenzuje. Zároveň však narůstá šum. (GIMP[78]: Doostření 70 %) Obrázek 5.11: Iterativní doostření Opakováním slabšího doostření lze při stejném šumu dosáhnout lepší ostrosti. (mnohokrát GIMP[78]: Doostření 10 %)

5.6. PÉROVKY V ŠEDÍCH, ČERNOBÍLE V BARVÁCH 35 Obrázek 5.12: Nelineární filtr Nelineární filtr. Ostrost je dobrá, opět jsou problémy s šumem. (GIMP[78]: NL Filtr vylepšení hran 0,8/1,0) Obrázek 5.13: Iterativní nelineární filtr Opakování nelineárního filtru s nižšími hodnotami příliš zlepšení nepřináší. (vícekrát GIMP[78]: NL Filtr vylepšení hran 0,33/1,0)

36 KAPITOLA 5. TIPY A TRIKY PRO SKENOVÁNÍ

Kapitola 6 Barevná kalibrace skenerů, OCR Touto kapitolou uzavřeme sérii o skenování návodem k barevné kalibrací skeneru v UNIXu, několika závěrečnými poznámkami a zakončíme přehledem projektů pro OCR s otevřeným kódem. 6.1 Barevná kalibrace skeneru Barevná kalibrace je postup, kdy se vytváří a používá tzv. barevný profil, který popisuje barevné zkreslení daného zařízení. K úpravě barev lze použít barevné kalibrační profily, které převádějí barevný prostor zařízení do nezávislého barevného prostoru nebo barevného prostoru jiného zařízení. Při kalibraci obrázku je možné profily zřetězit (je to výhodné z hlediska minimalizace výpočetních chyb s profily se pracuje v plovoucí řádové čárce, zatímco obrazová data jsou omezená na malý počet bitů). Protože barevné kalibraci chci ještě věnovat některou z následujících kapitol, nyní se omezíme jen na ukázky použití programu SCARSE[148] ve skenovací praxi. Jak velký vliv na podání barev má barevná kalibrace u levných skenerů, se můžete přesvědčit na této ukázce (fotografie jste viděli již v předminulé kapitole). Obrázek 6.1: Sken bez úprav Obrázek bez úprav, pouze s gama korekcí. Obrázek 6.2: Kalibrovaný sken Tentýž obrázek po úpravě programem SCARSE[148] za použití typového barevného profilu skeneru bez dalších úprav. Barevná kalibrace ale patří mezi standardní postupy zejména u vyšší kategorie skenerů. Kvalitní barevné reprodukce by bez ní byly nemyslitelné. Pokud se chystáme obrázek upravovat za pomoci barevného profilu, je nutné, aby vstupní barevný prostor byl přesně stejný, jako byl barevný prostor při tvorbě kalibračního profilu. Pro většinu profilů to bývá prostor lineární. Všechny úpravy úrovní provedeme až po kalibraci! 37

38 KAPITOLA 6. BAREVNÁ KALIBRACE SKENERŮ, OCR Obrázek si naskenujeme v lineárním barevném prostoru, jak nejlépe můžeme, a poté jej budeme kalibrovat. Zatím nelze provádět žádnou z níže uvedených úprav přímo v XSane ani jiném programu z dříve uvedeného přehledu. Parametry programu SCARSE[148] se mohou lišit podle umístění souborů v konkrétní instalaci a typu skeneru, volba -vvv zapne upovídaný režim. Program umí pracovat pouze s formátem TIFF. Při práci může program ohlástit informaci o ztrátě některých barev, které monitor (nebo barevný prostor) již neobsáhne. Není to závada, ale typický problém převodu barevných prostorů. Řeší ho tzv. mapování gamutu. 6.1.1 Ukázky práce s barevným profilem skeneru Převod naskenovaného obrázku do nezávislého barevného prostoru srgb[153] za použití barevného profilu skeneru (UMAX Astra1200S): cmap -vvv -p /usr/share/cms/profiles/scanner/umax_astra1200s.icm \ -r /usr/share/cms/profiles/srgbspac.icm sken.tif vystup.tif Převod naskenovaného obrázku do barevného prostoru monitoru za použití téhož barevného profilu skeneru a modelového barevného profilu monitoru (luminofor typu Trinitron, barevná teplota 5000 K, gama 2,2 tj. vč. dříve zmíněného záměrného snížení hodnoty gama o 10 % v rámci zobrazovacího záměru rendering intent): # vytvoříme pomocný převodní profil ipb -v -c c -olab -E1 labng.icm # podle informace výrobce monitoru (luminofor + barevná teplota) # zvolíme modelový barevný prostor monitoru a převedeme obrázek cmap -vvv -p /usr/share/cms/profiles/scanner/umax_astra1200s.icm \ -r labng.icm -r /usr/share/cms/profiles/display/trin5022.icm \ sken.tif monitor.tif rm labng.icm Převod naskenovaného obrázku do nezávislého barevného prostoru CIE L*a*b* (obrázek v tomto barevném prostoru většina prohlížečů, nejen UNIXových, neotevře, 16bitový CIE L*a*b* pak neotevřou ani mnohé komerční programy pro DTP studia): cmap -vvv -p /usr/share/cms/profiles/scanner/umax_astra1200s.icm \ sken.tif lab.tif Pokud hledáte typový barevný profil pro váš skener, možná ho najdete na stránce profilů na LCMS[107] nebo někde jinde na Internetu. Chceme-li však ještě lepší výsledek, je lépe si vyrobit barevný profil přímo pro náš kus skeneru (a jeho současný stav). K tomu potřebujeme barevnou kalibrační tabulku. Tu je možné zakoupit v prodejnách pro počítačové grafiky nebo jako součást softwarových balíků. Levnou standardní kalibrační tabulku IT 8.7 s podporou všech projektů s otevřeným kódem nabízí Wolf Faust[42] (s ní byly vyrobeny i některé profily na uvedené stránce). Pokud byste o ní měli zájem, je možné se v diskusi k článku dohodnout na společné koupi více kusů (jedná se o maloprodej, dovozce neexistuje). 6.1.2 Studiové skenery Pokud nám opravdu záleží na kvalitě nějakého obrázku, nemůžeme čekat, že náš malý skener za několik tisíc korun bude konkurovat špičkovému zařízení za milióny. Možnosti takového přístroje jsou nesrovnatelné jeho rozlišení je často i řádově vyšší, ostrost je téměř dokonalá a barevné podání je pod neustálou kontrolou obsluhy (doufejme). Proto je u náročné předlohy dobré uvážit, zda se nám vyplatí pokoušet se o naskenování nebo se obrátit na grafické studio, které nám zaručí kvalitu skenu. Sken mohou připravit rovnou v barevném

6.1. BAREVNÁ KALIBRACE SKENERU 39 prostoru CMYK vhodném pro tisk. S některými předlohami nám ani nic jiného nezbyde, neboť domácí skener je bez šancí (fotografie na rastrovém papíře, sken z filmu na plakát apod.). Studiové skenery se dělí na dvě kategorie plošné a bubnové. Plošné pracují s precizní obdobou mechaniky běžných plošných skenerů lineární snímač projíždějící nad předlohou. Bubnové pracují s rychle rotujícím průhledným bubnem, předlohu na něm připevněnou postupně osvětluje paprsek laseru a snímá fotočidlo. Kvalita i cena obou typů je srovnatelná, možnosti mírně odlišné. Cena za sken pro tiskovou velikost A5 (300 DPI) se ve studiích pohybuje kolem 200 Kč, často i se základní retuší. 6.1.3 Malý skript na závěr Chcete s pomocí dostupných programů (a s jejich omezeními) dostat ze skeneru maximum? Připravil jsem pro vás malý skript. Není rozhodně určen na přímé použití nejdříve si jej vložte do editoru a upravte si všechny potřebné hodnoty (profil skeneru, umístění profilů). Pak proveďte několik experimentů, kterými vyberete optimální hodnotu doostření (pokud skener skenuje neostře, vždy jde o kompromis ostrost šum). Samozřejmě, že pro různá rozlišení budete muset vytvořit různé skripty s různou mírou doostření. Skript pracuje jednoduše. Do podadresáře raw naskenujeme obrázky bez jakékoliv korekce a v maximální bitové hloubce. Spustíme skript a v aktuálním adresáři nalezneme zpracované skeny. Tyto obrázky dále zpracováváme podle potřeby (úprava úrovní, retuš, zápis v jiném formátu) jako obvykle. #! /bin/sh echo "PostScan - skript pro zpracování skenů" echo "(c) 2001 Stanislav Brabec, UTX" echo "optimalizováno pro:" echo "skener UMAX Astra 1200S" echo "rozlišení 300 DPI" shopt -s nullglob if [! -d raw ] then echo "Musíte mít adresář raw se skeny ve formátu tiff!" exit 1 fi cd raw for i in *.tif do echo "$i" # iterativní (3 opakované) Laplaceovo zaostření v lineárním prostoru convert -sharpen 1.8x0.4 "$i" "../${i}_1tmp$$.tif" convert -sharpen 1.8x0.4 "../${i}_1tmp$$.tif" "../${i}_2tmp$$.tif" convert -sharpen 1.8x0.4 "../${i}_2tmp$$.tif" "../${i}_1tmp$$.tif" # kalibrovaný převod do srgb cmap -p /usr/share/cms/profiles/astra1200sr.icm \ -r /usr/share/cms/profiles/srgbspac.icm \ "../${i}_1tmp$$.tif" "../${i}_2tmp$$.tif" rm "../${i}_1tmp$$.tif" # snížení barevné hloubky na 8bpp convert -depth 8 "../${i}_2tmp$$.tif" "../$i" rm "../${i}_2tmp$$.tif" done

40 KAPITOLA 6. BAREVNÁ KALIBRACE SKENERŮ, OCR 6.2 OCR Protože v kapitole 1 jsem zcela zapomněl na open source projekty pro optické rozpoznávání znaků (OCR), nyní to napravuji. OCR patří mezi oblíbené práce studentů umělé inteligence. K produkčnímu nasazení je ovšem potřebné dosáhnout alespoň 99,9% rozpoznávání (a i to stále znamená zhruba dva překlepy na stránku). Jiné nároky na tyto programy má obyčejný uživatel, který při datlování všema dvěma neopíše deset řádků ani za deset minut (o překlepech nemluvě), jiné nakladatel, jenž potřebuje načíst (nebo přepsat) tisícistránkovou knihu. Algoritmy OCR se dělí na dvě skupiny neuronové sítě, typické učící se programy, a na heuristické algoritmy, které hledají písmena podle specifických znaků. Dobrý OCR program často obě metody kombinuje. Pod názvem GOCR[15] (nebo též JOCR) se skrývá asi nejznámější projekt z této oblasti. K rozpoznávání znaků používá netriviální heuristiku. K práci nepotřebuje GUI, rychlostí však nevyniká. K tomu, aby uměl česky, mnoho nechybí dopsat podporu pro výstup ISO-8859-2 či Unicode, a vytvořit heuristiku pro háček (heuristiku pro ostatní diakritiku již program obsahuje). Na čistém textu z laserové tiskárny dosahuje téměř použitelného výsledku (jedna chyba na řádek), u strany ze starší knihy je chyba bezmála v každém slově. Velmi zajímavým projektem je Clara OCR[58]. Program je založen na neuronové síti. Podpůrné funce hledají diakritiku, nečistoty a dělí text do slov. Aby podporoval češtinu, chybí mu tabulka české diakritiky (informace o znacích a jejich možné diakritice) a převodní tabulka pro ISO-8859-2. Je též nutné opravit inicializaci XKB. Ze zajímavých funkcí uvedu možnost přeučení známého znaku. Opuštěný xocr[10] je též založený na neuronové síti (podařilo se mi zprovoznit pouze verzi 4.1[6]; není mi jasné, jde-li o freeware[10] nebo shareware[21]). Je ochoten naučit se české znaky, pokud se mu smaže jeho databáze písmen a učí se od počátku. Opět je nutné opravit inicializaci XKB. Uživatelské rozhraní nepřívětivé, v určitých místech padá, na disku však po sobě zanechává rozpoznaný text. Chybí rozpoznávání slitků (musí se učit vcelku) a nečistot; není-li předloha dokonale čistá, je rozpoznávání zcela nepoužitelné jakákoliv nečistota jej zmate na řádek i více. Též požadavky na vodorovnost řádků jsou vysoké. NistOCR[91] je akademický projekt na rozpoznávání ručně psaných textů, který se po šesti letech dočkal další verze. Cal Poly OCR library[21] je další OCR knihovna, napsaná na akademické půdě, které již devět let čeká na využití. Program OCRchie[28] se mi nepodařilo zkompilovat, projekt WOCAR[36] ani nalézt (přeci jenom se to podařilo, hledejte na [18] pozn. redakce). Zajímavé jsou OCR FAQ[55] a OCR Resource List[85]. Pominuli jsme zde specializované OCR projekty, jako je rozpoznávání čínštiny, tibetštiny, čárových kódů či not.

6.2. OCR 41 Obrázek 6.3: Text pro ocr jednak ze slonové kosti, jednak ze zlata, ale t?é json vyrobeny ze samého cedrn, V této t?hliei n?la mat ka K?sela, potomního korint bskébo t?ana, když ho po narození velmi borlivě bledali Bakebiovei, Napaměť zaehránění se Kypselův rod pojmenoval na Kypselovee a t?bl t- et věnovali do Olympie, tehdejšt Ko?tané nazýv v t?- hliee kypselai, Také dítět t byloprý dáno jménopo tomto, První kroky jsou vždy těžké. (text z knihy Pausaniás: Cesta po Řecku, Praha, 1972)

42 KAPITOLA 6. BAREVNÁ KALIBRACE SKENERŮ, OCR

Kapitola 7 Tiskárny, tiskový proces Pokud není výsledek určen jen pro obrazovky, stojí tiskový proces na konci grafického řetězce. Touto kapitolou se přesuneme k výstupním zařízením a tisku. Abychom věděli, co, proč a jak připravujeme, přiblížíme si v hrubých rysech tiskový proces a přípravu podkladů pro něj. Dnes se podíváme na různé možnosti přípravy tiskovin. Nebudeme se zabývat detaily, ale spíš tím, jaký má technologie vliv na nás, počítačovce. Běžná výstupní zařízení se dělí do několika kategorií s odlišným způsobem přípravy tiskovin. Dále je rozdíl mezi přístrojem, který nám stojí doma na stole (musíme používat operační systém, pro který existuje ovladač, nebo si vybrat zařízení, které funguje v Linuxu), nebo někde ve studiu (v tom případě musíme soubor přinést tak, aby ho přečetli médiem počínaje a tvorbou souboru konče). 7.1 Počítačové tiskárny a digitální tiskové stroje Jedná se o periférie, které se napojují přímo na počítače. Tisk na nich se vyplatí v malých sériích až do několika set kusů. Některé používají svůj vlastní proprietární protokol, a tudíž se stávají ve světě otevřeného kódu nepoužitelné. Ostatní většinou používají některý z běžných jazyků tiskáren: PJL (Printer Job Language) jazyk pro nastavení tiskárny a řízení tisku patří do kategorie JCL (Job Control Language). Slouží pouze pro nastavení tiskáren (podavač, dávkování toneru, čítač stránek, displej tiskárny apod.). Tisknout neumí (na to volá interpreter jiného jazyka např. PCL, PXL nebo PostScriptu). Je užitečné se seznámit s jeho základy. Jazyk je podporován tiskovými procesory (např. ifhp[52]) a různými grafickými nastavovacími panely. PCL (Printer Control Language) nejběžnější jazyk levných tiskáren (často v kombinaci s PJL), zavedený firmou Hewlett-Packard[84]. PCL je poměrně nízkoúrovňový jazyk pro práci s textem a grafikou. Pro znakové sady používá formát Intellifont, nověji též TrueType. Jazyk je podporován množstvím aplikací (např. Ghostscript[77], pbmtolj z NetPBM[41], ovladače v TEXu). PXL (Printer extended Language) je pokračovatelem těchto tiskových jazyků. Umí již pracovat s grafickými elementy nezávislými na rozlišení. Podporuje jej například Ghostscript[77], tiskne rychleji než PCL, ovšem podpora složitější grafiky není (zvlášť v jeho starších verzích) vhodná pro ostrý provoz. Specifikace jazyků PCL/PXL/PJL lze objednat jako knihy, na Internetu kolují více či méně kompletní popisy těchto jazyků. Nejsme-li vývojáři ovladačů, vystačíme si v praxi jen s několika málo příkazy pro nastavení tiskárny. Esc-P2 standard, vytvořený firmou Epson[72]. Schopnostmi se podobá PCL. Podporují jej např. ovladače pro Ghostscript[77] nebo escputil z balíku gimp-print[25]. 43

44 KAPITOLA 7. TISKÁRNY, TISKOVÝ PROCES PostScript jazyk vytvořený firmou Adobe[46]. Na rozdíl od výše uvedených jazyků tiskáren se jedná o plnohodnotný programovací jazyk pro popis stran, který umí zcela odstínit výstupní zařízení od tiskové úlohy. Jeho rozšíření na levné tiskárny bránila do nedávné doby cena dostatečně rychlých procesorů (a zřejmě i licenční politika názvu PostScript). Pro své schopnosti se přesto stal populárním nejen v tiskárnách, ale i jako přenositelný jazyk pro popis stran. Jeho popis[33] je volně dostupný. Post- Script je zároveň základním tiskovým jazykem v UNIXu a věnujeme mu proto některou z následujících kapitol. PDF (Portable Document Format), další formát z dílny Adobe[46], sice zřejmě není nativním jazykem žádné tiskárny, ale vzhledem k PostScriptovému paradoxu proprietárních operačních systémů (viz dále) se PDF často stává jedinou možností, jak dodat soubor pro digitální tiskový stroj. HP-GL (Hewlett-Packard Graphics Language) se do tiskáren dostal spíš z obchodních důvodů. Na řízení tiskáren se sice nehodí, ale zato tiskárna může sloužit jako emulátor souřadnicového plotru. Pracuje s ním hp2xx[79]. Narozdíl od proprietárních systémů nejsme při výběru tiskárny pro grafickou práci omezeni na tiskárny vybavené PostScriptem. Ghostscript[77] volaný z tiskového programu zastane stejnou úlohu. Je však třeba zvolit tiskárnu s dostatečnou kapacitou paměti (A4 při 600 DPI vyžaduje pro jemnou celostránkovou grafiku zhruba 5 MB paměti). 7.2 PostScriptový paradox proprietárních operačních systémů Tento paradox nám může znepříjemnit život například přijdete-li si vytisknou pár stránek ze souboru na tiskárně A3 ve studiu, doma tuto nemajíce. Uživatel UNIXu si nedokáže představit operační systém bez příkazu cat, a tak mu může připadat zcela absurdní, že v mnoha studiích dostane tuto odpověď: PostScriptový soubor přece nelze na naší PostScriptové tiskárně vytisknout! Mnozí uživatelé Windows považují vše, co se děje v okně MS-DOSu, za černou magii, a proto nemusí být vůbec jednoduché přemluvit pracovníka studia k použití příkazu copy. Podobně pohlíží mnohý uživatel Apple na soubory zdarma stažené z Internetu, byť by uměly jen zkopírovat soubor na tiskárnu. Obávám se, že s vývojem uzavřených systémů těchto paradoxů přibývá... 7.3 Ofsetový tisk Je nejběžnějším tiskovým systémem pro větší a velké náklady. Základní předlohou pro ofsetový tisk je tzv. kovolist. Je potažen světlocitlivou vrstvou a po expozici a odleptání se přenáší ulpělá tisková barva (z neosvětlených a neodleptaných míst) přes gumový válec na papír. Existují dva způsoby, jak připravit kovolist. Pokud máme některou ze speciálních High-End laserových tiskáren (za cenu 200 000 Kč a výš), stačí vložit kovolist do podavače tiskárny... Pro většinu z nás však bude aktuální příprava kontaktní kopie na průhledném materiálu. Ta putuje do tiskárny na montážní stůl, kde naše stránky poskládají do podoby vhodné pro tisk archů. Aby se zabránilo neostrosti vlivem rozptylu světla uvnitř fólie, musí být předloha na spodní části fólie, tzn. zrcadlově převrácená. Fólie musí mít dobré krytí černé barvy a zároveň musí být dostatečně průsvitná (to vše v ultrafialové barvě). 7.4 Sítotisk Přestože je technologie přenosu předlohy jiná, příprava je stejná, s jediným rozdílem předloha není zrcadlově převrácená. Sítotisk se používá na potisk jiných než papírových materiálů.

7.5. HLUBOTISK, LITOGRAFIE, RAŽBA, TAMPÓNOVÝ TISK 45 7.5 Hlubotisk, litografie, ražba, tampónový tisk Jedná se o další možné technologie (nejen tiskové). Opět připravujeme předlohy na průhledné fólii. Zde se však technologie různí, a proto si předem ověříme, zda není třeba je zrcadlově převrátit nebo tisknout inverzně. 7.6 Copy printer Jedná se o nejméně náročnou tiskovou technologii je to vlastně zvláštní druh kopírky navržený pro vyšší počty kopií. Pokud neumí tisknout přímo ze souboru, tiskne většinou z předlohy na papíře. Papír by měl být bílý bez tmavých vláken, zrcadlově se nepřevrací. 7.7 Příprava průhledné předlohy pro ofsetový tisk Kvalitu krytí stoprocentně splňuje osvitová jednotka, která je pro předtiskovou přípravu stavěná a jejíž laser svítí předlohy na černobílý filmový pás. Vzhledem k její ceně a prostorovým požadavkům většina z nás v takovém případě použije služeb osvitových studií (za jeden plát A4 zaplatíme kolem 70 Kč, cena se liší podle místa a rozlišení). Pokud se jedná o barevnou stránku, vynásobíme si částku čtyřmi (každý barevný výtažek znamená jeden plát). Standardním komunikačním jazykem osvitových jednotek je PostScript (často se nachází ve vedlestojícím počítači). Slevíme-li z nároků, můžeme se spokojit i s průhlednou fólií z laserové (nebo LED) tiskárny. Za cenu nižšího rozlišení, horšího podání fotografií (zvlášť ve světlých odstínech) snížíme náklady na stránku A4 zhruba na 12 Kč (cena fólií kolísá mezi 8 30 Kč). Kvalita však bohatě stačí na běžné tiskoviny vizitky, noviny s obrázky atd. Při nákupu fólií je třeba rozlišovat mezi fóliemi pro zpětný projektor a fóliemi pro tiskové předlohy. Chceme-li ušetřit ještě víc, můžeme předlohu natisknout na pauzovací papír z laserové (nebo LED) tiskárny. Oproti fólii rastry poněkud ztratí na pravidelnosti, velké plochy jsou hůř vykryté. Kvalita však stačí na běžnou knižní produkci i jednodušší tiskoviny. Cena materiálu poklesne zhruba na 3 Kč za stránku A4. Důležité je před tiskem nastavit maximální hustotu tisku, kterou tiskárna umí. To je možné buď pomocí specializovaného programu, nebo předřazením následující hlavičky v jazyce PJL (<ESC> je znak Escape; různé tiskárny mají různou nejvyšší hodnotu DENSITY tiskárna to sdělí příkazem @PJL INFO VARIABLES) před vlastní tiskový soubor PCL: <ESC>%-12345X@PJL COMMENT maximal density for HP LaserJet 6P @PJL RESET @PJL SET ECONOMODE=OFF @PJL SET DENSITY=5 @PJL ENTER LANGUAGE=PCL Je třeba upozornit, že ne každá laserová tiskárna vytváří dostatečně kryté předlohy. Záleží na tom, jaký toner se v tiskárně používá. Vrstva toneru, která na kancelářském papíře vypadá jako dokonale černá, může být na pauzovacím papíře natolik průsvitná, že jej nelze použít k přípravě kovolistu. Nechcemeli experimentovat se ztmavováním pomocí acetonových par, je lépe koupit tiskárnu, která dává dostatečně krytý výsledek. 7.8 Tiskové značky Při tisku je třeba předlohu opatřit několika druhy značek. Většinou se nacházejí mimo formát publikace a při zpracování budou oříznuty. Ořezové značky, jak název napovídá, slouží ke správnému nastavení řezačky. Nacházejí se v rozích dokumentu. Soutiskové značky jsou nutné pro správný soutisk barev. Jedná se

46 KAPITOLA 7. TISKÁRNY, TISKOVÝ PROCES Obrázek 7.1: Ukázka tiskových značek o křížek nacházející se poblíž středů hran. Bigovací a středové značky slouží k nastavení správného místa ohybu papíru v bigovacím stroji. Barevné značky pak slouží ke zběžné kontrole barev. Popisek informuje montážníka o čísle stránky a barvě. Ke kontrole úplnosti knihy se občas používají archové značky. Pokud program neumí značky generovat (docela často), je možné je do programu nakreslit ručně. Lze též použít různé značkovací PostScriptové hlavičky. Nejlépe je na tom TEX, kde je téměř ke každému formátu na výběr několik programů pro tvorbu značek. 7.9 Archová montáž Vezměte si arch papíru. Přeložte jej napůl podél kratší osy a pak ještě jednou kolmo k prvnímu skladu. Rozevřete jej jako knihu, prvním skladem nahoru. Vezměte druhý arch, toto zopakujte a položte jej na první. Nyní očíslujte stránky složeného sešitku od 1 do 16 a oba archy poté rozložte. Před sebou máte ukázku nejběžnější archové montáže. U ofsetového tisku tuto práci provádí většinou montážník. Digitální montáž je však rychlejší a u digitálního tisku je dokonce nutná. V UNIXu máme hned několik možností, jak archovou montáž provést. Univerzálním nástrojem pro strukturovaný PostScript jsou psutils[67]. V TEXu pak máme možnost provést archovou montáž úpravou výstupní rutiny (umí to např ConTEXt, ale i jiné formáty). Pro správný výsledek montáže je třeba zadat ořez v hlavě stránky (typicky 3 mm na každou stranu) a hodnotu, o kterou je nutné od sebe oddálit vnější stránky archu (typicky 0,3 mm na list). Při přípravě brožovaného výtisku ještě přidáváme 2 3 mm na ořez ve hřbetu. Pořadí stran pro brožování se též může lišit od výše uvedeného.

7.9. ARCHOVÁ MONTÁŽ 47 Obrázek 7.2: Ukázka archové montáže

48 KAPITOLA 7. TISKÁRNY, TISKOVÝ PROCES

Kapitola 8 PostScript Programovací jazyk PostScript se stal univerzálním jazykem pro komunikaci grafických aplikací. Používají ho tiskárny a tiskové procesory, je základním (a dlouhou dobu byl jediným) výměnným formátem vektorové grafiky, v UNIXu je téměř výhradním jazykem pro tisk z aplikací. Proto o něm budou následující kapitoly. Nečekejte však učebnici (ta by vydala na celou knihu), ale spíše rady k jeho užívání. Jazyk PostScript byl navržen firmou Adobe[46] v roce 1985 jako jazyk pro popis stránek. Díky svým rozsáhlým možnostem se však brzy stal i formátem používaným k přenosu obrázků mezi aplikacemi. Jedná se o interpretovaný jazyk, založený na práci se zásobníky. Jeho základními grafickými objekty jsou pak cesty, které lze obtahovat a vyplňovat, bitové mapy, rastry, vzorky a písma. Téměř celá jeho specifikace je volně dostupná na Internetu v publikaci PostScript Language Reference Manual (PLRM)[33]. Interpret PostScriptu postupně prochází kód, interpretuje jeho příkazy a provádí vykreslování (rastrování) do výstupní paměti. Interpretu se proto také někdy říká RIP (Raster Image Processor) a zmíněnému procesu pak slangově ripování. Pro ty, kteří PostScript nikdy neviděli, uvádíme lehce komentovanou malou ukázku. Standardní souřadný systém začíná vlevo dole. %! % nastavení velikosti média 1 dict dup /PageSize [40 40] put setpagedevice % definice zkratky pro příkaz curveto /c { curveto } def % uložíme na zásobník dva parametry % příkaz translate je vyzvedne a provede % nastavení souřadného systému -15.7606-35 translate % nová cesta newpath % posun pera 46.3294 35 moveto % několik Bézierových křivek: % curveto odebírá ze zásobníku šest parametrů: % x1 y1 x2 y2 x3 y3 % pero se přesune do [x3,y3] % s~použitím řídících bodů [x1,y1] a [x2,y2] 29.2607 39.8018 16.8406 59.5148 15.7606 65.2856 c 17.6206 70.885 22.9607 73.9362 25.5407 74.355 c 27.5207 73.0986 31.7207 67.0067 32.5607 64.2173 c 31.3007 62.3182 29.0207 61.0105 27.4007 60.3524 c 49

50 KAPITOLA 8. POSTSCRIPT 27.8207 58.6772 35.5594 48.1696 41.1854 46.6044 c 41.7839 48.2297 43.1597 50.5775 45.0735 51.8417 c 47.8843 51.0591 53.9883 46.8451 55.305 44.9188 c 54.9459 42.3302 51.8936 36.9724 46.3294 35 c % uzavření cesty closepath % vyplnění oblasti ohraničené cestou fill % vykreslení stránky showpage Obrázek 8.1: Výstup ukázky PostScriptu Další specifikační publikací je kniha Type 1 Font Format. Tento formát byl dlouho tajný. V roce 1988 firmě Adobe[46] hrozil bojkot firem Microsoft[109] a Apple[50]. Dlouholetý boj skončil kompromisem. Formát Type 1 byl uvolněn, mezitím však zmíněné firmy vytvořily další formát písem TrueType. Ten se na oplátku dostal do PostScriptu pod označením Type 42. Třetí knihou, která je plná ukázek, je Adobe PostScript Tutorial and Cookbook (s výjimkou příkladů k dispozici pouze jako kniha). Přestože PLRM je v podstatě návodem na napsání interpretu PostScriptu, firma Adobe nikdy neuvolnila referenční implementaci. 8.1 PostScript Level 1, PostScript Level 2, PostScript LL3 Ve vývoji PostScriptu existují tři mezníky. PostScript Level 1 (1985): Jazyk pro popis stran pro černobílé tiskárny. Dodnes narazíme na zařízení, která podporují jen PostScript Level 1. PostScript Level 2 (1990): Ještě před vznikem tohoto standardu se objevila nutnost rozšíření. Vznikly tak implementace jazyka Level 1 s podporou barev, stejně jako různá rozšíření závislá na zařízení (PostScript Level 1 neměl příkazy pro změnu velikosti stránky, nastavení podavačů či ovládání řezaček). Aby se napříště zabránilo živelnému přidávání příkazů, nebyly žádné z těchto příkazů (s výjimkou podpory barev) zaneseny do nového standardu (nicméně ve většině interpretů doposud tyto příkazy jsou), ale namísto toho vznikla nová datová kategorie zdroje. PostScript tak mohl být snadno a kompatibilně rozšířen o podporu speciálních funkcí. Navíc přibyla možnost kódovacích a kompresních filtrů (jpeg DCT, lzw, CCITT aj.), které umožnily významně zmenšit zvlášť velikost bitmap. Přibyla také podpora nezávislých barevných prostorů. Největší vnitřní změnou Level 2 je pak podpora úklidu paměti (Garbare Collection), celkový počet změn je však o mnoho vyšší. PostScript LL3 (Language Level 3, 1997): Do LL3 přibylo mnoho dalších funkcí. Mezi hlavní patří podpora přechodů (Gouraudovo stínování), zobecnění rastrovacích funkcí (funkce SuperScreen čtyřnásobně zvýší počet vykreslených odstínů na tiskárně s malým rozlišením), interpretace mnoha dalších typů písem či práce s vícesložkovými barevnými prostory. Pro nás je též důležité, že se do standardního kódování znakových sad dostaly i české znaky.

8.2. CO POSTSCRIPT NEUMÍ 51 Display PostScript (DPS): Ještě před vznikem Level 2 vznikla speciální mutace PostScriptu pro obrazovkové servery. Většina jeho funkcí byla zařazena do Level 2, ale několik dalších, které nemají pro tisk význam, zůstalo jako rozšíření (podpora více vláken, rolování v oknech apod.). Portable Document Format (PDF): Interpretace postscriptového kódu je poměrně složitá a relativně pomalá. PostScript je navíc textový formát, což zvyšuje velikost souborů. Formát PDF přebral ideu popisu stránky, ovšem vyřadil všechny programovací konstrukce. Naproti tomu přidal podporu komprese celého kódu, kryptografie, náhledů stran, hypertextových odkazů, apletů, barevných profilů ICC[60] aj. Stal se de facto standardem pro vystavování zformátovaných dokumentů na síti. 8.2 Co PostScript neumí Od počátku byl PostScript navrhován tak, aby při své práci nemusel udržovat celý obrázek v maximální bitové hloubce, ale pouze v bitové hloubce výstupního zařízení. Do obrazové paměti se ukládá již vyrastrovaný obraz. To v případě typického jednobitového výstupu znamená šestnáctinásobnou úsporu paměti. To, co jednou do výstupní paměti vykreslí, již nikdy nečte zpět. Z tohoto návrhu však vyplývají jistá omezení: PostScript nepracuje s průhledností. Je to jednoduchý fakt. Předchozí objekt buď zcela překryje, a nebo ho nechá beze změny. Z nuly či jedničky ve výstupní paměti nelze v případě průhlednosti odvodit novou hodnotu. PostScript nepodporuje Floyd-Steinbergův rozptyl. Algoritmy difúze chyby, ke kterým FS patří, totiž vyžadují znalost výsledné hodnoty okolních pixelů ve vstupní bitové hloubce, což PostScript neumožňuje. Místo FS rozptylu je však možné použít tzv. stochastické rastry, které dávají podobný výsledek, ale pracují na jiném principu. Pokud na FS rozptylu trváme, je možné ho implementovat jako zákaznickou rastrovací funkci (ovšem s obrovskými paměťovými nároky). 8.3 PostScript a Ghostscript Řekne-li se PostScript a UNIX, nelze neříci i Ghostscript[77]. Jeho vývoj je podporovaný firmou Aladdin Enterprises[48] a nyní též firmou Artifex Software[51] (ta vyvíjí komerční OEM verze). Největší část kódu napsal L. Peter Deutsch. Dnes zahrnuje implementaci PostScriptu Level 2 a téměř kompletní implementaci LL3. Ghostscript si poradí i s PDF a DPS. Většina ovladačů je na vysoké úrovni, připravena na ostré nasazení v praxi. Ghostscript používá i mnoho jiných aplikací tiskové ovladače, převodníky grafických formátů, grafické servery, prohlížeče a další. Možnosti Ghostscriptu však nekončí pouhým rastrováním. Pomocné nástroje umějí mnohem víc: zjednodušovat postscriptový kód, převádět mezi PostScriptem, zapouzdřeným PostScriptem a PDF, počítat ohraničovací rámy apod. 8.4 Strukturovaný PostScript, DSC Postscriptové ovladače a prohlížeče často potřebují provádět s postscriptovým souborem různé operace vybrat jednu stránku, rotovat ji, rozdělovat stránky podle vlastností... Samotný postscriptový kód v tom není nijak nápomocen, a tak by musela každá taková aplikace rozumět celému postscriptovému kódu, interpretovat ho a poté vytvářet nový kód, což by bylo značně nepraktické. Naštěstí je většina postscriptových kódů vytvářena strojově a lze je poměrně snadno sestavit tak, aby se na začátku souboru nacházel definiční blok (je to poněkud nepřesné označení, definiční blok se ještě dělí na další pododdíly) a každá stránka tvořila samostatný objekt (a na konci byl ukončovací blok). Aby i nepostscriptové aplikace mohly snadno získat informaci o této struktuře, přidají se do PostScriptu komentáře, to jsou ony DSC (komentáře

52 KAPITOLA 8. POSTSCRIPT struktury dokumentu Document Structure Comments). Pokud dokument splňuje podmínku nezávislosti stran a zároveň obsahuje DSC, říkáme, že se jedná o strukturovaný PostScript. Takový PostScript můžete prohlížet napřeskáčku v prohlížeči, vybrat pro tisk jen zvolené strany apod. Většina aplikací generuje právě takový PostScript (pozor na některé, jejichž výstup se sice tak tváří, ale ve skutečnosti strukturovaný není např. výstup z MS-Wordu). Zde je ukázka strukturovaných komentářů PostScriptu (vytvořeny programem dvips podle starší verze DSC-2.0): %!PS-Adobe-2.0 %%Creator: dvips(k) 5.78 Copyright 1998 Radical Eye Software... %%Title: popisky.dvi %%Pages: 1 %%PageOrder: Ascend %%BoundingBox: 0 0 936 86 %%DocumentFonts: CenturyExpdCEBTBoldItalic CenturyExpdCEBTItalic %%EndComments %DVIPSCommandLine: dvips -Plino1200 -D1800 -tfilm1 popisky %DVIPSParameters: dpi=1800, compressed %DVIPSSource: TeX output 2001.09.24:2244... Zde se nacházejí definiční hlavičky... %%EndProlog %%BeginSetup... Zde se nacházejí nastavovací hlavičky... %%EndSetup %%Page: 1 1... Zde se nachází popis stránky 1... %%Trailer... Zde se nachází ukončovací sekvence... %%EOF Pokud soubor naproti tomu nezačíná %!PS-Adobe-, ale třeba jen %!, značí to, že se jedná o nestrukturovaný PostScript. V dalších kapitolách si ještě povíme více o EPS, PPD, mylných názorech na PostScript a o nekompatibilitách mezi aplikacemi.

Kapitola 9 Postscriptové formáty a písma Kolem Postscriptu se rojí tolik názvů, až se zdá, že se nejedná o jeden jazyk. Vysvětlíme si, čím se od běžného PostScriptu liší EPS, k čemu jsou soubory PPD, AFM a jaké existují formáty písem. Na ukázce si předvedeme, jak se jednotlivé formáty liší. 9.1 EPS, EPSF, EPSI Obyčejný PostScriptový soubor, jaký se používá na tisk, není příliš vhodný pro zařazení do jiného dokumentu v jeho hlavičce se totiž většinou nacházejí příkazy pro nastavení zařízení a souřadného systému, které by narušily celý zbytek dokumentu. Proto vznikl nový formát je jím zapouzdřený PostScript (Encapsulated PostScript EPS). Od normálního strukturovaného PostScriptu se příliš neliší jediný zásadní rozdíl je v tom, že neobsahuje žádné příkazy pro nastavení zařízení či souřadného systému a nemanipuluje s interpretem tak, aby to ovlivnilo zpracování ostatních částí dokumentu. Některé PostScriptové příkazy tedy formát EPS zcela zakazuje, jiné omezuje. Aplikace pro EPS připraví prostředí (souřadný systém) tak, aby byl obrázek ve správné poloze a velikosti. K tomu jí napomáhá informace o ohraničujícím rámu (Bounding Box), která se nachází ve strukturovaných komentářích každého EPS souboru. Pokud nějaká aplikace jazyku PostScript nerozumí (většinou se to týká proprietárních programů), nedokáže zobrazit náhled PostScriptu, a ta, která mu rozumí, zobrazí předrastrovaný náhled rychleji. Proto vznikly varianty formátu EPS obsahující náhled. Jsou to EPI (přikládá náhled binárně v běžném obrázkovém formátu ve formě dalšího zapouzdření EPS souboru; umí s ním pracovat epstool[65], dnes součást balíku gsview[66]), a EPSI (přidává náhled ve formě PostScriptového komentáře; umí jej např. pbmtoepsi z NetPBM[41] a hlavička ps2epsi z Ghostscriptu[77]). Pokud soubor začíná %!PS-Adobe-verze EPSF-verze, značí to, že se jedná o zapouzdřený PostScript. Protože EPS je formou strukturovaného PostScriptu, aplikace se mohou orientovat podle strukturovaných komentářů. Pokud například použijeme dva obrázky se stejnými definičními hlavičkami nebo písmy, aplikace může tyto přesunout mezi své vlastní hlavičky a do postscriptového souboru je zařadit pouze jednou. 9.2 PPD Přestože PostScript je jazyk na zařízení nezávislý, je občas dobré znát možnosti a doporučené nastavení konkrétního zařízení. K tomu slouží speciální (i lidsky čitelný) formát popisu postscriptové tiskárny (PPD PostScript Printer Description). V něm si aplikace najde informaci o velikosti a typu média, rozlišení, bitové hloubce, barevnosti, rastrech, osazené paměti, podavačích a podobně. Na následujících řádcích ze souboru PPD se například dozvíme, že tiskárna tiskne implicitně na papír formátu Letter, ale v uvozovkách uvedená postscriptová sekvence ji přepne na formát A4. 53

54 KAPITOLA 9. POSTSCRIPTOVÉ FORMÁTY A PÍSMA *DefaultPageSize: Letter *PageSize A4: "1 dict dup /PageSize [595 842] put setpagedevice" Aplikace si tuto informaci přečte a do postscriptového souboru pak přidá následující řádky: %%BeginFeature: *PageSize A4 1 dict dup /PageSize [595 842] put setpagedevice %%EndFeature 9.3 AFM Podobně jako u strukturovaného PostScriptu je i u písem potřebné, aby aplikace měly podrobné informace o postscriptovém písmu, které mají použít. Je třeba znát velikost jednotlivých písmen, páry pro jejich podřezávání (kerning), svaznicové skupiny, důležité písmové linie, doporučené mezerování, názvy znaků a jejich umístění v kódovém vektoru souhrnně se všechny tyto informace nazývají metrika písma. K tomu slouží další formát Adobe Font Metrics (AFM). Tento soubor je jediným zdrojem některých informací (svaznice, podřezávání), které vlastní postscriptový interpret nepoužívá. Proto by měl být (ale není) součástí distribuce všech písem. Formát Multiple Master (umožňuje vygenerovat několik písmových řezů z jediného zdrojového kódu) má speciální formát metriky MMAFM. Pokud aplikace neumí písma Multiple Master použít přímo, lze pomocí mmtools[99] vygenerovat jejich instanci. 9.4 Formáty písem V závorce je vždy uvedena verze PostScriptu, ve které byl specifikován. 9.4.1 Type 0 (2) Kompozitní písmo sestavené hierarchicky z jiných písem. Používá se hlavně pro složitá písma, japonštinu a čínštinu. 9.4.2 Type 1 (1) Standardní kódovaný postscriptový formát. Běžný distribuční formát většiny písmolijen. Úsporný binární formát.pfb interpret PostScriptu nepřečte přímo, ale je jej třeba nejdříve dekódovat (Ghostscript to umí, pokud jej čte ze samostatného souboru). Na nízkoúrovňovou manipulaci s těmito písmy slouží t1utils[99]. Pokud písmo splňuje ještě další omezení, která umožní používat jej i v aplikacích bez kompletního postscriptového interpretu (např. rastrovací procesory okenních systémů), mohou nést příponu.pfa, binárně zapouzdřené.pfb. Podobně je omezen i formát Multiple Master. Obecné písmo Type 1 mívá příponu.gsf. Písma Type 1 mohou být buď obrysová, kdy zadáváme obrysovou linii písma (většina běžných písem), nebo čárová, kdy zadáváme středovou linii písma a tloušťku čáry (např. písmo Courier). Kódovaný binární formát je v podstatě velmi omezenou obdobou běžného PostScriptu, obsahuje však navíc některé speciální funkce. Nejdůležitější z nich je zeštíhlení (hinting) písma pokud je obrysové písmo vykreslováno v malém rozlišení, mohlo by se snadno stát, že tloušťky dvou čar, které byly zamýšleny jako stejně tlusté, se budou vlivem numerických chyb lišit. Proto se do kvalitních písem vkládají speciální informace o zamýšlených tloušťkách důležitých čar. Následující ukázka je dekryptovaná definice písmena I v písmu Adobe Helvetica. Pro větší názornost jsem některé operátory rozepsal.

9.4. FORMÁTY PÍSEM 55 /I { % znakový vektor (metrická informace) 91 278 hsbw % vertikální zeštíhlení, spodní okraj písmena (rozsah <0,21>) 21-21 hstem % vertikální zeštíhlení, horní okraj písmena (rozsah <698,718>) 718-20 hstem % horizontální zeštíhlení, dřík (rozsah <0,97>) 0 97 vstem % podobnými operátory jako v~běžném PostScriptu vykreslíme obdélník % (souřadnice jsou relativní) 97 718 rmoveto -97 hlineto -718 vlineto 97 hlineto closepath % konec znaku endchar } def 9.4.3 Type 2 (3) Compact Font Format (CFF) 9.4.4 Type 3 (1) Formát písma popsaný standardními postscriptovými operátory. Je poměrně jednoduché jej vytvořit, a tak je oblíbeným formátem pro jednoduchá nebo bitmapová písma. V komerční oblasti se používá na barevná akcidenční písma. Ukázku tohoto písma najdete na konci této kapitoly mezi příklady. 9.4.5 Type 9, 10, 11, 32 (3) tzv. CIDFonts. 9.4.6 Type 14 (3) Formát Chameleon. 9.4.7 Type 42 (3) a TrueType Type 42 je zapouzdřený soubor TrueType. Type 42 se nepoužívá k distribuci, ale bývá většinou konvertovaný při tisku z nativních TrueType písem. Ghostscript k tomuto zapouzdření používá hlavičku gs ttf.ps. Ke konverzi TrueType na Type 1 (potřebné pro nižší verze PostScriptu) pak slouží ttf2pt1[113]. Písma TrueType jsou oblíbená zvlášť v desktopech. Zdá se, že pro zařízení s malým rozlišením mohou dávat lepší výsledky než Type 1. 9.4.8 Intellifont Jde o starší vektorový formát firem Agfa a Compugraphic, používá křivky 2. stupně a v PostScriptu není přímo podporován. Místo podřezávání používá jakýsi obrysový hřeben, kterým odměřuje vhodnou vzdálenost mezi písmeny. Má podporu pro zeštíhlení. Kódování znaků je šestnáctibitové a zcela atypické. Stal se nativním formátem systému AmigaOS a tiskáren s jazykem PCL, dnes je však již na ústupu.

56 KAPITOLA 9. POSTSCRIPTOVÉ FORMÁTY A PÍSMA 9.4.9 METAFONT Jde o formát, který vznikl během vývoje programu TEX. V PostScriptu není přímo podporován jeho možnosti jsou nesrovnatelně vyšší, než je tomu u kteréhokoliv jiného jazyka jde nejen o plnohodnotný programovací jazyk, ale má i plnou podporu vektorové aritmetiky, všech typů Bézierových křivek, umí pracovat s dynamickými štětci libovolných tvarů, a tak písma, která je nutné jinde popisovat jako obrysová, lze v METAFONTu popsat jako vykreslená. Též možnosti zeštíhlení jsou lepší (popis písmena je svázán s jeho grafickým záměrem). Zatímco písma Multiple Master mají zřídkakdy více než dva stupně volnosti, rodina písem Computer Modern vytvořená v METAFONTu jich má 57! Za tyto možnosti ovšem platí výpočetně náročným rastrováním písmen a obtížným převodem do běžných vektorových formátů. Většina aplikací je dodnes převádí na bitové mapy pro příslušné koncové zařízení. Většina písem ve formátu METAFONT je volně dostupná na Internetu (písma snad pro všechny jazyky i původní písmová tvorba, jakou je například Computer Modern, Concrete Roman, Pandora či Euler od Hermanna Zapfa). Komerčně jsou pak za rozumné ceny dostupná i písma pro tak speciální znakové sady, jakými jsou např. klasická arabština či starořečtina. V našem seriálu se k METAFONTu ještě vrátíme. V roce 1978 byl zřejmě prvním digitálním písmovým formátem a dodnes je tím nejsilnějším nástrojem. Kromě těchto formátů ještě existují některé speciální formáty (např. pro 3D písma), ty však v běžné typografii nevyužijeme. 9.5 Krátké příklady Ti, kteří si zkusili zobrazit příklad telefonu z minulé kapitoly, zjistili, že některé postscriptové prohlížeče obrázek neukáží, zatímco samotný Ghostscript ano. Bylo to právě proto, že se jednalo o nestrukturovaný PostScript. S tímto obrázkem telefonu jsem dnes připravil několik příkladů, které ilustrují, jak se kód mírně mění, aby vyhověl definici různých formátů. Zároveň ukazují, že manipulace s jednoduchým PostScriptovým kódem není žádná složitá magie. Nestrukturovaný (ale komentovaný) PostScript[144] jste viděli v minulé kapitole. Strukturovaný PostScript[143] (obsahuje navíc strukturované komentáře, mezi nimi i informaci o ohraničujícím rámu, určenou pro prohlížeče): %!PS-Adobe-3.0 %%Creator: hand made %%Title: Telefon %%Pages: 1 %%PageOrder: Ascend %%BoundingBox: 0 0 40 40 %%HiResBoundingBox: 0 0 39.5444 39.355 %%EndComments /c { curveto } def %%EndProlog %%BeginSetup %%BeginFeature: *PageSize 40x40 1 dict dup /PageSize [40 40] put setpagedevice %%EndFeature %%EndSetup %%Page: 1 1-15.7606-35 translate newpath 46.3294 35 moveto

9.5. KRÁTKÉ PŘÍKLADY 57 29.2607 39.8018 16.8406 59.5148 15.7606 65.2856 c 17.6206 70.885 22.9607 73.9362 25.5407 74.355 c 27.5207 73.0986 31.7207 67.0067 32.5607 64.2173 c 31.3007 62.3182 29.0207 61.0105 27.4007 60.3524 c 27.8207 58.6772 35.5594 48.1696 41.1854 46.6044 c 41.7839 48.2297 43.1597 50.5775 45.0735 51.8417 c 47.8843 51.0591 53.9883 46.8451 55.305 44.9188 c 54.9459 42.3302 51.8936 36.9724 46.3294 35 c closepath fill showpage %%Trailer %%EOF Zapouzdřený PostScript (EPS)[141] bez náhledu (jiná hlavička, neobsahuje showpage ačkoliv podle nové definice formátu EPS by mohl, mezi strukturovanými komentáři je volitelná definice přesné hodnoty ohraničujícího rámu, chybí příkaz pro nastavení stránky): %!PS-Adobe-3.0 EPSF-3.0 %%Creator: hand made %%Title: Telefon %%Pages: 1 %%PageOrder: Ascend %%BoundingBox: 0 0 40 40 %%HiResBoundingBox: 0 0 39.5444 39.355 %%EndComments /c { curveto } def %%EndProlog %%Page: 1 1-15.7606-35 translate newpath 46.3294 35 moveto 29.2607 39.8018 16.8406 59.5148 15.7606 65.2856 c 17.6206 70.885 22.9607 73.9362 25.5407 74.355 c 27.5207 73.0986 31.7207 67.0067 32.5607 64.2173 c 31.3007 62.3182 29.0207 61.0105 27.4007 60.3524 c 27.8207 58.6772 35.5594 48.1696 41.1854 46.6044 c 41.7839 48.2297 43.1597 50.5775 45.0735 51.8417 c 47.8843 51.0591 53.9883 46.8451 55.305 44.9188 c 54.9459 42.3302 51.8936 36.9724 46.3294 35 c closepath fill %%Trailer %%EOF Z tohoto souboru vytořené písmo ve formátu Adobe Type 3[142], které obsahuje jediný znak (komentováno, celý kód je vložen do definice písma): %! % slovník písma bude mít deset položek 10 dict dup begin % Type 3 /FontType 3 def % základní velikost písma /FontMatrix [0.02 0 0 0.02 0 0 ] def

58 KAPITOLA 9. POSTSCRIPTOVÉ FORMÁTY A PÍSMA % ohraničující rám písma /FontBBox [0 0 39.5444 39.355] def % kódování písma - pole 256 položek /Encoding 256 array def % vyplníme jej hodnotou.notdef 0 1 255 {Encoding exch /.notdef put} for % dáme kódovací tabulku na zásobník Encoding % pod písmenem "a" bude symbol telefon dup (a) 0 get /telefon put % zrušíme ze zásobníku % (pro jediný znak to lze napsat jednodušeji) pop % slovník metriky bude obsahovat dva znaky /Metrics 2 dict def Metrics begin /.notdef 0 def /telefon 39.5444 def end % ohraničující rámy jednotlivých znaků /BBox 5 dict def BBox begin /.notdef [0 0 0 0] def /telefon [0 0 39.5444 39.355] def end % slovník vlastních definic znaků /CharacterDefs 2 dict def CharacterDefs begin /.notdef { } def % vlastní definice znaku telefon /telefon { -15.7606-35 translate newpath 46.3294 35 moveto 29.2607 39.8018 16.8406 59.5148 15.7606 65.2856 curveto 17.6206 70.885 22.9607 73.9362 25.5407 74.355 curveto 27.5207 73.0986 31.7207 67.0067 32.5607 64.2173 curveto 31.3007 62.3182 29.0207 61.0105 27.4007 60.3524 curveto 27.8207 58.6772 35.5594 48.1696 41.1854 46.6044 curveto 41.7839 48.2297 43.1597 50.5775 45.0735 51.8417 curveto 47.8843 51.0591 53.9883 46.8451 55.305 44.9188 curveto 54.9459 42.3302 51.8936 36.9724 46.3294 35 curveto closepath fill } bind def end % funkce BuildChar je vlastní výkonná funkce, vyhledává a kreslí znak /BuildChar { 0 begin /char exch def /fontdict exch def /charname fontdict /Encoding get char get def

9.5. KRÁTKÉ PŘÍKLADY 59 fontdict begin Metrics charname get 0 BBox charname get aload pop setcachedevice CharacterDefs charname get exec end end } def /BuildChar load 0 3 dict put % číselná identifikace v~uživatelském rozsahu /UniqueID 4000001 def end % vlastní definice písma /Telefon exch definefont pop % a zde je zakomentovaný kód, který ověří, že písmo funguje %/Telefon findfont 200 scalefont setfont 20 20 moveto (a) show showpage Soubor AFM[140] popisující toto písmo: StartFontMetrics 3.0 FontName Telefon FontBBox 0 0 790.888 787.1 EncodingScheme FontSpecific StartCharMetrics 1 C 97 ; WX 790.888 ; N telefon ; B 0 0 790.888 787.1 ; EndCharMetrics EndFontMetrics Poznámka k uvedenému písmu a jeho metrice: Standardní hodnota FontMatrix je [0.001 0 0 0.001 0 0]. Za takových podmínek by hodnoty v AFM souboru numericky odpovídaly hodnotám v definici písma, v našem případě jsou však 20 vyšší. Vzniklo to z praktických důvodů velikost již hotového obrázku telefonu bychom jinak museli upravovat, aby odpovídala velikosti písma. Na vývojářských stránkách[33] firmy Adobe jsou všechny formáty popsány dostatečně na to, abychom si mohli takové soubory sami vytvářet.

60 KAPITOLA 9. POSTSCRIPTOVÉ FORMÁTY A PÍSMA

Kapitola 10 Řešení problémů s PostScriptem Z minulých kapitol bychom mohli mít pocit, že vše kolem PostScriptu a PDF dokonale funguje. To je však velký omyl. Hledání chyb a neslučitelností nám často zabere spoustu drahocenného času. Uživatelé proprietárního softwaru otvírají různé tajemné tabulky a náhodně mění zajímavě vypadající položky. Ti ostatní zasednou nad otevřeným zdrojovým kódem a budou bádat, proč to nefunguje. Anebo si přečtou tento článek... Přestože by všechny postscriptové interprety měly být shodné, až nepříjemně často se stane, že něco selže. Předkládám vám zde neúplný seznam problémů, se kterými jsem se během několika let setkal. Zmíním se o spolupráci s komerčními programy (neznám osvitovou jednotku, která by byla zcela otevřeně kódová, i když v některých možná najdeme Artifex Ghostscript). Některé postscriptové interprety neumějí věci, které jsou v PostScript Language Reference Manual zmíněny, jiné dělají cosi navíc, co pro změnu není popsáno. Při důsledném používání otevřeně kódových programů jsme však vůči těmto problémům méně bezmocní než uživatelé proprietárních systémů. Pokud najdu chybu v otevřeném programu, mohu přičítat jen sobě, že si ji neumím opravit nebo alespoň obejít. Kdysi jsem pracoval ve studiu s několika proprietárními programy. Nezřídka se musela několikrát náhodně převrstvovat sazba, aby program vygeneroval korektní PostScript pro všechny pláty (na třetí pokus se to opravdu povedlo). To ovšem nebylo nic proti postscriptovému výstupu z MS-Wordu, který byl vskutku sázkou do loterie (Proč to místo strany 9 vytisklo na tu drahou fólii chybové hlášení? Proč to tady není tučné? Proč jde tenhle nápis do kopce? Proč se tady přelomila sazba? Kde je ten zubatý rámeček?). Asi se nebudete divit, že některá studia si platí písařku, která přepisuje texty od solventních zákazníků z proprietárních programů pro Windows do proprietárních programů pod MacOS (text si ale nechávají vytisknout, neopisují ho z monitoru... ). 10.1 Není vidět náhled Nejedná se o chybu. Běžné otevřeně kódové aplikace EPS náhled negenerují, komerční jej však většinou používají. Řešení: Vložit náhled do souboru pomocí programu epstool[65]: epstool -tg -ztiff24nc soubor_bez_náhledu.eps >soubor_s_náhledem.eps 10.2 EPS nelze vložit do TEXu Opět většinou nejde o chybu. Může to mít dvě příčiny: TEX sám o sobě neumí vkládat soubory s náhledem. 61

62 KAPITOLA 10. ŘEŠENÍ PROBLÉMŮ S POSTSCRIPTEM Řešení: Odstranit náhled ze souboru pomocí programu epstool: epstool -p soubor_s_náhledem.eps >soubor_bez_náhledu.eps TEX neumí vkládat EPS soubory s jiným zakončením řádků, než má daná platforma. Řešení: Pokud se nejedná o EPS s binárními daty, převedeme jej pomocí tr. Například pro převod Mac Unix to bude tr \r \n <mac.eps >unix.eps. Totéž umí např. i Emacs (verze 20 a novější). Pokud soubor obsahuje binární data, můžeme provést převod pouze na hlavičku souboru (dál TEX nejde). 10.3 Aplikace při vkládání EPS hlásí, že nemá písmo, přestože v EPS souboru písmo je Opět se může jednat o dva různé problémy: Některé programy nerozumějí starému stylu DSC komentářů ve verzi 2.0, a pak se tváří, že EPS soubor neobsahuje správné písmo. Naneštěstí populární TEXový program dvips generuje DSC-2.0 doposud. Řešení: Prohnat EPS soubor přes následující sed skript: 1,30s/DocumentFonts/DocumentSuppliedFonts/ Jiné programy pak vyžadují, aby písmo použité v EPS bylo nainstalováno i v systému. Řešení: Pokud nemůžeme písmo nainstalovat, můžeme informaci o písmu z DSC zcela smazat. Aplikace se nedozví, že EPS soubor takové písmo používá, a soubor vloží bez reptání. Jedná se o řádky poblíž začátku souboru začínající řetězci %%DocumentFonts nebo %%DocumentSuppliedFonts (s případnými následujícími řádky začínajícími %%+). Pokud se vyskytne řádka začínající %%DocumentNeededFonts, zřejmě písma opravdu v souboru nejsou. 10.4 Obrázky TIFF s kompresí CCITT G3/G4 nefungují Opět jsou dvě možné příčiny: V implementacích firmy Adobe se z neznámého důvodu chovají CCITT filtry jinak než ostatní filtry uzavřou se po každém datovém bloku a je nutné je opět otevřít. Řešení: Aktualizovat balík libtiff[105], jehož program tiff2ps měl tuto chybu, nebo generovat EPS soubor jinak (např. pomocí convert). Upozorňuji však, že i poslední verze tiff2ps stále ještě občas generuje špatný PostScript. Doposud žádná běžná komerční aplikace nevyužívá možnosti generovat PostScript z bitmapy čárové grafiky s velmi silnou kompresí CCITT (G3 a G4) a v některých interpretech při jejím použití můžeme narazit na neodhalené chyby. Řešení: Rozloučit se s úsporným formátem a použít soubor bez komprese, případně s kompresí lzw.

10.5. PŘEVOD RGB CMYK JE NEPŘESNÝ 63 10.5 Převod RGB CMYK je nepřesný Pro obrazovkový PostScript se používá grafický prostor RGB, pro tisk CMYK. Jejich převod byl ve staré verzi PostScriptu definován zcela nevyhovujícím způsobem. Výsledek převodu se na různých zařízeních navíc výrazně liší podle toho, zda CMYK zařízení používá RGB prostor bez gama korekce, s gama korekcí nebo je nastaveno na srgb. Teprve při správném použití LL3 funkce UseCIEColor lze dosáhnout lepších výsledků. Řešení: Použít správný barevný prostor nebo správně inicializovaný nezávislý barevný systém. 10.6 Nesprávná délka hlavičky filtru s obrazovými daty Toto není chyba PostScriptu. Podle definice jazyka je zcela v pořádku, uzavře-li se čtený řetězec v okamžiku, kdy má dostatek dat pro nakreslení obrázku. Jinak tomu může být při převodu do jiných vysokoúrovňových jazyků, kde takové triky nejsou povoleny (PDF, PXL). Tam je možné spatřit pruh pod obrázkem či vykousnutý pravý dolní roh. Řešení: Nepoužívat tiff2ps s volbou pro PostScript Level 2. Problémy v Ghostscriptu s tímto spojené budou zřejmě vyřešeny v Ghostscriptu 7.03. 10.7 Příkaz nastavení stránky Starší zařízení používala k nastavení velikosti stránky příkaz setpage, který se však nestal oficiální součástí PostScriptu. Nová používají setpagedevice. Většina zařízení rozumí oběma definicím, ovšem ne všechna. Řešení: Podívat se do PPD souboru a opravit hlavičku. 10.8 Progresivní jpeg dct Přesto, že to nikde v referenční příručce není uvedeno, většina postscriptových interpretů nezpracuje progresivní JPEG DCT kompresi. Ghostscript má tuto funkci zablokovanou (hledejte v souboru gsjmorec.h). Řešení: Nepoužívat tiff2ps s volbou pro PostScript Level 2 na progresivně JPEG DCT komprimované obrázky. Před použitím jpeg2ps progresivní JPEG odprogresivnit příkazem jpegtran. 10.9 Postscriptové soubory mají po spojení špatná písma Máte-li vytvořené dva soubory (např. z dvips), pak ze stejných písem jsou v každém z nich použité jiné znaky. Ze strukturovaných komentářů některých programů (dvips) však není patrné, že se jedná jen o podmnožinu písma, a ani v kódu nemají různá jména. Spojovací program si s takovýmí soubory neporadí. Řešení: V případě dvips použít spojení ještě na úrovni dvi (dvidvi, dvitodvi). Opravit zdrojový kód a ke jménu podmnožiny písma přidat náhodný řetězec.

64 KAPITOLA 10. ŘEŠENÍ PROBLÉMŮ S POSTSCRIPTEM 10.10 Špatná informace v DSC Pokud vytváříme soubor v programu, který nepodporuje zamýšlený výstupní formát zcela (např. v TEXu připravujeme separovaný PostScript), může některá aplikace získat z DSC nesprávné informace. Na jejich základě pak může zrušit naše nastavení z hlavičkové části souboru (úhly, rastry). Řešení: Opravit aplikaci. Vyhnout se meziaplikaci. Nelze-li, vložit nastavovací informace do PostScriptu na začátek každé stránky a nespoléhat se na to, že informace z hlavičky budou použity. 10.11 Falešný strukturovaný PostScript Některé soubory mají vytvořenou DSC strukturu, ale postscriptový kód není strukturovaný (např. výstup z MS-Wordu). Po některých operacích pak vznikne chybný kód. Řešení: Nepoužívat DSC analyzátory nebo tyto aplikace. Nelze-li a je-li nutné přestránkovat, provést to až po interpretaci souboru v Ghostscriptu (soubor ovšem velmi naroste). Pozor: Při použití některých hackerských konstrukcí v TEXu můžeme takový PostScript nechtěně vyrobit sami! Pokud to o souboru víte, odstraňte z něj strukturované komentáře (volby dvips -K1 -N1). 10.12 Interpolace nefunguje V popisu jazyka PostScript je možné u obrázků zapnout funkci Interpolate, která by měla obrázek s nízkým rozlišením vykreslit lépe. Některé postscriptové interprety toto nastavení zcela ignorují, jiné interpolují obrázky jen v některých polohách. Řešení: Nespoléhat na správnou funkci Interpolate a obrázek si zvětšit předem v běžném bitmapovém editoru. 10.13 PDF nejde vytisknout Z důvodu neznámé chyby nejde výstup ghostscriptového převodníku ps2pdf vytisknout nebo nasvítit z některých verzí Adobe Acrobat Readeru. Zobrazuje se bez problémů. Příčina mi zatím není známá. Řešení: Aktualizovat Adobe Acrobat Reader. Stejný soubor lze bez problémů zanalyzovat a vytisknout některými komerčními vektorovými editory (je zde ovšem riziko v nepřesnosti těchto programů). 10.14 Obrázek i písmo jsou kvalitní na obrazovce, ale ne při tisku Jak již bylo dříve řečeno, pro tisk rozměrnější jemné grafiky vyžaduje Ghostscript větší množství paměti osazené v tiskárně (za minimum lze považovat 4 MB pro A4/600 DPI a 16 MB pro A4/1200 DPI). Pokud tiskárně dojde paměť, přistoupí k podvzorkování a výsledky bývají žalostné. Řešení: Dokoupit paměť do tiskárny nebo tisknout pouze menší obrázky. Může též pomoci použití PXL místo PCL.

10.15. PORUŠENÍ PODMÍNEK OPERÁTORU SEAC 65 10.15 Porušení podmínek operátoru seac Tento problém je v podstatě chybou referenčních příruček. Nebudu-li zacházet do detailů referenční ukázka pro změnu kódování písma má jednu chybu pokud písmo obsahuje operátor seac (pro práci s akcenty), generuje ukázka PostScript, který je v rozporu s referenční příručkou Type 1. Navíc referenční příručka Type 1 neumožňuje s použitím seac vytvořit korektní postscriptové písmo v kódování např. Latin-2. Doposud mi není znám žádný PostScriptový interpret, kterému by tento rozpor vadil. Jinak je tomu u převodníků. Problém měly některé verze ps2pdf z Ghostscriptu (podařilo se mi vývojářům vysvětlit, že takové vadné soubory v Čechách potřebujeme) a dvips z balíku Web2C (zde pomáhala volba -j0). Řešení: Ověřit si tisk všech akcentovaných znaků nanečisto. Firma Adobe si je tohoto problému vědoma a operátor seac nedoporučuje tvůrcům písem používat. 10.16 Písmo spadlo, v Ghostscriptu přitom funguje V některých písmech se občas vyskytnou podivné operátory. Není mi známo, zda se jedná o tajné operátory, či spíše o chybu editoru písem. Ghostscript je vůči těmto podivným operátorům v písmech poměrně imunní, ale některé jiné interprety nikoliv. Řešení: Není-li možné soubor zpracovat jinde, můžeme sáhnout po t1utils[99], písmo dekryptovat, nalézt operátory error nebo UNKNOWN číslo, z písma je odstranit, a vše opět zakryptovat. 10.17 Poděkování Mé poděkování za přímou či nepřímou pomoc při řešení popsaných probémů patří těmto lidem: L. Peter Deutsch, Petr Macháček, Bruce A. Mallett, Tom Lane.

66 KAPITOLA 10. ŘEŠENÍ PROBLÉMŮ S POSTSCRIPTEM

Kapitola 11 Postscriptové omyly a problémy s písmy Tato kapitola se zabývá hned dvěma tématy: začneme malým opravníkem obecně rozšířených omylů o PostScriptu a PDF, zbytek článku pak budeme věnovat problémům s postscriptovými písmy a jejich počešťováním. 11.1 Časté omyly o PostScriptu 11.1.1 PDF dává méně kvalitní výstup Je a není to pravda. Pro většinu grafiky to pravda není a PDF dává stejně kvalitní výstup. Výjimkou je několik konstrukcí, které jsou možné v PostScriptu, ale nikoliv v PDF. Jsou to např.: jakékoliv postscriptové větvení v závislosti na vlastnostech zařízení (např. bitmapové písmo vložené ve více velikostech nebo obrázek vložený zároveň barevně i černobíle PDF nemá programátorské konstrukce), speciální písma, konstrukce nad nimi a nad cestami (cesta kolem písma je v PostScriptu poměrně jednoduchá programátorská operace, ale v PDF dostaneme obrovský soubor). Dalším problémem je ztrátová komprese u některých převodníků z PostScriptu do PDF. Při dekompresi a opětné kompresi může dojít ke ztrátě kvality. Kvalita JPEG komprese je ovšem ve většině převodníků nastavitelná. Poznámka: Na podobné problémy narazíte i při převodu mezi SVG a PostScriptem. Některé konstrukce nejsou snadno převoditelné například průhlednost v SVG, ale většina ano. 11.1.2 Znalost PostScriptu mi v dnešní době k ničemu nebude Asi málokoho napadne připravovat knihu přímo v PostScriptu (i když i na to existují nástroje, jako např. Quikscript[62]). Ale pochopení PostScriptu nám umožní provádět triky, kdy neřešitelný problém vyřeší jednořádkový postscriptový program. Několik takových triků si ukážeme v příští kapitole. 11.1.3 PostScript je ukecaný jazyk Tuto pověst získal zčásti právem v době Level 1, kdy bitové mapy převedené do PostScriptu nabývaly obludných rozměrů. V Level 2 se však objevily filtry, které umožňují posílat data dokonce binárně, takže soubory pak narostou pouze o několik set bytů hlavičky. Přesto tato pověst o PostScriptu zůstala. Mohou 67

68 KAPITOLA 11. POSTSCRIPTOVÉ OMYLY A PROBLÉMY S PÍSMY za to komerční aplikace a jejich hlavičkové soubory. Kód pro nakreslení obrázku telefonního sluchátka z minulé kapitoly je dlouhý 475 bytů, nutné strukturované komentáře mají 190 bytů. Soubor byl ručně vytažen ze 132 kb dlouhého EPS souboru, který výtvarník připravil v komerčním vektorovém editoru. 99,5 informací tedy tvořil zbytečný balast. 11.1.4 Ghostscript a Stuffit jsou od stejné firmy Tento omyl je široce rozšířený, nicméně na Ghostscriptu pracuje malá kalifornská firma Aladdin Enterprises [48], která nemá nic společného s firmou Aladdin Systems[49], tvořící software pro Macintosh (a dnes i Linux). 11.2 Závady písem a znakových sad Protože starší verze PostScriptu byla vytvářena ještě v dobách železné opony, nebyla do ní zahrnuta podpora východní Evropy. Když se po jejím pádu firmy vrhly na lokalizaci západních písem, panoval v názvech chaos. Zatímco některé firmy se alespoň snažily znaky správně pojmenovat (což ovšem mělo tenkrát neblahé důsledky, neboť ve spoustě programů písma fungovala jen tehdy, tvářila-li se jako západoevropská), jiné se spokojily s tím, že na dané platformě bude mít znaková sada správné kódování, a pranic je nezajímalo, že např. písmenu ř tak připadne příhodný název oslash. Tato písma lze dnes, bez ohledu na jejich cenu a typografickou kvalitu, považovat za zmetky! Jsou v některých dobře lokalizovaných aplikacích nepoužitelná, v jiných pak jen po vynaložení značného úsilí. Podrobíme-li písma na našem trhu ostré kontrole typografické i technické kvality, bohužel je nutné konstatovat, že zatím převládají zmetky! 11.2.1 Závadná diakritika I pouhé počeštění písma vyžaduje jistý grafický talent. Doplní-li výrobce malebné (nebo i ošklivé) písmo háčkem z písma Times, získal za málo práce nepoužitelný zmetek! Ještě častěji je postižen kroužek nad ů a měkčení u ďľľť (zřejmě je pohodlné nahradit je znakem stupně a uvozovkou). Za otřesné pak lze považovat použití háčku nad ď a ť! Obrázek 11.1: Zmetkovník 1 Několik zmetků v diakritice: Zcela nevhodná diakritika, znak stupně místo kroužku, uvozovka místo měkčení, háček nad d. 11.2.2 Špatné podřezávání (kerning) Špatné podřezávání je slabým místem mnoha původních znakových sad. Je ovšem třeba dodat pokud nějaké vůbec mají. Co teprve po lokalizaci! Někteří výrobci při tvorbě podřezávacích párů zcela vynechali akcentovaná písmena, jiní jen mechanicky zkopírovali páry z neakcentovaných. Typicky jsou problémy dvojic viditelné u VÁ, Tě, ale i u mnoha dalších.

11.2. ZÁVADY PÍSEM A ZNAKOVÝCH SAD 69 Obrázek 11.2: Zmetkovník 2 Několik zmetků v podřezávání: Chybějící pár pro VÁ je zcela nepřijatelný, mechanicky zkopírované (navíc ještě příliš těsné) podříznutí dvojice Tě je též nevhodné. Také dvojice ďa by měla být podříznutá. Detailisté budou navíc chtít, aby hodnota podříznutí pro dvojici ďá byla mírně vyšší než pro ďa. 11.2.3 Chybějící znaky Budeme postupovat podle chybějící množiny znaků. Obecně platí nejpohodlnější metodou je změna názvů v kódovém vektoru, jedinou čistou verzí je pak přejmenování písmen v dekryptovaném písmu, ještě než si písmo nainstalujeme. 11.2.4 Chybí svaznice fi, fl, ffi, ffl Při lokalizaci písem tyto znaky některým tvůrcům zřejmě překážely. Jak jinak lze vysvětlit, že v západní verzi písma tyto svaznice jsou, ale ve východní chybí. Zřejmě tvůrci nic nevědí o tom, že písmo může obsahovat i více než 256 znaků. Řešení: Máme-li k dispozici původní písmo, můžeme vytvořit vitruální písmo (pokud to program dovoluje např. moderní TEXové distribuce). Jinak nám nezbyde, než v dekryptované verzi písma tato písmena nakopírovat (to nemusí být tak triviální operace, vzhledem k možné kolizi podprogramů u operátoru callsubr). 11.2.5 Chybí ďľľť V době tvorby starších písem nebylo jasné, jak budou tato písmena pojmenována. Někteří zvolili pojmenování x quoteright, neboť znak měkčení se nejvíce podobá pravé jednoduché anglické uvozovce, jiní x caron, neboť měkčení má význam háčku. Adobe v roce 1997 ve verzi LL3 určila za správný název x caron. Nové aplikace tedy tyto znaky nezobrazí. Řešení: Je možné upravit jména v definici kódování a kódovém vektoru pro taková písma. Mnohé programy to však neumožňují. V tomto případě je program pro čisté řešení dekryptování, opravu a opětovné zakryptování natolik jednoduchý, že jej zde vypíšu na ukázku celý. Upozorňuji, že dekryptováním a opravováním znakových sad, byť legálně koupených, se můžete dostat do rozporu s jejich licenčními ujednáními! Chystáte-li se navštívit USA, doporučuji projednat s právníkem[70], zda vám nehrozí 25 let vězení[111]. #! /bin/sh # opravíme písma for i~in *.pfb ; do t1disasm $i \ sed s/\([dtll]\)quoteright/\1caron/g \ t1asm >$i~ mv $i~ $i done # opravíme metriky for i~in *.afm ; do sed <$i s/\([dtll]\)quoteright/\1caron/g >$i~ mv $i~ $i done

70 KAPITOLA 11. POSTSCRIPTOVÉ OMYLY A PROBLÉMY S PÍSMY 11.2.6 Chybí ŽŠŤžšť Klasika. Písmo je v kódování CP1250, počítač v ISO-8859-2 a písmo nikdo nepřekódoval. Řešení: Písmo lze celkem jednoduše překódovat. Např. v TEXu (ve formátu cstex) stačí do souboru psfonts.map napsat: název pro TeX jméno písma "XL2encoding ReEncodeFont" <xl2.enc <písmo.pfb. V jiných programech lze překódovat pomocí vložené hlavičky (inspirovat se lze v hlavičkách TEXu). Pracujeme-li v TEXu, nesmíme zapomenout na překódování metriky příkazem afm2tfm nebo L A TEXovou cestou přes fontinst. 11.2.7 Chybí Ůů a všechna písmena s háčky, příp. jsou znaky náhodně umístěné Pokud se jedná o písmo pro východní Evropu, znaky možná obsahuje, ale pod úplně jinými jmény. O tomto případu jsme se již zmínili výše. Řešení: Je nutné dát písmu správné kódování. Buď v externím kódovém vektoru, nebo v dekryptovaném písmu. V prvním případě vytvoříme kódový vektor, který bude obsahovat názvy zprzněné stejně jako naše písmo, v druhém případě naopak zprzněné názvy opravíme. Před několika lety jsem napsal jednoduchý skript[139] (používající kódové vektory z cstocs[73]), který tuto nepříjemnou práci poněkud usnadní, známeli kódování, v jakém písmo je, i kódování, za něž se vydává. 11.2.8 Chybí Ůů a všechna písmena s háčky kromě ŽŠžš PostScript Level 1 a Level 2 tato písma nedefinoval. Je tedy pravděpodobné, že písmo východní znaky neobsahuje. Řešení: Zapracovat na písmu a diakritiku doplnit. Ve většině písem bývají háček, čárka i kroužek k dispozici, měkčení se vyrobí nejsnadněji zmenšením či úpravou znaku quoteright, maďarská dvojčárka zdvojením čárky, polský ogonek se dokreslí... Vše je možné provést na úrovni postscriptového písma (např. programem t1accent[8] od Petra Olšáka), v popisu složených znaků v souboru AFM (např. programem t1csfonts[7] též od Petra Olšáka) nebo na úrovni virtuálního písma (např. v TEXu). Existuje ještě pro typografii nevhodná možnost počeštění až na úrovni postscriptového souboru, o které jsme se zmínili v kapitole 1, nebo naopak na úrovni programu (například v TEXu použití primitivu \accent). Zajímavý článek na toto téma od Petra Macháčka vyšel v čísle 3 4/98[17] zpravodaje sdružení CSTUG[63]. I když mechanickou práci za nás mohou odvést programy, k dokončení úprav je třeba estetické cítění.

Kapitola 12 Vektorová grafika Alternativou bitových map je vektorová grafika. Abychom mohli využít jejích výhod, musíme k tomu mít dobrý editor. V kapitole 1 jsem se lehce dotkl vektorových editorů. Protože toto téma vyvolalo bohatou diskusi, rozhodl jsem se k němu vrátit. Vektorová grafika nám nabízí možnost obrázek libovolně zvětšovat, aniž by se objevily zuby. Při práci můžeme upravovat již nakreslené křivky. Obrázky lze bez ztráty kvality libovolně deformovat a tvarovat. Cenou za to je nutnost používat zcela jiné nástroje. Obecně lze říci, že vektorová grafika je vhodná pro tvorbu log, diagramů, sazbu apod. Pro zpracování obrázků však hraje prim grafika bitmapová. A vektorový editor by nám měl umožnit bitovou mapu vložit. Donedávna byl jediným přenositelným systémem vektorové grafiky PostScript, jehož původním zaměřením byl tisk ve vysokých rozlišeních. Novější formát, SVG[154] (Scalable Vector Graphics), byl naproti tomu již koncipován jako formát přenositelné vektorové grafiky. Z toho vyplývají drobné odlišnosti v jejich schopnostech. 12.1 Převodníky Obecným převodníkem z PostScriptu do jiných formátů je pstoedit[121]. Jedná se o program, který spustí speciálně inicializovaný Ghostscript, a ten pak místo rastrování zapisuje průběh kreslení. Umí převádět do mnoha formátů (gif, xfig, pdf, gnuplot, zploštělý PostScript s Bézierovými křivkami nebo bez nich, výměnný CAD formát DXF, LightWave 3D, RenderMan, Real3D, applet Java 1 nebo Java 2, formát Idraw, Tcl/Tk, HPGL, AI, Windows Meta File WMF pro Windows 9x/NT, Enhanced Windows Meta File EMF pro Windows 9x/NT, OS/2 meta file pro OS/2, PIC formát pro troff/groff, formát METAPOST, formát pro obrázek v programech TEX/L A TEX a L A TEX 2ε, obrázek pro Kontour, GNU Metafile pro plotutils/libplot, Sketch), další jsou dostupné jako externí moduly (např. FrameMaker MIF, CGM Format binární i textový, SVG, RTF). Některé z těchto modulů jsou ovšem komerční. Do PostScriptu se většinou dá převádět velmi jednoduše zachycením příkazů pro tisk. Typickou úlohou bývá též převod čárové grafiky do grafiky vektorové, často nazývaný trasování. Tento převod je poměrně komplikovaným problémem a jeho vykonání závisí na množství parametrů, jakými jsou přesnost sledování křivky, rozpoznávání hran, hustota řídících bodů apod. Tento náročný úkol zvládá AutoTrace[16]. Obsahuje trasovací knihovnu, kterou lze vestavět do aplikací, a jednoduchou aplikaci z příkazového řádku. Průběh trasování lze řídit nastavením třinácti parametrů. Umí převádět do formátů eps, ai, Sketch, SVG, xfig, emf, Elastic Reality Shape, Shockwave Flash a zvládá přímý výstup přes pstoedit do jeho formátů. 12.2 Vektorové editory Za základní vlastnosti editoru lze považovat následující: 71

72 KAPITOLA 12. VEKTOROVÁ GRAFIKA Bézierovy křivky: Jaký typ Bézierových křivek program kreslí? Interpolované, aproximované či obecné? (První dvě jmenované se někdy nepřesně označují jako spline křivky.) U obecných Bézierových křivek by mělo být možné změnit režim směrových vektorů na normální, symetrický a úhlový. Vzorky: Umí program vzorky a vzorované čáry? Import a export: Umí program pracovat s eps a s bitmapami? Umí program jednoduše exportovat? Lze z něj dostat např. EPS obrázek? Za standardní vlastnosti, které již dále nerozepisuji, považuji podporu seskupování objektů a běžný editor křivek. Pokročilé vlastnosti, které by podle mého názoru neměly v opravdu kvalitním editoru chybět, jsem seřadil podle užitečnosti: Podpora češtiny: Vím, že podpora češtiny, alespoň pro kreslení a výstup pro PostScript LL3, znamená v mnohém z programů jen několik řádek kódu. Dokud je tam ale nikdo nedopíše, program neuspěje. Rotace a zkosení: Program by měl umět rotovat a zkosovat objekty, případně i nelineárně deformovat. Komplexní tvary: Vypořádá se program s objekty s dírou? Například PostScript má pro vyhodnocování děr hned dvě metody sudá/lichá, kdy je bod součástí díry, je-li součástí sudého počtu objektů, a metoda podle směru kreslení kdy se objekty kreslené po směru hodinových ručiček odčítají od objektů kreslených po směru hodinových ručiček. Je-li výsledek nula, jde o díru (nebo okolí objektu). Ořezové cesty: Cestu v programu by mělo být možné využít nejen jako objekt pro vyplňování, ale též jako ořezovou cestu např. vložit bitmapový obrázek do útvaru omezeného Bézierovou křivkou. Obarvení čárové grafiky: Pokud je obrázek zapsaný ve formátu čárové grafiky, měl by jej program umět obarvit libovolnou barvou. Přechody (gradienty): Jsou užitečnou pomůckou pro návrh graficky zajímavých tiskovin. Počínaje PostScriptem LL3 jsou podporovány přímo, starší verze PostScriptu je musí vykreslovat jako soustavu barevných pruhů. Rozšířením přechodů je Gouraudovo stínování. Operace nad písmy: V některých programech lze písmo jen obarvit. To je však poněkud málo. Písmo by mělo být použitelné i jako cesta a ořezová cesta, třeba i pro obrázek. Mělo by být možné převést písmo do křivek. Volné kreslení: Tento nástroj mimořádně zvyšuje efektivitu práce to, co nakreslíte myší nebo tabletem, se okamžitě převede do křivek. Není přitom nutné se starat o polohu řídících bodů. Podpora barevných prostorů: RGB podporují všechny editory, ale jiné systémy, např. CMYK, L*a*b nebo přímé barvy, jsou též potřebné. Hledej a zaměň barvu: Funkce záměny jedné barvy za jinou se občas hodí, stejně jako pojmenované barvy. Poloprůhlednost: Podpora poloprůhlednosti sice není do PostScriptu zahrnuta (narozdíl od SVG), ale to neznamená, že by ji vektorový editor nemohl umět. Vektorový převod do PostScriptu by se pak odehrával výpočtem v útrobách editoru. Animace: Některé vektorové editory mohou umět vytvářet vektorové animace. Volná deformace Bézierových křivek: Pro editaci Bézierových křivek je užitečný speciální editor, ve kterém lze křivku editovat bez ohledu na polohu řídících bodů (ty se dopočítají automaticky).

12.3. NEINTERAKTIVNÍ VEKTOROVÉ EDITORY 73 12.3 Neinteraktivní vektorové editory Tyto editory stojí v ústraní zájmu profesionálů. Přesto jejich schopnosti často vysoce převyšují možnosti editorů interaktivních. Díky kvalitním převodníkům se ani při jejich použití nemusíme vzdát možnosti provést část práce v editoru interaktivním. Pomineme-li přímou editaci PostScriptu v textovém editoru, vládnou poli neinteraktivních vektorových editorů tři programy, které si příliš nekonkurují: 12.3.1 METAPOST METAPOST vznikl na konci osmdesátých let minulého století jako modifikace o deset let staršího META- FONTu (o něm jsme se zmínili v kapitole 9). Jeho jazyk však byl poněkud upraven, aby výstupem nebyly znaky písma, ale PostScriptové obrázky. Svou sílu si však jazyk zachoval. Pokud budete potřebovat kreslit matematické ilustrace, vytvářet evolventní křivky (které jste si možná v dětství kreslili na papír pomocí soupravy ozubených koleček) nebo třeba napsat program, který nakreslí lotos, složený z n lístků v daném pořadí, rozevřených pod úhlem γ, je METAPOST tím nejlepším řešením. Pomocné balíky maker zajistí spojení s TEXem, postscriptový výstup pak použitelnost výstupu v libovolné aplikaci. METAPOST najdeme ve většině distribucí TEXu. Následuje malá ukázka, jak lze pracovat s METAPOSTem: beginfig(1); path xlist; xlist=(0,0)--(0,0)..(-.75pt,3.75pt)..(0,7.5pt)-- (0,7.5pt)..(.75pt,3.75pt)..cycle; pickup pencircle scaled.4pt; def list expr x = % cullit; % pouze pro METAFONT unfill xlist rotated x shifted (7.5pt,0); % cullit; % pouze pro METAFONT draw xlist rotated x shifted (7.5pt,0); enddef; def listy expr x = list x; list -x; enddef; listy 15; listy 30; listy 45; listy 60; list 0; endfig; end 12.3.2 pstricks Pstricks je balíkem maker pro TEX. Funguje ve většině TEXových formátů a najdeme ho ve většině jeho distribucí. Na rozdíl od METAPOSTu však pstricks přináší možnosti PostScriptu do jazyka TEXu. Jde tedy vlastně o klasický vektorový editor v neinteraktivní podobě. Pokud projdeme výše uvedené požadavky, které

74 KAPITOLA 12. VEKTOROVÁ GRAFIKA Obrázek 12.1: Výstup ukázky METAPOSTu se mohou vztahovat i na neinteraktivní editory, pak pstricks neumějí jen podporu nezávislých a přímých barevných prostorů, poloprůhlednost a animace (obarvení čárové grafiky pak jen pomocným trikem). Jedná se o zatím nejsilnější vektorový editor v oblasti otevřeného kódu. Následující příklad demonstruje použití pstricks ve spojení s holým Plain TEXem (použitím vyšších formátů se můžeme vyhnout těžkopádnosti holého TEXu): \input pstricks \input epsf \font\smhelv phvro at 20pt \font\medelv phvb at 25pt \font\bighelv phvb at 100pt \nopagenumbers \smhelv \vbox to\vsize{ \vskip\vsize \hbox{\psclip{ \pscustom[linestyle=none,fillstyle=solid,fillcolor=yellow]{ \newpath \moveto(0,0) \lineto(\hsize,.5\vsize) \lineto(0,\vsize) }} \vbox to0pt{\vss\baselineskip36pt \leaders \vbox{\prevdepth0pt\setbox4\hbox{{\lightgray http://www.root.cz}\enskip} \hbox{\hskip-.5\wd4\cleaders\hbox{\copy4\enskip}\hskip\hsize} \hbox{\cleaders\hbox{\copy4\enskip}\hskip\hsize} \vskip-\prevdepth} \vskip1.1\vsize \nointerlineskip\vbox to 0pt{ \vskip-.48\vsize \vss\rightline{\epsfxsize4cm\epsfbox{tuxsit.eps}\hskip1cm}\vss \vskip.48\vsize} }% \endpsclip} \vskip-\vsize \advance\rightskip8mm \vskip50mm \baselineskip72pt \leftskip0ptplus1fil \rightskip0pt \parfillskip0pt

12.3. NEINTERAKTIVNÍ VEKTOROVÉ EDITORY 75 \bighelv ROOT \vfil \medelv informace (nejenom) ze sv\v eta Linuxu \vskip50mm \hrule height0pt } \bye Obrázek 12.2: Výstup ukázky pstricks 12.3.3 Gnuplot Po programu Gnuplot[80] sáhnou všichni, kteří potřebují vytvářet grafy a diagramy. Protože na Rootu vyšel nedávno o programu Gnuplot celý seriál[123], přenechám popis povolanějším.

76 KAPITOLA 12. VEKTOROVÁ GRAFIKA

Kapitola 13 Interaktivní vektorové editory Pod názvem vektorový editor si většinou představíme interaktivní program. Z Internetu jsem stáhl zdrojové kódy několika takových editorů a vyzkoušel jsem jejich funkce. Dnes se s vámi podělím o své zkušenosti. Přiznávám se, že s žádným z těchto editorů nemám předchozí zkušenosti, abych mohl hodnotit hlouběji. Některé se navíc v současnosti tak rychle vyvíjejí, že od mého testu se opět leccos změnilo. Mám-li hodnotit krátce, na vytváření smějících se oblud nejrůznějších tvarů, rozjásaných domečků a dalších kýčů, které tvoří značnou část zakázek běžného studia (odrážejíce vkus průměrného konzumenta reklamy), postačí v podstatě kterýkoliv ze zde uvedených vektorových editorů. A ty, které jsou na tuto tvorbu nevhodné, dobře slouží k přípravě diagramů a schémat. Při komplikovanějších testech (předchozí kapitola) již situace není tak jednoznačná a zjistíme, že mnohé lze ještě vylepšit. Problémy nastávají s češtinou, s ořezovými cestami, barevnými prostory a separacemi atd. Mnohé editory však již dnes nabízejí dobrý komfort pro běžnou práci. 13.1 Sketch[39] Obrázek 13.1: Ukázka Sketch Program je napsaný z velké části v Pythonu s použitím knihovny Imaging. Češtinu ignoruje písma Latin-2 nenabízí, v incializaci XKB je navíc chyba, která zabraňuje napsat jakákoliv ne-latin-1 písmena. Rotace a zkosení se provádí triviálně dvojitým klepnutím. Import eps lze provést pomocí pstoedit. Bitové mapy lze vkládat, rotovat, zkosovat, ale nelze je uzavírat do ořezových cest ani používat jako vzorek. 77

78 KAPITOLA 13. INTERAKTIVNÍ VEKTOROVÉ EDITORY Kreslení: Editor kreslí Bézierovy křivky, režim směrových vektorů lze nastavit. Děravé objekty umí. Nepraktická je však složitá tvorba uzavřené křivky. Celkové hodnocení: Velmi příjemný jednoduchý vektorový editor, rychlé a snadné intuitivní ovládání. Je šitý na míru možnostem PostScriptu. V testované verzi občas nevykresloval korektně. 13.2 Sodipodi[40] Obrázek 13.2: Ukázka Sodipodi Program je psán pro prostředí Gnome. Má velké přehledné menu s funkcemi (trochu se podobá GIMPu). Umí pracovat se skupinami objektů a má dobrou podporu práce s vrstvami. Nativně pracuje s formátem SVG. Při změně velikosti je volitelná možnost dodržení proporcí čar. Program umí pracovat s poloprůhlednými objekty! Dobře je implementováno i volné kreslení. Čeština: Písma Latin-2 program ignoruje. Kreslení: Program kreslí Bézierovy křivky, režim směrových vektorů lze nastavit. Nepříjemný je způsob, jakým se přechází od jedné křivky k druhé (pokud je čára tenká, jsme často nuceni kliknout čtyřikrát). Uzavření křivky je též pracné. Děravé křivky umí. V programu jsem nenalezl standardní natahovací nástroj pro kreslení Bézierových křivek pomocí volného kreslení nakreslíme křivku, a tu pak upravujeme editorem bodů. Import a export: Eps se mi nepodařilo naimportovat. Též výstup do eps se mi podařil pouze pomocí zachycení tiskového výstupu. Při práci s poloprůhledností generuje bitové mapy. Vzhledem k podpoře SVG by však neměl být problém použít externí převodník (zatím však o žádném volně šiřitelném nevím). Celkové hodnocení: Dobrý grafický editor s rozsáhlými možnostmi a s velkými ambicemi. Zejména ti, kteří chtějí pracovat se SVG, jej uvítají. Jeho hodnotu však prozatím mírně snižuje složitější ovládání některých funkcí a chybějící podpora jiných formátů než SVG. 13.3 Kontour[98] Kontour je jednou ze součástí balíku KOffice[97] pro KDE a má ambice stát se standardním kancelářským vektorovým editorem.

13.4. STARDRAW 79 Obrázek 13.3: Ukázka Kontour Čeština: Neměl větší problémy s češtinou, pouze drobné se standardními písmy, jejichž podpora funguje pouze v PostScriptu LL3, u písem Helvetica a Times navíc zobrazoval zubatou bitovou mapu (tyto problémy lze ovšem přičíst na vrub X-serveru, který neumí při zobrazení správně vybrat mezi bitmapovou a vektorovou verzí písma). Ze zajímavých vlastností pak uvedu funkci text podél cesty (mě ovšem ukázala graficky zpracované hlášení o pádu programu). V testované verzi se občas nezobrazovala barva výplně. Ovládání lze vytknout podobné neduhy jako u Sodipodi problémový přechod z křivky na křivku (je nutné se přesně trefit), problémy s pracností vyvolání některých funkcí. Nepodařilo se mi zjistit postup, jak vytvořit křivku s dírou, dokonce ani vyrobit z otevřené křivky uzavřenou. Typ vrcholu Bézierovy křivky se mění dynamicky při editaci podle stisknutého tlačítka (ovšem pouze mezi úhlovým a symetrickým typem). Funkce pro volné kreslení je též přítomná, ale vkládá do křivky mnohem více bodů než Sodipodi. Celkové hodnocení: Dobrý editor s mnoha pomocnými funkcemi (zarovnávání, tvorba rovnostranných trojúhelníků, eliptických výsečí apod.). Implementace základních funkcí je však místy problematická. 13.4 StarDraw[115] Součást balíku StarOffice (OpenOffice). Tento program jsem netestoval, neboť devadesátimegabajtový zdrojový balík je i pro rychlý 56k modem a výhodný večerní tarif příliš velké sousto. Podle referencí se však zdá, že se jedná o kvalitní vektorový editor. 13.5 GYVE[83] GYVE je dalším editorem, který jsem netestoval. Je založen na Display PostScript serveru (DPS), což se v mém případě stalo kamenem úrazu. 13.6 Xfig[155] a Figurine[22] Xfig je svými 16 lety zřejmě nejstarším editorem pro X. Figurine by měl být následníkem Xfig. Možná je o něco hezčí, nicméně ovládání se mi líbí více u Xfigu. Pokud se však Xfig spojí (slinkuje) s knihovnou Xaw3d, má také lepší grafické prvky než se stařičkou knihovnou Athena (Xaw).

80 KAPITOLA 13. INTERAKTIVNÍ VEKTOROVÉ EDITORY Obrázek 13.4: Ukázka Xfig Obrázek 13.5: Ukázka Figurine Místo běžných Bézierových křivek nabízejí editory interpolované a aproximované Bézierovy křivky (tzv. spline křivky). Pro některé úlohy se spline křivky hodí lépe než běžné Bézierovy křivky, ale pro normální kreslení příliš vhodné nejsou. Čeština: Samotný Xfig umožňuje česky psát, nikoli však tisknout. Existuje počešťovací úprava. Import je možný pomocí epstoedit. Vzhledem k jinému druhu použitých křivek však narůstá počet bodů, navíc nelze importovat děravé objekty. Importované bitové mapy nelze rotovat. K dispozici jsou exportní filtry do mnoha formátů, mezi nimiž je také eps. Celkové hodnocení: Poněkud netypický editor. Na klasickou grafickou práci se příliš nehodí, ale je výborným nástrojem pro kreslení plánků a diagramů. Jeho schopnosti v tomto směru podporuje i velká knihovna grafických elementů domy, integrované obvody i noty. Dobře pracuje se skupinami prvků i s hloubkou. 13.7 GIMP[78] Ne každý si všiml, že GIMP obsahuje hned dva vektorové editory. Jsou jimi editor cest a Gfig. Obrázek 13.6: Ukázka editoru cest

13.8. IMPRESS 81 Editor cest: Tento editor, jak název napovídá, umí jediné vytvářet v obrázku cesty. Zahrnuje zcela unikátní nástroj zvaný inteligentní nůžky (kterým, pokud vím, žádný jiný program nedisponuje). Nepříjemné ovšem je, že tuto cestu zatím nelze exportovat do žádného přenositelného formátu. Věci však nejsou až tak tragické. Skript path2ps[126] vytvoří ze zapsané GIMPové cesty čistý PostScriptový kód, který lze s trochou ruční práce vložit přímo do EPS souboru. Obrázek 13.7: Ukázka Gfig Gfig: Editor je jakousi obdobou Xfigu, umí Bézierovy křivky, ale jinak má poněkud omezené možnosti. Kreslí přímo do vrstvy GIMPu zvolenou stopou. Je nepříjemné, že editor srostlý s bitmapovým editorem nemá lupu a neumí obrázky v náhledu prolnout. Prakticky jej nelze ovládat na pixel přesně. Za nejhorší vlastnost považuji neuvěřitelnou nepřesnost při kreslení některých tvarů. 13.8 ImPress[114] Obrázek 13.8: Ukázka ImPress Program založený na tcl/tk. Jeho možnosti jako vektorového editoru jsou značně omezené chybí editor křivek. Silnou vlastností je naopak skutečnost, že nativním formátem je tcl/tk a zapsaný soubor je přímo spustitelný interpretrem wish jako grafická prezentace. Opět chyba v inicializaci XKB, češtinu se vnutit nepodařilo a informaci o kódování ignoruje. Často také vytvoří nekorektní tcl kód. 13.9 Scribus[44] Program založený na Qt. Nejde o vektorový editor, ale o nástroj pro DTP. Nemá podporu Bézierových křivek, zato umí obtékat obrázky textem. Podporuje většinu funkcí potřebných pro sazbu a zlom. Nalezneme v něm dokonce již částečnou podporu pro barevnou separaci!

82 KAPITOLA 13. INTERAKTIVNÍ VEKTOROVÉ EDITORY Obrázek 13.9: Ukázka Scribus Obrázky lze obdélníkově oříznout a rotovat. Opět jsou problémy s češtinou. Grafickými objekty jsou rovná čára, obdélník a ovál. 13.10 Dia[108] Obrázek 13.10: Ukázka Dia Dia není typický vektorový editor, ale editor diagramů. Obsahuje základní podporu vektorového kreslení. Má bohatou výbavu značek pro tvorbu diagramů. Styčné body prvků jsou lepivé, a pokud např. k bázi tranzistoru připojíte čáru, při stěhování prvku se automaticky přemístí i čára. Doufám, že jsem nějaký zajímavý otevřeně kódový projekt neopomněl...

Kapitola 14 Výstupní rozlišení a půltónování 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 této kapitole 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 kapitoly 4, nyní si téma dokončíme. 14.1 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ů. 14.2 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 kapitola 9), které zaručí, že např. dřík písmena L bude stejně silný jako dřík písmena R. 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. 83

84 KAPITOLA 14. VÝSTUPNÍ ROZLIŠENÍ A PŮLTÓNOVÁNÍ Obrázek 14.1: Výsledek setstrokeadjust Čáry o tloušťce 1,1 pixelu (naznačeny zeleně): nahoře bez korekce setstrokeadjust, dole s korekcí. 14.3 Vyhlazování (antialiasing) Obrázek 14.2: 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. 14.4 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.

14.5. MOŽNÉ POSTUPY ROZKLADU OBRAZU 85 Čá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ů. 14.5 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: Obrázek 14.3: Floyd-Stenibergův rozklad Obrázek z kapitoly 2 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. Obrázek 14.4: Vyplnění Hilbertovou křivkou Obrázek vyplněný Hilbertovou křivkou. Stochastické rastry (stochastic screens): 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é

86 KAPITOLA 14. VÝSTUPNÍ ROZLIŠENÍ A PŮLTÓNOVÁNÍ 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. Obrázek 14.5: 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. Obrázek 14.6: 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[41])

Kapitola 15 Tiskové rastry V minulé kapitole jsme si vysvětlili možné způsoby polotónování. Dnes se budeme zabývat pouze pravidelnými rozklady rastry a nastavením jejich frekvence. Volba rastru je dalším důležitým parametrem, který je s rozlišením těsně svázán. 15.1 Rastry Jak již bylo řečeno, určité typy půltónování rastry jsou řízeny zvláštní konstantou frekvencí rastru. Při návrhu rastru je nutné brát na jedné straně v úvahu schopnost lidského oka rastr rozlišit, na druhé straně pak možnosti zařízení rastr vytvořit. Hrubé rastry lze tisknout velmi přesně, ale na druhou stranu ruší čtenáře, a naopak. Rastry do 50 LPI jsou dobře patrné i z běžné čtecí vzdálenosti. Používají se např. u faxů, nejjednodušších tiskáren, ale také na billboardech (u nichž je běžná čtecí vzdálenost přece jen větší). Rastry mezi 80 a 110 LPI jsou z běžné čtecí vzdálenosti již skoro neviditelné. Používají se k tisku levných tiskovin (např. novin). Jejich tisk zvládnou běžné počítačové tiskárny a lze je dobře vytisknout z fólií a dokonce i pauzovacích papírů. Rastry 120 140 LPI jsou běžně používány pro ofsetový tisk na nehlazený papír. Rastry 150 175 LPI se používají při běžném ofsetovém tisku na hlazený a křídový papír. Pro lidi s dobrým zrakem jsou viditelné pouze z těsné blízkosti. Nejmodernější technologie, jakou je např. bezvodý ofsetový tisk, používají rastry 200 300 LPI. Ty jsou viditelné jen s lupou. Většina technologií tisku a typů papíru má jistou horní mez frekvence rastru, za kterou kvalita prudce klesá. Např. u běžné laserové tiskárny je rastr 106 LPI velmi pravidelný (zvlášť na fólii), ale při rastru 141 LPI se na jednobarevných podkladech objevují mapy, vznikající nestejnoměrnými podmínkami uvnitř tiskárny. Přesto však někteří výrobci nových laserových tiskáren s rozlišením 1 200 DPI vnucují svým zařízením dokonce frekvenci 170 LPI! S tímto rastrem nelze na nehlazeném papíře dosáhnout dobrých výsledků a pouhé snížení frekvence na 121 LPI rovnoměrnost viditelně zvýší. 15.2 Úhel rastru Další důležitou veličinou, o které jsme se doposud nezmínili, je úhel rastru. Je to úhel, který určuje sklon rastru vůči jeho standardní poloze. U symetrických rastrů mají smysl hodnoty mezi 0 a 90. Úhel rastru též ovlivňuje velikost buňky pole prahů (viz předchozí kapitola), na které se rastr při zpracování převádí. 87

88 KAPITOLA 15. TISKOVÉ RASTRY Jeho správné nastavení se odvozuje od fyziologie lidského oka a u barevného tisku též od harmonického skládání rastrů. Při barevném tisku musí být úhly pro různé barvy odlišné, jinak by přesnost soutisku musela být téměř nekonečná, aby kapky barvy neležely v zákrytu na sobě. Takto leží v polozákrytu, nebereme-li v úvahu drobné nepřesnosti tisku. Nejméně rušivé jsou rastry kolem úhlu 45, které se proto používají pro černobílý tisk nejčastěji. Naopak nejvíce ruší rastry s úhlem kolem 0 (a 90 ), proto se používají v barevném tisku pro žlutou. K harmonickému složení více rastrů dojde tehdy, jsou-li velikosti jim příslušejících polí prahů v poměru malých celých čísel. Pokud tomu tak není, objeví se při tisku neodstranitelné moiré. Příklad: Dva rastry se složí harmonicky, mají-li stejnou frekvenci a rozdíl mezi jejich úhly je 45 nebo 30. Pokud bychom zvolili 15, vznikne moiré. Harmonickému složení rastru lze též napomoci různými frekvencemi pro různé barvy. 15.3 Omezení počtu šedí (vztah rozlišení, frekvencí rastru a úhlu) Mezi výstupním rozlišením, frekvencí rastru a úhlem existuje vztah, který určuje, kolik přechodových barev lze pomocí takového rastru vytvořit. Tento počet je: kde r je rozlišení a f je frekvence rastru. počet barev = ( ) 2 r + 1 f Další omezení se týká použitelných frekvencí při daném úhlu rastru. Opět platí pravidlo poměru malých celých čísel mezi rastrem a sítí pixelů, tentokrát z důvodu proveditelnosti výpočtu. Zájemce odkazuji na popis ve zdrojovém kódu Ghostscriptu (soubor gshtscr.c). Příklad: Máme běžnou laserovou tiskárnu s rozlišením 600 DPI. Tiskneme starší verzí Ghostscriptu, která pro tuto tiskárnu implicitně zvolí frekvenci 106 LPI a úhel 45. Počet dosažitelných odstínů bude 33. Chceme-li rastr zjemnit, další možnou frekvencí bude 141 LPI. Při ní získáme již jen 19 odstínů. Chceme-li naopak zvýšit počet odstínů, můžeme snížit rastr třeba na 85 LPI, a tím dosáhnout 51 odstínů. Je vidět, že se jedná o poměrně značné omezení. Jak z toho ven? Jednou z možností je výběr vyššího rozlišení. Pokud takovou možnost nemáme, přijde vhod vytváření superbuněk z více základních rastrových buněk. 15.4 Fyzikální a digitální frekvence rastru Možná vás překvapí, že tyto dvě hodnoty se mohou lišit. Vysvětlení je poměrně jednoduché. Zatímco digitální frekvence rastru (a tím i počet dosažitelných odstínů) je dána velikostí rastrové buňky, fyzikální frekvence rastru je dána též počtem tiskových bodů (teček) v jedné takové buňce. Pokud používáme běžný rastr a PostScript Level 1 nebo 2, obě frekvence jsou shodné. V případě PostScriptu LL3 skládá interpretr více buněk dohromady, čímž lze dosáhnout vyššího počtu barev. Velikost této superbuňky ovlivňuje parametr MaxSuperScreen. Podobného efektu lze dosáhnout i v nižších verzích PostScriptu vytvořením speciálního rastru. Zatímco počet barev je v případě superbuněk určen digitální frekvencí rastru, jeho fyzikální vlastnosti (viditelnost pouhým okem či přenosová funkce) jsou určeny převážně fyzikální frekvencí rastru. Daní za toto vylepšení je místy viditelné střídání teček různé velikosti. Celkový dojem z výtisku je však výrazně lepší. Překvapilo mne, že tato funkce je v Ghostscriptu již delší dobu naimplementována, bohužel však s chybou, která ji pro běžná nastavení deaktivuje. Chybové hlášení jsem právě napsal, takže možná již zítra budeme tisknout lépe bez dalších úprav...

15.5. RASTRY A POSTSCRIPT 89 Příklad: Použitím superbuňky o 2 2 buňkách lze u výše uvedené tiskárny v případě frekvence rastru 106 LPI zvýšit počet šedí z 33 na 129, v případě 141 LPI z 19 na 73! 15.5 Rastry a PostScript V PostScriptu se nejčastěji používají pravidelné rastry. Pro jednoduché rastry jsou vyhrazeny funkce setscreen (se třemi parametry: frekvence, úhel, funkce bodu) a setcolorscreen (s 4 3 parametry pro jednotlivé výtažky), pro složitější je k dispozici funkce sethalftone (jejímž parametrem je slovník s požadovanými hodnotami). Některé programy umějí nastavit rastry přímo, z PPD souboru nebo vložit hlavičkový soubor s rastrem (např. dvips -h), jiným musíme pomoci ručně několika řádky PostScriptového kódu. Tento kód je nutné vřadit za inicializaci zařízení, ale před obsah první stránky. Ideální místo najdeme podle strukturovaných komentářů vhodné je těsně před strukturovaným komentářem %%EndSetup, případně před prvním z komentářů %%Page:. V případě Ghostscriptu máme ještě možnost volby -dditherppi=frekvence v LPI na příkazovém řádku. 15.6 Příklady Všechny tyto příklady jsem vygeneroval pomocí jednoduchého testu[135] (a ruční editací tohoto souboru) generujícího následující přechod. Není-li uvedeno jinak, použil jsem opravdu hrubý a dobře viditelný rastr o frekvenci 5 LPI. Upozornění: Tyto jednoduché rastrové funkce nejsou odolné vůči chybnému nastavení např. použití jiného typu půltónování. Obrázek 15.1: Test v šedích Takto vypadá standardní bodový rastr Ghostscriptu používaný pro tiskárny. Obrázek 15.2: Tiskový rastr Ghostscriptu Takto vypadá standardní pole prahů, které si Ghostscript sám zvolí pro náš test s malým rozlišením. Tato jednoduchá hlavička[137] změní úhel rastru na 15. %%BeginFeature: *ResScreenAngle 15 currentscreen exch pop 15 exch setscreen %%EndFeature

90 KAPITOLA 15. TISKOVÉ RASTRY Obrázek 15.3: Rastr Ghostscriptu pro malá rozlišení Obrázek 15.4: Rastr 15 Funkce bodu je funkcí mezi 1 a 1. Ze dvou vstupních proměnných generuje jednu výstupní hodnotu. Nejjednodušší funkcí bodu je zřejmě funkce pro čáry[132] jednu proměnnou zahodí a druhou prohlásí za výstupní hodnotu. %%BeginFeature: *ScreenProc Line currentscreen pop { pop } setscreen %%EndFeature Obrázek 15.5: Čárový rastr Jen o málo komplikovanější funkcí[131] vygenerujeme třeba mřížku. %%BeginFeature: *ScreenProc BlackGrid currentscreen pop { dup 3 2 roll dup 4 1 roll add abs 3 1 roll sub abs add.25 mul } setscreen %%EndFeature Nyní se podíváme, jak jednoduchá je hlavička pro změnu frekvence rastru na 25 LPI[138]. Náš obrázek má rozlišení 72 DPI, a tak touto změnou dostaneme přechod složený pouze z devíti odstínů. %%BeginFeature: *ResScreenFreq 25 currentscreen 3-1 roll pop 25 3 1 roll setscreen %%EndFeature

15.6. PŘÍKLADY 91 Obrázek 15.6: Mřížový rastr Obrázek 15.7: Změna frekvence rastru na 25 LPI K nápravě tohoto stavu jsem připravil přídavnou hlavičku[134], kterou lze zařadit za libovolné nastavení rastru (včetně implicitního) a z obyčejného rastru vygeneruje rastr se superbuňkami o 2 2 buňkách. Fyzikální frekvence zůstane 25 LPI, ale počet odstínů naroste na 33. Doporučuji tuto hlavičku vyzkoušet na fotografii z laserové tiskárny. %%BeginFeature: Supercell Creator % (c) 1999-2001 Stanislav Brabec, UTX % please note that it works % only for "good" frequencies /screendict 1 dict def currentscreen 3 2 roll 2 div 3-2 roll screendict begin /oldspot exch def end { dup floor sub 2 mul 1 sub exch dup floor sub 2 mul 1 sub exch screendict begin oldspot end } setscreen %%EndFeature Obrázek 15.8: Rastr o frekvenci 25 LPI se superbuňkami Tato jednoduchá ukázka[133] napodobuje pomocí (ne)vhodně volených hodnot stochastický rastr. Pro použití u tiskáren bude zřejmě nutné zvýšit frekvenci rastru (první číslo).

92 KAPITOLA 15. TISKOVÉ RASTRY %%BeginFeature: pseudo-stochastic screen.5 1 { pop pop rand 2 31 exp div } setscreen %%EndFeature Obrázek 15.9: Náhodný rastr Sice nepoužitelná, ale zato krátká ukázka pole prahů[136]. Funkce je dostupná i v Level 1, je ale nutné použít jinou syntaxi. Lepší najdete v inicializačním souboru Ghostscriptu gs init.ps. %%BeginFeature: trivial threshold array %%LanguageLevel: 2 << /HalftoneType 3 /Width 2 /Height 2 /Thresholds (\063\146\231\314) >> sethalftone %%EndFeature Obrázek 15.10: Pole prahů

Kapitola 16 Přenosové funkce, výroba PDF a postscriptové triky V této kapitole dokončíme sérii článků o PostScriptu a tisku a ukážeme si způsob, jak doladit tisk na černobílých tiskárnách. Dále si popíšeme, jak se destiluje PostScript pomocí ps2pdf z Ghostscriptu. Nakonec splním svůj slib a předvedu pár několikařádkových postscriptových triků, které potvrzují, že znalost Post- Scriptu není ani ve světě komerčních aplikací k zahození. V předchozích kapitolách jsme si vysvětlili význam rozlišení a rastrů a naznačili si jejich použití v PostScriptu. Umíme již nastavit správný rastr a frekvenci do PostScriptového souboru, i když to aplikace nepodporuje. Rastry by nám však nebyly nic platné, kdybychom posílali do tiskárny data lineárně úměrná stupni šedosti (o nelinearitě tiskového procesu jsme se zmínili v kapitole 2). A tak je ke kvalitnímu nastavení tiskárny potřebné přidat další veličinu přenosovou funkci. Přenosová funkce závisí nejenom na konkrétní tiskárně, ale také na zvoleném rastru a jeho frekvenci. Vyšší frekvence rastrů bývají náchylnější k nežádoucím jevům, které většinou působí změnu kontrastu a ztmavnutí. Přenosová funkce pak tento jev koriguje. Pro černobílý tisk však k jejímu základnímu nastavení nepotřebujeme měřící aparatury, ale vystačíme s vlastním zrakem. Vytiskneme si referenční tabulku (což je obyčejná tabulka s různě tmavými čtverečky, vytištěná s žádanou hodnotou přenosové funkce a s velmi nízkou frekvencí rastru vzniklé barvy jsou při pohledu z velké dálky poměrně přesné). Druhou tabulku vytiskneme s rastrem, který budeme chtít v praxi používat, a tabulky poté porovnáme. Pomocí některé z níže uvedených přenosových funkcí si vytvoříme korekci a upravujeme, dokud nejsme spokojeni. Podobně můžeme za referenci považovat obrazovku svého monitoru a přenosovou funkci upravit tak, aby výtisk odpovídal monitoru. K nastavení přenosové funkce v PostScriptu slouží operátory settransfer, setcolortransfer a též jeden z parametrů v předchozí kapitole zmíněného sethalftone. Přenosová funkce je též součástí barevných profilů barevných tiskáren. Nejjednodušší přenosovou funkcí je jak to bývá obvyklé žádná přenosová funkce (přesněji řečeno identická funkce). Tato myšlenka vznikla v době prvních DTP pracovišť na počítačích Apple Macintosh. Obraz byl před zobrazením na monitor upraven tak, aby se po vytištění na tiskárně LaserWriter jevil stejně tmavý jako na obrazovce. Na počítačích PC se sice tato korekce nepoužívá, ale na druhou stranu dnešní tiskárny tisknou často jemnějším rastrem, a proto i o trochu tmavěji. A tak pro nenáročný černobílý tisk tato praxe stále ještě přetrvává. Ztmavnutí odstínů způsobené elektronovým dělem obrazovky (a korigované gama křivkou) je podobné ztmavnutí způsobenému nárůstem tiskového bodu při tiskovém procesu. %%BeginFeature *DefaultTransfer Null {} settransfer %%EndFeature 93

94 KAPITOLA 16. PŘENOSOVÉ FUNKCE, VÝROBA PDF A POSTSCRIPTOVÉ TRIKY Chceme-li posílat do tiskárny data bez gama korekce, může nám posloužit přenosová funkce [146], provádějící gama korekci (za hodnotu číslo je třeba si doplnit hodnotu 1/gama). Stejná funkce, ovšem s jinou hodnotou, nám poslouží k jednoduchému ztmavení (hodnoty větší než 1) nebo zesvětlení (hodnoty menší než 1) tisku. %%BeginFeature *Transfer gamma číslo {číslo exp} settransfer %%EndFeature Nakonec uvádím jednoduchou interpolovanou přenosovou funkci [145]. Zadáme hodnotu přenosové funkce v některých bodech (každé dvě číslice ve špičatých závorkách dávají jedno hexadecimální číslo určující hodnotu, přičemž řada čísel může být libovolně dlouhá). V uvedeném příkladě dává řada lineární přenosovou funkci, ale úpravou čísel, případně předřazením gama funkce lze docílit libovolné přenosové funkce. %%BeginFeature *Transfer Interpolated { <00112233445566778899aabbccddeeff> dup length 1 sub 3-1 roll mul dup floor cvi 2 index exch get exch dup ceiling cvi dup 5-1 roll exch get 3 1 roll exch sub exch 2 index sub mul add 255 div } settransfer %%EndFeature Hlubší zájemce o rastry odkazuji na PostScript Language Reference Manual[33], kde se mohou dozvědět např. o přesných rastrech (AccurateScreens), fázi rastru na obrazovkách (sethalftonephase), nastavení rastrů pro barevná zařízení a o dalších možnostech postscriptového rastrování. 16.1 Převod PostScriptu na PDF Geniální aplikací pro vytváření PDF souborů je PDFTEX z distribuce TEXu[64]. Mnohé aplikace však nemají možnost přímého výstupu do PDF souboru. Protože PDF při práci často potřebujeme (nejen proto, že uživatelé jiných platforem většinou nejsou schopni zobrazit ani vytisknout postscriptový soubor, byť mají postscriptovou tiskárnu viz kapitola 7), je třeba jej vyrobit z PostScriptu. Tento proces se často nazývá destilace, podle nejznámější aplikace, která tuto funkci nabízí. V oblasti otevřeného kódu slouží k této činnosti Ghostscript[77]. Jeden z nástrojů, které získáme při instalaci Ghostscriptu, se jmenuje ps2pdf. V posledních dvou letech jeho vývoj nabral obrátky, a tak dnes je ps2pdf schopný ostrého nasazení (posledními přetrvávajícími chybami jsme se zabývali v kapitole 10). K tomu, aby nám dobře sloužil, je třeba určité vyladění. Předně několika standardům formátu PDF (potažmo i verzí programu Acrobat Reader) odpovídají programy ps2pdf12 a ps2pdf13 (nebo přepínač -dcompatibility=1.x). Program má navíc několik předvolených nastavení. Momentálně jde o 4 možnosti implicitní nastavení (vhodné pro většinu výstupních zařízení za cenu většího souboru bez volby na příkazové řádce nebo pomocí -dpdfsettings=/default), pro obrazovku (nejmenší soubor a nejmenší kvalita nastavení -dpdfsettings=/screen), pro tiskárnu (vhodné pro tisk nastavení -dpdfsettings=/printer) a pro předtiskovou přípravu (vyšší kvalita, ale i delší soubor nastavení -dpdfsettings=/prepress). Navíc, podobně jako u rastrů, můžeme jemně ovlivňovat jednotlivá nastavení pomocí hlavičkového souboru. Ukázkový soubor[128] obsahuje jedno z takových nastevení, které je určeno pro posílání souborů na digitální tiskový stroj s rozlišením 600 DPI (s rezervou nastavení v kvalitě fotografií). Chcete-li si připravit takový soubor s parametry sami, stačí se podívat do dokumentace ke Ghostscriptu, na jeho knihovní soubor gs pdfwr.ps (kde najdete kompletní definici přednastavených hodnot) nebo přímo do specifikace těchto parametrů v dokumentu Acrobat Distiller Parameters[33]. Za zmínku též stojí další programy z balíku Ghostscript např. pdf2ps, ps2ps či ps2epsi. Vytvoření dalších je otázkou několika minut, o čemž svědčí např. pdf2eps[127], vyrobený z pdf2ps.

16.2. POSTSCRIPTOVÉ TRIKY 95 16.2 PostScriptové triky Před nějakou dobou jsem vám slíbil několik postscriptových triků. Jedná se o několikařádkové programy, řešící problém, na kterém v mnoha případech neuspělo studio vybavené drahým softwarem. 16.2.1 Vyrastrování do souboru Tento příkazový řádek používám vždy, když chci pomocí Ghostscriptu vyrastrovat nějaký postscriptový soubor: Tento příkaz rastruje tiskové strany pro tiskárnu PCL s rozlišením 600 DPI (poslední soubor o délce 2 byty je potřeba smazat). gs -r600 -sdevice=ljet4 -dquiet \ -soutputfile=\textit{jméno}_%03d.pcl \ -dnopause -dbatch \textit{jméno} -c quit A tento příkaz rastruje postscriptový soubor do obrázků ve formátu TIFF s rozlišením 300 DPI. gs -r300 -sdevice=tiff24nc -dquiet \ -soutputfile=\textit{jméno}_%03d.tif \ -dnopause -dbatch \textit{jméno} -c quit 16.2.2 Word2eps (aneb z MS-Wordu do QuarkXPressu přes GNU-Linux) Zákazník si pracně vytvořil svůj inzerát ve Wordu. Protože hrozilo, že jej budu muset přesadit v TEXu, připravil jsem následující postup zpracování (neručím za to, že bude fungovat také u vás): Požádáme majitele MS-Wordu (nejlépe toho, kdo tiskovinu připravil), aby si nainstaloval některý z postscriptových ovladačů a dokument vytiskl po jednotlivých stránkách do souboru. (Jde o nejriskantnější část operace dokument se při tisku na jiné tiskárně může zcela rozpadnout nebo být netisknutelný.) Odstraníme případné zbytečné zapouzdření v jazyce PJL (několik znaků na začátku a konci souboru). Spočteme skutečnou hodnotu ohraničujícího rámu příkazem gs -sdevice=bbox -dquiet -dnopause -dbatch jméno souboru.ps a těmito hodnotami nahradíme původní, uvedené poblíž začátku souboru. Někam na začátek postscriptového souboru (nejlépe těsně za první komentář %%BeginProlog) vložíme následující řádky postscriptového kódu, které oddefinují nežádoucí operátory: /setpagedevice {pop} def /setmatrix {pop} def /= {pop} def Nyní můžeme souboru dát příponu.eps. Sice se ještě nechová jako slušný EPS, neboť maže své okolí, ale např. v TEXu stačí na jeho umravnění příkaz \epsfclipon z balíku epsf anebo \psclip z pstricks. Protože se ukázalo, že tento soubor použije kolega ve výše uvedeném QuarkXPressu, bylo nutné ještě vygenerovat náhled podle postupu z kapitoly 10.

96 KAPITOLA 16. PŘENOSOVÉ FUNKCE, VÝROBA PDF A POSTSCRIPTOVÉ TRIKY 16.2.3 Bitová maska v TEXu V PostScriptu existuje zajímavá možnost obarvit černobílou bitmapovou čárovou grafiku. Některé programy, např. poslední verze tiff2ps, již umějí takový EPS vyrobit, jiným lze pomoci záměnou hodnoty 1 nebo O za údajem o velikosti obrázku v parametrech příkazu image za false nebo true a výměnou operátoru image za imagemask a odstraněním operátoru setgray i s parametrem. V TEXu však takto vygenerovaný obrázek pokusům o obarvení nadále odolává. Je to tím, že před vložením obrázku se barva vždy nastavuje na černou. Lze si proto pomoci následujícím příkazem, který tuto vlastnost zablokuje (kód je pro plaintex): \def\maskedepsf#1{ {\special{ps: save /normalscale{resolution 72 div VResolution 72 div neg scale magscale{dvimag dup scale}if}n /setgray {pop} def /setrgbcolor {pop pop pop} def /setcmykcolor {pop pop pop pop} def }% #1\special{ps: restore}\special{color pop}}} Nyní už můžeme psát \Green{\maskedepsf{kresba.eps}}. 16.2.4 Jednoduchá separace do dvou barev Neumí váš oblíbený program dvoubarevný tisk nebo jste nepočítali s možnosti separace? Pak vám přijde vhod jednoduchý kód, který sice nevyseparuje obrázky, ale text a čáry ano. Následující kód předpokládá, že jste sázeli černě a modře a že váš program používá barevný prostor RGB a operátor setrgbcolor pro obě tyto barvy. První hlavička[124] způsobí zmizení modré, zatímco černou ponechá. %! /setrgbcolor { add dup 2 div 3 1 roll add 3 div dup 3 1 roll sub 4 mul add setgray } bind def Druhá hlavička[125] naproti tomu vymaže černou a modrou vykreslí černě. %! /setcolor { add dup 2 div 3 1 roll add 3 div sub 6.01 mul 1 exch sub setgray } bind def

Kapitola 17 Bitmapové formáty TIFF a JPEG Dnes se podíváme detailněji na nejběžnější formáty pro bitmapové obrázky TIFF a JPEG, na jejich vnitřní uspořádání dat a možnosti použití. Před zhruba dvaceti lety, kdy vznikaly uživatelsky přístupné grafické editory, došlo k obrovské explozi grafických formátů. Podobně jako dnes u kancelářských aplikací, každý výrobce si zavedl vlastní formát, nepřevoditelný na cokoliv jiného. Některé formáty přežily (PCX, BMP, ICO, IMG, TGA) a staly se de facto standardy, některé se alespoň dočkaly převodníku do standardních formátů, jiné zcela zmizely v propadlišti dějin (včetně obrázků v nich uložených). Další byly navrženy jako formáty pro přenos dat, aniž by měly za cíl stát se standardy (PNM, MIFF). Poslední kategorii tvoří ty, jež byly již jako standardy navrženy (GIF, TIFF, JPEG, PNG, MNG, IFF, PostScript). V kapitole 1 jsme se seznámili s knihovnami pro práci s grafickými formáty, dnes se na tyto formáty podíváme podrobněji. 17.1 TIFF Nepsaným standardem pro grafickou práci je TIFF. Původně byl vytvořen firmou Aldus Corporation (nyní již pohlcenou firmou Adobe Systems Incorporated) v roce 1986. Dnes je podporován většinou aplikací a nabízí vše, co k přenosu souborů potřebujeme. Obsahuje podporu všech barevných prostorů, vyšší bitové hloubky, rozlišení a dalších polí. Jde o formát rozšiřitelný, takže aplikace si do něj může ukládat svá vlastní data, aniž by narušila čitelnost souboru v jiné aplikaci. Existují dva formáty uložení dat v souboru TIFF podle paměťové reprezentace little endian a big endian. Většina aplikací rozumí oběma, nicméně ten nativní čte rychleji. Hodnoty se v souboru TIFF ukládají jako 8, 16 nebo 32bitová celá čísla, jako 4 nebo 8bajtová reálná čísla, případně jako zlomek dvou 32bitových celých čísel. Formát umožňuje uložit více obrázků či vrstev v jednom souboru. Hlavička souboru odkazuje na seznam, jehož jednotlivé položky adresáře obrázkového souboru popisují jednotlivé obrázky. Skládají se z 12bajtových položek, které obsahují visačku (tag), což je informace o typu uložených dat, a dále vlastní informaci, případně odkaz na místo, kde jsou data uložena. Kromě vlastních dat mezi nejdůležitější visačky patří bitová hloubka, komprese (je registrováno přes 20 kompresních schémat, mezi široce podporované patří Huffman RLE, CCITT FAX G3 a G4, LZW, Packbits a JPEG, mezi ostatní i OJPEG a JBIG), fotometrická interpretace (nula znamená bílou, nula znamená černou, RGB, indexovaný, maska obrázku, barevná separace, YCbCr CCIR 601, CIE L*a*b*, CIE Log2(L), CIE Log2(L) (u,v )), rozlišení a jeho jednotky, umístění vrstvy, barevný profil a další kalibrační údaje, dále mnoho informačních visaček (jméno autora, aplikace, typ skeneru a použité rastrování aj.) a visaček přesně specifikujícich formát obrázkových dat. Zmíním se pouze o jedné z nich o řadách na pruh (rows per strip). Jde o historickou hodnotu: Rozřezáním obrázku na pruhy a jejich samostatnou kompresí byla omezena paměť pro dekompresi dat za cenu zvětšení souboru. Původní doporučení bylo vybrat takovou hodnotu, aby 97

98 KAPITOLA 17. BITMAPOVÉ FORMÁTY TIFF A JPEG jeden pruh nepřesáhl 8 kb. Dodnes některé aplikace používají implicitně tuto hodnotu. Máme-li možnost ji zvýšit, udělejme to. Strukturu souboru si můžeme prohlédnout např. programem tiffinfo. 17.1.1 TIFF a komprese Nerozumí-li aplikace datům ve speciálních položkách, nic se nestane a obrázek bude načten bez problémů. To však neplatí o kompresi, bitové hloubce a fotometrické interpretaci. Ty jsou pro zpracování dat zcela zásadní. Všechny aplikace rozumějí 8bitovým datům černobílým, v šedích nebo v barvách RGB a bez komprese. Většina aplikací též zvládá kompresi Packbits (pakování bitů, Macintosh RLE), některé i CCITT Huffman RLE (deflační komprese). Černobílé komprese CCITT T.4 (známou jako fax group 3) a kompresi CCITT T.6 (fax group 4) zvládá mnoho volně šiřitelných a sharewarových aplikací (i když některé inverzně vinou nejasné pasáže ve staré verzi specifikace), ovšem komerční aplikace jsou s implementací této výborné kompresní metody pozadu. Podobně je to i s kompresí ZIP. Obrácená je situace s kompresí LZW (Lempel Ziv Welch). Vzhledem k agresivní licenční politice firmy Unisys na americké půdě je tato komprese k dispozici pouze u komerčních aplikací nebo u aplikací vyvinutých mimo USA. Volně šiřitelné programy v USA se musí spokojit s dekompresí. Možnost zapouzdřit JPEG soubor do souboru TIFF je zajímavá velikostí výsledného souboru. Chceme-li mít jistotu, že tam, kam svůj TIFF pošleme, ho otevřou, moc možností nezbývá (jistě nekomprimovaný, možná LZW a Packbits). Podobná situace je u barevných prostorů a bitových hloubek. Barevný prostor CMYK zvládají aplikace pro předtiskovou přípravu, některé z ostatních jej možná zobrazí. Se soubory v kolorimetrických barevných prostorech je to ještě horší, zvlášť u vyšších bitových hloubek. V praxi je k přenosu dat použitelný nanejvýš osmibitový CIE L*a*b*. Více než osmibitová data většina aplikací sice otevře, ale méně z nich je dokáže též zapsat. 17.2 JPEG Na rozdíl od formátu TIFF byl JPEG navrhován pouze jako standardní ztrátové kompresní schéma, určené zvlášť na fotografie. Specifikace ISO dokonce ani neobsahovala doporučený formát souboru. To, co dnes známe pod příponou.jpg, je formát zvaný JFIF. Formát měl dvě odlišné verze v5 a v6. Dnes se názvem JPEG označuje jen v6, pro v5 se používá označení OJPEG. JPEG dosahuje kompresních poměrů u bezztrátové komprese nedosažitelných. JPEG je navržen bez použití patentovaných technologií. JPEG běžně ukládá obrázky ve speciálním barevném schématu YCbCr (jasová informace, světlost barvy, chrominance, v případě CMYK obrázků pak používá schéma Adobe YCCK), jednoduše převoditelném na RGB (resp. CMYK). Kanály Y a Cb se většinou ukládají v plném rozlišení, zatímco kanál Cr se z důvodu úspory často podvzorkovává (přepočítává na menší rozlišení, běžně v poměru 1 : 2 1 : 2; některé starší aplikace uměly pouze 1 : 2 1 : 1). Cenou za to je zhoršení kvality ostrých barevných přechodů. Na data se může dále uplatnit prokládání, kdy je obraz uložen jako sekvence po sobě jsoucích částí s postupně se zvyšujícím rozlišením. Tímto postupem zpracovanému obrázku se říká progresivní JPEG a hodí se zejména pro velké obrázky na web obrázky pak v prohlížeči nenabíhají odshora, ale postupně se projasňují. Na takto předzpracovaná data se používá speciální kódovací mechanismus Discrete Cosine Transform (DCT), dále následuje Huffmannovo kódování (nebo aritmetické entropické kódování), a tato data se pak ukládají do souboru. Pro neobrazová data formát JPEG vyhradil pouze 17 polí COM pro komentář a APP0 až APP15 pro speciální účely. APP0 obsahuje informaci o barevném prostoru a rozlišení, APP14 Adobe marker, APP8 pak data standardu SPIFF.

17.2. JPEG 99 Kvalitu obrázku nejvíce ovlivňuje základní koeficient kompresoru kvalita. Její interpretace se v jednotlivých aplikacích liší, nejběžnější je škála 0 % 100 %, kde vyšší číslo znamená vyšší kvalitu. Implicitní kvalita bývá 75 %, někdy i 80 %. Ještě vyšší kvalitu lze bez obav použít i na zvětšeniny a fotografie obsahující i písmo (zvlášť zakážeme-li podvzorkování barevného kanálu). Nad 95 již kvalita viditelně neroste, zato prudce roste velikost souboru. Ani kvalita 100 % ovšem neznamená bezztrátovou kompresi! Stále zde existuje ztráta při výpočtu koeficientů, případně i z podvzorkování. Pro nižší kvalitu se naopak rozhodneme u náhledů a miniatur, případně u obrázků s předimenzovaným rozlišením. Prakticky použitelné jsou hodnoty zhruba od 25 %. Při nízké kvalitě komprese můžeme úspěšně použít další volbu kompresoru vyhlazení před kompresí která za cenu ztráty detailů nabídne vizuálně lepší výsledek. 17.2.1 Opakovaná komprese JPEG Obecně rozšířenou pověrou je, že dekomprese a opětná komprese obrázku ve formátu JPEG se stejným nastavením vede ke ztrátě kvality. Není to pravda k veškeré ztrátě dochází pouze při první kompresi a při dalších kompresích již ke ztrátě nedochází, s výjimkou pixelů na okraji obrázku. Existuje i matematický důkaz tohoto tvrzení, ale odkaz na něj jsem bohužel ztratil. Experimentálně jsem si to alespoň ověřil na stonásobné rekompresi. V případě, že obrázek mezi jednotlivými kompresemi upravujeme, situace již tak příznivá není a ke ztrátě kvality dochází.

100 KAPITOLA 17. BITMAPOVÉ FORMÁTY TIFF A JPEG

Kapitola 18 Další bitmapové formáty Dnes se podíváme na další bitmapové formáty GIF, PNG, JNG, MNG, BMP, ICO a JBIG. Povíme si něco o možnostech úspory místa na disku volbou správného formátu a srovnáme kvalitu jednotlivých kompresí na typických příkladech. Pokud připravujeme data pro vystavení na WWW, výběr formátu se zužuje. Kromě formátu JPEG lze zaručit nejvýše podporu formátu GIF. U novějších prohlížečů připadá v úvahu i nástupce GIFu, formát PNG. Podpora animovaného PNG, formátu MNG, je zatím v plenkách. 18.1 GIF Podobně jako jiné formáty, i GIF prošel vývojem. Dnešní verze zvaná GIF89a nahradila starší verzi GIF87a. Podporuje pouze 256 barev, ale zato podporuje průhlednost a může obsahovat více vrstev, které lze interpretovat jako animace. Při vzniku WWW se vedle JPEGu stal hlavním a dlouhou dobu i jediným grafickým formátem s alespoň malou podporou pohybu. Protože GIF podporuje pouze kompresi LZW, dostal se do problémů, když proti ní firma Unisys zahájila své patentové tažení (nutno ovšem podotknout, že z licenčních poplatků ani jeden z trojice Lempel Ziv Welch nic nemá, neboť patentovaná je jen drobná úprava při spojení jejich metod). Co GIF nabízí? Základní strukturou je popis logické obrazovky, jednotlivé popisy obrázků a jednotlivá datová pole. Do souboru lze uložit osmibitová grafická data a palety. Jedna z barev palety může být průhledná. Dalšími údaji jsou souřadnice levého horního rohu, časový posun při animaci a dispozice (údaj, zda předchozí úsek animace bude nahrazen nebo připojen). Tyto údaje mohou být vzhledem k jednotlivé vrstvě globální nebo lokální. Z neobrazových informací může GIF obsahovat rozšíření (kromě grafického rozšíření je k dispozici komentář, textové a aplikační rozšíření). Mimoto je uložen použitý poměr stran pixelu. Obdobou progresivního ukládání dat JPEG je prokládaný GIF. Stejný algoritmus více průchodů se stále hustším výběrem podvzorku je použit na celé řady pixelů. 18.2 PNG PNG byl navržen jako přenositelný formát pro síť, bez použití patentů. Měl nahradit stávající GIF. PNG je bezztrátový a ke kompresi dat používá speciální schéma, zakončené známou kompresí ZIP/Deflate. Kromě toho, že není patentována, komprimuje grafická data většinou lépe než GIF. Podporuje většinu běžných barevných prostorů, včetně barevných profilů a kolorimetrické specifikace. U indexovaných palet umožňuje přiřadit jednotlivým barvám různou důležitost. 101

102 KAPITOLA 18. DALŠÍ BITMAPOVÉ FORMÁTY Při tvorbě průhledných obrázků máme kromě průhledné barvy z palety k dispozici též podporu pro alfa kanál, a tedy i poloprůhlednost. Soubor je sestaven z úseků s daty. K základním neobrazovým datům patří: hodnota gama korekce, poloha vrstvy, rozlišení, čas a dva typy textových úseků. K tvorbě progresivních obrazových dat lze použít prokládání Adam7. Úspory dat lze docílit vymazáním průhledných úseků. 18.2.1 MNG a JNG Poměrně nové MNG a JNG v sobě kombinují možnosti PNG a JPEG, a vytvářejí tak nové formáty, umožňující uložit více takových obrázků v jednom souboru a vytvořit z nich animace. K tomu přispívají i různé možnosti kompozice vrstev. Podpora je zatím dost slabá, i když projekt Mozilla tyto formáty již umí. 18.3 BMP a ICO Tyto poměrně zastaralé formáty se staly neoficiálním nativním formátem Windows a OS/2 (ve skutečnosti se jedná o dva mírně odlišné formáty, oba známé pod názvem BMP). ICO je vlastně obálkou pro několik BMP souborů a používá se na ikony. Podporují jednoduchou průhlednost. Důvod, proč se o nich zmiňuji v souvislosti s UNIXem, je jednoduchý. Firma Microsoft při tvorbě ikon záložek svého Internet Exploreru použila právě formát ICO. Od té doby, co tuto vlastnost adoptovala většina webových prohlížečů, se stal převod do formátu ICO zajímavým i v UNIXu. Po chvíli hledání se mi podařilo najít např. xpm2wico[27], který to zvládne bez problémů. 18.4 JBIG Přes nespornou zajímavost se tento bezztrátový formát pro černobílou čárovou grafiku nijak výrazně nerozšířil. Umožňuje ukládat černobílou grafiku ve vysokých kompresních poměrech. 18.5 EPS Přesto, že EPS je přednostně formátem pro vektorovou grafiku, je třeba si ho připomenout též jako formát pro bitmapovou grafiku. Hlavním důvodem jeho nenahraditelnosti jsou ořezové cesty. PostScript se špatně vyrovnává s typickou bitmapovou průhledností, a tak bývá v EPS souborech řešena právě ořezovými cestami. Jde vlastně o vektorové obrazce cesty, které ohraničují neprůhlednou oblast. A jediným přenositelným formátem, jehož součástí může být ořezová cesta, je právě EPS. 18.6 Speciální formáty Mezi neobvyklé formáty obrázků patří např. XPM, ve kterém jsou obrazová data uložena tak, že tvoří zároveň platný zdrojový kód pro C. Ve světě UNIXu se jistě setkáte s formáty PNM (PBM, PGM, PPM), jednoduchými formáty pro přenos obrázků, přenosovým formátem ImageMagicku MIFF či nativním formátem GIMPu XCF a jeho obdobou s použitím komprese JPEG XJT. Všechny však mají omezené pole působnosti a snadno se může stát, že je majitel ne-unixové platformy neotevře.

18.7. KOMPRESE A VELIKOST SOUBORU 103 18.7 Komprese a velikost souboru Otázkou, která zajímá každého, kdo častěji pracuje s obrázky, je výsledná velikost souboru. Nelze však dělat ukvapené závěry o kvalitě formátů, neboť každý z nich má jiné určení. Zhruba 60 % velikosti souboru lze někdy ušetřit obratným použitím indexované palety namísto plných barev, aniž by se to výrazně projevilo na kvalitě (např. u log, náhledů apod.). Jinou možností je občas použít nekomprimovarý obrázek, a ten zabalit běžným archivačním programem. U indexovaných obrázků lze použít optimalizátorů pořadí barev v paletě. Pro náš test jsem vybral několik typických obrázků ručně psaný fax v nízké kvalitě, digitálně vytvořený fax v kvalitě Fine, černobílou kresbu v čárové grafice, barevnou fotografii, černobílou verzi téže fotografie a digitální barevnou grafiku. Čísla udávají poměr k velikosti nekomprimovaného obrázku v procentech. U ztrátových kompresí značí zelená barva nepatrnou ztrátu kvality, žlutá přijatelnou a červená nepřijatelnou. Pro zajímavost jsem u indexovaného PNG zvolil převod bez rozkladu, zatímco u GIF Floyd- Steinbergův rozklad. písmo fax kresba čb foto b. foto grafika bez komprese 100,0 100,0 100,0 100,0 100,0 100,0 TIFF LZW 10,8 21,9 22,5 87,1 93,5 19,1 GIF 11,8 24,1 22,3 86,0 22,9 4,9 TIFF Packbits 17,6 29,7 40,8 100,5 100,7 33,5 TIFF Deflate 10,8 18,4 19,7 74,7 75,5 11,3 CCITT FAX G3 9,8 21,1 23,1 CCITT FAX G3-2D 8,8 15,9 12,3 CCITT FAX G4 7,1 13,4 8,5 JBIG 5,9 11,3 6,1 PNG 48,7 43,2 4,8 PNG indexovaný 10,4 16,9 17,8 20,0 1,9 JPEG Q30 45,4 86,5 68,1 4,2 1,5 2,7 JPEG Q60 63,9 122,1 98,9 8,3 3,0 3,8 JPEG Q80 81,4 155,4 127,6 15,2 5,6 5,1 JPEG Q95 115,1 220,4 183,9 22,4 8,4 8,2 Tabulka 18.1: Komprese a velikost souboru JPEG je jasným favoritem pro fotografie, ovšem na čárové grafice zcela selhává. Tam naopak bodují JBIG a faxové komprese. U digitální grafiky si nejlépe vede PNG. Pro bezztrátovou kompresi fotografií se osvědčily nejlépe PNG a komprese Deflate. Barevné JPEGy jsou jen o několik desítek procent větší než stejné černobílé JPEGy. Použití rozkladu při převodu na indexované barvy dává lepší výsledky za cenu horšího kompresního poměru.

104 KAPITOLA 18. DALŠÍ BITMAPOVÉ FORMÁTY

Kapitola 19 Malinová nebo čokoládová? Touto kapitolou se začneme seznamovat se zajímavými možnostmi použití běžných funkcí GIMPu. Změna barvy je oblíbený trik na obalech mnoha výrobků. Namísto fotografování malinových, jahodových, mátových či čokoládových bonbonů (sušenek, jogurtů, ponožek či čehokoliv jiného) fotograf udělá jedinou sérii obrázků s pečlivě vybranou barvou výrobku či náplně. Ve studiu z těchto obrázků vykouzlí třeba deset různých obalů. V této kapitole si ukážeme, jak změnit barvu jednoho objektu na obrázku, aniž by se změnilo okolí. K úpravě barevného podání vede několik cest: Máme-li štěstí, můžeme použít nejrychlejší metodu deformaci barevného prostoru. Na následující fotografii z Botanické zahrady UK vidíme květy růžové barvy. Otevřeme si dialog Obrázek Barvy Odstín Sytost a zkoušíme změnu barevnosti pro jednotlivé sextanty. Máme štěstí v purpurovém sextantu se nacházejí pouze květy a nic jiného. Trochu si pohrajeme s nastavením a květy by nepoznal ani pan Větvička... A jen oko zkušeného grafika rozezná, že s obrázkem není něco v pořádku. Obrázek 19.1: Dialogové okno Obrázek 19.2: Původní fotografie Původní fotografie. Obrázek 19.3: Přebarvená fotografie A po barevné změně. Stejně jednoduché je přebarvit... třeba Tuxe. A mohli bychom mít logo Linuxu pro i-mac. 105

106 KAPITOLA 19. MALINOVÁ NEBO ČOKOLÁDOVÁ? Obrázek 19.4: Dialogové okno Obrázek 19.5: Původní obrázek Obrázek 19.6: Přebarvený obrázek Ne vždy je přebarvení tak jednoduché. Na následujícím obrázku máme dva plyšové pejsky. Předpokládejme, že chceme Fidátku přebarvit hlavičku, ouška a náprsenku na zeleno, ale Fidík musí zůstat růžový. Při pokusu použít stejnou metodu jako u předchozích obrázků však zjistíme, že ve stejném barevném sextantu je též podložka. Musíme vymyslet něco jiného... Jednou z možností je úprava barev před vlastní deformací. Pro náš obrázek jsme zvolili Obrázek Barvy Vyvážení barev. Poté jsme použili nám již známé Obrázek Barvy Odstín Sytost. Nakonec vrátíme vyvážení barev zpět. Bohužel vyvážení barev není jednoduše vratná operace, a tak budou výsledné barvy mírně odlišné. Na obrázku jsem úmyslně ponechal chyby, které při tomto postupu vznikly zelenkavý stín a červené zbytky na špičce pravého ouška. Obrázek 19.7: Dialogové okno Můžeme také použít ruční práci: Otevřeme si dialog vrstev a vytvoříme si novou průhlednou vrstvu. Tu přepneme do režimu Barva a opatrně vybarvujeme. Jaký nástroj na vybarvení použijeme, je na nás. Můžeme kreslit štětcem s vhodnou stopou (a přetažené čáry mazat gumou), použít magický výběr, inteligentní nůžky nebo ořezovou cestu. Mohli bychom též postupovat mnohem jednodušeji přepnutím štětce do režimu Barva, byli bychom tím však připraveni o možnost kreslit na více tahů a provádět opravy. Další možností přebarvení je záměna barevných výtažků. Ta ale mění podání celého obrázku: Obrázek Režim Dekompozice a hned nato Obrázek Režim Kompozice. V dialogu pak úmyslně zaměníme kanály. U našich pejsků není sama o sobě použitelná, ale byla by vhodným řešením například pro fotografii na šedém pozadí.

107 Obrázek 19.8: Dialogové okno Obrázek 19.9: Dialogové okno V GIMPu existuje i filtr pro záměnu barev. Výsledky ovšem nejsou zdaleka tak dobré, jako u výše uvedených metod. U mnoha výrobků je těmito postupy upravován nejenom obal, ale i obsah. Jako příklad poslouží tavené sýry nejmenovaného výrobce tavený eidam a tavený paprikový sýr po přečtení jejich složení zjistíte, že jediné, v čem se liší, je barvivo E160a (karoten) v paprikové verzi. Označení tavený sýr s paprikovým vzhledem by ale zákazníky tolik nelákalo.

108 KAPITOLA 19. MALINOVÁ NEBO ČOKOLÁDOVÁ? Obrázek 19.10: Původní fotografie Původní obrázek. Obrázek 19.11: Krok 1 Mezikrok po rozladění barev. Obrázek 19.12: Krok 2 Mezikrok po vlastní barevné změně. Obrázek 19.13: Fotografie po úpravě A výsledný obrázek.

109 Obrázek 19.14: Původní fotografie Výřez původní fotografie. Obrázek 19.15: Zčásti přebarvená fotografie A přebarvené ouško. Obrázek 19.16: Dialogové okno Obrázek 19.17: Původní fotografie Zopakujeme si původní fotografii. Obrázek 19.18: Po záměně komponent A takto vypadá po přehození červené a zelené složky.

110 KAPITOLA 19. MALINOVÁ NEBO ČOKOLÁDOVÁ? Obrázek 19.19: Dialog záměny Záměna barev nedává takové výsledky, jaké bychom čekali.

Kapitola 20 Všestranné razítko Když jsem poprvé v životě vyzkoušel grafický editor, razítko mě nijak nenadchlo. Sotva jsem si dovedl představit, k čemu by se dalo použít. Teprve později jsem pochopil, že jde o jeden z nejmocnějších nástrojů. Opravy škrábanců, retuše, odstranění částí obrázku představují jen malý díl z toho, co lze s razítkem dělat. Jako ukázku práce s Razítkem si necháme zmizet vyšehradský kostel... S Razítkem jsme se již setkali v kapitole 5 při retušování smetí. Bylo to na tomto obrázku: Obrázek 20.1: Ukázka retuše razítkem Základní princip práce s razítkem je vždy stejný na obrázku poblíž místa, které chceme překrýt, vybereme vhodnou zdrojovou oblast (přidržíme Control a klikneme), stopu, která určí velikost přenášené oblasti, a její kopií přepíšeme nežádoucí obsah. Proto se také Razítko v angličtině nazývá Clone (klon to však v češtině nezní tak pěkně, proto jsem při překladu GIMPu zvolil již zavedené razítko). Síla razítka spočívá právě v možnosti vytvořit záplatu přímo z části obrázku. Ta pak na obrázku nepůsobí rušivě. Razítko umožňuje kopírovat z obrázku (pro retuš se používá tento režim) a ze vzorku. Může též kopírovat z jedné vrstvy do druhé. Má tři režimy nesledující, sledující a registrující. Zatímco v nesledujícím režimu se zdrojová oblast nabírá vždy v určeném bodě, ve sledujícím režimu se v tomto bodě nabere zdroj pouze pro první tah. Pro další tahy pak bude zachován vzniklý posun mezi zdrojovým a cílovým bodem. Registrující režim je pak speciální režim, který nabírá vždy v místě, kde zrovna kreslíme. To má smysl, pouze když kopírujeme z jedné vrstvy do druhé. Stopu razítka lze samozřejmě používat ve všech režimech. Nesledující režim využijeme tehdy, je-li použitelná zdrojová oblast malá a potřebujeme jí pokrýt oblast poměrně velkou. Sledující pak využijeme u členitějších obrázků. Nejjednodušší situace je s málo členitou překrývanou oblastí. V takovém případě může nežádoucí plocha zmizet jediným tahem. V praxi jsou však běžnější členité předlohy. Zde je třeba postupně vybírat více zdrojových vzorků, čímž zabráníme viditelnému opakování motivu (pokud to naopak není účelem). Nejkomplikovanější situace nastává, máme-li pracovat na jakémkoliv jasovém či barevném přechodu. To značně zužuje oblast, ze které lze vybrat zdrojový vzorek, na úzký pás stejně tmavých či stejně barevných ploch. Pokud v tomto pásu nenajdeme vhodné místo, nezbývá než zvolit složitější cestu. 111

112 KAPITOLA 20. VŠESTRANNÉ RAZÍTKO Jednou z těchto cest jsou záplatové vrstvy. Pomocí nesledujícího razítka si vytvoříme dostatečně velkou oblast (např. ze světlejší části). Vrstvu zduplikujeme a ztmavíme (nebo vytvoříme oblast z tmavší části), k jedné z vrstev přidáme masku a metodou pokusů v ní vytvoříme přechodem nejvhodnější prolínání. Pak tyto vrstvy spojíme a ze vzniklé můžeme registrujícím razítkem, maskou nebo gumou překrývat. 20.1 Ukázky Na první ukázce vidíme oltářní obraz. Z fotografie bylo třeba odstranit závěsnou šňůru lustru. Jediným použitým nástrojem bylo razítko (pominu-li závěrečné doostření). Obrázek 20.2: Původní obrázek Obrázek 20.3: Obrázek po retuši závěsu (obrázek je z publikace Poutní místo Svatá Dobrotivá, Onyx, 1999) Použití Razítka umožňuje vytvářet působivé efekty. Na prvním obrázku vidíme fotografii kostela sv. Petra a Pavla na Vyšehradě. Pokusíme se digitálně provést trik velkých kouzelníků a necháme jej speciálně pro čtenáře Roota zmizet. Obrázek 20.4: Původní obrázek Po prozkoumání struktury mraků je rozhodnutí pro sledující razítko jako základní nástroj jednoznačné. Po prvním tahu obrázek 20.5. Ještě několik tahů a za pár minut je hrubá práce hotová obrázek 20.6. Cesta k dokonalé iluzi je však ještě dlouhá dotvarovat mraky, aby působily věrohodně, a razítkem s jemnou stopou dočistit obraz těsně nad vrcholky stromů. Protože se nevyhneme poškození korun stromů, je třeba si vybrat jiná místa obrázku s podobným průběhem horizontu a odtud přenést linii stromů (zdálky

20.1. UKÁZKY 113 Obrázek 20.5: První tah Obrázek 20.6: Hrubá práce fotografované listoví stromů naštěstí tato retuš příliš nenaruší). Nakonec položíme obě fotografie na sebe a registrujícím razítkem vrátíme pasáže, které jsme poškodili zbytečně. Následuje poslední retuš a za půl hodiny jsme hotovi obrázek 20.7. Pokud chceme překvapit diváky, kteří počítačové grafice nerozumí, můžeme si první a poslední obrázek umístit do dvou vrstev a pouhým potažením šoupátka s průhledností nechat kostel zmizet v efektní prolínačce obrázek 20.8.

114 KAPITOLA 20. VŠESTRANNÉ RAZÍTKO Obrázek 20.7: Hotová retuš Obrázek 20.8: Prolínačka

Kapitola 21 Barevné úpravy obrázků Obrázek často barevně neodpovídá skutečnosti a je třeba provést jeho korekci. Musíme barvy zpětně upravit tak, abychom dostali výsledek co nejvíce odpovídající předloze. Běžná korekce barev, prováděná pouhým pohledem, bývá v domácích podmínkách jedinou cestou k nápravě. V této kapitole se budeme zabývat barevnými úpravami, jejichž cílem je, aby fotografie dosáhla co nejvěrnějších barev. Dříve, než přejdeme na vědecké metody kalibrace, podíváme se na možnosti intuitivního nastavení. Ruční metody mají mnohem méně stupňů volnosti, ale v praxi to nevadí, neboť složitější nástroj by již člověk neovládl. Pokud máme dobře nastavený monitor, lze tyto metody s úspěchem použít i tehdy, když nemáme k dispozici kalibrační nástroje. Máme-li veškeré kalibrační vybavení, musíme se k těmto postupům uchýlit, není-li rozladěný obrázek s čím porovnat a konečné nastavení barev tak záleží jen na barevném citu. Různé nástroje mají různé počty nastavitelných hodnot. Čím více jich je, tím je nástroj univerzálnější, ale také náročnější na nastavení. Základní nástroje, které máme v GIMPu k dispozici v menu Obrázek Barvy, lze rozdělit do několika kategorií: 21.1 Nástroje, jež pracují se všemi komponentami najednou Tyto nástroje neumožňují změny v barevném podání obrázku. Na dojmu z obrázku se však podílí též jasová informace. Jas kontrast umožňuje nastavit dvě hodnoty Úrovně, jasový kanál umožňuje nastavit pět hodnot Křivky, jasový kanál umožňuje nastavit spojitě průběh jasové informace 21.2 Nástroje, jež pracují s každou komponentou zvlášť Tyto nástroje umožňují korigovat průběh jednotlivých barev, abychom dosáhli správného barevného podání. Vyvážení barev umožňuje nastavit devět hodnot barevného podání Úrovně, barevné kanály umožňuje nastavit 3 5 hodnot Křivky, barevné kanály umožňuje nastavit spojitě průběh jednotlivých barev 115

116 KAPITOLA 21. BAREVNÉ ÚPRAVY OBRÁZKŮ 21.3 Nástroje, jež pracují s barvami Pokud pracujeme s každou komponentou zvlášť, není možné popsat takové vlastnosti, jako je sytost či světlost barvy. Na jejich změnu proto editace křivek nestačí a jsou potřeba jiné nástroje. Odstín sytost umožňuje ovlivňovat odstín, světlost a sytost, a to po jednotlivých barevných sextantech, nebo vcelku, tedy celkem (6 + 1) 3 hodnot Kromě uvedených funkcí má GIMP ještě mnoho dalších, z nichž některé jsou pro práci s barvami ještě silnější než Odstín sytost kombinované nástroje Obrázek Barvy Sada filtrů a Obrázek Barvy Rotace barevné mapy, další najdeme v menu Obrázek Barvy Auto nebo v menu Filtry Barvy. 21.4 Intuitivní barevné úpravy Pokud nemáme kalibrační nástroje nebo žádnou předlohu, jedinou cestou k úpravě barev je nastavení od oka. Nejjednodušším nástrojem pro takovou korekci jsou Úrovně. Pět hodnot tohoto nástroje odpovídá horním a dolním limitům vstupních a výstupních úrovní a úpravě gama. Na diagramu vidíme histogram (rozložení barev podle jasu), podle kterého se můžeme orientovat. Pro dolní a horní limit vstupního rozsahu platí následující empirické pravidlo: Obrázek má optimální kontrast, odřízne-li se z histogramu zhruba 1 % extrémních hodnot. Opravu gama nastavujeme podle průběhu jasu, aby se dobře prokreslily stíny i světla. O výběru rozsahu jsme se zmínili též v kapitole 4 (program XSane obsahuje podobný nástroj). Korigujeme-li souběh tří barev, je vhodné přednostně korigovat modrý a červený kanál. Průběh zelené barvy, na kterou je oko nejcitlivější, necháváme beze změny (můžeme místo toho korigovat jasový kanál). Lze tak dosáhnou libovolné korekce a při posuzování barevnosti nám ubyde jeden stupeň volnosti (jasovou informaci lze posuzovat odděleně). Podobným nástrojem je i Vyvážení barev. Zde nastavujeme korekci pro světla, střední tóny a stíny. Pomocí obou uvedených nástrojů dolaďujeme obrázky hlavně tehdy, upravujeme-li na obrázku jen několik barev s rozdílným jasem, jejichž skutečnou barvu dokážeme odhadnout, nebo jen kontrast. Maximum při zpracování každé komponenty zvlášť nabízejí Křivky. Rozhodneme se pro ně, dokážemeli na obrázku odhadnout více barev. Otevřeme si dialog křivek, nastavíme spojitou křivku a na obrázku klikneme do barvy, kterou chceme nastavit. Na grafu se objeví svislá čára, která bude vodítkem pro korekci této barvy. Nastavíme modrou a červenou hodnotu (případně i jas). To opakujeme pro všechny barvy, dokud nejsme s barevným podáním spokojeni. Pro úpravu je vhodné si barvy seřadit podle jejich jasu. Výbornou službu nám při barevné korekci nabízí neutrální šedá. Pro její opravu stačí nastavit hodnotu červené a modré na stejnou úroveň, jakou má zelená. Můžeme si tak např. dokorigovat snímek z jasného letního dne, aby stíny nebyly zbarveny do modra. Sytost a světlost barvy je možné doladit jen nástroji ze třetí skupiny, ve které nástroje pracují s barvami dohromady, nikoliv pouze s jednotlivými komponentami. Na rozdíl od předchozích kategorií však zde nemáme k dispozici univerzální nástroj pro tyto operace byl by jím prakticky neovladatelný trojnásobný trojrozměrný editor křivek. Tento nástroj by měl stejnou sílu, jakou má standardní barevná kalibrace. 21.5 Příklad Vezměme si obrázek Vyšehradu z předchozí kapitoly. Prvním záchytným bodem budou mraky měly by být šedé, jsou však do červena až purpurova. Druhým bodem může být vozovka vpravo dole. Dalšími nastavovanými barvami mohou být obloha a barva stromoví. Projdeme jednotlivé barvy, nastavíme červenou a modrou podle svého názoru, výraznější nerovnosti na křivce[147] zarovnáme. Zelený kanál necháváme beze změny (viz výše). Výsledek po korekci již není tak výrazně načervenalý, jako byl původní obrázek: V další kapitole si povíme více o serióznější metodě nastavování barev barevné kalibraci.

21.5. PŘÍKLAD 117 Obrázek 21.1: Původní obrázek Obrázek 21.2: Obrázek po korekci Obrázek 21.3: Křivka červené Obrázek 21.4: Křivka modré

118 KAPITOLA 21. BAREVNÉ ÚPRAVY OBRÁZKŮ

Kapitola 22 Úvod do teorie barev Chceme-li pochopit, kde, proč a jak vzniká barevné zkreslení a jakými metodami jej korigovat, musíme se ponořit hlouběji do fyziky a nahlédnout do teorie barev. Dnes se dozvíme o spektru, osvětlení, lidském oku a jeho vztahu k barvám. 22.1 Spektrometrie Jediným popisem, který téměř dokonale vystihuje barevnost objektu, je spektrogram. Jedná se vlastně o informaci, nakolik pro danou barvu (přesněji vlnovou délku světla) daný objekt světlo vyzařuje či pohlcuje. Jeho grafické znázornění se nazývá spektrum. Existují dva typy spektra spojité, na kterém se mohou nacházet absorbční čáry (úzké oblasti, ve kterých světlo nepřichází), a čárové, kdy světlo přichází jenom v úzkých pásech vlnových délek. První druh spektra nalezneme u tepelně vyzařujících těles. Absorbční čáry vznikají, jak název napovídá, pohlcením určitých vlnových délek při průchodu světla plynem nebo jinou průhlednou hmotou. Čárové spektrum naopak vzniká v horkých plynech a plazmatu. Bývá obvyklé, že na stejných vlnových délkách, kde nějaký plyn procházející světlo pohlcuje, ho také sám vyzařuje. Typický příklad spojitého spektra nám nabízí Slunce. Při průchodu fotosférou, koronou a atmosférou Země ve spektru vznikají absorbční čáry. Dalším příkladem tepelného vyzařování je žárovka. Obrázek 22.1: Spektrum Slunce s vyznačenými absorbčními čárami c Wabash Instrument Corporation, 1961. Obrázek převzat z Web Syllabu Dept. Physics & Astronomy University of Tennessee[19]: The Solar Spectrum.[20] Čárové spektrum naproti tomu mají výbojky a zářivky. U těch se však výrobci snaží o co nejširší spektrum vyzařovaných barev. Čárové spektrum se také objevuje u Slunce v posledních dvou sekundách před a po úplném zatmění (protože pozorovatel již vidí pouze vyzařování plynů sluneční atmosféry). Zvláštním druhem čárového spektra je monochromatické spektrum takové spektrum obsahuje většinou jedinou poměrně úzkou čáru. Takové spektrum mají LED diody a lasery. 119

120 KAPITOLA 22. ÚVOD DO TEORIE BAREV 22.2 Barevná teplota a tepelné vyzařování Pod názvem tepelné vyzařování absolutně černého tělesa se skrývá známá skutečnost, že rozžhavená tělesa vyzařují. Toto vyzařování je závislé pouze na teplotě a je zcela nezávislé na barvě a materiálu. Tato spektra mají zásadní význam. Lze je popsat jediným údajem teplotou vyzařujícího tělesa, tedy barevnou teplotou (obyčejně se udává v Kelvinech). V určitém rozsahu barevných teplot (zhruba mezi 3 000 K a 25 000 K) vnímáme tato spektra jako bílé barvy. 22.3 Kolorimetrie Lidské barevné vnímání je pouze tříbarevné, a tak jsou spektrometrické nástroje příliš komplikované pro účely vnímání barev. Protože spektrální citlivost zdravých lidských očí se u jednotlivců příliš neliší, je možné libovolný spektrogram převést jednoduchou matematickou operací (určitým integrálem součinu vyzařování a citlivosti přes vlnovou délku) na trojbarevný systém. K tomuto převodu je třeba znát průběh spektrální citlivosti lidského oka pro jednotlivé barvy. Vrcholy citlivosti barvocitlivých čípků se nacházejí přibližně na 430 nm (fialová), 530 nm (modrozelená) a 560 nm (žlutozelená). Vrchol vysoce citlivých, ale barvu nerozeznávajících tyčinek se nacházejí kolem 510 nm. Komise CIE[56] (Commission Internationale de l Eclairage) stanovila vlnové délky základních barev odlišně: 780,0 nm (červená), 546,1 nm (zelená) a 435,8 nm (modrá). Je to proto, že takové barvy pokryjí mnohem větší barevnou oblast. Obrázek 22.2: Závislost citlivosti lidského oka v závislosti na vlnové délce. c 2000, 2001 photo.net[118]. Obrázek převzat z článku Ed Scotta[159] Color Vision[119]. Pokud bychom si však mysleli, že lze postupovat i naopak vjem každé barvy sestavit z těchto tří standardních barev (RGB), mýlili bychom se. Křivky citlivosti se navzájem překrývají, a proto nelze mnoho velmi čistých barev složit z barev základních. Zejména v oblasti modrozelených barev bychom potřebovali výrazně záporné hodnoty červené komponenty. K témuž dochází slaběji i u purpurové a u žluté. V praxi navíc nelze použít čisté základní barvy, a tak se problém nedosažitelnosti dále zesiluje. Kromě toho jsou tři barvy pro barevnou informaci nadbytečné lidské oko je totiž nevnímá jako tři barevné komponenty, ale spíš jako jas a barevnou informaci, sestávající jen ze dvou komponent. Těmito komponentami mohou být např. odstín a sytost, nebo jednoduše spočítané hodnoty X a Y (vynásobením

22.4. VZTAH MEZI ADITIVNÍMI A SUBTRAKTIVNÍMI SYSTÉMY 121 hodnot RGB vhodnou maticí a normalizací výsledných barevných hodnot X a Y vůči jasové komponentě Z). Barevný systém XYZ je výpočetně nenáročný, vyhýbá se záporným hodnotám, barvu udává jen ve dvou hodnotách a navíc i zčásti intuitivní hodnoty X resp. Y vyjadřují poměrnou červenost resp. poměrnou ne-modrost. Přes své zjevné nedostatky zcela nefyziologicky zkresluje vzdálenost barev (a tedy není vhodný pro ukládání obrazových dat v malých bitových hloubkách) a mnoho kombinací X a Y nedává žádný smysl se stal základním referenčním barevným prostorem a všechny ostatní se vztahují k němu (stačí se podívat do popisu jazyka PostScript nebo do definice barevných profilů). Nyní se můžeme vrátit k diagramu z kapitoly 2 a vysvětlit si jeho obsah. Obrázek 22.3: Diagram CIE Na osách jsou vyneseny hodnoty X a Y. Oblouk znázorňuje čisté barvy spektra, jeho tětiva pak nespektrální purpurové odstíny. Světlý trojúhelník uvnitř obsahuje dosažitelné barvy v jednom ze systémů RGB (CIE REC 709). Jeho vrcholy znamenají základní barvy (jedná se o reálný barevný systém, a proto se základní barvy nenacházejí na oblouku prakticky nedosažitelných dokonale čistých barev). Dosažitelná oblast barev se nazývá gamut a obecně může záviset i na jasové složce. Čára uprostřed znázorňuje barvy tepelného vyzařování, čísla na ní pak jednotlivé barevné teploty. Černá oblast pak udává kombinace hodnot X a Y, které nemají smysl. Některé z nich však přesto mohou být v jistém smyslu reálné jedná se o halucinační barvy. Ty nejsou dosažitelné žádným myslitelným osvětlením lidského oka. Lze je však vyvolat přímým drážděním zrakového nervu nebo mozkového centra zraku. O jejich rozsahu a možnosti jejich vynesení do diagramu XY mi není nic známo... 22.4 Vztah mezi aditivními a subtraktivními systémy V již zmíněné kapitole 2 jsme se seznámili s aditivním mícháním barev (jednotlivé komponenty jsou barevná světla a příspěvky se sčítají) a subtraktivním mícháním barev (jednotlivé komponenty jsou barviva a příspěvky se odčítají). Proto i základní barvy subtraktivního systému jsou jiné azurová (která pohlcuje nejvíce červené), nespektrální purpurová (která pohlcuje nejvíce zelené) a žlutá (která pohlcuje nejvíce modré). Pokud bychom si gamut tohoto systému vynesli na výše uvedený diagram, jednalo by se trojúhelník, jehož vrholy se nacházejí poblíž středů stran trojúhelníku gamutu pro RGB. V obou systémech je ještě jeden zásadnější rozdíl zatímco v aditivním systému má objekt absolutní hodnotu své barvy pevně danou, v subtraktivním systému se mění s osvětlením. Je v něm však určena míra pohlcení určitých barev.

122 KAPITOLA 22. ÚVOD DO TEORIE BAREV Je zřejmé, že pro přepočet mezi těmito systémy je nutné zavést další veličinu barevnost osvětlení. Ta je udávána hodnotou bílého bodu aditivního systému (tzv. iluminant). U monitorů jí odpovídá barva, kterou dostaneme při maximální hodnotě všech tří složek. Z praktických důvodů se monitory nastavují tak, aby tato barva odpovídala některé z barevných teplot. Pokud jsou bílé body dvou barevných systémů stejné (např. barevná teplota obrazovky a okolního osvětlení), pak je převod jednoduchý. V ostatních případech je nutné provést korekci bílého bodu. Lidské oko má schopnost přizpůsobit se v určitém rozsahu barvě převládajícího osvětlení (zvlášť pokud odpovídá tepelnému vyzařování). Následkem toho se může naopak měnit barevný vjem z aditivního systému přestože obrazovka září stále stejně, v rozptýleném světle oblohy nám obraz připadá načervenalý, zatímco v umělém osvětlení namodralý. 22.5 Další základní barvy? Viděli jsme, že dosažitelné barvy jsou nejen prakticky, ale dokonce i teoreticky omezené na oblast zvanou gamut. Jednou z možností jejího rozšíření je přidání dalších barev do systému. Nejznámější z nich je systém subtraktivních tiskových barev Hexachrome od firmy Pantone[116], kde se ke standardním barvám přidává oranžová a zelená. Jeho gamut na výše uvedeném diagramu vytvoří pětiúhelník. 22.6 Vhodné osvětlení aneb kdy kolorimetrie nestačí? Zdálo by se, že kolorimetrie pojednává o barvách jaksi absolutně. Není tomu tak! Pokud nevhodně zkombinujeme osvětlení, které nám připadá bílé, ale ve skutečnosti se skládá z úzkých spektrálních čar (např. světlo úsporných zářivek), a materiál, který má podobně ostrou spektrální charakteristiku, může se barevnost dramatickým způsobem změnit. Dobře to znají prodavačky textilu, výtvarníci a měli by to znát i počítačoví grafici. Podobně si můžeme představit dvě tmavé žluté jedna odráží určité procento všech barev spektra vyjma modré, zatímco druhá pohlcuje většinu spekra s výjimkou úzké spektrální oblasti kolem žluté. Za denního světla budou obě barvy vypadat podobně. Ale při osvětlení monochromatickým červeným světlem bude druhá výrazně tmavší. Za vhodné lze považovat osvětlení s typickým tepelným spektrem a s nevýznamnými absorbčními čárami. Takové poskytují denní světlo, žárovky (zvláště tzv. přežhavené žárovky) a některé speciální výbojky. Naproti tomu běžné výbojky a zářivky tento požadavek většinou nesplňují, jakkoliv bíle jejich světlo vypadá. K práci s barvou nepatří! Je tedy patrné, že v některých případech dává kolorimetrie zavádějící výsledky. Na to musíme myslet i při barevné kalibraci. Na následujícím obrázku je skenerem UMAX Astra 1200S naskenovaná kalibrační tabulka na fotopapíru Kodak Professional Digital. Druhý obrázek je upraven podle jiného barevného profilu tak, jak by vypadal na fotopapíru Ektacolor. Připomínám, že na denním světle by byly obě kalibrační tabulky dokonale stejné a že skener je kalibrován na správné podání neutrální šedé. Z těchto obrázků jsem si učinil závěr, že skener nebo jeho výbojka má značně nestandardní spektrální charakteristiku a barevná kalibrace není bez jejich korekce možná. 22.7 Další odkazy RIT Munsell Color Science Laboratory[57] stránky Charlese Poyntona[89] Colourware[61] Light Measurement Handbook[90]

22.7. DALŠÍ ODKAZY 123 Obrázek 22.4: Skutečná barevnost kalibrační tabulky. Obrázek 22.5: Sken na materiálu Kodak Professional Digital. Obrázek 22.6: Simulovaný sken na materiálu Ektacolor. Standardized Human Eye[158] Photo.net: Color Vision[119] Adobe Technical Guides: Basic Color Theory for the Desktop: The Physiology of Human Vision[47] Václav Skala: Světlo, barvy a barevné systémy v počítačové grafice, Academia, Praha 1993

124 KAPITOLA 22. ÚVOD DO TEORIE BAREV

Kapitola 23 Přesné barvy S rostoucími nároky na věrnost barev nabývají na významu metody, kterými jí lze dosáhnout. Mezi nejvýznamnější patří barevné vzorníky a barevná kalibrace. Dnes se podíváme na rozdíl mezi kompozitními a přímými barvami a dozvíme se o základu barevné kalibrace barevném profilu. 23.1 Přímé a kompozitní barvy V praxi se používají dva způsoby barevného tisku. Prvním z nich jsou přímé barvy. Při této technice tiskař použije barvu z dané plechovky, případně barvu z několika plechovek v určeném poměru smíchá. Taková barva by měla být vždy stejná a záleží jen na přesnosti výrobce barev, míchání tiskaře a vlastnostech papíru, jaký výsledek dostaneme. Tato technika tisku má svého předchůdce v litografii. Kompozitní barvy vznikají, vytiskneme-li několik barevných rastrů přes sebe. Ze všech možných kompozitních barev má mimořádné postavení čtveřice barev: azurová, purpurová, žlutá a černá kombinace zvaná CMYK. Naprostá většina běžných barevných tiskovin je složena právě z nich. První tři zajistí v rámci možností trojbarevného tisku co největší gamut (viz předchozí kapitola), černá zase stálý a přesný tisk šedých odstínů. 23.2 Barevné vzorníky Myšlenka barevných vzorníků k dosažení přesných barev je velmi stará, a tak není divu, že ji i počítačová grafika přijala. Vzorníky tiskových barev se, podobně jako tiskové systémy samy, dělí na vzorníky přímých barev a vzorníky kompozitních barev. Ukázky bývají většinou na několika druzích papíru (hlazených a nehlazených), někdy bývá uprostřed každé barvy otvor pro porovnání. Nejznámějším výrobcem (poměrně drahých) vzorníků je firma Pantone[116]. Vzorníky přímých barev v podstatě popisují barevnou škálu výrobce barev, někdy včetně zlaté či stříbrné. Bývají v nich ukázky směsných barev s připojeným návodem pro tiskaře, kolik dílů z které plechovky barev použije. Některé vzorníky zobrazují tyto barvy i při tisku z rastru. V některých je též uveden přibližný ekvivalent barvy v systému CMYK. Tisk přímými barvami zvolíme tehdy, bude-li v tiskovině několik vybraných barev, jejichž přesnost je třeba dodržet. Pokud tiskovina neobsahuje více než tři barvy, bývá takový tisk dokonce levnější než klasický CMYK. Vzorníky kompozitních barev většinou popisují různé kombinace barev tištěných rastrem v systému CMYK (nebo jiném barevném systému). Po takovém vzorníku sáhneme, když chceme vybrat určitou barvu pro barevnou publikaci tištěnou standardní technologií CMYK. Kompozitní barvy mají menší barevnou škálu než přímé barvy, zato však vystačíme s pouhou čtveřicí barev. Tisk z rastru je bohužel citlivější k různým nepřesnostem při tisku (dávkování barvy, nepřesné vyvolání kovolistu apod.). 125

126 KAPITOLA 23. PŘESNÉ BARVY 23.3 Fotografie Pro přesný tisk fotografií již nestačí žádný vzorník a musíme podniknout zásadní krok, který zajistí jejich přesnou reprodukci. Tím krokem je barevná kalibrace. 23.4 Barevná kalibrace Název barevná kalibrace zahrnuje množství různých činností, jejichž společným účelem je co nejpřesnější reprodukce barevných obrazů. V čem barevná kalibrace spočívá? Bez použití kalibrace každé ze zařízení, kterými obraz prochází, do něj zanese jistou chybu. Tyto chyby se skládají a výsledkem je obraz odlišné barevnosti. Pokud jsou zařízení alespoň trochu kvalitní, je zanesená chyba opakovatelná, a tedy i měřitelná. Pokud bude na vstupu obraz známé barevnosti, můžeme změřit barevnost na výstupu. Získáme tím přibližný průběh zkreslující funkce. V určité oblasti hodnot pak můžeme k této funkci vytvořit funkci převrácenou, která nám ze získaných dat odvodí původní barevnost. 23.5 Barevný profil Protože záznam této funkce bylo třeba standardizovat, aby jej mohly používat různé aplikace, vytvořilo International Color Consortium[60] zvláštní formát souboru zvaný barevný profil. Obsahuje údaje o zařízení, vstupním a výstupním barevném prostoru a hlavně vlastní převodní tabulku. Barevný profil může být obousměrný, nebo jednosměrný, samostatný, nebo vestavný (ten lze vložit do souboru TIFF nebo PNG). Vstupní a výstupní barevné prostory profilu bývají např. XYZ, L*a*b*, RGB, CMY, CMYK. Z důvodů numerické přesnosti bývá převodní tabulka v profilu uložena nelineárně, většinou s gama hodnotou 3. 23.6 Druhy barevných profilů Barevné profily můžeme rozdělovat podle toho, jaké zařízení popisují, na profily vstupních zařizení (skenerů, kamer), profily výstupních zařízení (tiskáren či monitorů), nebo podle způsobu, jak byly získány, na individuální (jsou vyrobené pro daný kus zařízení v daném okamžiku a bývají nejpřesnější), typové (průměrné vlastnosti pro určitý výrobek, často je lze koupit se zařízením nebo stáhnout z Internetu) a modelové (matematicky simulující chování zařízení). Zvláštní postavení mají profily pro převod barevných prostorů (neprovádějí žádnou korekci, pouze mají jiný barevný prostor na vstupu a jiný na výstupu) a abstraktní (mohou provádět různé barevné operace). 23.7 Použití barevných profilů Důležitou vlastností barevných profilů je jejich asociativita. Vyplývá z ní, že v technologickém řetězci můžeme několik kroků prováděných po sobě přemostit a vytvořit pro ně jediný souhrnný profil. Obrázek 23.1 (zdroj [129], textová verze [130]) ukazuje, jak vypadá nejjednodušší použití barevných profilů. Na místě skeneru může být jakékoliv vstupní zařízení nebo celý řetězec (fotoaparát negativ pozitiv skener), podobně je tomu i na výstupu (osvitová jednotka výroba kovolistu tiskový proces papír). V místě odbočky může být obrázek popsaný v nezávislém barevném prostoru, ale nemusí při kalibraci vystupovat přímo, ale pouze jako mezikrok výpočtu. V některých programech je jejich chováním toto schéma poněkud zastřené, například proto, že profil skeneru se nastavuje na jiném místě než profily obrazovky a tiskárny, nebo že není jasné, kdy se který převod provádí.

23.7. POUŽITÍ BAREVNÝCH PROFILŮ 127 Obrázek 23.1: Sskener barevný profil skeneru barevný profil tiskárny tiskárna, mezi barevnými profily skeneru a tiskárny datová odbočka barevný profil monitoru náhled na obrazovce Pro úpravu obrázků je ideální program, který umožňuje editovat v jiném barevném prostoru, než ve kterém zobrazuje (tedy RGB specifické pro daný monitor). Toto by měl umět budoucí GIMP-2. Z obrázku můžeme odvodit, jak postupovat v případě, že takový program nemáme: Naskenovaný obrázek převedeme pomocí profilu skeneru a profilu monitoru do barevného prostoru monitoru. V něm provedeme požadované úpravy. Poté reverzním profilem monitoru převedeme obrázek zpět a přitom použijeme profil tiskárny (abychom připravili obrázek pro tisk) nebo použijeme profil srgb (pro vystavení na Internetu). Tato metoda má ovšem dva problémy prvním je dvojí převod, a tedy i dvojnásobná numerická nepřesnost, druhým pak fakt, že se tím připravíme o barvy mimo gamut monitoru (např. čistou žlutou, azurovou, purpurovou). První problém minimalizujeme použitím šestnáctibitové hloubky. Druhý problém lze obejít použitím profilu speciálního RGB prostoru namísto profilu monitoru, např. Wide Gamut RGB. Ten má ovšem opět dvě nevýhody dále zvětší numerickou nepřesnost, takže šestnáctibitový editor bude prakticky nutností. Druhou nevýhodou je fakt, že Wide Gamut RGB nedává na monitoru věrné výsledky. Pro retuš s razítkem je však tento postup vhodným nouzovým řešením. V další kapitole se zaměříme na konkrétní postupy při kalibraci jednotlivých zařízení.

128 KAPITOLA 23. PŘESNÉ BARVY

Kapitola 24 Barevná kalibrace vstupních zařízení V této kapitole si přiblížíme kalibraci vstupních zařízení. Dozvíme se, jak se používá barevná kalibrační tabulka, k čemu slouží denzitometr, jak lze kalibrovat digitální fotoaparát a jaká úskalí nás při tom mohou čekat. Při zpracování obrazu může vlivem nejrůznějších nepřesností dojít k rozladění barev. Ty je pak třeba zpětně upravit, abychom dostali výsledek co nejvíce odpovídající předloze. Některé z těchto postupů jsou realizovatelné i v domácích podmínkách v otevřeně kódových programech, jiné zůstávají výsadou dobře vybavených studií či dokonce speciálních laboratoří. Několik málo otevřeně kódových aplikací pro barevnou kalibraci jsme si popsali hned v kapitole 1. 24.1 Pomůcky pro barevnou kalibraci 24.1.1 Denzitometr Základním zařízením pro tvorbu barevných profilů je denzitometr. V podstatě jde o měřidlo odraženého nebo procházejícího světla. Na rozdíl od skeneru měří barevné vlastnosti větší oblasti, takže mu jednotlivé kapičky inkoustu splynou do jediného vjemu, podobně jako v lidském oku. To, co z něj činí nedocenitelný nástroj, je fakt, že spektrální charakteristika jeho světelného zdroje odpovídá standardnímu iluminantu a citlivost měřících prvků odpovídá standardnímu lidskému oku. Díky tomu měří barevný vjem s vysokou přesností. Denzitometr se používá při kalibraci tiskáren, osvitových jednotek, měření barevnosti tisku i při výrobě kalibračních tabulek. V domácí praxi se lze bez denzitometru zčásti obejít pro vstupní zařízení ho zastupuje kalibrační tabulka, pro výstupní zařízení ho v nouzi může zastoupit zkalibrovaný skener. 24.1.2 Barevná kalibrační tabulka Barevná kalibrační tabulka je fotografie s přesně barevnými čtverečky. Některé obsahují i výraznou barevnou fotografii pro intuitivní posouzení. Existuje několik standardů definujících, které barvy na tabulce budou. Nejběžnější je IT8.7. Jejich rozložení, popsané souborem rozložení (layout) se může u různých tabulek mírně lišit. Tabulky jsou zcela nepostradatelné pro kalibraci jakéhokoliv vstupního zařízení. Proto se vyrábějí v různých velikostech, na papíře i průhledném filmu. Do zvláštní kategorie patří kalibrační tabulky pro negativní film. K tzv. kalibrované barevné tabulce náleží též kolorimetrická specifikace (target batch) barevnou tabulku se nikdy nepodaří vyrobit zcela přesně, a proto specifikace uvádí skutečně naměřené barevné hodnoty dané tabulky. Tyto specifikační soubory se vydávají pro každou šarži tabulek zvlášť a je nutné použít 129

130 KAPITOLA 24. BAREVNÁ KALIBRACE VSTUPNÍCH ZAŘÍZENÍ Obrázek 24.1: Barevná kalibrační tabulka správnou verzi. Někteří výrobci dodávají hned několik korekčních tabulek podle toho, zda pod tabulku použijeme černou, nebo bílou podložku, případně měření pro různé iluminanty. Každý lepší software pro barevnou kalibraci by měl s těmito opravami pracovat. Při nákupu softwaru pro barevnou kalibraci nebo tabulek je třeba dávat pozor některý software pracuje pouze s určitým typem tabulek a některé tabulky naopak nemají širší podporu. Může se stát, že ke zdánlivě levnému programu budete muset dokoupit velmi drahou tabulku. Mezi významné výrobce barevných tabulek patří Eastman Kodak Company[96] a Gretag-Macbeth[82]. Cenově dostupné kalibrační tabulky vyrábí též Wolf Faust[42]. Jak u denzitometrů, tak u kalibračních tabulek se lze setkat i s jejich černobílými verzemi. 24.1.3 Zásadní požadavek kalibrace vypnout veškerou automatiku Pokud má mít barevná kalibrace nějaký efekt, musíme z řetězce vyloučit jakékoliv prvky, které mění své parametry podle jednotlivých obrázků např. skenovací program musí skenovat bez jakékoliv korekce úrovní, u fotoaparátu musíme vypnout expoziční automatiku, stejně tak v digitální laboratoři, kde nám připravují fotografie, nesmějí do procesu tvorby vkládat další korekce. Jakákoliv nečekaná změna barevnosti může zcela znehodnotit proces kalibrace! Úpravy úrovní děláme pouze tehdy, když o to výslovně stojíme, a tam, kde to nenaruší kalibraci (na obrazovce nebo v nezávislém barevném prostoru). 24.2 Co je to věrná reprodukce? Poněkud překvapivá otázka. Ale při důkladnější analýze zjistíme, že je na místě. První odpověď, která nás napadne, je: Vytištěný obrázek musí mít stejnou barvu jako originál. Taková odpověď ovšem pomíjí fakt, že objekt na snímku vypadá jinak ve stínu a jinak v přímém světle. S podobnými problémy se setkáváme i při posuzování na obrazovce. Aby měl obrázek správný jas a kontrast, je potřeba vhodně vybrat bílý bod (nejsvětlejší zobrazitelné místo), případně i černý bod (nejtmavší zobrazitelné místo). Pokud tedy nepřipravujeme zrovna reprodukci obrazu nebo vzorník textilií, máme jistou libovůli. Ta se projevuje např. volbou expozice při fotografování.

24.3. VSTUPNÍ ZAŘÍZENÍ A JEJICH PROFILY 131 24.3 Vstupní zařízení a jejich profily Jak jsme si již řekli, pro kalibraci jakéhokoliv vstupního zařízení potřebujeme barevnou kalibrační tabulku, pomocí které změříme jeho přesnou charakteristiku a vytvoříme profil. Pro práci se vstupními profily lze použít otevřeně kódový program SCARSE[148] od Andreje Frolova. 24.3.1 Skenery Barevnou kalibrační tabulku naskenujeme ve vhodném rozlišení a získáme obrázek, na jehož základě kalibrační program vytvoří barevný profil. Problémy: Spektrální charakteristika výbojky nebo čidel neodpovídá vždy té předepsané. Následkem je pak barevný posun, závislý na skenovaném materiálu (tj. různé fotopapíry mají různé posuny), patrný zvlášť v oblasti neutrální šedé (viz kapitola 22). Pokud je kalibrační tabulka barevně posunutá, zatímco pootevřená dvířka skeneru v tmavé místnosti jsou dokonale šedá, lze téměř s jistotou usuzovat na tento problém. Posun lze kompenzovat několika způsoby buď si pořídíme kalibrační tabulku na všech materiálech, které skenujeme (což může být velmi nákladné a problematické, zvlášť pro fotografie z minilabů), nebo vytvoříme kompenzační profil (barevný posun lze popsat analyticky), nebo problém obejdeme vytvořením souhrnného profilu film + skener (kalibrací dle vyfotografované tabulky). Barevný posun u kvalitních skenerů bývá minimální. Většina moderních skenerů automaticky provádí kalibraci bílé. Při ní se čidla zaměří na bílý pás vložený uvnitř skeneru a nastaví svou citlivost podle naměřených hodnot. Tím se poměrně účinně předchází vzniku pruhů. Pokud se bílý pás zapráší, spolehlivě nás zbaví možnosti naskenovat světlé odstíny (případně se tím skener zcela vyřadí z provozu). 24.3.2 Fotoaparáty Samotný fotoaparát asi kalibrovat nebudeme, ale zajímavá může být kalibrace filmového materiálu. Pokud nafotografujeme standardní kalibrační tabulku při určitém osvětlení, můžeme snímek použít k sestavení barevného profilu filmového materiálu. U většiny kvalitních filmových materiálů je barevná chyba poměrně malá; záleží ovšem na zpracování (v některých minilabech lze občas nabýt dojmu, že obsluha posuzuje obrázky pod zářivkovým světlem nebo je barvoslepá). Při kalibraci procesu negativ pozitiv lze vytvořit kalibrační profil buď vcelku (na výsledné fotografii), nebo kalibrovat negativní i pozitivní proces zvlášť (to většinou nemá podstatný význam, nepřipravujeme-li modelové profily filmů). Podmínkou je, že kalibrační program negativní profily podporuje (v nouzi lze před kalibrací provést jednoduchou inverzi). Zajímavou možností je přímé skenování negativů. Protože však neexistuje nic takového, jako je standardní negativ, je třeba kalibrovat pro každý druh filmu zvlášť. Neseženeme-li kalibrační film, musíme si jej vyrobit fotografií kalibrační tabulky. Za optimální expozici považujeme takovou, při které je tabulka nasnímána s co nejlepší linearitou. Problémy: Kalibrační tabulku musíme fotografovat s velkou přesností. Stačí drobný odlesk, smetí na filmu, ohnutí rohu tabulky a výsledek může být zavádějící (program oznámí, že některá z barev vůbec nezapadá do barevné posloupnosti a většinou odmítne profil vytvořit). Podobně náročné je žárovkové osvětlení. Bude-li při vzdálenosti 2 m od zdroje světla vzdálenější část tabulky o pouhé 2 cm dále, bude naměřený rozdíl v osvětlení 2 %. To však nic není ve srovnání s běžným problémem levných objektivů čočkovým efektem. Dalším komplikací je expoziční automatika ve většině fotolaboratoří. Chceme-li se vyhnout zkreslení, způsobenému zrnitostí materiálu, je třeba nafotografovat tabulku dostatečně velkou a použít kalibrační program, který při odebírání vzorků průměruje určitou oblast barevného terčíku. V nouzi si lze vypomoci selektivním Gaussovým rozostřením.

132 KAPITOLA 24. BAREVNÁ KALIBRACE VSTUPNÍCH ZAŘÍZENÍ Barevná charakteristika filmů bývá většinou upravena pro určité osvětlení (denní, nebo žárovkové). Chceme-li dosáhnout dobrých výsledků, měli bychom to respektovat nebo použít předřadný filtr. Další podmínkou je správná expozice (špatná expozice posune barvy do méně lineární oblasti více zatížené šumem). Navíc se vlastnosti filmu mírně mění s expozičním časem (již během expozice dochází v emulzi filmu k chemickým reakcím, které mění optické vlastnosti). Pokud bychom tedy chtěli být opravdu důslední, museli bychom kalibrační tabulku fotografovat při každé změně expozičních podmínek. Zajímavostí jsou chemické látky, které umožňují provádět cosi jako barevnou kalibraci na chemické bázi. Tyto látky se souhrnně nazývají DIR (Developing Inhibition Reagent látky brzdící vyvolávání). Do filmového materiálu se běžně přidává přesné množství určitých látek, které reagují s některou z látek uvolňovaných při vyvolávacím procesu a vytvářejí blokátor vyvolávání. Ten proniká do okolí (a ostatních barevných vrstev) a tam potlačuje vyvolávání. Výsledkem jsou výraznější barvy a jasnější barevné přechody. 24.3.3 Čočkový efekt Čočkový efekt (lenses effect) postihuje mnoho levných objektivů a způsobuje, že střed obrázku je podstatně světlejší než okraje. U některých objektivů s krátkou ohniskovou vzdáleností může rozdíl světelného toku činit až desítky procent! Efekt lze poměrně snadno matematicky vykompenzovat (umí to např. SCARSE[148]), ale na fotografování kalibrační tabulky takovým objektivem raději zapomeňte (tedy pokud nechcete fotografovat terčíky po jednom uprostřed políčka). Obrázek 24.2: Fotografie s patrným čočkovým efektem Obrázek 24.3: A po korekci. Lepší objektivy většinou čočkový efekt kompenzují, ovšem za cenu snížení světelnosti. Jestli si chcete ověřit, zda má váš fotoaparát také tento problém, stačí nafotografovat stejnoměrně osvětlenou neutrálně šedou desku. Pokud bude fotografie v rozích tmavší, máte smůlu. 24.3.4 Digitální kamery a fotoaparáty Při kalibraci digitálních kamer a fotoaparátů je situace obdobná jako u běžných fotoaparátů. Odpadají však problémy se zrnitostí a smetím na filmu.

Kapitola 25 Kalibrace monitorů a barevný tisk V této kapitole budeme pokračovat na téma kalibrace, tentokrát u výstupních zařízeních. Dozvíme se, jak se tvoří barevná separace, k čemu slouží barevný nátisk, jak se kalibruje monitor a tiskárna. 25.1 Výstupní zařízení a jejich profily U výstupních zařízení se často používají analytické profily. To proto, že zatímco u vstupního zařízení korigujeme po cestě vzniklou nelinearitu, u výstupních zařízení bývá individuální odchylka zařízení mnohem nižší, než odchylka vznikající z principu. Jako příklad uvedu míchání modré z azurového a purpurového inkoustu. Podle jednoduchého modelu (viz kapitola 2) by modrá směs měla obsahovat 100% podíl obou složek. Ve skutečnosti je taková směs purpurovo-fialová. Použijeme-li model bližší skutečnosti, zjistíme, že modrou nelze namíchat. Pro přiblížení je třeba použít méně purpurové složky (zhruba 80 %). Tento poměr silně závisí na vlastnostech inkoustu (a papíru) a hodnotě nárůstu tiskového bodu (viz kapitola 2). Mnohem méně již závisí na nastavení tiskové hlavy. Obrázek 25.1: Původní obrázek Obrázek 25.2: Naivní převod A takto by vypadal výsledný barevný tisk při použití naivního převodu do prostoru CMY. 25.1.1 Monitory Obrazovky monitorů se skládají z drobných bodů či linek ze speciálního materiálu, který začne při dopadu elektronového paprsku vyzařovat víceméně monochromatické světlo, jehož intenzita je přímo úměrná množství elektronů. Elektrony vystřelují na stínítko tři elektronová děla téměř přesně úměrně 2,5. mocnině přivedeného napětí. Maska, kterou elektrony procházejí, zajistí, aby je každé z děl vystřelovalo pouze 133

134 KAPITOLA 25. KALIBRACE MONITORŮ A BAREVNÝ TISK na luminofory určité barvy. Podle typu masky dělíme obrazovky na sytémy s invarovou maskou (děla jsou uspořádána do trojúhelníku proto též název Delta, maska je destička s milióny miniaturních otvorů, luminofor se nanáší v bodech), systémy in-line (děla jsou vedle sebe, maska je destička s podlouhlými obdélníkovými výsečemi, luminofor se nanáší v pruzích) a systém Trinitron (děla jsou vedle sebe, maska je soustava napnutých drátů, většinou na několika místech příčně přichycených, luminofor se nanáší v pruzích). Přiblížíme-li k monitoru magnet, vychýlíme paprsky na nesprávný luminofor. Obrazovky aktivních displejů též skládají světlo z drobných monochromatických bodů, pouze mocnina závislosti světla na napětí se může lišit. Z popisu je celkem zřejmé, že u monitorů se jednotlivé komponenty navzájem prakticky neovlivňují a v lidském oku se jednoduše sčítají. Charakteristika monitoru je tedy poměrně přesně dána následujícími údaji: vlastnosti luminoforů (barevné souřadnice X a Y pro jednotlivé komponenty), nastavení bílého bodu (většinou se volí některá z barevných teplot), jas a kontrast (to ovlivní nastavení absolutní hodnoty jasu a černého bodu zde je optimální nastavení poněkud nejednoznačné, proto se často upravuje gama na hodnoty jiné než 2,5 viz kapitola 2). Z těchto údajů je možné vytvořit analytický barevný profil monitoru. To umí např. program SCARSE [148] (ukázka viz kapitola 6). Porovnáváme-li obrázek na monitoru se skutečným obrázkem, dojem se liší též podle barevné teploty okolního světla. Proto je správné nastavení bílého bodu a okolního osvětlení tak důležité. 25.1.2 Kalibrační sondy Pokud chceme monitor nastavit dokonale, můžeme si zakoupit kalibrační sondu. Jedná se o přesné měřidlo, které se pomocí přísavky přichytí na obrazovku. Kalibrační program zobrazuje různé barevné kombinace a sonda měří světelný tok obrazovky. Podle naměřených hodnot vytvoří software barevný profil a tímto profilem upraví zobrazování. Je třeba poznamenat, že nastavení kalibrační sondou platí pouze do okamžiku, než změníme nastavení monitoru (např. jas nebo kontrast). Zatím nevím o žádném ovladači pro kalibrační sondy v Linuxu. 25.1.3 Barevný tisk Úprava barev před tiskem je holou nutností. Bez ní si nelze rozumný barevný tisk představit (viz ukázka nahoře). I když nemusí jít zrovna o kalibraci, je nutné upravit hodnoty pro existující barviva a spočítat hodnotu pro černou barvu (je-li použita). Tomuto procesu se říká barevná separace. 25.1.4 Analytická separace Vytištěný obraz sestává, podobně jako u monitorů, z miniaturních bodů čistých barev, které se vpíjejí do papíru poměrně stálým způsobem. To přímo vybízí k matematickému popisu tiskového procesu. Existuje několik postupů pro analytický výpočet barevné separace. Všechny používají k popisu technologie nárůst tiskového bodu a kolorimetrickou charakteristiku použitých barviv. Nárůst tiskového bodu určuje stupeň ztmavení barev oproti lineární charakteristice. Většinou se uvádí v procentech. Hlazené papíry mají menší nárůst, nehlazené vyšší. Běžná hodnota bývá 22 % 27 %. Přesný postup se mi na Internetu nepodařilo nalézt. Standardní funkce nárůstu tiskového bodu dává dobré výsledky v rozsahu zhruba 10% 90% šedé, mimo tento rozsah se již od skutečnosti liší více. Ke kompenzaci se používá omezení výstupního rozsahu (viz kapitola 4). Kolorimetrická specifikace barev udává barevné souřadnice jednotlivých barev. Nejjednodušší systém určuje barevné hodnoty pro jednotlivé inkousty C, M a Y. Předpokládá jejich míchání na čistě fyzikálním principu a u černé zanedbává odchylku. Složitější systémy vyžadují též barevné hodnoty směsí CM, CY, MY a CMY. Ještě komplexnější systémy pracují i s hodnotami pro černou, případně její směsi a pro barvu podkladu.

25.1. VÝSTUPNÍ ZAŘÍZENÍ A JEJICH PROFILY 135 25.1.5 Úroveň černé a celkové krytí Protože směs inkoustů CMY dává přinejlepším tmavě hnědou, a navíc jakákoliv změna dávkování zapřičiní barevný posun, bývá součástí běžných barevných procesů také černá (K). V prvním kroku separace dostaneme hodnoty C, M a Y. Těm se přiřadí vhodná hodnota K a ze složek C, M a Y se určitá část odebere. K tomu se používají dva algoritmy: UCR (Under Color Removal): V této metodě zjistíme minimální hodnotu ze tří složek C, M a Y. Nejjednodušší možností je použití černé, pokud C, M a Y přesahují určitou hodnotu, a to až do zadaného maximálního procenta. Metodu popisuje kniha PostScript Language Reference Manual[33]. GCR (Gray Component Removal): Určuje navíc úroveň použití černé a koeficient navrácení barev. Dává lepší výsledky než UCR, zvlášť pro střední tóny. Přesný popis metody se mi nepodařilo zjistit. Ať provedeme výběr černé jakoukoliv metodou, máme jistou libovůli v nastavení nejvyšší hodnoty pro celkové krytí. To určuje souhrnné množství barvy, které může být použito. Teoretický rozsah je 200 % 400 %, prakticky používané hodnoty bývají mezi 280 % 320 %. 25.1.6 Kalibrace barevného tisku Běžné analytické modely nabízejí obstojný tisk s minimem prostředků. Chceme-li však přesné výsledky, nezbývá než sáhnout po barevné kalibraci. Dříve, než započneme s kalibrací, nastavíme vhodné použití černé. Poté vytiskneme kalibrační obrázek, ten proměříme denzitometrem a hodnoty jednotlivých terčíků zapíšeme do kalibračního programu, který podle měření sestaví barevný kalibrační profil. Pokud nemáme k dispozici denzitometr, lze si v nouzi vypomoci zkalibrovaným skenerem. Je však třeba počítat s nižší přesností (s výpočetními nepřesnostmi či s odlišností spektrální charakteristiky viz kapitola 22). Zatímco výpočet profilů vstupních zařízení je poměrně přímočarý, kalibrace tiskárny je pro software mnohem náročnější. Musíme brát v úvahu mnohem více činitelů. Zřejmě proto dodnes neexistuje jediný otevřeně kódový program pro tuto činnost. 25.1.7 Barevný nátisk Pokud má být výsledkem naší práce ofsetový tisk, je třeba provést kontrolu barev ještě před započetím tisku. To nelze ani na filmech (výtažky tvoří čtyři černobílé filmy), ani na kovolistu. Zjistit barevnou chybu až v tiskovém stroji by bylo velmi drahé, a tak vznikl nátisk. Nátiskový systém je nastaven tak, aby simuloval výsledky tiskového procesu. Existují dva typy nátisků levnější digitální nátisk (zhruba 300 Kč/A4) ověří náš výsledek z osvitových souborů ještě před vlastním osvitem. Dražší chemický nátisk (kolem 600 Kč/A4) se vytváří z již nasvícených filmů a je schopen odhalit i případné nesprávné osvícení nebo špatné nastavení rastrů (digitální nátisk totiž rastry nemá). Nátisk pak slouží tiskárně jako barevný vzor, kterého se drží. Máme-li extrémní nároky na kvalitu tisku, je nutné pamatovat na to, že nátisky bývají kalibrované podle určité značky tiskových barev (nejčastěji Pantone). Použití tiskových barev jiné značky může způsobit malé odlišnosti. Některé nátiskové systémy umožňují vytvářet nátisky i z jiných komponent, než jsou běžné CMYK.

136 KAPITOLA 25. KALIBRACE MONITORŮ A BAREVNÝ TISK 25.1.8 Tisk U tiskového stroje je možné do určité míry regulovat dávkování barvy, a tak udržet stálou barevnost tisku a dokonce i dokorigovat chyby přípravy. Pro nejnáročnější zákazníky se provádí kalibrace tisku. Postup je podobný jako u kalibrace počítačových tiskáren. Provede se zkušební tisk (včetně dokončovacích úprav jako je lakování či laminování), ten putuje zpět do studia a tam vyrobí barevný profil pro celý tiskový proces. Za dokonalé barvy platí zákazník několikanásobným zvýšením ceny za přípravu (řádově tisíce Kč/A4). 25.1.9 Kalibrace osvitových jednotek a nátisků Osvitovou jednotku a nátiskové zařízení je třeba pravidelně kalibrovat. Osvitová jednotka se kalibruje na dokonale lineární sytost rastrů (nastavení je vhodné opakovat pro různé frekvence rastrů). Nátiskové zařízení se kalibruje na shodnost s referenčním barevným prostorem. Zákazník studia však nepřichází s těmito profily do styku. 25.1.10 Jiné barevné systémy Jak jsme si již řekli v kapitole 22, systém CMYK není jediným, který lze použít pro tisk. V poslední době doznal většího rozšíření Hi-Fi systém Hexachrome od firmy Pantone[116]. Poměrně běžné je také obohacení systému CMYK o jednu či více přímých barev často se jedná o reklamní letáky či obaly na zboží s přidanou firemní barvou. Některé časopisy též experimentují s jinými barevnými kombinacemi například náhradou černé komponenty systému CMYK tmavě fialovou. Pokud použijeme speciální software, který dokáže separovat i do takových nestandardních prostorů, můžeme dosáhnout zajímavých efektů.

Kapitola 26 Doplnění pojmů V předchozích kapitolách jsme se seznámili s mnoha novými pojmy, se kterými se často setkává uživatel grafických editorů či kalibračních programů. Jejich vysvětlení však bylo věnováno méně prostoru, než by bylo žádoucí, proto si dnes některé z nich doplníme. Pořadí pojmů je zvoleno víceméně podle logického sledu. Čísla v závorkách udávají kapitoly, které se tématem zabývaly. 26.1 Barevné prostory (kapitola 2, 6, 22, 23) Barevný prostor je souřadný systém, ve kterém udáváme barvy. Vzhledem k omezením jednoduchých systémů vzniklo mnoho barevných prostorů s různým určením XYZ (výpočetně jednoduchý referenční prostor při převodu z RGB se pouze násobí maticí), L*a*b* (referenční prostor s dobrou perceptuální uniformitou, při převodu se používají třetí mocniny a větvení), L*u*v* (ještě lepší perceptuální uniformita), Yxy (varianta XYZ, kde se hodnoty x a y normalizují vůči jasu), RGB (množství prostorů odvozených od základních barev např. Adobe, Apple, ColorMatch, CIE RGB, NTSC, PAL/SECAM, srgb, SMPTE-C, WideGamut), HSV (odstín sytost jas), CMY (množství prostorů pro subtraktivní systémy, základní složky se odvozují od výrobců barev), CMYK (prostory pro tisk s použitím černé barvy) a mnoho dalších. Výběr základních RGB barev není zcela pevný. V praxi je výhodné zvolit přímo základní barvy daného výstupního zařízení (obrazovky). Ty jsou dány většinou jejím luminoforem. Běžné jsou primární barvy 700/525/450 nm, EBU, HDTV (pro systém HDTV), P22 (bro běžné monitory s luminoforem P22), Trinitron (pro monitory s obrazovkou Trinitron). K tomu, abychom ze základních barev získali plnohodnotný barevný prostor, musíme přidat údaj o bílém (případně i černém) bodu a průběhu jasové křivky (většinou nějaká hodnota gama). 26.2 Perceptuální uniformita (kapitola 2) Je to míra odlišnosti ve vnímání rozdílů barev, které jsou v barevném prostoru stejně vzdálené. U běžných barevných prostorů se vnímané rozdíly pro různé barvy a jasy liší až v poměru 1:80, hodnota 1:6 se již považuje za dobrou. 26.3 Gama (kapitola 2, 3, 4, 5, 16) Pod názvem gama křivka se skrývá exponenciální křivka a pod hodnotou gama její exponent. Gama se v počítačové grafice používá mnoha různými způsoby k popisu jasového zkreslení (tehdy se nazývá gama zařízení), ke korekci tohoto jasového zkreslení (tehdy se nazývá gama korekce), k ukládání obrázku s co nejmenší viditelnou ztrátou informace (takové obrázky jsou zcela běžné a nazývají se gama korigované), k úpravě hodnot při ukládání převodních tabulek. 137

138 KAPITOLA 26. DOPLNĚNÍ POJMŮ 26.4 Gamut (kapitola 22, 23) Gamut je dosažitelná oblast barev v určitém barevném prostoru. Barvy mimo tuto oblast lze v daném barevném prostoru zobrazit jen přibližně. K jejich přibližnému zobrazení se používají různé zobrazovací záměry. 26.5 Bílý bod, černý bod a úrovně (kapitola 4, 24) Bílý a černý bod jsou mezní hodnoty barevného systému. Zatímco bílý bod je při převodu barevných prostorů povinnou hodnotou, udávající barevné souřadnice pro bílou barvu, u černého bodu se implicitně předpokládá nulová hodnota. Obě hodnoty mají vliv na převod barevných prostorů a ovlivňují zobrazování. Podobný efekt, jako má změna bílého a černého bodu při barevné kalibraci, má i změna vstupních a výstupních rozsahů při běžné editaci obrázku. 26.6 Iluminant (kapitola 22, 24) Iluminant udává spektrální charakteristiku osvětlení. Má těsnou souvislost s bílým bodem iluminant popisuje osvětlení, zatímco bílý bod popisuje souřadný systém. Nejběžnější iluminanty se odvozují od barevných teplot D50 (nejčastější), D55, D65, D75 resp. D93 odpovídají, 5 000 K (teplá bílá) 5 500 K, 6 500 K, 7 500 K resp. 9 300 K (studená bílá). Další běžné iluminanty se označují A, B, C a E. 26.7 Barevná teplota (kapitola 22, 25) Každé těleso vydává tepelné záření ničím neovlivnitelné, závislé pouze na teplotě. Toto záření má pro každou teplotu jinou barvu, kterou lze popsat jedinou hodnotou, zvanou barevná teplota. Tyto barvy mají význačné postavení a v určitém rozsahu teplot jsou vnímány jako bílé. 26.8 Vizuální posouzení a barevná teplota (kapitola 22, 24) Barevná teplota osvětlení ovlivňuje barevný vjem dvěma způsoby. Vliv prvního řádu je změna složení světla odraženého od všech objektů v okolí zdroje světla tedy i např. fotografií. Tento vliv však oko v širokém rozsahu vyrovnává a vnímá ho pouze při styku dvou osvětlení s různými barevnými teplotami (např. okolní světlo oproti nesprávně nastavenému monitoru, podvečerní pohled z okna při rozsvícené žárovce). Tento vliv lze kompenzovat též analyticky. Vliv druhého řádu je způsoben nerovnoměrnostmi ve spektrální charakteristice zkoumaného objektu. U iluminantů odvozených z barevných teplot jsou posuny minimální, u jiných iluminantů mohou být i značné. Proto se u kalibračních tabulek uvádí iluminant, při kterém odpovídají standardu nejpřesněji. 26.9 Převodní tabulky (LUT) barevného profilu (kapitola 23) Jde o převodní tabulku, pomocí které se převádějí vstupní barvy na výstupní. Jsou pro ni důležité dva speciální údaje: dimenze 1D (tato krátká tabulka odpovídá možnostmi běžnému editoru křivek, jak jej známe třeba z GIMPu) nebo 3D (plnohodnotná převodní tabulka) a hodnota gama (běžná hodnota je 3; udává výběr hodnot, pro které jsou záznamy v tabulce; nemá nic společného s gama korekcí; jejím účelem je minimalizovat numerické chyby).

26.10. ZOBRAZOVACÍ ZÁMĚR RENDERING INTENT 139 26.10 Zobrazovací záměr rendering intent (kapitola 2, 6, 25) Jde o úpravu způsobu, jakým se na sebe mapují barevné prostory. Představme si situaci, kdy máme do prostoru CMYK namapovat obrázek, ve kterém se nachází mnoho odstínů jasně modré barvy. Je zřejmé, že všechny tyto odstíny jsou mimo gamut systému CMYK a nelze je zobrazit přesně. Záleží tedy na našem rozhodnutí jak s obrázkem naložíme. Můžeme vybrat nejbližší zobrazitelnou barvu to nezasáhne zbytek obrazu, ale naše modré budou ploché. Můžeme též celý obraz určitým způsobem citlivě upravit (rozuměj zkreslit), aby se tyto barvy ocitly uvnitř gamutu. Nejběžnější záměry pro mapování barev se nazývají: perceptuální mapování, relativní kolororimetrické mapování, mapování sytosti, absolutní kolororimetrické mapování. Jinou úpravu používáme též při zobrazování na monitor, kde je jejím úkolem kompenzovat vliv okolního osvětlení na stínítko obrazovky a na naše vnímání. 26.11 Korekce chyb při tvorbě barevných profilů Každý kalibrační software se musí vyrovnávat s nepřesnostni i při tvorbě samotného profilu. Pokud např. shodou okolností jeden ze stupňů šedé výrazně vybočuje z řady, je možné, že se jedná o náhodnou chybu (např. odlesk nebo smetí na kalibrační tabulce, chyba při obsluze denzitometru). Software by pak měl zareagovat buď požádat uživatele o nové měření, nebo podezřelou hodnotu vyřadit a místo ní použít odhad. Aby takovou chybu rozpoznal, musí navíc vnitřně udržovat jakousi tabulku očekávaných hodnot měření. Odchylka od této hodnoty se nazývá fluktuace. Jistá míra fluktuace je přirozená (proto se ostatně barevné profily vytvářejí), příliš velká hodnota naznačuje chybu. 26.12 Duplexní tisk Duplexní tisk je tisk dvěma libovolně vybranými barvami. Tiskové hodnoty lze odvozovat různými postupy z barevného obrázku (např. aproximací barev) nebo pomocí duplexních křivek z černobílého obrázku. Duplexní křivky určují průběh použití jednotlivých barev v závislosti na jasu černobílého obrázku. Technika duplexních křivek je ve výtvarné praxi velmi oblíbená. Při tisku je třeba volit správné natočení rastrů (viz kapitola 15. 26.13 Bichromie Bichromie je zvláštní druh tisku, který používá dvě různě tmavé verze téže barvy. Jak jsme si již řekli (kapitola 4, 25), 10% a slabší rastry bývají při tisku poměrně nepřesné. Při bichromii se vytvoří speciální duplexní křivka, která pro tisk světlých odstínů používá poměrně husté rastry světlejší barvy. Použitím bichromie u černobílého tisku lze dosáhnout zcela mimořádného podání světlých odstínů. Touto kapitolou jsme uzavřeli problematiku barevné grafiky a zpracování obrázků. V další kapitole se podíváme na základní pojmy 3D grafiky.

140 KAPITOLA 26. DOPLNĚNÍ POJMŮ

Kapitola 27 Základní 3D algoritmy 3D grafika je stále populárnější nejen ve hrách, ale i v nejrůznějších vizualizačních aplikacích, strojírenstvím počínaje a kadeřnickými salony konče. V našem seriálu se však nebudeme zabývat 3D aplikacemi, ale používanými grafickými algoritmy. Jejich znalost nám pomůže orientovat se v obrovské škále možností vizualizačních programů. 27.1 3D na 2D Každý 3D program musí řešit převod třírozměrné reality do dvourozměrných souřadnic obrazovky. K tomu existuje množství nejrůznějších algoritmů, podle účelu a úhlu záběru. Každý z nich zkresluje, a každý z nich zkresluje jinak. Pravoúhlé rovnoběžné zobrazení, používané často pro strojírenské výkresy, je velmi jednoduché při vykreslování pravoúhlých objektů orientovaných podle os. Při jiné orientaci však dává paradoxně zkreslené objekty. Axonometrie je další jednoduché zobrazení, které zachovává přímky. V rovnoběžné axonometrii je definován směr všech tří os a poměr zkrácení délek při vynášení. Pozice se vypočte sečtením hodnot pro jednotlivé souřadnice. Protože toto zobrazení nemá perspektivu, existuje též úběžná axonometrie. V ní jsou navíc definovány tři úběžné body (nekonečné hodnoty na osách) k nim se sbíhají rovnoběžky ve směrech os. Alespoň dva úběžné body bývají většinou mimo obrázek. Nevýhodou axonometrií je zkreslení při velkém úhlu záběru. Pravoúhlé rovnoběžné zobrazení je tedy speciálním případem rovnoběžné axonometrie. Další velkou skupinu tvoří systémy sférického mapování. Nejdříve se vypočítají úhlové souřadnice všech objektů z místa pozorovatele objekty se namapují na povrch jednotkové koule a z této koule se pak mapují na rovinu. Jejich popisy najdeme v každé učebnici kartografie. Mapování obecně nezachovává přímky. Nejběžnějším mapováním je azimutální zobrazení. Při něm se mapuje povrch koule na tečnou plochu. Podle zachování určité veličiny se dělí na stejnoploché, stejnoúhlé a se zachováním délky na polednících (při udávání vdálenosti od pólu). Dalšími zajímavými azimutálními zobrazeními jsou projektivní zobrazení. Nejjednodušším z nich je přímková projekce. V ní se obraz z koule promítá přímkami na rovinu, a proto je omezená na zobrazovací úhly silně pod 180. Projekce mají velký význam, neboť se jedná o přirozené zobrazovací metody většiny fotoaparátů (různé objektivy mohou používat různé typy projekce). V 3D grafice patří vedle axonometrie mezi nejběžnější. S méně obvyklými válcovými mapováními se setkáváme většinou pouze u panoramatických obrázků. Z kartografie známe ještě další typy mapování (kuželové, polykonické), ale ty se v 3D grafice prakticky nepoužívají. 141

142 KAPITOLA 27. ZÁKLADNÍ 3D ALGORITMY 27.2 Popis tělesa V 3D grafice potřebujeme znát třírozměrný popis tělesa. Jakákoliv metoda musí poskytnout odpověď na několik důležitých otázek: zda zvolený paprsek těleso protne, v jakém bodě, jaký je zde normálový směr (směr kolmý k rovině povrchu tělesa), případně jakou barvu bude těleso mít v tomto bodě. Popíšeme si dvě nejčastěji používané metody analytický popis a triangulaci. Analytický popis je výhodný pro matematicky snadno popsatelná tělesa (rovina, koule, elipsoid, paraboloid, hyperboloid, grafy funkcí). Těleso je tak určeno parametrickou rovnicí, jejímž řešením zjistíme, zda paprsek světla těleso protne, kde, a jaký je zde normálový směr. Nejjednodušším objektem pro analytický popis je trojúhelník. Z toho vyšla myšlenka triangulace. Povrch celého tělesa se popíše, jako by byl složen z malých k sobě přisedlých trojúhelníků. To můžeme aplikovat na libovolné těleso. Velikost trojúhelníků zvolíme podle požadované přesnosti. Mnoho programů obě metody kombinuje běžná tělesa se triangulují, ale např. kouli lze zadat analyticky (kvalitní triangulace koule totiž vyžaduje desítky trojúhelníků). V praxi se setkáme i s dalšími modifikacemi těchto algoritmů např. pro vizualizaci grafů bude výhodné použít aproximaci čtyřúhelníkovou sítí. 27.3 Viditelnost objektů Pokud kreslíme tělesa plnou barvou, musíme řešit problém viditelnosti. Nejjednodušším řešením je malířův algoritmus. Tělesa seřadíme podle vzdálenosti; pak kreslíme vše, od nejvzdálenějších objektů k nejbližším, kterými ty vzdálené prostě překryjeme. Malířův algoritmus selhává, pokud se objekty navzájem protínají. Existuje i obrácené použití této metody. Při něm postupujeme od nejbližších objektů a na zobrazovanou plochu vyneseme značky jak daleko je vidět. Pokud zjistíme, že objekt není vidět, vůbec se jím nezabýváme. Také odvrácené části tělesa jsou pro nás neviditelné. K tomu, aby bylo možné snadno rozpoznat, který trojúhelník není vidět, se provede drobná úprava trojúhelníky se orientují stanoví se pevné pořadí vrcholů, a to zároveň udává orientaci normálového směru ven z tělesa. Pokud normála směřuje směrem od pozorovatele, je jasné, že se trojúhelník nachází na odlehlé straně povrchu. 27.4 Metody zobrazování Největší vliv na výsledek má ovšem metoda zobrazování. V 3D grafice jich máme k dispozici širokou škálu od těch nejrychlejších až po fotorealistické. Nejjednodušší metodou zobrazování je zcela jistě drátový model. Vznikne vykreslením všech úseček triangulace. Jen o trochu složitější je zakrytý drátový model. Vykresluje se podobně jako drátový model, z kreslení jsou ovšem vyřazeny neviditelné části. Další skupinou metod jsou metody stínování. Tyto metody již dokáží tělesa obarvit. Pro nápodobu skutečnosti používají bodové světelné zdroje, jejichž světlo se na tělesech rozptyluje. Jejich společným kladem je vysoká rychlost zobrazování, záporem pak plastikově matný vzhled všech objektů. Metoda neumí zobrazit zrcadlový obraz a lom světla. Ve své základní verzi neumí pracovat ani se stíny, ale lze je do algoritmu doplnit. Základní verzí stínování pro triangulované modely je konstantní stínování. V této metodě se každý z trojúhelníků obarví konstantní barvou. Metoda je ze všech nejrychlejší, s výbornou možností hardwarového zrychlení. Při zobrazení oblých předmětů je však velmi nepřesvědčivá (ostrý přechod odstínů na hranách trojúhelníků vnímá oko jako falešnou hranu).

27.4. METODY ZOBRAZOVÁNÍ 143 K zaoblení tvarů je proto nutné použít sofistikovanější metody například Gouraudovo stínování. Normálový vektor (a tím i barvu) ve vrcholech trojúhelníku získáme jako průměr normálových vektorů všech tří sbíhajících se trojúhelníků. Nyní stačí obraz trojúhelníku na obrazovce vyplnit odpovídajícím barevným přechodem, což lze učinit i s významnou pomocí hardwarových akcelerátorů. Obrázek 27.1: Drátový model Obrázek 27.2: Konstantní stínování Obrázek 27.3: A po vyhlazení Obrázek 27.4: Koule Naproti tomu Phongovo stínování z normálových vektorů ve vrcholech aproximuje normálové vektory ve všech bodech trojúhelníku, a teprve z nich odvozuje osvětlení daného bodu. Jde o náročnější postup, výsledkem je však hladší vzhled zejména poblíž obrysu tělesa. Aby jakékoliv stínování fungovalo v náš prospěch, musíme ke každé hraně triangulace přiřadit informaci, zda se jedná o falešnou hranu, kterou je třeba vyhladit, nebo o skutečnou hranu. V tomto případě se trojúhelníky za hranou do hodnot pro vrcholy nezapočítávají. V další kapitole si přiblížíme dokonalejší metody pro fotorealistické zobrazování. Obrázky byly vytvořeny pomocí demonstrančních programů z knihovny GLUT. c A. K. Peters, Mark Kilgard; David G. Yu.

144 KAPITOLA 27. ZÁKLADNÍ 3D ALGORITMY

Kapitola 28 Fotorealistické zobrazení Metody s vysokou věrností zobrazování se často souhrnně označují jako fotorealistické. To naznačuje, že výsledky vypadají tak skutečně, jako by šlo o fotografie. Dnes si popíšeme techniky, které k takovým výsledkům vedou, a přidáme několik ukázkových obrázků. Nakonec si povíme o specializovaných přístrojích pro 3D grafiku. 28.1 Modely pro šíření, odraz a lom světla Abychom mohli odhadnout osvětlení každého bodu v rozumném čase, je třeba provést aproximaci chování všech objektů ve scéně. Její míra je závislá na schopnostech metody. Nejjednodušší model, který se používá ve stínovacích metodách, je model zdrojů osvětlení jako světelných bodů, od nichž se šíří světlo po přímce a ubývá s druhou mocninou vzdálenosti (občas se používá i menší, nefyzikální mocnina, aby scéna nebyla příliš kontrastní). Narazí-li na těleso, rozptýlí se stejnoměrně do všech směrů. Tato metoda je věrohodná při zobrazování matných plastů. Nemusíme příliš přemýšlet, abychom zjistili, kde všude lze model vylepšit. Zdroje světla nejsou body, ale oblasti s určitou velikostí a tvarem, světlo může být při cestě v poloprůhledných materiálech pohlcováno nebo rozptylováno, a nakonec i odraz světla od tělesa není tak jednoduchý, nemluvě o lomu. K tomu nám však zdaleka metody stínování nestačí. Lepší model, popisující paprsek světla, dopadající na těleso, je metoda tří význačných jevů na povrchu tělesa zrcadlový odraz, lom a rozptyl. Tento popis předpokládá, že se dopadající světlo rozdělí, a vyvolá tyto tři efekty. První dva se vypočtou podle zákona odrazu a lomu, rozptyl se vypočte podle rozptylové funkce. Nejjednodušší, konstantní rozptylová funkce, předpokládá stejný rozptyl do všech směrů (blízké chování plastů). Mnohem lepší výsledek dávají empirické materiálové funkce poměru rozptylu v závislosti na odchylce od směru zrcadlového odrazu. Protože základní verze funkce nebere v úvahu úhel odrazu od tělesa, nedokáže ani ona popsat takové jevy, jako je například totální odraz (při velmi šikmém úhlu pohledu se např. od skla téměř všechno světlo odrazí). Kromě komplikované dvoudimenzionální rozptylové funkce k tomu slouží např. Torrance Sparrowův model. Ten matematicky popisuje chování povrchu tělesa, jako by bylo složeno z různě natočených mikroplošek, jejichž vliv se může ve výsledku skládat nebo potlačovat. Jde o model výpočetně náročný, nicméně pro své kvality přesto používaný. I tato metoda bere v úvahu jen povrch tělesa a nezabývá se rozptylem světla uvnitř průsvitných těles. Další zajímavou možností pro rozšíření popisu povrchu tělesa jsou textury (vzory). Pokud má mít těleso různobarevný povrch, provede se na něj mapování dvourozměrného obrázku (jedná se o stejná mapování, o jakých jsme se zmínili v kapitole 1, pouze směr použití je opačný). Textury se používají nejen k tvorbě barevného povrchu, ale často se jejich pomocí popisují i drobné nerovnosti nebo dokonce parametry rozptylu světla. 145

146 KAPITOLA 28. FOTOREALISTICKÉ ZOBRAZENÍ 28.2 Metody sledování paprsku (ray tracing) Metody sledování paprsku již lze zařadit mezi fotorealistická zobrazení. Základní metodou je rekurzivní zpětné trasování paprsku. V této metodě provádíme zpětné trasování paprsku z místa pozorovatele. Zjistíme-li, že paprsek přichází z určitého bodu na tělese, spočteme na něm rozptyl vůči všem viditelným zdrojům světla. U paprsků zrcadlového odrazu a lomu zkoumáme, odkud dorazily, abychom mohli celý postup zopakovat. Rekurzivní sledování paprsku dává ve své základní podobě výborné výsledky u scén s lesklými a průhlednými předměty a zrcadly. Metoda dokáže spočítat i stíny. Neporadí si však se zabarvením světla dvojím rozptýleným odrazem (např. bílá matná kulečníková koule těsně vedle červené). Nezobrazí ani mírně neostrý odraz okolních těles od lehce matných okolních předmětů. Metody progresivního trasování paprsku (sledování od zdroje světla k pozorovateli) nedoznaly výraznějšího rozšíření, vzhledem k jejich výpočetní náročnosti a skutečnosti, že většina výpočtů se provádí zbytečně (jen minimum paprsků se dostane k pozorovateli). Na druhou stranu může v budoucnu tato metoda posloužit pro tvorbu hologramů (výpočetní náročnost tím nevzroste). Za zmínku stojí její zajímavá varianta metoda Monte Carlo náhodné vysílání paprsků náhodnými směry. Tím se dostáváme k nejsofistikovanějším fotorealistickým metodám, jakými bezesporu jsou radiační metody. 28.3 Radiační princip Postupy založené na radiačním principu simulují šíření světla ve scéně. Jsou odvozeny od algoritmů známých z tepelných výpočtů a jsou založeny na analytickém výpočtu vzájemného ovlivňování jednotlivých plošek mezi tělesy. Ze vstupní geometrie se pro scénu vytvoří matice konfiguračních faktorů (octree), která popisuje vzájemnou viditelnost a míru ovlivnění jednotlivých plošek tedy jak silně přispívá jedna ploška do světelné bilance druhé. Poté se použijí materiálové funkce jednotlivých plošek a vznikne obrovská soustava lineárních rovnic. Ta se vyřeší některou ze známých metod (např. iterativní Gauss-Seidlova). Tím dostaneme vyzařovací funkci všech plošek ve scéně. Protože radiační metoda pracuje s triangulací, následuje vyhlazení pomocí známého stínování. Právě popsaná základní verze je extrémně výpočetně náročná. Její první implementace radiosity vyžadovala pro výpočet klasické testovací scény (místnost se židlemi, reflektory a koulemi na stole) na tehdy nejrychlejším počítači Cray více než pět dnů strojového času. Problémem radiačních metod je nejen výpočetní náročnost, ale i použití složitějších analytických těles. Časem vznikly různé urychlovací postupy, které metodu přiblížily i majitelům běžných PC. V praxi se lze setkat s plynulou škálou postupů od stínování až po radiační metody. Protože ani standardní radiační metoda nestačí k věrnému zobrazení některých scén (např. barevné reflektory v mlze), vývoj algoritmů dále pokračuje. 28.4 Přístroje pro 3D grafiku 3D grafika se vymanila ze svých skrovných začátků a vstoupila plně na komerční trh. Podobně, jako existují fotobanky s běžnými fotografiemi, existují i 3D banky, kde si můžete požadovaný model vybrat a zakoupit. Na reklamní disketě jedné firmy najdete dokonce 3D model krávy... Přestože existuje mnoho proprietárních formátů souborů pro 3D modelování, právě díky potřebám 3D bank vzniklo také mnoho špičkových převodníků mezi 3D formáty (převážně komerčních). Nejste tedy v situaci majitelů šablon formulářů pro kancelářské balíky, kteří musí se změnou programu zahodit i všechny vytvořené šablony... Jak takové modely vznikají? Většinou je nevytváří žádný počítačový grafik (či snad počítačový sochař?). Nástrojem na jejich tvorbu jsou 3D skenery. Do speciální zatemněné místnosti se vloží model,

28.4. PŘÍSTROJE PRO 3D GRAFIKU 147 Obrázek 28.1: Superquadrics Oblíbený šetřič obrazovky Superquadrics ukazuje, že i vyhlazené stínování může dát vysoce působivé výsledky, navíc počítač běžné výpočetní síly může objekty plynule animovat, sice bez vyhlazování hran, ale zato i s texturou. Zmíněný plastový vzhled zde není na závadu. Autoři: 1981 Dr. Alan Barr (Caltech University), 1987 1997 Ed Mackey. načež skener začne objekt osvětlovat laserem (lasery). Podle zjištěného místa dopadu pak počítač vytvoří 3D model. Další metody pro konvexní resp. téměř konvexní objekty jsou založeny na skenování za pomoci obepínajícího lanka nebo měřícího hrotu (tento postup je používán u průmyslových NC strojů). Jinou možností je analýza několika fotografií objektu, kdy se před bodový zdroj světla vloží kontrastní čtvercová síť. Zajímavé jsou též obchody s dynamickými modely rozpohybovat pouhou triangulaci krávy by byla neskutečná námaha. A tím jsme se dostali k jednomu z témat příští kapitoly 3D animaci.

148 KAPITOLA 28. FOTOREALISTICKÉ ZOBRAZENÍ Obrázek 28.2: Zrcadlové koule Silnou stránkou rekurzivního sledování paprsku jsou lesklé plochy a zrdcadlové odrazy. Velká kulička zároveň ukazuje použití textury k popisu nerovností povrchu. Obrázek byl vytvořen pomocí demonstranční scény Cluster od Erica Hainese z programu Persistence of Vision T M Ray Tracer (PovRay)[120]. Obrázek 28.3: Místnost Radiační metoda umožňuje simulovat zrcadlové odrazy na stěně ( prasátka ) nebo odraz rozptýleného světla. Cenou za kvalitu je zhruba půlhodina strojového času na 1,4 GHz Athlonu. Vytvořeno z ukázkové scény programu Radiance[38].

28.4. PŘÍSTROJE PRO 3D GRAFIKU 149 Obrázek 28.4: Stínování Obrázek 28.5: Sledování paprsku Obrázek 28.6: Radiosity Srovnání typických vlastností jednotlivých metod na vybrané scéně: Nahoře stínování s použitím stínů, vlevo rekurzivní sledování paprsků s měkkými stíny a vpravo radiosity. Je zřejmé, že sledování paprsku již dokáže vytvořit skleněný vzhled krychle, ale vzájemné odrazy mezi matnými tělesy zvládnou až radiační metody. Obrázky byly vytvořeny pomocí demonstranční scény Shadows od Steva Angera z programu Persistence of Vision T M Ray Tracer (PovRay)[120].

150 KAPITOLA 28. FOTOREALISTICKÉ ZOBRAZENÍ Obrázek 28.7: Šachy Ani radiační metoda neřekla poslední slovo! Dalšího zlepšení lze dosáhnout též simulací chování objektivu fotoaparátu či lidského oka zde např. nastavení ohniskové vzdálenosti. Výpočetní čas však dosáhl třičtvrtěhodinu (Athlon 1,4 GHz DDR). Obrázky byly vytvořeny pomocí demonstranční scény Chess 2 od Ferry Island Pixelboys ( c 1991), Ville Saariho a Dana Farmera (1996) z programu Persistence of Vision T M Ray Tracer (PovRay)[120]. Všechny zde uvedené obrázky byly vytvořeny v Linuxu za pomoci otevřeně kódových aplikací.

Kapitola 29 Fraktály, animace, holografie, 3D galerie V této kapitole dokončíme téma 3D grafiky. Dozvíme se o použití fraktálů, o možnostech animace, o urychlujících metodách a o počítačové holografii. Knihu o grafice v UNIXu ukončíme malou otevřeně kódovou obrazovou přílohou. 29.1 Fraktály v grafice Obrázek 29.1: Arches Fraktály mimořádně zvyšují věrohodnost scény. Obrázek byl vytvořen pomocí demonstranční scény Arches od Dana Farmera z programu Persistence of Vision T M Ray Tracer (PovRay[120]) Klasickým problémem, se kterým se potýká jednoduché fotorealistické zobrazení, je nevěrohodná dokonalost zobrazených objektů nikde žádná šmouha, vše je dokonale pravidelné. Matematika si naštěstí ví rady i zde objevila zvláštní funkce, které, ač jsou deterministické, vykazují známky nepředvídatelnosti. Těmto funkcím se říká fraktální a s nástupem počítačové grafiky se staly oblíbeným objektem zobrazení. Fraktály bývají většinou popsány jako oblast konvergence nějaké operace nebo rekurzivní definicí. Vlastnosti vzniklého objektu se mění od místa k místu, a proto vypadá fraktálová textura nepravidelně. 151

152 KAPITOLA 29. FRAKTÁLY, ANIMACE, HOLOGRAFIE, 3D GALERIE Použití fraktálů v počítačové grafice je velmi široké některé fraktály mají zajímavý vzhled samy o sobě a stačí vybrat rozsah zobrazených hodnot. Další jsou dobrým námětem pro animace (změna parametrů fraktálu v čase dokáže vytvořit krásné animace). Největší uplatnění však mají ve 3D grafice pomocí fraktálů lze generovat mraky, stromy i textury nepravidelných povrchů. Pro grafické zobrazení je zajímavý nejen vlastní fraktál, ale i rychlost konvergence funkce v okolí fraktálu. Porozhlédnete-li se po možnostech GIMPu, zjistíte, že fraktály jsou základem mnoha modulů. Na ukázce 29.2 vidíte Man o warův fraktál vytvořený pomocí Badatele fraktálů. Obrázek 29.2: Man o warův fraktál 29.2 Ambientní osvětlení U trasovacích programů se často definuje ambientní osvětlení. Jedná se o světlo, přicházející ze všech stran z okolí scény, není-li zastíněno. Většinou bývá stejnoměrné, ale lze jej i modulovat např. texturou. 29.3 Animace Základním typem animace je změna vzájemné polohy objektů v čase. Objekty se na scéně pohybují podél cesty. Cesta bývá většinou určena parametrickou Bézierovou křivkou, která udává polohu tělesa v čase. Další parametrická funkce může udávat rotaci tělesa v čase. Běžné je též určení rotace dvěma speciálními způsoby konstantním natočením v prostoru nebo natočením po směru cesty. Podobně, jako existuje vyhlazování (antialiasing) objektů v prostoru, či naopak rozostřování podle hloubky ostrosti, existuje takové rozšíření i v animacích rozmáznutí pohybem (motion blur). To dává mnohem věrohodnější dojem rychlého pohybu než sled ostrých statických obrázků. CAD aplikace používají pro animace speciální schémata, která popisují možnosti vzájemné polohy mezi jednotlivými objekty. Ta pak slouží nejen k animaci, ale též ke sledování funkčnosti modelovaného zařízení. Ukázka z demonstrančního programu Walker od Kanishky Agarwala, Philipa Winstona a Rana Libeskind-Hadase z knihovny GLUT.

29.4. DYNAMICKY MODELOVANÉ OBJEKTY 153 Obrázek 29.3: Chodící robot první krok Obrázek 29.4: Chodící robot druhý krok 29.4 Dynamicky modelované objekty U některých objektů prostá změna polohy nestačí. Zde se používá dynamické modelování. Existuje velké množství jednoúčelových algoritmů dynamicky modelujících různé objekty. Obrázek 29.5: Animovaná tvář vážná Obrázek 29.6: Animovaná tvář s úsměvem Například u obličeje se používá modelování svalových úponů. Pohyb se v zadaném poměru přenáší z místa úponu podle na okolní body triangulace. Pokud jste pozorně prohlédli drátový model obličeje v kapitole 27, mohli jste si všimnout podivných černých čar jednalo se právě o úpony model obličeje z projektu Face je totiž pohyblivý. Program Face z knihovny GLUT. c A. K. Peters, Mark Kilgard; David G. Yu. Ukázka změny napětí tří svalů. Podobně se pro dynamické modelování těla používá simulace kostry. Různě náročné algoritmy pak převádějí dobře vypočítatelné pohyby kostry na mnohem hůř vypočítatelné pohyby povrchu těla. Do jiné kategorie patří simulace pružných objektů (např. srážka dvou gumových koulí). Jejich simulace není již jen otázkou 3D algoritmů, ale i algoritmů pro dynamiku pružných těles. Naopak u nepružných těles a kapalin přijde ke slovu hydrodynamika.