Evropský polytechnický institut, s.r.o. 1. soukromá vysoká škola na Moravě
Kunovice
POČÍTAČOVÁ GRAFIKA
Doc. Ing. Karel Pichl, CSc. Ing. Jindřich Petrucha, Ph.D.
2011
1
2
Evropský polytechnický institut, s.r.o. Kunovice
Počítačová grafika
Doc. Ing. Karel Pichl, CSc. Ing. Jindřich Petrucha, Ph.D.
Kunovice 2011 3
Název: © Počítačová grafika 2. aktualizované vydání Autor: © Doc. Ing. Karel Pichl, CSc. © Ing. Jindřich Petrucha, Ph.D. Vydavatel: © Evropský polytechnický institut, s.r.o. Kunovice, 2011 Neprošlo jazykovou úpravou ISBN: 978-80-7314-261-2 4
Obsah 1
ÚVOD DO POČÍTAČOVÉ GRAFIKY ......................................................................................7 1.1 Pojem barva.............................................................................................................................7 1.2 Barevné modely ....................................................................................................................10 1.2.1 Barevný model RGB ......................................................................................................10 1.2.2 Barevný model CMY......................................................................................................10 1.2.3 Barevný model CMYK ...................................................................................................11 1.2.4 Barevný model HSV ......................................................................................................12 1.2.5 Barevný model HLS.......................................................................................................12 1.2.6 Modely pro televizní a videotechniku ............................................................................13 1.3 Uložení obrazu v počítači......................................................................................................14 1.3.1 Základní pojmy ..............................................................................................................14 1.3.2 Barevné módy ................................................................................................................16 1.4 Samostatná práce studenta ....................................................................................................18 1.5 Kontrolní otázky ...................................................................................................................18 1.6 Shrnutí kapitoly .....................................................................................................................19
2
ROVINNÁ GRAFIKA ................................................................................................................21 2.1 Úvod do 2D grafiky (rozdíly mezi rastrem a vektorem) .......................................................21 2.2 Vektorová reprezentace obrazu .............................................................................................21 2.2.1 Rastrová reprezentace obrazu .......................................................................................22 2.3 Geometrické transformace ....................................................................................................23 2.3.1 Transformace afinních souřadnic .................................................................................23 2.3.2 Transformace kartézských souřadnic ............................................................................25 2.3.3 Homogenní souřadnice .................................................................................................25 2.3.4 Transformace ve 2D ......................................................................................................26 2.3.5 Transformace ve 3D ......................................................................................................29 2.4 Rasterizace základních primitiv (úsečka, kružnice, elipsa) ...................................................31 2.4.1 Rasterizace úsečky ........................................................................................................31 2.4.2 Rasterizace kružnice......................................................................................................35 2.5 Rastrová grafika ....................................................................................................................37 2.5.1 Alias a antialiasing .......................................................................................................37 2.5.2 Histogram......................................................................................................................38 2.5.3 Práce s histogramem .....................................................................................................41 2.5.4 Jas a kontrast ................................................................................................................43 2.5.5 Negativ ..........................................................................................................................44 2.5.6 Emboss ..........................................................................................................................44 2.5.7 Filtrace obrazu ..............................................................................................................44 2.5.8 Transformace barev ......................................................................................................47 2.5.9 Změna rozlišení .............................................................................................................52 2.6 Křivky ve 2D .........................................................................................................................55 2.6.1 Křivky zadané analyticky ..............................................................................................55 2.6.2 Interpolační křivky ........................................................................................................56 2.6.3 Aproximační křivky .......................................................................................................58 2.7 Komprese a dekomprese .......................................................................................................62 2.7.1 Proč používat komprese? ..............................................................................................62 2.7.2 RLE (Run Length Encoding) komprese – bezeztrátová, symetrická, fyzická .................63 2.7.3 Huffmanovo kódování – komprese bezeztrátová, symetrická, fyzická ...........................64 2.7.4 LZW (Lempel Ziv Welch) komprese – bezeztrátová, symetrická, fyzická .....................64 2.7.5 JPEG komprese – ztrátová, symetrická, fyzická. ..........................................................65 2.7.6 Fraktální komprese – ztrátová, nesymetrická, logická. .................................................67 2.8 Formáty grafických dat .........................................................................................................67 2.8.1 Rastrové grafické formáty .............................................................................................68 2.8.2 Formáty pro animované sekvence .................................................................................70 2.9 Shrnutí a závěr ......................................................................................................................79 2.10 Kontrolní otázky ...................................................................................................................80 2.11 Shrnutí ...................................................................................................................................80
3
POUŽITÍ BAREVNÉHO KRUHU PRO VYJÁDŘENÍ BAREV ...........................................81 3.1
Zadání úkolů .........................................................................................................................82 5
4
ON-LINE RASTROVÁ GRAFIKA.......................................................................................... 83 4.1 4.2
5
Pracovní úkol ....................................................................................................................... 85 Kontrolní otázky ................................................................................................................... 85
FRAKTÁLY A JEJICH APLIKACE ...................................................................................... 87 5.1 5.2 5.3 5.4 5.5
Použití programu fraktál exploreru ...................................................................................... 89 Aplikace fraktálů na reálné objekty krajin ........................................................................... 93 Samostatná práce studenta.................................................................................................... 94 Aplikace fraktálů v ekonomické oblasti ............................................................................... 94 Otázka ke kapitole ................................................................................................................ 95
LITERATURA ................................................................................................................................... 97
6
1
ÚVOD DO POČÍTAČOVÉ GRAFIKY
Cíle kapitoly Protože člověk vnímá nejvíce informací vizuálně, přizpůsobují se i technické vyjadřovací prostředky k co nejnázornějšímu způsobu interpretace informace na obrazovce počítače. Počítačová grafika plní funkci rozhraní mezi technickou informací srozumitelnou ve své číselné podobě pouze zkušenému technikovi a názornou vizuální interpretací této informace srozumitelnou i obyčejnému uživateli. Cílem kapitoly je seznámit čtenáře se současnými poznatky vnímání barevné grafické informace důrazem na interpretaci barvy, rozlišovací schopnost technických prostředků počítačové grafiky a její klasifikaci. Klíčová slova Počítačová grafika, barva, barevné modely, model RGB, model CMY, model CMYK, model HSV, model HLS, modely pro televizní techniku, modely pro videotechniku, barevné módy, technické prostředky počítačové grafiky, uložení obrazu v počítači. Počítačová grafika se rozvinula z teoretické vědy na počátku 70. let do současné podoby okupující obrazovky pracovních stanic, běžných počítačů i malých displejů mobilních telefonů. Vzhledem k faktu, že člověk vnímá nejvíce informací vizuálně, přizpůsobují se i technické vyjadřovací prostředky k co nejnázornějšímu způsobu interpretace informace na obrazovce počítače. Počítačová grafika plní funkci rozhraní mezi technickou informací srozumitelnou ve své číselné podobě pouze zkušenému technikovi a názornou vizuální interpretací této informace srozumitelnou i obyčejnému uživateli. Počítačovou grafiku můžeme rozdělit na:
rovinnou, plošnou (2D) prostorovou (3D),
Každá z nich může být:
rastrová vektorová.
Do počítačové grafiky rovněž spadá animace, která může být plošná, prostorová, rastrová i vektorová. V těchto skriptech se budeme zabývat plošnou rastrovou a vektorovou grafikou. Prostorová grafika a vizualizace bude náplní dalších dílů skript.
1.1
Pojem barva
Barva je vjem, který prožijeme, když světlo dopadne na sítnici našeho oka. Sítnici našeho oka pokrývá velké množství citlivých receptorů, které jsou uspořádány po trojicích reagujících na tři základní barvy - červenou, zelenou a modrou). Základní barvy se označují počátečními písmeny jejich anglických názvů (red,green,blue), tedy R,G,B. Jas se označuje písmenem I. 7
Vytváření modelů CMYK a RGB pro barevné vyjadření
Fyzikální vlstnosti barev v matematickém vyjádření
Receptory na oční sítnici vyšlou po dopadu světla informaci od lidského mozku a ta je interpretována jako barva. Každý z těchto tří receptorů je citlivý na jinou vlnovou délku světla (barvu). Množství dopadajícího světla na sítnici oka určuje jas dané barvy. Oko nejlépe rozlišuje barvy při střední intenzitě jasu, příliš málo nebo příliš mnoho dopadajícího světla má za následek snížení schopnosti rozlišovat barvy. Lze si to představit i tak, že při malé intenzitě dopadajícího světla jsou receptory málo vybuzeny a při velké intenzitě jsou zahlceny. Ne všechny barvy jsou lidským okem vnímány stejně intenzivně. Velmi výrazná je například nižší citlivost lidského oka na modrou barvu. Lidské oko obecně více vnímá jas než barevnou informaci. Vztah mezi jasem a základními barvami lze vyjádřit jako: I = 0,299 R + 0,587 G + 0,114B Na tomto vztahu si lze všimnout, že nejcitlivější je lidské oko na zelenou barvu.Všechny nedokonalosti lidského oka jsou velmi využívány v praxi. Podle oficiální definice je barva složena ze tří složek, jsou to jas, sytost a barevný tón. Samotnou barevnost barvy z lidského pohledu nám udává barevný tón. Barevný tón si můžeme představit jako kružnici, po jejímž obvodu jsou uspořádány plynule přecházející odstíny tří základních barev. Tyto základní barvy nejsou přesně definovány (např. jejich vlnová délka), je definována pouze jejich poloha ve stupních na této kružnici. Pro červenou barvu je to 20°, pro zelenou je to 164° a pro modrou je to 237°. Tyto definice byly navrženy mezinárodní organizací CIA (Commission Internationale de l'Éclairage, International Commission on Illumination). Tato organizace byla založena v roce 1936 s cílem sjednotit normy a standardy v oblasti barev zejména pro průmyslové použití například výrobci barev. Normy a standardy této organizace jsou založeny na výzkumu lidského zraku a lidského vnímání barev a jejich odstínů. Barevný prostor je založen na schopnostech standardního pozorovatele (CIE Standard Observer), hypotetického pozorovatele, který byl odvozen z výzkumu CIE týkajícího se lidského vidění. Z rozsáhlého výzkumu vycházejí také funkce citlivosti lidského oka (colour matching functions) a univerzální barevný prostor (universal colour space). Funkce citlivosti lidského oka vyjadřují hodnoty základních složek světla (červené, zelené a modré), které jsou potřebné, aby byl průměrný pozorovatel schopen vidět všechny barvy spektra. Základní složky jsou označovány X, Y a Z. Barevný prostor XYZ je základním prostorem CIE. Základní složky X,Y a Z jsou tzv. neskutečné barvy. Barevný prostor, který jsme schopni obsáhnout pomocí výpočetní techniky, je podprostorem tohoto prostoru. Vztah těchto dvou prostorů je zachycen na následujícím obrázku.
8
Obr.1 – CIE prostor
Pro počítačové a průmyslové použití se používají normy organizace ICC (International Colour Consortium). ICC byla založena v roce 1993 předními výrobci průmyslových a počítačových komponent. Účelem bylo navrhnout a přijmout standardní postupy, formáty a normy tak, aby bylo možno přenášet grafické informace mezi různými zařízeními beze změny barevné informace. Zařízení (monitory, grafické karty, tiskárny), které pracují podle standardu ICC, zaručují stejnou interpretaci barevné informace při přenášení dat mezi těmito zařízeními.
dokument
skenování
zpracování
tisk
Obr.2 – Typický tok dokumentů
Zařízení odpovídající standardu ICC přidají do zpracovávaných dat speciální informaci (ICC profile), podle které ostatní zařízení transformují barvy do svého barevného prostoru (gamutu). ICC standard přesně definuje tyto transformace a zaručuje tak stálost barev dokumentu (grafických dat) během jeho zpracování. Každé zařízení musí být barevně kalibrováno. Barevnou kalibraci neboli seřízení barev daného zařízení, tak aby odpovídalo ICC standardu, provádí buď výrobce při výrobě a nebo uživatel pomocí speciálních nástrojů, případně využitím vestavěných funkcí.
9
1.2
Barevné modely
Současně se vznikem techniky pro přenos a zpracování obrazu vznikaly i metody pro přenos a zobrazení barevného signálu. Existuje celá řada barevných modelů, většina z nich byla vyvinuta pro konkrétní aplikaci a později byla využívána nebo se dodnes používá v nejrůznějších aplikacích, formátech, programech nebo přístrojích. Barevný model RGB v barevné krychli
1.2.1
Barevný model RGB
Tento barevný model se také nazývá aditivní a to proto, že výsledná barva je složena součtem jednotlivých barevných složek. Tento barevný model je základním modelem pro použití ve výpočetní technice. Barevné složky jsou R,G,B, což jsou první písmena anglických názvů barev - červená, zelená a modrá (red,green,blue) a nabývají hodnot v intervalu <0,1>, případně <0,255>. Hodnota nula znamená, že daná barevná složka není přítomna, hodnota 1 (nebo 255) znamená, že daná barevná složka je přítomna ve své maximální intenzitě. Jednotlivé barevné složky si lze představit jako barevná světla, která svítí do jednoho bodu. Když nesvítí žádné světlo, tak dostaneme tmu neboli černou barvu, a když svítí všechna s maximální intenzitou tak dostaneme bílou barvu. Takto funguje například obrazovka televize nebo monitoru. Rovněž tak počítačové grafické karty pracují v tomto barevném modelu. Pro názornost se tento barevný model znázorňuje jako krychle, která má v rozích základní barvy a ve stěnách a uvnitř jejich kombinace. tyrkysová
modrá bílá fialová
zelená černá červená
žlutá
Obr.3 – RGB krychle
1.2.2
Barevný model CMY
Tento barevný model vychází z přirozeného míchání barev malířem a bývá označován jako subtraktivní, neboť výsledná barva je vytvořena odečtením základních barev. Základní barvy jsou C,M,Y, což jsou počáteční písmena anglických názvů barev - tyrkysová, fialová a žlutá (cyan,magenta,yellow). Celý proces míchaní barev si můžeme představit na listu bílého papíru. Jestliže nenaneseme žádnou barvu, výsledná barva bude bílá. Když naneseme všechny barvy v jejich maximálních intenzitách, tak výsledná barva bude černá. Již z tohoto příkladu je zřejmé, že tento barevný model najde uplatnění zejména v tiskárnách a barevných kopírkách, tedy všude tam, kde se pracuje s papírem. Převod mezi RGB modelem a CMY modelem je pouhým odečtením hodnot od jedničky.
10
c 1 r m 1 g y 1 b
Barevný model CMY si můžeme podobně jako model RGB znázornit jako krychli, která má ve svých stranách základní barvy a na svých stěnách a uvnitř jejich kombinace. 1.2.3
Barevný model CMYK
Již podle názvu je zřejmé, že tento barevný model je příbuzný s barevným modelem CMY. Písmeno K označuje černou barvu (z anglického black). Přidání černé barvy k základním barvám vychází z praktického a ekonomického hlediska. Většina tištěného materiálu je text tudíž nejvíce používaná barva je černá. V barevném modelu CMY vzniká černá barva smícháním žlutá
červená černá
zelená
fialová bílá modrá
tyrkysová Obr.4 – CMY krychle
všech tří základních barev v jejich maximálních intenzitách což převedeno do praktického pohledu znamená, že na tisknutí textu dostaneme maximální spotřebu všech tří barev. Rovněž tak kvalita černé barvy vzniklé smícháním tří základních barev není příliš dobrá, neboť se negativně projevují vlastnosti použitého papíru a přesnost soutisku tiskové hlavy. Tyto všechny a i další důvody vedly k separování černé barvy a jejímu přidání k základním tiskovým barvám. Velikost černé složky se určí jako minimum z hodnot C,M,Y od kterých se potom tato hodnota odečte. Tyto barevné modely jsou navrženy tak, aby vyhovovaly digitální technice. Pro člověka je velmi obtížné si představit, jaké množství složek potřebuje pro namíchání určité konkrétní barvy, nebo o kolik má změnit hodnoty jednotlivých složek, aby získal odlišný odstín konkrétní barvy. Proto vznikly i jiné barevné modely, které se zaměřují na způsob míchání barev, který je co nejvíce podobný lidskému uvažování a práci s barvami. Jak je uvedeno na začátku kapitoly, člověk vnímá barvu jako složeninu z barevného tónu, jasu a sytosti. Z tohoto přirozeného přístupu vycházejí i následující barevné modely.
11
Obr.5 – Model HSV
1.2.4
Barevný model HSV
Tento model znázorňuje barevný prostor jako šestiboký jehlan. Po obvodu tohoto jehlanu se nachází barevný tón označovaný písmenem H z anglického Hue a nabývá hodnot ve stupních nebo radiánech, směrem od středové osy ke stěnám je sytost označená jako S z anglického Saturation, nabývá maximální hodnoty u stěny a minimální u středové osy, směrem od vrcholu k podstavě je jas označený jako V z anglického Value, který nabývá maximální hodnoty v podstavě a minimální ve vrcholu jehlanu. Výhoda tohoto modelu spočívá v jeho relativní jednoduchosti pro výpočet i použití, nevýhodou je poměrně nepřesné vyjádření barevných přechodů díky šestiboké podstavě. 1.2.5
Barevný model HLS
Model HLS odstraňuje nevýhody modelu HSV a představuje tak nejvýhodnější barevný model pro výběr barev. Tento model je velmi využíván v nejrůznějších programech určených na práci s grafikou a můžeme ho nalézt i jako standardní část operačního systému Microsoft Windows. Model je znázorněn dvojicí kuželů spojených podstavami. Po obvodu kuželu je barevný tón označený jako H, směrem od středové osy k povrchu je sytost S a směrem od spodního vrcholu k hornímu vrcholu je jas označený jako L z anglického Lightness. Model HLS plně odpovídá skutečnosti - můžeme si všimnout, že nejvíce různých barev se nachází v místě se střední intenzitou jasu (ve spojených podstavách jehlanů), sytost zde nabývá maximálních hodnot. Jak postupuje jas směrem k vyšším nebo nižším hodnotám, sytost nabývá menších hodnot, až zůstane jenom jasová složka. Danou situaci si lze představit jako tlumení nebo zvyšování intenzity osvětlení v místnosti, při malém nebo velmi intenzivním světle nejsme schopni vnímat barvy.
12
Obr.6 – Model HLS
Modely HSV a HLS se používají všude tam, kde je požadováno, aby uživatel definoval barvu. Přepočet do modelu RGB nebo CMY nelze vyjádřit jednoduchým vzorcem. Přepočet má charakteristiku algoritmu. Již z geometrického vyjádření těchto barevných modelů snadno zjistíme, že některé hodnoty nejsou definovány (jsou za hranicí jehlanu nebo kuželů), proto tyto stavy musí být při přepočtu náležitě ošetřeny. 1.2.6
Modely pro televizní a videotechniku
Ještě v dobách, kdy se vývojářům počítačů pouze snilo o možnosti používat počítač k zobrazování a práci s barevnými grafickými daty, vznikaly barevné modely pro analogové zpracování barevného signálu. Tyto modely jsou přizpůsobeny přenosu barevného televizního signálu. V současné době existují tři hlavní normy pro přenos barevného televizního signálu. Jsou to americká norma NTSC využívající model YIQ, evropská (německá) norma PAL využívající model YUV a ruská norma SECAM využívající model YCbCr. Společným rysem těchto norem je oddělení jasové složky označené písmenem Y od dvou barevných složek. Díky tomuto oddělení je možno přijímat barevný signál i na černobílé televizi – zobrazí se pouze jasová složka a barevné složky se zahodí. Tyto barevné modely nemají význam pouze pro televizní a videotechniku, ale jejich výhod se využívá i v počítačovém zpracování obrazu. Například populární kompresní formát JPEG pracuje s barevným modelem YCbCr, rovněž tak mnohé formáty pro ukládání videa pracují v některém z těchto barevných modelů. Z modelu RGB získáme hodnoty YUV pomocí maticového násobení
13
0.587 0.114 R Y 0.299 U 0.141 0.289 0.437 G V 0.615 0.515 0.100 B
Hodnoty modelu YCbCr získáme podle tohoto maticového násobení 0.587 0.114 R Y 0.299 Cb 0.1687 0.3313 0.5 G Cr 0.5 0.4187 0.0813 B
Jas Y nabývá hodnot v intervalu <0.0,1.0>, barevné složky Cb a Cr nabývají hodnot v intervalu <-0.5,0.5>. Jasová složka Y se nazývá luminance a barevné složky Cb a Cr se nazývají chrominance.
1.3
Uložení obrazu v počítači
Jak již bylo uvedeno v kapitole o barevných modelech, počítače pracují s barevným modelem RGB. Způsob práce s barvami v tomto barevném modelu se měnil v závislosti na použité technologii a maximálním počtu současně zobrazitelných barev. 1.3.1
Základní pojmy
Grafický mód Soudobé grafické adaptéry mohou pracovat v několika grafických módech a umožňují mezi těmito grafickými módy přepínat. Grafický mód je charakterizován použitým rozlišením, počtem současně zobrazitelných barev a rozsahem možných obnovovacích frekvencí. Pixel Pixel je nejmenší zobrazitelný nebo adresovatelný element. Odpovídá jednomu bodu v obrázku nebo na obrazovce. Rozlišení Rozlišení je maximální počet zobrazitelných pixelů v horizontální a vertikální ose. Obvykle se udává ve tvaru XxY, přičemž X je počet pixelů v horizontální ose a Y je počet pixelů ve vertikální ose. I když kombinace počtu pixelů v horizontální a vertikální ose může být libovolná a tudíž existuje skoro nekonečné množství rozlišení, v praxi se používají pouze určité kombinace. Tyto kombinace jsou výhodné jak z hlediska zpracování dat grafickým adaptérem a monitorem, tak i programovým vybavením. V následující tabulce je přehled nejčastěji používaných rozlišení.
14
Rozlišení 320x200 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
Počet současně zobrazitelných barev Z prosté logické úvahy vyplyne, že čím je větší počet barev v obrázku, tím více dat potřebujeme na jeho uložení. Rozšířením této počáteční úvahy dostaneme, že čím je větší počet dat, tím víc času potřebujeme na práci s nimi. S těmito problémy se potýkali i výrobci grafických adaptérů, proto grafické adaptéry nepracují s plným barevným spektrem, jak nám ho nabízí barevný model RGB, ale s jeho podmnožinou. V následující tabulce je přehled nejčastěji používaných barevných módů. Počet současně zobrazitelných barev 16 256 65535 (high colour, tisíce barev) 16,7 mil ( true colour, miliony barev) 16,7 mil + (true colour, miliony barev)
Počet potřebných bitů na jeden pixel 4 8 16 24 32
Z předcházející tabulky je vidět přímá úměra mezi počtem současně zobrazitelných barev a počtem bitů potřebných k uložení jednoho pixelu. Všechny tyto barevné módy mohou být v kombinaci s libovolným rozlišením. Počet bajtů potřebných k uchování jedné zobrazené obrazovky v konkrétním rozlišení a barevném módu dostaneme podle jednoduchého vztahu.
M
X * Y * Bpp 8
kde M je počet bajtů potřebných pro uchování obrazovky, X je horizontální rozlišení, Y je vertikální rozlišení a Bpp je počet bitů potřebných k uložení jednoho pixelu. Pro ilustraci je v následující tabulce uveden počet bajtů potřebný pro uložení jedné obrazovky v různých barevných módech v nejpoužívanějším rozlišení 1024x768. Počet současně zobrazitelných barev 16 256 65535 (high colour) 16,7 mil ( true colour) 16,7 mil + (true colour)
Počet potřebných bitů na jeden pixel 4 8 16 24 32
Velikost dat 393 216 786 432 1 572 864 2 359 296 3 145 728
Je zřejmé, že barevný mód má podstatný vliv na množství dat, která musí grafický adaptér zpracovat s každým zobrazeným snímkem. Obnovovací frekvence
Tento parametr grafického módu má svůj smysl pouze při spojení s CRT monitorem. 15
U LCD monitorů je obnovovací frekvence konstantní. Podobně jako u televizní obrazovky, obrazovka počítačového monitoru překresluje svůj obsah (obraz) několikrát za sekundu. Obnovovací frekvence je počet překreslení obrazovky monitoru za jednu sekundu a udává se v hertzích. Standardní obnovovací frekvence je 60 Hz. I když lidské oko vnímá obrazovku monitoru s obnovovací frekvencí 60Hz jako stabilní, z ergonomického hlediska tato obnovovací frekvence nevyhovuje. Světlocitlivé tyčinky na krajích sítnice lidského oka jsou více citlivé na obnovovací frekvenci než tyčinky ve středu sítnice. Proto obnovovací frekvence 60Hz velmi unavuje oči a není vhodná pro dlouhodobou práci s počítačem. Tento jev si můžeme ověřit třeba tak, že svůj pohled zaostříme nad nebo pod monitor a periferním viděním uvidíme kmitající obraz na obrazovce monitoru. Pro dlouhodobou práci jsou vhodné obnovovací frekvence od 75Hz a vyšší. Jako ideální se jeví obnovovací frekvence 100Hz. Problém obnovovací frekvence a únavy učí je tím výraznější, čím je větší úhlopříčka obrazovky monitoru a jeho rozlišení. Obnovovací frekvence a technické vybavení
Vyšší obnovovací frekvence kladou větší nároky i na použitý hardware. Obnovovací frekvenci nelze nastavit libovolně, obnovovací frekvence je svázaná s použitým rozlišením a výrobce grafického adaptéru a výrobce monitoru v dokumentaci uvádí, jaké obnovovací frekvence při jakém rozlišení lze použít. Výslednou zvolenou obnovovací frekvenci musí podporovat jak grafický adaptér, tak i monitor při daném rozlišení. Zvolený barevný mód v tomto nehraje žádnou roli. U CRT monitorů závisí maximální obnovovací frekvence na schopnosti rychle překreslovat obrazovku, u grafických adaptérů maximální obnovovací frekvence závisí na rychlosti použitého DA převodníku (RAMDAC). Protože jako výstup z grafického adaptéru do monitoru jde analogový signál, musí být DA převodník schopen převést všechny body obrazu na jejich analogové barevné složky, a to někdy i více než 100x za sekundu v závislosti na zvolené obnovovací frekvenci. Protože rychlost DA převodníku je konstantní (udává se v MHz), s rostoucím rozlišením klesá maximální obnovovací frekvence grafického adaptéru. 1.3.2
Barevné módy
16 barev
Tento barevný mód přetrval ještě z grafických adaptérů EGA. Dnes se používá z důvodu kompatibility mezi grafickými adaptéry, neboť všechny grafické adaptéry ho podporují. Setkáme se s ním například po startu počítače, kdy se vypisují textová hlášení, při instalaci operačního systému a nebo při práci v nouzovém režimu Windows. Pro uložení jednoho pixelu používá tento barevný mód pouhé 4 bity. Do čtyř bitů zakódujeme 16 hodnot (0-15). Jak tam tedy vložíme informaci o třech barevných složkách RGB? Tento problém je vyřešen jednoduchým trikem, který se nazývá barevná paleta. Barevnou paletu si představme jako paletu malíře. Jako malíř který si na ni nejprve předmíchá barvy, které posléze použije v obraze, také my si můžeme předmíchat barvy použité pro zobrazení obrazu. Barevná paleta je ve své podstatě tabulka obsahující index barvy (0 až 15) a ke každému indexu barvy příslušné hodnoty R,G a B složky. Ty nabývají hodnot 0 – 255, mají tedy velikost 1 bajt (8 bitů). Ve videopaměti grafického adaptéru je tak jeden pixel obrazu tvořen čtyřmi bity, které odkazují na index barvy v barevné paletě. Při vykreslování pixelu 16
na obrazovku se grafický adaptér podívá na příslušné hodnoty R,G a B pro daný pixel a zobrazí ho. Je vidět, že lze opravdu současně zobrazit pouze 16 různých barev. 256 barev
Tento barevný mód je velmi podobný předchozímu. Rozdíl je v tom, že pro jeden pixel zde používáme 8 bitů (1 bajt), což nám dává 256 různých hodnot. Barevná paleta zde tudíž má 256 indexů barev, každá barva je tvořena barevnými složkami R,G a B, z nichž každá má velikost jednoho bajtu. Tento barevný mód byl velmi populární, neboť všechny pixely jsou zarovnány na adresu jednoho bajtu, to umožňuje pohodlnou a rychlou manipulaci s obrazovými daty a 256 barev bylo v té době něco úchvatného a dostatečného pro tehdejší využití. Dynamická paleta
Barevné módy využívající paletu barev mají kromě limitace na maximální počet současně zobrazitelných barev i jednu výhodu. Touto výhodou je možnost velmi jednoduše a rychle změnit libovolnou barvu nebo skupinu barev na celé obrazovce pouhou modifikací položek v barevné paletě. Tímto jednoduchým trikem lze dosáhnout působivých efektů, jako například postupné rozsvěcování nebo ztmavování obrazovky, rotace barev, atd. Limitaci na maximální počet současně zobrazitelných barev lze obejít použitím tzv. dynamické palety, kdy se pro každý zobrazený snímek spočítá celá paleta (v paměti jsou snímky uloženy v pravých barvách – true color) na rozdíl od tzv. statické palety, kdy se pro všechny snímky používá stejná univerzální paleta. High Color
Tento barevný mód umožňuje zobrazit tisíce barev současně. Na rozdíl od předcházejících barevných módů nepoužívá paletu, ale jednotlivé barevné složky jsou zakódovány přímo do jednoho pixelu (do místa v paměti, kde je uložena informace o jednom pixelu). Jeden pixel má velikost 16 bitů (2 bajty), což umožňuje zobrazit současně až 65536 různých barev. V některých případech se používá zobrazení, které má velikost pixelu 15 bitů, poslední bit zůstává nevyužitý. V tomto případě lze současně zobrazit pouze 32768 různých barev. Barevné složky nemají velikost jednoho bajtu (nenabývají hodnot 0-255), ale bývají omezeny na 5 nebo 6 bitů (32 nebo 64 hodnot). Pro 32768 barev se používá schéma 5-5-5, to znamená 5bitů pro každou barevnou složku (R,G,B). Pro 65535 barev se používá schéma 5-6-5, zde je zelená barevná složka uložena s vyšší přesností, neboť lidské oko je nejcitlivější na barevné přechody zelené a žluté barvy. Je vidět, že základní barvy mohou mít pouze 32, respektive 64 odstínů. Toto omezení se objeví jako problém při souvislých přechodech základních barev. Při běžné práci, hraní her nebo prohlížení fotografií se toto omezení nejeví jako významné. Výrobci ovladačů pro grafické karty dokáží tyto nedostatky velmi výrazně omezit použitím techniky zvané dithering. True Colour
Pro profesionální výtvarníky a umělce ani tisíce barev nestačí. Tito lidé potřebují mít na monitoru stejně věrně barevný obraz, jako jim vytiskne tiskárna nebo osvitová jednotka. Řešení tohoto problému je barevný mód, zvaný true color (pravé barvy). Stejně jako předešlý barevný mód nepoužívá paletu, ale jednotlivé barevné složky jsou uloženy přímo v pixelu. Pro každou barevnou složku je vyhrazen jeden bajt, 17
takže jeden pixel zabírá v paměti 3 bajty (24 bitů), proto se někdy označuje také jako režim 24bitové barvy. Každý pixel tak může nést jednu z 16,7 miliónů možných barev, což je plně dostačující pro jakékoliv použití. Nevýhoda tohoto barevného módu spočívá v tom, že jednotlivé pixely jsou v paměti zarovnány po trojicích, což přináší nutnost přistupovat k pixelu i na lichých adresách. Toto je velmi nevýhodné z hlediska rychlosti, proto se tento barevný mód používá tam, kde nepotřebujeme animace nebo video, nýbrž tam kde editujeme statické obrázky, případně pracujeme s fotografiemi. True color +
Právě výše zmíněný nedostatek 24bitového barevného módu měl za následek vytvoření módu 32bitového. Barevné složky jsou uloženy stejně jako v módu 24bitovém jako 3 bajty, navíc je přidán jeden bajt, aby zarovnal pixel v paměti na hranici 4 bajtů, což je velmi výhodné z hlediska rychlosti přístupu do paměti. Tento jeden bajt je buď nevyužit, nebo se používá jako hodnota průhlednosti dané barvy a nazývá se alfa kanál. Tento barevný mód se označuje také jako RGBA. Vzhledem k rychlosti a možnosti přímé práce s průhledností je tento barevný mód využíván zejména pro počítačové hry.
1.4 Ukoly studenta s garfikou
Samostatná práce studenta
1. S využitím technické dokumentace libovolného grafického adapteru PC (nejlépe typu AGP nebo PCI) sestavte do tabulky jeho grafické módy. Vstupem je použité rozlišení, výstupem pak počet zobrazitelných barev a velikost potřebné videopaměti. 2. Na svém osobním počítači zobrazte plochu obrazovky ve všech režimech zobrazení a každý režim vytiskněte na tiskárně s využitím volby Print Screen. Získané výsledky porovnejte, resp. zhodnoťte. Operační systém volte podle vlastních možností. 3. S využitím dostupného programového vybavení OS WINDOWS 9x proveďte převod libovolného grafického souboru z positivního zobrazení na negativní zobrazení (ve stejném formátu) a porovnejte velikosti obou souborů. 4. Na libovolném grafickém souboru (nejlépe fotografii) s využitím libovolného programového vybavení si ověřte možnosti barevných korekcí obrazu (předlohy).
1.5
Kontrolní otázky 1) Co je to barva? 2) Jakou funkci plní počítačová grafika? 3) Jaké je možné členění počítačové grafiky? 4) Patří animace do počítačové grafiky? 5) Jaký je vztah mezi jasem a základními barvami? 6) Jaké normy se používají v průmyslových aplikacích? 7) Popište barevný model RGB. 8) Co víte o barevném modelu CMYK? 9) Co je to grafický mód, pixel a rozlišení? 10) Co víte o obnovovací frekvenci?
18
1.6
Shrnutí kapitoly
Počítačová grafika se rozvinula z teoretické vědy na počátku 70. let do současné podoby okupující obrazovky pracovních stanic, běžných počítačů i malých displejů mobilních telefonů. Vzhledem k faktu, že člověk vnímá nejvíce informací vizuálně, přizpůsobují se i technické vyjadřovací prostředky k co nejnázornějšímu způsobu interpretace informace na obrazovce počítače. Počítačová grafika plní funkci rozhraní mezi technickou informací srozumitelnou ve své číselné podobě pouze zkušenému technikovi a názornou vizuální interpretací této informace srozumitelnou i obyčejnému uživateli. Počítačovou grafiku můžeme rozdělit na rovinnou - plošnou (2D) a prostorovou (3D), přičemž každá z nich může být rastrová nebo vektorová. Do počítačové grafiky rovněž spadá animace, která může být plošná, prostorová, rastrová i vektorová. Barva je vjem, který prožijeme, když světlo dopadne na sítnici našeho oka. Sítnici našeho oka pokrývá velké množství citlivých receptorů, které jsou uspořádány po trojicích reagujících na tři základní barvy - červenou, zelenou a modrou). Základní barvy se označují počátečními písmeny jejich anglických názvů (red,green,blue), tedy R,G,B. Jas se označuje písmenem I. Podle oficiální definice je barva složena ze tří složek, jsou to jas, sytost a barevný tón. Samotnou barevnost barvy z lidského pohledu nám udává barevný tón. Barevný tón si můžeme představit jako kružnici, po jejímž obvodu jsou uspořádány plynule přecházející odstíny tří základních barev. Současně se vznikem techniky pro přenos a zpracování obrazu vznikaly i metody pro přenos a zobrazení barevného signálu. Existuje celá řada barevných modelů, většina z nich byla vyvinuta pro konkrétní aplikaci a později byla využívána nebo se dodnes používá v nejrůznějších aplikacích, formátech, programech nebo přístrojích. V textu je popsáno pět nejpoužívanějších barevných modelů. V kapitole o barevných modelech je uvedeno, že počítače pracují s barevným modelem RGB. Způsob práce s barvami v tomto barevném modelu se měnil v závislosti na použité technologii a maximálním počtu současně zobrazitelných barev. K pochopení principu ukládání grafické informace do paměti počítače jsou zde zavedeny a vysvětleny pojmy grafický mód, pixel a rozlišení. Dále pak zhodnoceny jednotlivé grafické módy používané u PC, jakož i pojem obnovovací frekvence.
19
20
2
ROVINNÁ GRAFIKA
Cíle kapitoly
Cílem druhé kapitoly je seznámit čtenáře se základními teoretickými východisky používanými v rovinné počítačové grafice. I když je tato kapitola tématicky značně obsáhlá, (obsahuje 7 různých problémů, které na sebe navazují a vzájemně se prolínají) je jejím cílem ve zhutněné podobě podat čtenáři nejnutnější informace z rovinné grafiky, umožňující mu nejen snáze pochopit další látku, ale i usnadnit studium doporučené literatury a v neposlední řadě i řešit praktické problémy 2D zobrazení - jeho rasterizace, rovinné a prostorové transformace a ekonomického ukládání grafické informace. Klíčová slova
Rovinná grafika, rastrová grafika, vektorová grafika, rastrová reprezentace obrazu, vektorová reprezentace obrazu, geometrické transformace, geometrické transformace, transformace souřadnic, afinní souřadnice, kartézské souřadnice, 2D transformace, 3D transformace, posunutí, souměrnost, rotace, zkosení, změna měřítka, rasterizace, rasterizace úsečky, rasterizace kružnice, alias a antialiasing, histogram, ekvalizace histogramu, gamma korekce, jas, kontrast, negativ, emboss, filtrace obrazu, filtrace šumu, detekce hran, ostření obrazu, transformace barev, náhodné rozptýlení, maticové rozptýlení, polotónování, transformace barevné palety, alfa míchání obrazů, změna rozlišení, interpolace, křivky ve 2D, křivky zadané analyticky, křivky zadané explicitně, křivky zadané implicitně, křivky zadané parametricky, interpolační křivky, aproximační křivky, splajny, B-splajny, CatmullRom splajny, Coonsovy B-splajny, Bézierovy křivky, Fergusonovy křivky, Coonsovy křivky, nurbs, komprese, dekomprese, Huffmanovo kódování, LZW komprese, JPEG komprese, fraktální komprese, RLE komprese, formáty grafických dat, formáty pro animované sekvence, rastrové grafické formáty, vektorové grafické formáty.
2.1
Úvod do 2D grafiky (rozdíly mezi rastrem a vektorem)
2D grafika, jak již plyne z názvu, se zabývá technikami zobrazení, transformací a kompresí grafických dat v rovině (dva rozměry), tedy nebere v úvahu třetí rozměr („hloubku“) typický pro lidské vnímání prostorových vjemů. Grafická data jsou informace popisující co a jakým způsobem bude zobrazeno na výstupním zařízení (monitor, tiskárna, atd.), nebo uloženo v paměti pro další použití. Právě dle způsobu uložení rozlišujeme grafická data na rastrová a vektorová. Pro nejjednodušší představu si lze rastrová data představit jako souhrn bodů, které reprezentují zobrazovaný objekt. Naopak vektorová data představují souhrn základních geometrických útvarů tzv. primitiv, pomocí nichž se sestavuje výsledný objekt.
2.2
Vektorová reprezentace obrazu
Obecně jsou vektorová data reprezentována segmenty, u kterých je definován počátek, směr a délka. Vektorová data v grafice se týkají množiny geometrických primitiv, jako je úsečka, lomená čára, kružnice, elipsa, mnohoúhelník, křivka, nebo textový řetězec. Kombinací těchto primitiv se tvoří složitější grafické objekty. Primitiva se definují pomocí tzv. uzlů – klíčové body, tyto uzly se propojují a vytváří 21
Matematické reprezentace grafiky
složitější objekty. Samozřejmě že použití klíčových bodů pro vykreslení grafických objektů je nedostatečné, proto musí být součástí vektorových dat také dodatečné informace typu síla propojení klíčových bodů, barva propojení atd. Poslední část vektorových dat je tvořena předpisy, jak dané objekty vykreslit. Ukázka povelů pro vyjádření jednotlivých objektů
Konkrétní podoba vektorových dat
V případě že jsou data popsána v ASCII formátu, viz následující příklad, lze je snadno upravovat i v běžných editorech. CIRCLE 40, 100, 100, BLUE; značí vykreslení kružnice S(100,100), r = 40, a to modře. LINE 10, 20, 40, 40, RED; značí vykreslení úsečky z bodu A(10,20) do bodu B(40,40), a to červeně. V případě použití kódování vektorových dat musíme pro editaci použít pouze prostředí, ve kterém byla data pořízena, nebo prostředí, které umožní tato data dekódovat. Základní výhody uložení grafických dat jako vektorových:
vhodné pro ukládání grafických objektů tvořených čarami, nebo základními primitivy (např. CAD, CAM aplikace); snadná změna rozměrů objektů (nedochází ke ztrátám informace – např. zkreslení tvaru); snadná transformace objektů (např. rotace – při zadání úhlu rotace a při znalosti klíčových bodů vykreslovaného objektu představuje triviální matematickou operaci; opět bez zkreslení tvaru); snadná transformace vektorových dat na rastrová (viz rasterizace); vhodné pro přímé zobrazení na výstupních zařízeních typu ploter.
Základní nevýhody uložení grafických dat jako vektorových:
nevhodné pro ukládání složitých obrázků (např. fotky); nelze použít pro přímé zobrazení na výstupní zařízení typu monitor, tiskárna (pouze za použití rasterizace); zobrazení vektorových dat je pomalé (musí se zobrazovat postupně objekt po objektu).
2.2.1
Rastrová reprezentace obrazu
Pro získání definice rastrových dat je nutné definovat pojem pixel. Pixel je základní jednotka zobrazení v rovině u výstupních zařízení (především monitory). Představuje nejmenší adresovatelnou položku v obrazové předloze. Rozlišujeme, zda se jedná o fyzický, nebo logický pixel. Teoreticky lze ovládat každý bod zobrazovacího zařízení, ale v praxi je vždy mezi adresovatelnými body nějaká minimální vzdálenost. Logický pixel je tedy matematicky přesně definovaný polohou, ale fyzicky nezabírá žádnou plochu. Fyzický pixel zabírá vždy nějakou plochu a bavíme se o něm vždy ve vztahu s nějakým konkrétním výstupním zařízením. Nyní již můžeme definovat pojem rastrové reprezentace obrazu. Rastrová data jsou reprezentována číselnou kombinací vyjadřující barvu konkrétního bodu obrázku (pixel). Tedy každý pixel má v rastrové reprezentaci svůj atribut – barvu. Složením všech pixelů získáme výsledný obrázek v barevném provedení. Pro souhrn všech pixelů v obrazové předloze se zažil výraz bitmapa. 22
Základní výhody uložení grafických dat jako rastrových:
není nutný převod do jiné reprezentace pro zobrazení na výstupním zařízení (monitor, tiskárna); barevné hodnoty pixelů lze modifikovat jak jednotlivě, tak i po seskupeních.
Základní nevýhody uložení grafických dat jako rastrových:
velká paměťová náročnost na uložení barevných obrázků (každý bod je uložen zvlášť, velikost nutné paměti je úměrná barevné náročnosti a velikosti obrázku); nevhodné pro změny rozměrů obrázků (nelze provést zvětšení rozlišení obrázku bez jeho zkreslení).
2.3
Geometrické transformace
Geometrické transformace jsou jedněmi z nejčastěji používaných operací v počítačové grafice. Patří mezi ně změna polohy objektu, změna jeho velikosti, tvaru, rotace objektu a operace vzniklé jejich skládáním. Základním matematickým aparátem, který zde vystupuje pro odvození všech vztahů je lineární algebra. Geometrické transformace mohou být aplikovány na body objektu, který tak mění svou polohu či svůj tvar . S touto operací se setkáme v počítačové třírozměrné animaci, kdy se například nějaký objekt pohybuje po své dráze, při psaní textu na křivku v DTP atp. Druhou možností je podrobit transformaci souřadnicový systém. To obyčejně činíme za účelem získání výhodnější reprezentace objektu pro jeho další zpracování, například pro výpočet objemu, pro projekci, řešení viditelnosti aj. 2.3.1
Transformace afinních souřadnic
Předpokládejme, že máme ve 3D dvě afinní soustavy souřadnic
Počátek P resp. P´ má souřadnice Px, Py, Pz resp. Px´, Py´, Pz´, vektor resp. má souřadnice ei,x, ei,y, ei,z, resp. ei,x ´, ei,y´, ei,z´.Pro bázové vektory prvního a , i = 1,2,3 druhého souřadnicového systému platí, že jsou lineárně nezávislé, tj. není možné vyjádřit kterýkoliv z vektorů jako lineární kombinaci vektorů v příslušné bázi zbývajících. V afinní soustavě souřadnic na ně není kladena žádná další podmínka stran jejich velikosti či vzájemné orientace (viz obr. 7). Mějme dále libovolný bod X (viz obr. 7) o souřadnicích X = [x,y,z] = [x´,y´,z´] a hledejme vztahy pro jejich vzájemné vyjádření. Souřadnice bodu je možno zapsat jako lineární kombinaci vektorů báze vztaženou k souřadnicím počátku:
Předpokládejme, že jsou známé rovnice přechodu od nečárkované báze k bázi druhé:
23
Práce s geometrickou transformací v souřadných systémemch
tj.
E´ = EA
neboli:
Předchozí rovnice je vyjádřením vektorů jedné báze pomocí vektorů báze druhé, a v proto například první řádek (souřadnice a11, a12, a13) je souřadnicemi vektoru bázi vektor , , . Matice A je maticí přechodu od bázových vektorů jedné soustavy souřadnic k bázovým vektorům soustavy druhé. Počátek P´ má v první (nečárkované) soustavě souřadnice Px´, Py´, Pz´, vektor (Px,Py,Pz) tedy určuje posunutí čárkované soustavy souřadnic vzhledem k soustavě nečárkované.
Vyjádření pomocí matic a jejich transformace
Následující rovnice je hledanou rovnicí přepočtu souřadnic bodu z čárkované soustavy souřadnic do soustavy nečárkované x = a11 x´+ a12 y´+ a13 z´+ Px´ y = a21 x´+ a22 y´+ a23 z´+ Py´ z = a31 x´+ a32 y´+ a33 z´+ Pz´
Obr 7 - Transformace souřadnic
Maticová podoba této rovnice má tvar: X = X´A+P´
Pomocí souřadnic:
Inverzní úloha, výpočet čárkovaných souřadnic pomocí nečárkovaných má maticovou podobu 24
X´ = XA-1 – P´A-1
2.3.2
Transformace kartézských souřadnic
Při transformaci afinních souřadnic je zásadní podmínkou kladenou na vektory báze jejich lineární nezávislost. Pro kartézský souřadnicový systém platí, že bázové vektory musí být ortonormální, tj.: 1) lineárně nezávislé, 2) po dvou na sebe kolmé a 3) každý velikosti jedna. To ve svém důsledku způsobuje že, determinant matice přechodu k jiným kartézským souřadnicím je roven jedné nebo mínus jedné a že inverzní matice je maticí transponovanou, neboli A-1 = AT. Z toho vyplývá, že inverzní operace přepočtu kartézských souřadnic prostoru spočívá jen v transposici prvků matice vyjadřující souřadnice vektorů báze a v odečtení souřadnic počátku. 2.3.3
Homogenní souřadnice
Pro reprezentaci transformace afinních souřadnic v počítači potřebujeme matici přechodu od jedné báze k druhé a vektor posunutí počátku. Při implementaci v nějakém vyšším programovacím jazyce to znamená použít datovou strukturu pro matici a jednorozměrný vektor. Při vlastním výpočtu se pak násobí souřadnice bodu maticí přechodu a k výsledku se přičítá vektor posunutí. Pro zjednodušení výpočtů se s výhodou používá reprezentace transformací pomocí homogenních souřadnic. Uspořádanou čtveřici [X,Y,Z,w] nazýváme homogenními souřadnicemi bodu [x,y,z] ve 3D, platí-li , že existuje bod, jehož kartézské souřadnice jsou: x
X Y Z ,y ,z w w w
Tento bod je svými homogenními souřadnicemi určen jednoznačně. Souřadnici w nazýváme váhou bodu. Zavedení homogenních souřadnic nám umožňuje vyjádřit pomocí jediné matice i posunutí. Položíme-li w = 1, můžeme transformační vztah zapsat v jednoduché podobě X = X´AH,
a podobně inverze: X´ = XAH-1,
kde 25
Prvky a11, a12, a13, a21, a22, a23, a31, a32, a33, matice AH odpovídají stejným prvkům v matici A. Prvky a14, a24, a34 odpovídají posunutí počátku, tj. souřadnicím Px´, Py´,Pz´, resp. poslední řádek je homogenními souřadnicemi počátku a první tři řádky odpovídají homogenním souřadnicím bázových vektorů.
Matice reprezentující transformaci ve 2D bude mít analogický tvar:
2.3.4 Algoritmy pro 2D transformace s využitím matic
Transformace ve 2D
Doposud jsme se zabývali transformacemi zcela obecně, nyní uvedeme nejčastěji používané transformace v rovině a jim odpovídající transformační matice. Pro jejich reprezentaci budeme vycházet z předchozí matice. V dalším textu nebudeme vždy uvádět matice pro inverzní operace, neboť jejich odvození je snadné. Posunutí
Posunutí nebo také translace (angl. move, translate) je transformací, při které si objekt zachovává svůj tvar (tedy i plochu a obvod) a mění pouze svou polohu. Při této operaci (viz obr.8) se v matici uplatní pouze koeficienty a13 a a23, které udávají změnu počátku souřadnicového systému. Matice pro vyjádření transformace posunutí má tedy podobu: ??. Obr 8 - Posunutí ve 2D
kde (X˘-X,Y˘-Y) je vektor posunutí (viz obr.8). Inverzní matice má tvar:
Rotace
Vztah pro rotaci (angl. rotation) kolem počátku soustavy souřadnic o obecný úhel a (viz obr.9) lze zapsat pomocí matice
26
Inverzní matice má potom tvar:
Vzhledem k tomu, že oba bázové vektory jsou na sebe kolmé a velikosti jedna, jedná se o transformaci kartézských souřadnic a matice inverzní je zároveň maticí transponovanou.
Obr 9 - Rotace ve 2D
Souměrnost
Souměrnost (angl. symetry) je možno rozdělit na souměrnost středovou a osovou (viz obr.10). Středová souměrnost je rotací o 180 stupňů a její matici je možno odvodit z předchozího odstavce dosazením.
Dvě osové souměrnosti pak získáme zrcadlením podle os. Odpovídající matice mají tvar:
27
Obr 10 - Souměrnost podle středu a podle osy y
Zkosení
Matice operace zkosení (angl. shear) ve směru osy x a y má tvar
Obr. 11 - Zkosení ve směru osy x
Změna měřítka
Změna měřítka (angl. scale, zoom) je změnou velikosti objektu ve směru měřítkování, případně jeho zvětšením či zmenšením, je-li koeficient měřítkování pro oba směry stejný. Pokud je absolutní hodnota koeficientu měřítkování v intervalu (0,1), dochází ke zmenšení v příslušném směru. Je-li absolutní hodnota koeficientu větší nežli jedna, dojde k prodloužení, je-li znaménko koeficientu záporné, dochází k prodloužení či kontrakci v opačném směru. Obr.12 demonstruje změnu měřítka a vztah je odpovídající transformační maticí.
Obr 12 - Změna měřítka
28
Změna měřítka, je velmi často používanou transformací v systémech typu GKS, PHIGS, ale i v technickém vybavení počítačů. 2.3.5
Transformace ve 3D
Transformace ve třech dimenzích jsou zobecněním 2D transformací. V počítačové grafice se pro ně používají matice, které jsou typu 4 × 4. První tři řádky jsou homogenními souřadnicemi vektorů báze a poslední z nich je homogenními souřadnicemi počátku. Opět se pro zjednodušení výpočtů pokládá w = 1. Posunutí Posunutí je snadným zjednodušením posunutí ve 2D viz obr.8. Transformace pro 3D prostor se převedou na 2D
Hodnoty (X´-X,Y´-Y,Z´-Z) jsou složkami vektoru posunutí. Rotace
Rotace ve 3D se rozpadá na tři podpřípady rotací podle jednotlivých souřadnicových os. Matice pro rotaci kolem osy x,y a z mají postupně tvar:
Změna měřítka
Změně měřítka (anglicky scale) v prostoru odpovídá matice:
v níž koeficienty Sx,Sy a Sz určují změnu ve směru příslušné osy. Souměrnost
Souměrnost (angl. symetry) je zvláštním případem změny měřítka. Zmenšením 29
hodnoty koeficientu měřítka, se objekt zmenšuje a při záporném čísle se zrcadlově překlopí.
Obr 13 - Souměrnost podle roviny xy
Souměrnost můžeme rozdělit do tří skupin: Středová souměrnost - v matici je definováno Sx = Sy = Sz = -1. 1) Souměrnost podle roviny 2) yz pro Sx = -1, xz pro Sy = -1 a xy pro Sz = -1 (viz obrázek 1.9).
3)
Souměrnost podle osy x pro Sy = Sz = -1, y pro Sx = Sz = -1 a z pro Sx = Sy = -1.
Stojí za povšimnutí, že například souměrnost podle osy z je možno získat složením souměrnosti podle roviny yz a xz a středovou souměrnost složením symetrií podle všech tří rovin. Zkosení
Operaci zkosení (angl. shear) ve třech dimenzích (viz obr.14) můžeme rozdělit na tři případy: ve směru roviny yz, kterou reprezentujeme maticí:
30
Obr. 14 - Prostorové zkosení ve směru roviny xy
ve směru roviny xz
a ve směru roviny xy
2.4
Rasterizace základních primitiv (úsečka, kružnice, elipsa)
Z předcházející kapitoly vyplývá, že obrazová předloha může být popsána buď bitmapou, nebo vektory. Z důvodů současných technologií zobrazovacích zařízení (monitor, tiskárna) se budeme zabývat metodami převedení obrazových předloh do rastrové reprezentace. Převedení základních grafických primitiv (úsečka, kružnice a elipsa) na posloupnost bodů (pixelů), které budou reprezentovat tvar primitiva, nazýváme proces rasterizace. Rasterizaci si lze také představit jako vzorkování grafického objektu s krokem jednoho pixelu. Jako poslední definici rasterizace lze použít: převod vektorové reprezentace obrazu do rastrové. 2.4.1
Rasterizace úsečky
Protože většinu složitých grafických objektů v rovině lze popsat pomocí souboru navazujících úseček, musí být algoritmus rasterizace úsečky proveden s minimálními časovými nároky.
31
Pasterizace objektu pro zobrazení na monitoru počítače
Úsečka je zadána většinou těmito parametry: počáteční a koncový bod ([x0, y0] a ([x1, y1]), šířka, barva, vzor (např. šrafování). Úkolem rasterizace úsečky je nalezení všech sousedících pixelů nutných pro správné vykreslení úsečky. Všechny algoritmy vycházejí ze známé geometrické reprezentace úsečky v rovině xy (rovnice úsečky). y = kx + q; k- představuje směrnici úsečky (sklon).
Algoritmy využívají znalosti počátečního bodu úsečky [x1, y1] a podle směrnice k = Δy/ Δx = (y2- y1)/(x2- x1), určují která osa roviny xy bude řídící pro rasterizaci. Je-li k<1, je řídící osa x, je-li k>1, je řídící osa y. Řídící osa určuje, podle kterého směru bude prováděna rasterizace. Neboli určuje, na které ose budeme při vykreslování úsečky postupovat krokem jeden pixel.
Obr. 15 - Volba řídící osy při rasterizaci úsečky
Podle způsobu dopočítání kroků postupu v druhé ose rozdělujeme algoritmy rasterizace na DDA a Bresenhamův. Algoritmus DDA
Tento algoritmus vychází ze znalosti počátečního a koncového bodu úsečky. Z těchto údajů algoritmus rozhoduje o řídící ose, viz předchozí odstavec. Dále vychází ze znalosti předchozího bodu. Tedy postupně přičítá konstantní přírůstky v řídící ose jeden pixel a ve vedlejší ose k. Samozřejmě že přírůstek k musí být zaokrouhlen, protože výstupní zařízení musí dostat informaci o bodu, který má zobrazit ve formě celých čísel.
32
Obr. 16 - Výsledek DDA algoritmu
Algoritmus:
procedure LineDDA (x1,y1,x2,y2, colour: integer); var y, k :real; begin y:= y1; dy:= (y2-y1)/(x2-x1); PutPixel (x1,y1); while x1<x2 do begin x1:= x1+1; y:=y+dy; Putpixel(x0,round(y),colour) end; Výhodou DDA algoritmu je jeho snadná hardwarová implementace, nevýhodou je, že se musí matematické operace provádět s velkou přesností a musí využívat operace dělení a zaokrouhlení v každém kroku. Tyto matematické operace jsou velmi výpočetně náročné. Z tohoto důvodu je k dispozici algoritmus Bresenhamův, který tyto nedostatky odstraňuje.
Bresenhamův algoritmus rasterizace úsečky
Algoritmus pracuje na principu rozhodnutí zda, Δd je záporné či kladné číslo. Podle výsledku porovnání se rozhoduje, který z pixelů Yi a Yi+1 bude zobrazen. Δd < 0 Yi; Δd 0 Yi +1;
33
Možnosti algoritmu pro zpracování pomocí určitého programovacího jazyka
Obr. 17 - Bresenhamův algoritmus
Protože tento algoritmus musí odstranit nevýhody zaokrouhlení a dělení, je nutné převést problém do oblasti celých čísel. Odvození plyne z předcházejícího obrázku: X = Xi + 1, Y = k(Xi + 1) + q; d1 = Y – Yi = k(Xi + 1) + q – Yi; d2 = Yi + 1 – Y = Yi + 1 – k(Xi + 1) + q; Δd = d1 – d2 = 2m(Xi + 1) – 2Yi + 2q –1;
Definujeme tzv. predikci : Pi = Δd ΔX = 2 ΔYXi – 2Yi ΔX + 2 ΔY + ΔX(2q - 1); [1] 2 ΔY + ΔX(2q - 1) = konst; Pi+1 = 2 ΔYXi+1 2ΔXYi+1 + konst; Pi+1 = Pi2ΔY - 2ΔX(Yi+1 – Yi ), jestli Xi+1 = Xi+1; Pi 0 Yi+1 = Yi Pi+1 =Pi + 2ΔY; Pi 0 Yi+1 = Yi + 1 Pi+1 =Pi + 2ΔY - 2 ΔX; Algoritmus:
1) vykresli bod [XA ; YA], X0 := XA, X0 := XA, i = 1. 2) z rovnice [1] vypočítej P0. 3) je-li Pi < 0 tak Xi+1 := Xi + 1, Yi + 1 := Yi, Pi+1 := P(i) + 2Δy. je-li Pi 0 tak Xi+1 := Xi + 1, Yi + 1 := Yi +1, Pi+1 := P(i) + 2Δy - 2Δx. 4) vykresli bod [Xi+1; Yi+1] 5) je-li Xi+1 < XB tak i := i + 1 a návrat krok 3 Výhodou Bresenhamova algoritmu je odstranění zaokrouhlovací chyby a použití pouze matematické operace součet. Nutné je zmínit se o způsobu vykreslování přerušovaných úseček. V tomto případě se použije Bresenhamův algoritmus pro rasterizaci úsečky s obměnou, spočívající v povolování a zakazování vykreslování na výstupní zařízení. Pro použití tohoto algoritmu je nutné vytvořit dvě proměnné udávající jednak počet úseků tvořících 34
celou úsečku a jednak počet pixelů v rámci jednoho úseku. Protože i při vykreslování přerušované úsečky musíme zaručit dodržení její délky, musíme vždy povolit vykreslení posledního úseku. Rasterizace úsečky, která má definovanou šířku, opět probíhá podle Bresenhamova algoritmu s tím rozdílem, že vykreslujeme více pixelů vedle sebe dle požadované šířky. Tento počet není závislý jen na šířce úsečky, ale závisí i na směrnici této úsečky. Proto se musí provádět matematická korekce skutečné šířky úsečky dle vztahu: dpix = d* sqrt((sqr(dx)+sqr(dy))/dx).
Tento vztah plyne z obr.18.
Obr. 18 - Změna šířky úsečky při změně směrnice
2.4.2
Rasterizace kružnice
Mezi další základní primitiva patří kružnice. Její algoritmy rasterizace vycházejí z parametrického popisu kružnice. k: {S(x0,y0),r}; x = x0+r*cos α; y = y0+r*cos α; α(0,2);
Princip algoritmu spočívá v nahrazení kružnice následnými úsečkami. Tedy místo kružnice ve skutečnosti vykreslíme mnohoúhelník. Volíme počáteční bod a k němu dopočítáme koncový bod úsečky dle parametrických vztahů, zvyšováním hodnoty parametru α. Otázkou zůstává, jaký volit konkrétní krok tohoto parametru. Empiricky bylo prokázáno, že optimální volba parametru je α = 1/r. Při této volbě negenerujeme kružnici jako souslednost úseček, ale jako souslednost pixelů. To představuje optimální iluzi kružnice. Dosazování do parametrických vztahů je výpočetně náročné, proto se v praxi využívá vztahů pro transformaci – otáčení.
x1, y1 x0, y 0
cos a sin a sin a cos a
35
Obr. 19 - Rasterizace kružnice
Další možností ušetření výpočetního času při rasterizaci kružnice je využití osové a středové souměrnosti. V tomto případě je dostačující vypočítat 1/8 kružnice a zbytek získat pomocí souměrností.
Obr. 20 - Využití souměrností kružnice pro urychlení procesu rasterizace
Bresenhamův algoritmus rasterizace kružnice
Pro vykreslení bodů na kružnici se používá v praxi Bresenhamův algoritmus. Algoritmus je opět založen na výpočtu predikce. Z predikce se vypočítá y-ová souřadnice následujícího bodu a x-ová souřadnice se zvýší o 1. Odvození predikce se provede stejným principem jako u úsečky. Zde uvedeme pouze výsledky hodnot predikce a rozhodovací podmínky pro výběr souřadnice vykreslení pixelu a následné predikce: 36
počáteční predikce: P0 = 1,25 – r; Pi < 0 Yi+1 = Yi Pi+1 =Pi + 2Xi + 3; Pi 0 Yi+1 = Yi - 1 Pi+1 =Pi - 2Yi + 2 Xi + 5.
2.5
Rastrová grafika
2.5.1
Alias a antialiasing
Jestliže chceme provádět libovolné transformace s grafickými daty, je nutné vždy obraz převést ze spojité oblasti do diskrétní formy. Tento proces převodu je nazýván sampling (odebírání vzorků ze spojitého vyjádření). V počítačové grafice je nutné provést „odběr“ jednoho vzorku, nebo vzorků, které budou zastupovat barevnou hodnotu jednoho pixelu. Pokud odebereme pouze jeden vzorek na budoucí celé ploše pixelu, mluvíme o tzv. point samplingu. V tomto případě je rekonstrukce dat nepřesná. Pro zpřesnění se používá super sampling, kde odebíráme více prvků z budoucí plochy pixelu a to náhodně. Pro vysvětlení pojmu alias je nutné zopakovat Shannonův vzorkovací teorém: fvzk = 2*fmax.
Tato poučka říká, že vzorkovací frekvence musí být minimálně dvojnásobek tzv. Nyquistova limitu (fmax). Potom je zaručeno vzorkování bez zkreslení při reprodukci dat. Nyquistův limit definuje frekvenci při které je vykazována ještě nějaká energie (amplituda). Nyní lze definovat alias jako novou nízkofrekvenční složku v rekonstruovaném obraze, která vzniká ze dvou příčin: funkce (obrazová předloha) není frekvenčně omezená, neexistuje její Nyquistův limit); obrazová předloha byla podvzorkována, nebyl dodržen Shannonův teorém.
Obr. 21 - Vznik aliasu při podvzorkování
V počítačové grafice je tedy nemožné odstranit alias (obrazová předloha je vždy frekvenčně neomezená), je možné ho jen pozměnit a to tak, aby lidské oko méně vnímalo rozdíl mezi originálem a rekonstruovaným obrazem. Metoda, která snižuje vliv aliasu, se nazývá antialiasing. Antialiasing (vyhlazování) spočívá v odstranění dojmu „kostrbatosti“ vznikajícím při 37
vykreslování úseček a ploch na rastrovém výstupním zařízení. Všechny metody vycházejí z frekvenčního omezení původního obrazu. Výsledkem je potom obrázek s rozmazanými hranami. Používají se dvě metody antialiasingu. 1) Posunutí aliasu do oblasti vyšších frekvencí (supersampling) Tato metoda vychází z principu navzorkování kritické oblasti s vyšší frekvencí a poté vf rozmazání. Algoritmus:
zvětšit rozlišení kritické oblasti (rozložení pixelu na subpixely, např. 1 pixel = 3*3 subpixely); podle plochy, kterou zasahuje do kritické oblasti určit odstín barvy subpixelu; barevný odstín pixelu určit jako průměr barev subpixelů; vrátit do původního rozlišení.
Obr.22 - Supersampling
2) Stochastické vzorkování odstraňuje pravidelné rozložení vzorků ze supersamplingu. Tato metoda předpokládá využití Poissonovy distribuce pro generování vzdáleností subpixelů. Algoritmus je obdobný jako u předchozí metody, jen je rozdělení pixelu na subpixely provedeno náhodně. V současnosti je součástí grafických akcelerátorů již hardwarová podpora antialiasingu při vykreslování textur a polygonů. Při vykreslování textur se používá MIP Mapping, a to bilineární nebo trilineární. Tyto metody pomocí filtrů snižují vliv aliasu. Při vykreslení polygonů se využívá supersampling (např. firma ATI). 2.5.2
Histogram
Digitální obrázky v sobě nesou vizuální informaci. Člověk obvykle dokáže jediným pohled informaci nesenou obrázkem odhalit a zpracovat. Počítačové programy nejsou na takovém stupni vývoje, aby byly schopny vizuální informaci nesenou digitálním obrázkem odhalit a zpracovat, počítače prostě neví, že na právě zpracovávané fotografii je exotická kráska ladně položená do písku na pláži u moře, a už vůbec nedokáže posoudit krásu oné slečny na fotografii. Pro počítač (program) je tato digitální fotografie pouze shluk bodů nesoucí barevnou informaci. Právě tento pohled na digitální obrázky jako shluky bodů nesoucí barevnou informaci se používá při popisu obrázků počítačem. Veličina, která nám popisuje digitální obrázek, se nazývá histogram. Histogram
je
vektor
absolutních
četností 38
jednotlivých
barevných
hodnot
zastoupených v obraze. Jinými slovy, histogram nám říká, kolik pixelů v obrázku má danou barvu. Pro černobílé obrázky je histogram jednorozměrný vektor, pro barevné je složen ze tří vektorů pro barevné složky R,G,B. Histogram je diskrétní funkce, neboť barvy jsou v digitálním obrázku kvantovány, ale pro jednoduchost si ho můžeme nahradit spojitým grafem.
2
1
Obr.23 – Histogram černobílého obrázku I
černá
bílá
Z předcházejícího obrázku je vidět, že histogram má na vodorovné ose dvě položky a to jsou odstíny barev použité v obrázku seřazené od nejtmavšího k nejsvětlejšímu. Použitý obrázek má pouze dva stupně šedi, a to jsou černá a bílá, a tyto barvy (odstíny šedi) zabírají stejný počet pixelů, tudíž histogram tohoto obrázku obsahuje dvě diskrétní složky o stejné velikosti.
2
1
Obr.24 – Histogram černobílého obrázku II černá
bílá
Porovnáním obrázku 23 a obrázku 24 zjistíme, že na první pohled odlišné obrázky mají stejné histogramy. Jak již bylo řečeno, histogram je vektor absolutních četností, tudíž jako takový není jednoznačný identifikátor, nenese žádné informace o plošném rozložení barev v obrázku. Histogramy se používají především ve zpracování digitální fotografie v digitálních fotoaparátech, kamerách, skenerech a při kvalitním tisku. Při troše praxe můžeme pouhým pohledem na histogram zjistit, je-li fotografie příliš tmavá nebo světlá.
39
Obr.25 – Histogram normální fotografie
Na předchozím obrázku vidíme histogram normální, běžné fotografie. Je vidět, že většina pixelů má střední hladinu jasu, což odpovídá běžným světelným podmínkám.
Obr.26 – Histogram tmavé fotografie
Předchozí obrázek ukazuje histogram fotografie focené v noci bez blesku. Na první pohled je vidět posun histogramu do levé části jasového vektoru, což nám ukazuje na velkou koncentraci tmavých pixelů ve fotografii. Aniž bychom tuto fotografii viděli, můžeme očekávat velmi tmavý snímek s velmi těžko rozeznatelnými detaily.
40
Obr.27 – Histogram světlé fotografie
Z předcházejícího histogramu lze usuzovat na fotografii focenou pravděpodobně s bleskem, který se odrazil na lesklých plochách. Odpovídá tomu pouze střední koncentrace pixelů se středním jasem a výrazné množství pixelů s maximálním jasem. Malá koncentrace tmavých pixelů nám naznačuje, že fotografie nebyla pořízena v úplné tmě, ale že blesk byl použit pouze na dosvícení, pravděpodobně v interiéru. 2.5.3
Práce s histogramem
Na histogram se lze dívat také i jako na tabulku všech barev použitých v obrázku. Jestliže takovou tabulku máme, můžeme si ji představit jako barevnou paletu, můžeme s ní provádět různé operace, které ovlivní rozložení jasu nebo barev v obrázku – barevné a jasové korekce. Ekvalizace histogramu
Jednou z běžných operací nad histogramem je tzv. ekvalizace histogramu. Ekvalizací rozumíme vyrovnání histogramu a zároveň i obrázku do normálních, přirozených jasových a barevných hodnot. Používá se při korekci příliš tmavých nebo světlých nebo barevně nevyvážených fotografií.
Obr.28 – Tmavá fotografie a její histogram
Fotografie na předcházejícím obrázku je velmi tmavá, jak je vidět i na jejím histogramu. Pomocí ekvalizace histogramu ji můžeme vylepšit. 41
Obr.29 – Tmavá fotografie po ekvalizaci histogramu
Jak lze vidět z tohoto extrémního příkladu, ekvalizace histogramu dané fotografie značně vylepšila rozložení jasu, tato změna se promítla i do histogramu. Velmi zřetelně je vidět, že ekvalizovaný histogram je hrubší, diskrétnější než histogramy z neupravovaných fotografií. Výrazné je to zejména v jeho levé části. Tento jev vzniká důsledkem kvantování barev v originální fotografii, kdy se příliš mnoho tmavých odstínů uložilo do omezeného množství tmavých barev. Při ekvalizaci se tyto chyby znásobují. Gamma korekce
Výstupní zařízení, zejména monitory nezobrazují všechny hodnoty intenzity pixelů lineárně. Obvykle jsou tmavší odstíny barev (nižší hodnoty intenzity) zobrazovány slaběji než světlejší odstíny barev. K vyrovnání nelinearit zobrazovacích zařízení slouží tzv. gamma korekce. Tato korekce se implementuje nejčastěji jako tabulka barev, ve které jsou tmavší odstíny mapovány do světlejších v závislosti na úrovni nastavené korekce. Ve svém důsledku tak dochází k vyrovnání intenzit na výstupu zařízení tak, aby odpovídaly skutečnosti.
jas požadovaný průběh zařízení
hodnota Obr.30 – Nelinearita zobrazovacího zařízení
Vyhledávací tabulka pro gamma korekci se vypočítá podle vztahu
42
1
in i
kde bývá 2,8 0,3. 2.5.4
Jas a kontrast
V odstavci věnovaném histogramům jsme se dotkli problematiky jasu a nepřímo i kontrastu. Měnit jas nebo kontrast obrázku pomocí histogramu může být někdy složité a málo intuitivní, uživatel je zvyknutý hlavně z obsluhy televize na dva samostatné ovládací prvky ve formě potenciometrů, kterými mění hodnoty jasu a kontrastu obrazu. Změna jasu a kontrastu se provádí izolovaně pro každý pixel zvlášť a není ovlivňována sousedními pixely. Změnou jasu rozumíme zvýšení nebo snížení hodnot barevných složek jednotlivých pixelů, neboli posun barvy všech pixelů obrázku směrem ke světlejším nebo tmavším odstínům. Změnou kontrastu rozumíme zvýšení jasu u světlých barev a snížení jasu u tmavých barev nebo snížení jasu u světlých barev a zároveň zvýšení jasu u tmavých barev. Kontrast je poměr mezi světlými a tmavými barvami pixelů v obrazu. Matematicky to lze zapsat například takto:
Y j k ( I i) kde Y je nová hodnota intenzity pixelu, j je jas (v intervalu (0-1)), k je kontrast, I je původní hodnota intenzity pixelu a i je konstanta s hodnotou obvykle 0,5. Pro normální jas je j= 0,5 a k=1. Hodnoty intenzity jsou v intervalu <0,1>. Výsledkem aplikování této funkce na obraz je ořezání hodnot intenzit pixelů do intervalu <0,1>, jak ukazuje následující graf.
1
Y
0
1 Obr.31– Graf funkce pro změnu jasu a kontrastu
43
2.5.5
Negativ
Pojem negativ obrazu je dobře známý především z klasické fotografie. Jistě každý, kdo někdy držel v rukou fotoaparát, se podíval na vyvolaný barevný nebo černobílý film. Negativ v digitálním zpracování obrazu je ve své podstatě stejný jako jeho analogový kolega. Negativní obraz vzniká tak, že barvu každého pixelu nahradíme jeho doplňkovou barvou. Doplňkovou barvu určíme odečtením aktuální barvy od jedničky (nebo maximální hodnoty). V případě černobílého obrazu pracujeme pouze s intenzitou, v případě barevného obrazu toto provedeme pro všechny barevné složky. Celý tento proces lze vyjádřit takto: N 1 I
kde N je výsledná intenzita pixelu a I je původní hodnota intenzity pixelu. 2.5.6 Jednotlivé efekty se dosahují pomocí různých filtrů
Emboss
Negativ obrazu má různé použití při digitálním zpracování obrazu. Jedním z efektů, při kterých se negativ používá, je Emboss. Česky se tento efekt označuje jako vytlačený vzor. Tohoto působivého efektu dosáhneme sečtením barevných hodnot pixelů původního obrazu a jeho negativu, kde negativ je posunutý o jeden pixel vpravo a o jeden pixel dolů.
Obr.32– Emboss
2.5.7
Filtrace obrazu
Při digitálním zpracování obrazu často stojíme před problémem odstranění šumu z nedokonale naskenovaného nebo vyfotografovaného obrázku. Zvlášť levnější digitální fotoaparáty mají při špatných světelných podmínkách problém se šumem ve výsledné fotografii. Odstraňování šumu a rozmazávání obrazu mají podobný účel – jde nám o eliminaci ostrých barevných přechodů z obrazu, neboli o potlačení vysokých frekvencí. Každý pixel obrazu (kromě krajních) má tzv. lokální okolí. To tvoří čtyři nebo osm sousedních pixelů, hovoříme o čtyřsousedství nebo osmisousedství.
44
Obr.33 – Čtyřsousedství a osmisousedství pixelu
Princip filtrace obrazu spočívá v nahrazení hodnoty intenzity prostředního pixelu funkcí intenzit pixelů v jeho lokálním okolí. V případě barevného obrazu se toto provádí po jednotlivých barevných složkách. Tato funkce bývá nejčastěji funkcí průměru intenzit bodů sousedství nebo průměr s přiřazenými vahami, jedná se tedy o operaci konvoluce. Konvoluční maska obyčejného průměrování je 1 1 1 1 I 1 1 1 9 1 1 1
Hodnoty intenzity jednotlivých pixelů se sečtou a podělí počtem bodů konvoluční masky. Centrální bod má potom výslednou intenzitu I. Pro lepší filtraci šumu s normálním rozložením se používá konvoluční maska se zvýšenou vahou středového pixelu. 1 1 1 1 I 1 2 1 9 1 1 1
Základní nevýhodou průměrování v lokálním okolí je rozmazávání hran. V případě, že je rozmazávání hran nežádoucí, používají se modifikované postupy. Jedním z nich je průměrování s omezením hodnot změny intenzity. V tomto případě se akceptuje pouze určitý limit rozdílu mezi intenzitou původního pixelu a pixelu nového vzniklého průměrováním. Dalším možným postupem je použití mediánu. Medián M je definován v počtu pravděpodobnosti jako hodnota náhodné proměnné X, pro kterou platí 1 p M X 2
Filtrace mediánem spočívá v seřazení hodnot intenzit pixelů v lokálním okolí vzestupně podle intenzity, výsledná hodnota intenzity pixelů je rovna intenzitě pixelu v polovině takto uspořádané posloupnosti intenzit, neboli mediánu této posloupnosti. Tento postup dobře filtruje impulsní šum a omezuje rozmazávání hran. Jeho nevýhodou je ztráta tenkých čar v obrazech. Filtrace šumu ve frekvenční oblasti
Podobně jako v klasické analogové technice i zde můžeme odstraňovat šum ve frekvenční oblasti. Používáme filtry typu dolní propusť, které odříznou vysoké frekvence v obrazu. Šum v obrazu je obvykle nekorelovaný a jeho spektrum je ploché, spektrum obvyklého obrazu má maximální hodnoty na nízkých frekvencích, 45
proto stačí nalézt mezní frekvenci f0 , kdy hodnoty spektra šumu jsou vyšší než hodnoty spektra obrazu, a od této frekvence se spektrum odřízne. A obraz šum
f0
f
Obr.34 – Spektrum obrazu a šumu
Detekce hran a ostření obrazu
Častou úlohou řešenou při zpracování digitálních obrazů je jejich ostření. Digitální kamery a skenery často obsahují funkci typu dolní propust pro omezení šumu ve snímaném obraze. Výsledkem je ztráta ostrých kontur. Problém při ostření obrazu spočívá v tom, že pracujeme pouze s informací přímo obsaženou v datech daného obrazu. Proto se při větším ostření zvýrazňuje šum v obrazu. Operaci ostření si můžeme rovněž představit jako zvýraznění vyšších frekvencí v obrazu – hran a ostrých přechodů pomocí patřičného filtru. Detekce hran je potom zkoumání průběhu funkce pomocí parciálních derivací, zde hledáme skokové změny intenzity. Detekce hran může probíhat v prostorové nebo frekvenční oblasti. V prostorové oblasti jde o aplikaci konvolučních jader pro detekci hran a zvýšení kontrastu těchto hran ve výsledném obrázku. Pro výpočet rozdílu intenzity v kolmých směrech na souřadné osy se používá například Laplaceův operátor, jehož konvoluční jádro pro osmisousedství je
1 1 1 h 1 8 1 1 1 1
Po jeho aplikaci na obrázek dostaneme zvýrazněné hrany vyskytující se v obrázku. Samotný operátor nám obrázek nezaostří, pro zaostření obrázku je nutno zvýšit kontrast pixelů v místech detekovaných hran v rozsahu konvoluční masky.
Obr.35 – Detekce hran Laplaceovým operátorem (invertovány barvy u výsledku)
46
Je možné provádět ostření od určité hodnoty gradientu neboli ostřit pouze významné hrany v obraze. Hodnoty parametrů ostření, rozsahu ostření a prahu ostření umožňují moderní programy na úpravu obrazu přesně nebo interaktivně zadávat. 2.5.8
Transformace barev
V praxi se velmi často dostáváme do situací, kdy musíme zobrazit nebo vytisknout obrázek s velkou barevnou hloubkou (například true color) na zařízení, které umožňuje zobrazit daleko menší počet barev, nezřídka jenom dvě – černou a bílou. Dostáváme se tak k problému zvanému redukce a transformace barev. Redukováním barevných odstínů dochází ke ztrátě informace obsažené v obrázku, existují však techniky, které tuto ztrátu minimalizují. Jsou to polotónování (halftoning) a rozptylování (dithering). Při polotónování se jednotlivé barevné pixely nahrazují maticí bodů, která opticky působí jako daný odstín barvy, dochází tak ke zvětšení rozlišení. Tato technika se používá převážně u tiskáren, neboť tiskárny mají obvykle několikanásobně větší rozlišení než počítačové monitory. Technika rozptylování se obvykle používá při zobrazení obrazu uloženého v true color na černobílém monitoru při nezměněné velikosti. Obě techniky využívají schopnosti lidského oka aditivně skládat barvy z několika blízkých barevných bodů. Tato vlastnost je základem všech metod počítačové grafiky pro generování obrazů o mnoha barevných odstínech na zařízeních s omezeným množstvím současně zobrazitelných barev. Tyto techniky se používají při zpracování barevných i černobílých obrazů. Náhodné rozptýlení
U této metody se využívá generátoru náhodných čísel s rovnoměrným rozdělením. Při černobílém zobrazení je výsledný pixel bílý pouze tehdy, když je hodnota intenzity vstupního pixelu větší než hodnota z generátoru náhodných čísel, neboli I in rand I max Kde Iin je hodnota intenzity vstupního pixelu, rand(x) je funkce generátorů náhodných hodnot v rozsahu <0,x). Imax je hodnota maximální intenzity ve vstupním obrazu. Aplikování tohoto vzorce na obraz se projeví nepravidelně se střídajícími černými a bílými pixely v souvislých plochách. Jasové poměry neboli poměr počtu černých a bílých pixelů zůstanou zachovány v celém obrazu (protože funkce generátoru náhodných hodnot má rovnoměrné rozložení). Obraz bude mít drsný charakter a bude působit dojmem zrnité fotografie. Maticové rozptýlení (polotónování)
Tato metoda pracuje na principu nahrazení pixelu maticí (pravidelným vzorkem) z černých a bílých pixelů tak, aby při pohledu vznikal dojem patřičného odstínu původní barvy (hodnoty intenzity) pixelu. Výsledný obraz působí jako perokresba s pravidelným jemným šrafováním. Protože nahrazujeme jeden pixel maticí pixelů, dojde ke zvětšení obrazu.
47
Například pro pět úrovní šedi můžeme použít těchto pět matic
0 0 0 0 0 0 0 1 1 1 0 0, 0 1, 1 1, 1 1, 1 1
Obr.36 – Náhodné rozptýlení
Jak je vidět, každá další matice vznikla přidáním jedničky na jednu novou pozici. Při vytváření matic je třeba si dávat pozor na permutace uvnitř matic, které mohou způsobit nesprávné zesvětlení nebo ztmavení obrazu. Zobecněním principů vytváření rozptylovacích matic lze vytvořit jednu univerzální matici. Hodnoty prvků této matice určují, při jaké hodnotě intenzity vstupního pixelu se na výstupu objeví jednička (bílý pixel). Příkladem může být Bayerova rozptylovací matice 4x4 pro 16 úrovní šedi (0-15) 0 8 2 10 12 4 14 6 3 11 1 9 15 7 13 5 Je vidět, že pokud má vstupní pixel hodnotu intenzity například 4, ve výsledku se zobrazí bílou barvou pixely s maticovými souřadnicemi [1,1];[3,1];[1,3] a [3,3]. Při barevném tisku se používají různé matice pro různé barvy a jednotlivé rozptylovací vzory se natáčejí, aby se potlačila opticky zřetelná pravidelnost vzorků v maticích. Pro černou se používá úhel 45°, pro fialovou 75°, pro žlutou 90° a pro tyrkysovou 105°. Technika maticového rozptylovaní neboli polotónování se používá především při tisku novin a časopisů.
48
Obr.37 – Maticové rozptýlení
Rozptylování metodou distribuce zaokrouhlovací chyby
Tato metoda se používá na zařízeních, kde chceme zachovat stejné rozlišení obrazu. Při barevné transformaci, kdy nahrazujeme pixel s určitou hodnotou intenzity pixelem s hodnotou intenzity 0 nebo 1 (černá nebo bílá barva), vzniká chyba rovná rozdílu intenzit původního pixelu a nového pixelu. Dochází ke ztrátě barevné informace. Existují metody jak tuto zaokrouhlovací chybu (ztracenou barevnou informaci) využít, jednou z nich je metoda distribuce chyby (error distribution, error diffusion). Při této metodě se zaokrouhlovací chyba přenáší neboli distribuuje do okolních pixelů. Máme-li obraz v šestnácti stupních šedi a zpracovávaný vstupní pixel má hodnotu intenzity například 4, vykreslíme jej černou barvou (hodnota intenzity 0), potom zaokrouhlovací chybu, která činí 4 (4-0=4) přičteme k nejbližším sousedům. Obdobně vstupní pixel s hodnotou intenzity 12 vykreslíme bílou barvou (hodnota intenzity 15) a zaokrouhlovací chybu 3 (15-12=3) přičteme k nejbližším sousedním pixelům. Způsoby, jakými je chyba přičtena k sousedním pixelům, neboli způsoby distribuce chyby byly vytvořeny empiricky a jsou nazvány podle jejich autorů (Bayer, Burkes, Floyd-Steinberg, Stucki). Floyd-Steinbergova metoda distribuce chyby předpokládá zpracování obrazu po řádcích. Před vykreslením každého pixelu je k jeho hodnotě intenzity přidána distribuovaná chyba z předchozích zpracovávaných pixelů, tato nová hodnota intenzity se převede do výstupní hodnoty intenzity a chyba vzniklá při tomto převodu se rozdělí a přičte k dalším později zpracovávaným pixelům. Distribuce chyby je vyjádřena tímto vzorem
49
7/16 3/16
5/16
1/16
Zpracovávaný pixel
Obr.38 – Floyd-Steinbergovo rozdělení chyby
Jednotlivé koeficienty udávající podíl chyby distribuovaný do okolních pixelů jsou neceločíselné, v praxi se obvykle nahrazují bitovým posunem. Tento distribuční vzor byl zvolen tak, aby v plochách pixelů s poloviční hodnotou intenzity z maximálního rozsahu intenzit tvořil šachovnicový vzorek. Vzhledem k rychlosti tohoto algoritmu se tato metoda používá i v moderních grafických akcelerátorech při zobrazování true color 3d grafiky v 16ti bitovém barevném módu. Transformace barevné palety
Při redukci počtu barev vzniká problém s redukcí nebo s vytvořením nové barevné palety (za předpokladu práce v paletovém režimu). Nová (redukovaná) barevná paleta je buď předem určena, zde nastává problém s výběrem nejbližší vhodné barvy z nové palety, nebo se musí vytvořit.
Obr.39 – Floyd-Steinbergova metoda distribuce chyby
Předem určená paleta
Předem určená paleta se používá tam, kde výsledný barevný prostor je pevně dán. Chceme například chceme několik obrázků převést na společnou barevnou paletu tak, aby mohly být zobrazeny současně. Redukce barev se provádí ve dvou krocích. První je nalezení nejbližší vhodné barvy ve výsledné paletě, druhý krok je případná 50
distribuce chyby (tato se může vynechat). Pro nalezení nejbližší možné barvy se používá metoda nejmenších čtverců. Hledá se minimum ze součtu rozdílu jednotlivých barevných složek. C out min
R r 2 G g 2 B b 2
Kde R,G,B jsou barevné složky vstupní barvy, r,g,b jsou barevné složky i-té barvy ve výsledné paletě (procházíme všechny barvy ve výstupní paletě) a Cout je hodnota minima z tohoto rozdílu. Výsledná hledaná barva je dána indexem barvy s tímto minimálním rozdílem ve výsledné paletě. Jinak řečeno nebližší podobná barva má tento rozdíl minimální. Univerzální paleta 3-3-2
Při řešení problémů s barevnými paletami dojdeme k úvaze použít jednu univerzální paletu, která by obsahovala zástupce ze všech barev barevného modelu RGB. Uvažujeme maximální počet barev v paletě 256, potom na jednu barevnou složku máme k dispozici pouhých 8 bitů. Abychom mohli tuto paletu použít pro obrazy s různým barevným složením, musíme pravidelně vybrat zástupce z RGB barevné krychle. Použijeme 8 řezů barevnou krychlí pro červenou složku, 8 řezů pro zelenou a 4 řezy pro složku modrou, na kterou je lidské oko nejméně citlivé. Převedeno do bitové formy, použijeme 3bity na červenou složku, 3bity na zelenou složku a 2 bity na modrou složku. Odtud tedy název paleta 3-3-2. Její výhoda spočívá ve velmi snadné a rychlé implementaci. Lze velmi výhodně využívat operací bitových posunů. Například složku R1 lze z 8mi bitů převést do 3 bitů na hodnotu r2 takto r2
R1 * 7 255
Výsledný index I v barevné paletě získáme bitovým složením hodnot redukovaných barevných složek. Operátory << označují bitový posun vlevo. I r 2 5 g 2 2 b 2
kde r2,g2 a b2 jsou redukované barevné složky. Ve své podstatě se jedná o zaokrouhlení do 256ti barev. Nabízí se tedy alternativa použít některou z rozptylovacích metod. V praxi se vzhledem k výhodnosti palety 3-3-2 využívá Floyd-Stenbergova metoda distribuce chyby. Existují i jiné univerzální palety, jsou to například paleta 6-7-6 s maximálním počtem 252 barev, její výhoda je v rovnoměrném rozdělení barevného prostoru, nebo paleta 7-12-3 s maximálním počtem rovněž 252 barev, která zohledňuje různou citlivost lidského oka na barevné složky. Adaptivní paleta
Nejvýhodnější avšak časově a výpočetně nejnáročnější je při redukci barev vytvořit novou barevnou paletu tak aby obsahovala všechny nejvíce používané barvy v redukovaném obrazu. Taková paleta je adaptována na daný obraz, a proto se nazývá adaptivní paleta.
51
Pro vytvoření adaptivní palety je nutno znát skutečný počet barev a četnost jejich výskytu v obrazu, proto výpočtu palety předchází fáze analýzy daného obrazu. Pro analýzu se nejčastěji používá barevný histogram. Histogram se uchovává ve formě trojrozměrné tabulky, v které je uloženo obvykle jen pět nejvýznamnějších bitů každé barevné složky. Na základě tohoto histogramu se nalezne 256 nejvhodnějších zástupců (barev s největší četností v obrazu) a sestaví se barevná paleta. Pro barvy, které nejsou obsažené v této paletě, se použije algoritmus na nalezení nejbližší vhodné barvy a případně i některá rozptylovací technika. Alfa míchání obrazů
V praxi poměrně často využívaná funkce je tzv. prolínání (cross-dissolve) obrazů. Ve filmařské a televizní hantýrce známá jako prolínačka. Implementace spočívá v přiřazení koeficientu průhlednosti každému pixelu obrazu. Tento koeficient se označuje písmenem (alfa) a
Obr.40 – Alfa míchání dvou obrázků s koeficientem prolnutí 50%
formát pixelu s tímto koeficientem se označuje jako RGBA. Průhlednost nabývá hodnot v intervalu <0,1> nebo <0,255>. Hodnota nula obvykle znamená dokonale neprůhledný pixel a maximální hodnota dokonale průhledný pixel. Koeficient průhlednosti můžeme chápat rovněž jako procento pokrytí daného pixelu barvou. Prolnutí dvou obrazů je ve své podstatě lineární interpolace a v případě, že 0jeden z nich je neprůhledný, vypočítá se dle vztahu I I A 1 I B
kde I je výsledná hodnota intenzity pixelu, IA a IB jsou vstupní pixely a je koeficient průhlednosti (prolnutí). Prolínání dvou pixelů se také nazývá alfa míchání (alfa blending). Tato funkce je rovněž základem morphingu, klíčování barev a antialiasingu. Funkce alfa míchání je nyní hardwarově implementována ve většině grafických akcelerátorů. 2.5.9
Změna rozlišení
Velmi častou operací s rastrovým obrazem je změna jeho rozlišení nebo velikosti. Pojmy rozlišení a velikost obrazu nejsou úplně zaměnitelné, i když mají oba za následek změnu objemu dat. Rozlišení obrazu chápeme jako počet bodů na čtvereční palec, označované zkratkou DPI (dot per inch). Každé výstupní zařízení má své rozlišení nebo rozsah rozlišení 52
daný fyzikálními možnostmi. Například monitor má rozlišení 72 DPI, tiskárny od 360 – 600 DPI, některé kvalitní i daleko více. Velikost obrazu se udává nejčastěji v počtu pixelů v ose X a Y a nebo v délkových jednotkách (centimetrech případně palcích). Jestliže je velikost obrazu určena v délkových jednotkách, musíme znát rozlišení, ve kterém byl obraz uložen. Pro vztah mezi rozlišením a velikostí platí S X Dpi * N X
kde SX je velikost obrazu v palcích v ose X, Dpi je rozlišení výstupního zařízení a NX je počet pixelů v obraze v ose X. Obdobně se určí velikost obrazu v ose Y. Je zřejmé, že pokud chceme na různých tiskárnách dosáhnout stejné velikosti vytisknutého obrázku, musíme jeho velikost (v pixelech) změnit a přizpůsobit rozlišení dané tiskárny. Pro změnu velikosti (rozlišení) obrazu se používá několik metod. Interpolace nejbližším sousedem
Tato metoda je nejjednodušší a nejrychlejší, obvykle se používá tam, kde je potřeba danou operaci provést maximálně rychle a kde změny velikosti nejsou příliš výrazné. Je to například v počítačových hrách nebo při rychlém náhledu obrázku či počítané scény. Obvykle bývá přímo zabudována v hardware grafických akcelerátorů. Při zvětšování obrazu se na pozici chybějících pixelů kopíruje nejbližší sousední pixel, při zmenšování obrazu se pixely vypouštějí. Nevýhodou této metody je, že při větším zvětšení obraz dostává velmi hrubý charakter a vypadá jako složený z velkých čtverců, při zmenšení dochází k porušení tenkých čar. Tři pixely původního
Obraz trojnásobném
po
Obr.41 – Interpolace nejbližším sousedem
Obr.42– Zvětšený nápis použitím interpolace nejbližším sousedem
Bilineární interpolace
Tato metoda je, jak již název napovídá, postupnou aplikací lineární interpolace. Kde jedna interpolace je mezi pixely v řádcích a druhá mezi jednotlivými řádky. Hodnoty nových pixelů v pozicích mezi původními pixely se určí proložením úsečky mezi původními (krajními pixely), hledaná hodnota f(x) v bodě x se vypočítá jako 53
x x0 f 1 f 0 f x f 0 x1 x 0
kde f0,f1 jsou hodnoty krajních pixelů v bodech x0,x1. Výhodnou bilineární interpolace je její relativní rychlost, neboť se pro její výpočet používají pouze čtyři body z okolí daného bodu. Nevýhodou je rozmazávání původních ostrých hran. V současné době je tato metoda často hardwarově implementována v grafických akcelerátorech
Obr.43 – Zvětšený nápis použitím bilineární interpolace
Další interpolace
Existuje celá řada metod pro zvětšení obrazu využívajících interpolací jiných ploch než po částech lomených. Kvalitnější výsledky jsou dosaženy použitím více informací z původního obrazu pro výpočet hodnoty v novém bodě. Tyto metody jsou obvykle výrazně složitější pro výpočet i implementaci. Používají se polynomiální, goniometrické, exponenciální funkce, dvouparametrické filtry a velmi častou metodou je použití kubické interpolace nebo aproximace pomocí B-spline ploch.
Obr.44 – Nápis zvětšený pomocí bilineární interpolace (vlevo) a bikubické (vpravo)
Na předchozím obrázku je patrné větší rozmazání barevných přechodů u bilineární interpolace, v případě bikubické je barevný pře chod z bílé do černého středu mnohem strmější a rovněž tak černý střed je mnohem širší a ostřejší.
54
2.6
Křivky ve 2D
Z matematického hlediska je možné křivky rozdělit dle způsobu zadání na křivky zadané explicitně, implicitně, parametricky. 2.6.1
Křivky zadané analyticky
Křivky zadané explicitně y = f(x);
y = x + 10
Křivky zadané implicitně f(x;y) = 0; x2 + y2 = 10
Algoritmus sestrojování těchto křivek pracuje na principu rozdílu mezi fyzickými a logickými pixely. Křivka se vykreslí fyzickými pixely, každý takový pixel je logickým obdélníkem o stranách hx, hy. Fyzický pixel se vykreslí, protíná-li křivka hranici tohoto pixelu. Nastavením kroku hx, hy se zabezpečí přesné pokrytí fyzického pixelu logickým pixelem. Implicitní zadání není vhodné pro počítačové zpracování, protože neumožňuje postupný výpočet křivky. Křivky zadané parametricky x = x(t); x = a sin j t y = y(t); y = b cos y t
Obr. 45 - Křivka zadaná parametricky
Parametrický zápis zadání se v počítačové grafice používá nejčastěji. Výhodou zápisu je závislost na jediném parametru t. Nevýhodou je, že v některých případech nezaručuje parametrické zadání rovnoměrné rozložení bodů na křivce (obr. 45) . Příklady parametrického zadání křivek a) křivky rovinné
kružnice se středem v počátku poloměrem R: x = R. cos t, y = R. sin t , 0 <= t <= 2. pi 55
Využití křivek v grafice s matematickým vyjádřením
elipsa se středem v počátku a poloosami délky A a B ležícími na souřadnicových osách: x = A. cos t, y = B. sin t , 0 <= t <= 2. pi
část paraboly s vrcholem v počátku a ohniskem v bodě [0, F]: x = t, y = t2/4F, -5 <= t <= 5 spirála se středem v počátku a stoupáním S: x = S/2pi . t . cos t, y = S/2pi . t . sin t, 0 <= t <= 6.pi b) křivky prostorové (pouze pro informaci) šroubovice s osou ležící na ose z, poloměrem R a stoupáním S: x = R. cos t, y = R. sin t , z= S/2pi . t , 0 <= t <= 6. pi POZNÁMKA: K čemu jsou dobré křivky při konstrukci ploch? S jejich pomocí můžeme třeba sestavovat rotační plochy. Máme- li křivku ležící v rovině xy, můžeme ji nechat rotovat kolem svislé osy z. Například rotací úsečky ležící mimo osu z vznikne plášť válce nebo kužele, rotací půlkružnice se středem v počátku vznikne zase kulová plocha. 2.6.2
Interpolační křivky
Jedná se o křivky, které prochází všemi zadanými body na daném intervalu (obr. 44). Tuto úlohu lze například řešit metodou neurčitých koeficientů pomocí polynomu n-1 stupně (interpolační polynom) nebo pomocí kubického splajnu (jedná se o křivku procházející všemi zadanými body, která je na celém zadaném intervalu spojitá 1. a 2. derivací, na každém subintervalu určeném x-ovými souřadnicemi uzlových bodů splývá s nějakou kubickou parabolou). Polynom n-1 stupně má obecně tvar
.
Do rovnice se dosazuji všechny body, kterými má křivka procházet. Koeficienty cn-1, cn-2-,…,c1, c2 se počítají ze soustavy lineárních rovnic. Rovnice kubického splajnu na intervalu
jsou uzlové body, 56
, koeficienty M0, Mn se většinou volí rovny 0 a Mk pro k=1,…,n-1 se spočítají vyřešením soustavy pomocí iteračních metod.
Obr. 46 - Křivka zadaná body
Catmull-Rom splajny
Křivku navrhl E.Cattmull a R.Rom. Dokázali, že v matematickém vyjádření B-splajn křivky lze nahradit kontrolními body parametrické funkce t, tato partikulární funkce má stejné interpolační vlastnosti jako řídící body. Catmull-Rom splajny patří mezi interpolační křivky, které jsou díky svým vlastnostem využívány v počítačové animaci pro definování dráhy objektů (obr. 47). Křivka je definována posloupností bodů P0, P1, ..., Pn. Vychází z bodu P1 a končí v bodě Pn-1, tedy neinterpoluje první a poslední bod.
Výpočet probíhá postupně, a to nejprve pomocí bodů P0, P1, P2, P3, poté body P1, P2, P3, P4 atd. Catmull-Rom splajny jsou navrženy tak, že tečný vektor v bodě Pi je rovnoběžný s vektorem Pi-1-Pi+1. Tato vlastnost určuje tvar křivky. Při dvojnásobném výskytu prvního a posledního bodu, tj. např. P0, P0, P1, P2, ... , Pn-1, Pn, Pn je zaručeno, že křivka bude interpolovat všemi body. Nevýhodou těchto křivek je, že výsledný splajn obecně neleží v konvexní obálce svých řídících bodů.
57
Obr. 47 - Catmull-Rom splajn
2.6.3
Aproximační křivky
Jsou to křivky, které neprochází přesně zadanými body, ale jsou postiženy vstupními chybami. Často jsou požadovány křivky, které nemusí procházet zadanými body, jejichž poloha definuje křivku jiným způsobem. Takové body se nazývají řídící a vytváří takzvané řídící polygony. Křivky je možné získat metodou nejmenších čtverců, nejčastěji ve tvaru polynomu. Fergusonovy křivky
Tuto křivku používal od roku 1964 J. C. Ferguson. Křivka je určena dvěma krajními body P0, P3 a dvěma tečnými vektory P0P1,P2P3. Velikost vektorů ovlivňuje druhou derivaci křivky, čím je větší velikost, tím více se křivka přimyká k vektoru. Křivka je definována parametrickými rovnicemi:
Funkce Fi jsou polynomy 3. stupně.
Obr. 48- Fergusonova křivka
58
Bézierovy křivky
P. E. Bézier a P. de Casteljau navrhli nezávisle na sobě v roce 1959 – 1962 křivku určenou čtyřmi body P0, P1, P2, P3. Jedná se o kubickou parabolu procházející body P0, P3. Úsečky P0P1, P3P2 určují tečny v krajních bodech a jejich směrnice jsou číselně rovny třetině délky těchto úseček. Křivky lze s výhodou použít všude tam, kde je potřeba snadného hladkého napojování. V bodě spojení se zajistí společná tečna, tím se docílí spojitosti křivky i její derivace (obr. 49).
Obr. 49 - Bézierova křivka
Křivka je definována parametrickými rovnicemi:
Obecná Bézierova křivka: jsou Bernsteinovy polynomy.
Racionální Bézierova křivka
Křivku lze s výhodou použít v případě, že je třeba měnit tvar křivky bez změny polohy řídících bodů s dodržením tečnosti v krajních bodech . Každému řídícímu bodu se přiřadí nezáporné reálné číslo mi, které řídí tvar křivky. Rovnice křivky je:
Rin(t) jsou racionální Bernsteinovy polynomy a Bin(t) jsou Bernsteinovy polynomy:
59
Baierovy křivka a jejich matematický vzorec
Nejvýznamnějším přínosem racionálních Bézierových křivek je schopnost změnit tvar křivky bez změny polohy bodů řídícího polygonu. Velmi dobře se modelují křivky s prudkou změnou tvaru. Coonsovy křivky a B-splajny
V technické praxi jsou hojně používány křivky, které definoval S. A. Coons. Coonsova kubika je definována čtyřmi řídícími body P0, P1, P2, P3 a kubickými polynomy C0, C1, C2, C3. Křivka neprochází žádným z řídících bodů. Krajní body leží v tzv. antitěžištích P0P1P2, P1P2P3. Předností Coonsovy kubiky je způsob napojování křivek. Křivky se napojují tak, že dva sousední oblouky mají společné tři body. Spojováním oblouků vzniká křivka B-splajn, která je ve všech vnitřních bodech spojitá v první i druhé derivaci (křivka je hladší než Bézierova). Při tvarování křivky je výhodné to, že při změně jednoho řídícího bodu dochází pouze k lokální změně křivky. Aby křivka procházela koncovými body, lze zajistit splynutím tří bodů prvního nebo posledního oblouku (obr. 50).
Obr. 50 - B-splajn Rovnice Coonsovy křivky:
kde C0, C1, C2, C3 jsou kubické polynomy.
Nurbs
Nurbs křivky (NURBS - Non Uniform Rational B-spline) jsou dvojím zobecněním B-splajn křivek. Termín neuniformní vyjadřuje vlastnost NURBS křivek, že vzdálenost uzlů nemusí být konstantní. Racionalita udává, že každý řídící bod má přiřazenu vlastní váhu. Obecný tvar pro křivku je Q(t)={x(t), y(t), z(t)}, pro plochu Q(u,v)= {x(u,v), y(u,v), z(u,v)}. Křivka nebo plocha je tak řízena parametrem. Souřadnice dané parametry u,v jsou používány i pro u,v mapování textur. 60
Parametrizace určuje typ intervalu mezi jednotlivými uzly. Nejčastějším typem parametrizace je uniformní parametrizace, parametrizace pomocí délky spojů mezi uzly a parametrizace pomocí délky oblouků (obr. 51). Křivka NURBS je určena n + 1 body řídicího polynomu, uzlovým vektorem U délky m + 1 a stupněm křivky p. Uzlový vektor pro křivku NURBS procházející prvním a posledním bodem řídicího polynomu má tvar : U = {0, 0, . . . 0, tp+1, . . . tm-p-1, b , b , . . . , b }.
Rovnici NURBS křivky lze vyjádřit pomocí racionální B-splajn báze,
Obr. 51 - NURBS křivka
kde wi je váha i-tého bodu řídícího polygonu, Ni,p jsou normalizované B-splajn bázové funkce. Váha udává, jak moc je křivka přitahována nebo odpuzována od řídícího bodu (obr. 52). Po zjednodušení:
Některé důležité vlastnosti NURBS křivky: 1) Křivka prochází prvním a posledním bodem řídícího polygonu 2) Změna polohy nebo váhy jednoho bodu má vliv jen na část křivky (obr. 52) 3) Křivka umožňuje vyjádřit kuželosečky 4) Pro hodnoty wi = 1 je NURBS Bézierovou křivkou.
61
Obr. 52 - Změna tvaru křivky pomocí váhy
2.7
Komprese a dekomprese
2.7.1
Proč používat komprese?
Představme si následující příklad. Chceme uložit do paměti obrázek ve 32b barevné hloubce a v rozlišení 1024*768. Neboli výsledkem násobení 32*1024*768 dostáváme výslednou velikost nutné paměti pro uložení do paměti, a to 25165824b. Tedy se dostávám k číslu 4MB. Je patrné, že ukládání rastrových dat v přímé podobě je velmi paměťově náročné. Proto vznikly metody komprese, které mají výrazně omezit paměťové nároky na ukládání rastrových obrázků. Jako první je nutné zmínit ukládání rastrových dat pomocí kvadrantového stromu. I když se tato metoda neřadí mezi komprese, její filosofie představuje základ kompresních metod. Přímé uložení rastrových dat nezohledňuje možnost výskytu větších stejně barevných ploch. Při využití uložení v kvadrantovém stromu je obraz rozčleněn na pravidelné čtverce. Tyto plochy se testují na pokrytí stejnou barvou. Je-li plocha celá pokryta, algoritmus končí, není- li, dochází k dalšímu dělení na menší plochy.
Algoritmus:
rozdělit rastrový obraz na čtyři plochy (čtverec, obdélník); testovat dle schématu (0,1,2,3) postupně všechny plochy (pokrytí plochy stejnou barvou); nesplněno: provést rozdělení nevyhovující plochy na další čtyři plochy a opět testovat; splněno – zakódovat.
Obr. 53 - Uložení a kódování rastrového obrázku pomocí kvadrantového stromu
62
Předchozí obrázek kóduje rastr za použití vyjádření: W- bílá, B- černá, M – není pokryto stejnou barvou. Pro zakódování do proudu dat lze použít místo M pouze speciální znak pro začátek a konec plochy jedné úrovně. Například mohu místo M použít závorky. Potom vypadá výsledný zakódovaný proud dat takto: (W(WWB(BWWW))(BBW(WBBW))W). Při klasickém uložení rastru by pro předchozí příklad bylo potřeba 64 paměťových míst za použití dvou kódů: B,W. Při uložení dat pomocí kvadrantového stromu bylo potřeba 26 paměťových míst za použití 4 kódů. U obrázků, které neobsahují velké plochy pokryté stejnou barvou je tato metoda neefektivní. Nyní již můžeme zjednodušeně definovat pojem komprese a dekomprese. Komprese obecně představuje převedení z jedné reprezentace do druhé, přičemž cílem je dokázat vždy rekonstrukci obrazu, ušetřit paměťový prostor a pokud je to možné neztratit žádné obrazové informace. Komprese jsou založeny na odstraňování přebytečných informací. Dekomprese představuje zpětný proces, nutný pro získání původních dat.
Komprese lze rozčlenit pomocí jejich vlastností na:
ztrátové (při kompresi dochází ke ztrátě informací); bezeztrátové (při kompresi nedochází ke ztrátě informací); logické (komprese pracuje s obsahem na logické úrovni); fyzické (komprese se zajímá jen o holé B, nezajímá ji, co znamenají); symetrické (časová náročnost je stejná u komprese i dekomprese); asymetrické (komprese nebo dekomprese je výrazně časově náročnější).
2.7.2
RLE (Run Length Encoding) komprese – bezeztrátová, symetrická, fyzická
Tato komprese je využívána nejen pro komprese grafických dat, protože pracuje na principu využití opakujících se řetězců v proudu dat. Neboli pro funkčnost algoritmu je nutné uchovávat vždy dvě proměnné, jedna určuje, o jaký znak se jedná, a druhá určuje počet opakování tohoto znaku v proudu dat. Tedy kombinaci tohoto proudu dat: RRRRBBGHJJJJJK zkomprimuje do této podoby: 4R2BGH5JK. Technicky se většinou nechává v komprimovaném proudu nejvyšší bit jako indikátor, zda jde o počítadlo, nebo o vlastní znak. Směr postupu plnění proudu můžeme volit (zprava doleva, zleva doprava, diagonálně, atd.). Tato komprimační metoda je vhodná pro kresby od ruky - skici a pro obrázky, kde nepřevyšuje barevná hloubka 8b. Nevýhodou této komprese je případ, kde předloha neobsahuje opakující se data. Tehdy může dojít i k záporné kompresi (narůst paměťových požadavků na uložení dat v komprimované podobě).
63
2.7.3
Huffmanovo kódování – komprese bezeztrátová, symetrická, fyzická
Tato komprese vychází ze základní myšlenky nahrazení často opakujících se výrazů kratšími kódy. Tedy proces komprimace musí zahrnout výpočet četností výskytu všech výrazů a podle tabulek stanovených skupinou CCITT vytvořit kratší kódy pro často se opakující výrazy a delší kódy pro méně frekventované výrazy. Protože Huffmanovo kódování vychází z entropie, bývá často zařazeno mezi entropické kódy. Huffmanův kód se snaží optimálně rozdělit postupnosti binárních symbolů podle početnosti výskytu kódovaných prvků se snahou přiblížit se jejich entropii. Definice: Pro náhodné proměnné f1, f2, ... , fk a jejich pravděpodobnosti p (fi) = pi definujeme entropii H vztahem: k
H pi log 2 pi i 1
Podle tohoto vztahu můžeme poznat, jak efektivní bude použití Huffmanova kódu. Příklad:
Mějme hodnoty a1, a2 .. a8 s následujícími pravděpodobnostmi výskytu: p1 = 0,4; p2 = 0,08; p3 = 0,08; p4 = 0,2; p5 = 0,12; p6 = 0,08 p7 = 0,04 p8 = 0. Pro jejich binární zakódování je potřeba 3b. Při použití Huffmanova kódu je potřeba pouze 2,42b (dosazeny hodnoty pravděpodobností do vztahu pro entropii). V současnosti existuje více typů lišících se od sebe především specializací na některé oblasti ukládání dat. G31D – přidání speciálních kódů pro zjištění maximální bezpečnosti rekonstrukce dat (kompresní poměr 5:1).
G32D – před kompresí navíc zapíše jen ty hodnoty pixelů, na jejichž pozici se mění barva. Tato detekce se provádí ve dvou rozměrech, tedy jak vodorovně, tak i svisle (kompresní poměr 8:1). G42D – návrat k úplnému začátku: zbavení se všech nepotřebných značek (kompresní poměr 15:1).
2.7.4
LZW (Lempel Ziv Welch) komprese – bezeztrátová, symetrická, fyzická
Tato komprese patří mezi nejrozšířenější komprese používané při zpracování dat. Je založena na kódování pomocí vytvářeného slovníku v průběhu komprimace i dekomprimace. Slovník je tvořen frázemi (části znaků ze vstupního proudu) a je vždy v nekomprimovaném stavu. V následujícím příkladě je definována množina možných vstupních prvků {a,b,c,d}. Její zakódování představuje základ slovníku. Dále je slovník budován z nových frází na vstupu, které ještě nebyly zakódovány. Ukládání do výstupní fronty potom probíhá pomocí kódů těchto frází. Vstupní abeceda: Vstupní text:
{a,b,c,d} abacdacacadaad 64
Základní slovník : Fráze Kód
a 0
b 1
c 2
d 3
Postup komprese: Krok 1 2 3 4 5 6 7 8 9 10
Vstup
Stará fráze
abacdacacadaad bacdacacadaad acdacacadaad cdacacadaad dacacadaad acacadaad acadaad daad ad d
Postup dekomprese: Krok 1 2 3 4 5 6 7 8 9 10
a b a c d ac aca da a d
Vstup 0 1 0 2 3 6 9 8 0 3
Kód staré frázeVýstup 0 1 0 2 3 6 9 8 0 3
Výstup A B A C D Ac Aca Da A D
Nová fráze
Kód nové fráze
ab ba ac cd da aca acad daa ad -
4 5 6 7 8 9 10 11 12 -
Nová fráze Ab Ba Ac Cd Da Aca Acad Daa Ad
Kód 4 5 6 7 8 9 5 5 5
Při dekompresi je opět budován slovník ze vstupních frází. Slovník tedy nemusí být součástí souboru, v souboru je jen uveden základní slovník (zakódování možných vstupních prvků {a,b,c,d}). 2.7.5
JPEG komprese – ztrátová, symetrická, fyzická.
Většina obrázků, například pořízených z digitálních fotoaparátů, obsahuje předlohy ve velkém rozlišení a maximální barevné hloubce. Tyto obrázky (fotografie) v současné počítačové grafice převládají. Je tedy nutné zajistit jejich snadné prohlížení (snížení velikosti paměti) při zachování dojmu nezměněné předlohy. Právě komprese JPEG řeší kompromis mezi kvalitou obrázku a požadavkem na velikost obrázku v B. Empiricky je dokázáno, že snížení kvality obrázku na 75% lidské oko nepostřehne. Základní myšlenka komprese JPEG spočívá ve využití Fourierovy transformace, a to konkrétně DCT (Discrete cosinus transformation), a v barevné redukci obrázku. Následující obrázek popisuje jednotlivé kroky při JPEG kompresi.
65
Obr. 54 - Postup komprese JPEG
První krok komprese JPEG představuje transformaci barev. Ta spočívá v přepočítání všech pixelů vyjádřených v libovolném barevném modelu (RGB, CMY, HSV) do modelu Y Cb Cr.
Tento krok je zcela zásadní, protože tato komprese dále zpracovává jednotlivé složky izolovaně a je tedy nutné převést barevnou reprezentaci obrázku na jasovou složku a barevnou kombinaci (Cb, Cr). Dále následuje barevné omezení barev. Vychází z předpokladu, že lidské oko je více citlivé na jas než na mírné změny v barevné sytosti. Redukce se tedy týká pouze složek Cb, Cr. Jsou vytvořeny průměry hodnot těchto složek po dvojicích (sousední pixely), nebo po čtveřicích. A tato hodnota zastupuje barevnou reprezentaci dané složky pro celou oblast (dvojice, čtveřice pixelů). Jasová složka se v tomto kroku vůbec neuplatňuje.
Další krok spočívá v použití DCT transformace. Obrazová předloha je rozdělena na čtverce 8*8 pixelů. Každý čtverec je poté podroben dopředné kosinusové transformaci. Výsledkem je 8*8 koeficientů F(u,v). 1 (2 x 1)u (2 y 1)v 7 7 cos F (u, v) C (u ) C (v) f ( x, y ) cos 4 16 16 u o v o C(u), C(v) = 1/ 2
pro u,v = 0, je-li u,v <> 0 C(u), C(v) =1.
Dalším krokem komprese je kvantování koeficientů. Zde vlastně nastavujeme kvalitu obrázku, a tím tedy i ovlivňujeme jeho budoucí velikost. 8*8 koeficientů je poděleno kvantizačními konstantami, které jsou definovány pro jednotlivé složky Y, Cb, Cr a pro 75% kvalitu původního obrázku. Výsledkem DCT a kvantizace je opět matice 8*8 celočíselných koeficientů, které popisují rozložení barev v těchto 8*8 pixelech. Levý horní roh matice určuje dominantní barvu celé plochy. Další prvky matice definují barevné rozdíly od převládající barvy. Důležité je zmínit, že uživatel definuje parametrem Q výslednou kvalitu a velikost obrazu. Tento proces probíhá před použitím kvantizačních konstant. Tyto konstanty jsou přepočítány dle nastaveného parametru Q a teprve poté probíhá dělení matice. Poslední krok komprese představuje kódování. Při kódování se ukládá zvlášť dominantní složka matice a zbytek matice se kóduje pomocí Huffmanova kódování. Přitom se do vstupního proudu kódu uvádí rozdíly mezi barvami pixelů. Největší výhodou komprese JPEG je nejen skutečnost volby úrovně komprese, ale hlavně možnost zobrazení náhledu k obrazu v minimálním čase. Přitom se využívá izolovaného ukládání všech složek (Y, Cb,Cr). Stačí pouze vzít hodnotu jasové složky, to je dominantní prvek matice, a to provést pro všechny matice. Tím dostáváme sice obrázek 8 * menší v odstínech šedi, ale to je pro tzv. preview dostačující.
66
2.7.6
Fraktální komprese – ztrátová, nesymetrická, logická.
Fraktální komprese vychází ze skutečnosti, že všechny přirozené a většina umělých obrazů obsahují nadbytečné informace ve formě podobných, opakujících se vzorů (tvarových i barevných), tzv. fraktálů. Fraktál je struktura tvořená podobnými vzory a obrazy, které se vyskytují v mnoha různých velikostech. Tato metoda obchází nemožnost nalezení věrné zmenšené kopie celého obrazu tím, že hledá jen kopie jeho částí. Vychází z předpokladu, že když rozdělíme obraz na celky s podobnými vzory (tedy například na oblohu, trávu, stromy), bude jednodušší nalézt podobnosti mezi těmito celky a jejich částmi. V praxi se toto provádí rozdělením obrazu na pravidelné bloky a hledáním jejich větších kopií kdekoliv jinde v obrazu. Znázornění postupu je na následujícím obrázku, kde písmeno w značí libovolnou transformaci ve 2D.
Obr. 55 - Hledání podobnosti mezi doménovými a řadovými bloky obrazu
Při kompresi se obraz rozdělí na pravidelné řadové bloky (range blocks), které se nepřekrývají (pravá strana schématu). Ke každému z těchto bloků je dohledáván nejpodobnější doménový blok (levá strana schématu). Doménové bloky se mohou překrývat a nemusí dohromady pokrývat celou plochu obrazu. Doménové i řadové bloky jsou vybírány ze stejného obrazu, oddělené znázornění na schématu slouží jen pro větší přehlednost. Fraktální komprese se hodí zejména na kompresi přírodních obrazů. Velmi špatných výsledků je dosahováno při práci s obrazy, které obsahují text a kresby. Tyto části obrazu jsou po kompresi deformovány, někdy dokonce úplně zmizí, to je typické hlavně pro přímé čáry, které směřují diagonálně k hranám řadových bloků.
2.8
Formáty grafických dat
Grafická data zpracovávaná na počítači je třeba nějakým způsobem uložit a uchovat pro jejich pozdější využití nebo pro jejich přenos na jiný počítač nebo do jiného programu. K tomu slouží grafické formáty. Grafický formát je ve své podstatě soubor pravidel určující, jakým způsobem jsou digitální grafická data uložena v datovém souboru. Dříve každý výrobce programu na zpracování grafických dat 67
používal vlastní formát jejich uložení, to způsobovalo těžkosti v přenosu těchto dat mezi uživateli používajícími různé programy pro jejich zpracování. Uživatel byl nucen používat speciální programy pro konverzi grafických formátů anebo výrobci programů byli nuceni zabudovat do svých produktů podporu více formátů. To vše způsobovalo zvýšení nákladů a zvýšení pracnosti. Proto postupem času začaly vznikat standardy v oblasti grafický formátů pro ukládání dat. Některé byly standardy oficiálními, jiné byly standardy de facto, které vznikly z nejpopulárnějších a nejvíce využívaných a podporovaných grafických formátů. Grafické formáty pro ukládání dat se dělí na vektorové a rastrové. Rozdíl mezi nimi a jejich výhody či nevýhody jsou stejné jako mezi vektorovou a rastrovou grafikou. 2.8.1
Rastrové grafické formáty
BMP
Tento formát vyvinula firma Microsoft pro svůj operační systém Windows. Tento formát je standardem na platformě operačních systémů firmy Microsoft, kde je podporován přímo systémem. Vzhledem k velkém rozšíření tohoto operačního systému a také četného používání tohoto formátu je tento podporován i v programech běžících na konkurenčních operačních systémech. Formát podporuje ukládání rastrových obrázků v barevné hloubce 1,4,8 a 24 bitů. Pro barevnou hloubku 4 a 8 bitů ukládá i příslušnou barevnou paletu. Obvykle je rastrový obrázek uložen bez komprese, i když tento formát umožňuje využít RLE kompresi. Většina programů komprimovaný formát BMP nepodporuje. Jeho výhodou je jeho téměř absolutní podpora v programech na zpracování grafiky, nevýhoda je velká velikost výsledného souboru. PCX
Velmi starý a kdysi populární formát. Zavedla ho firma Zsoft ve svém grafickém editoru PC Paintbrush. Největší slávu a rozšíření si zažil v dobách grafických adaptérů CGA a EGA. Originálně podporuje ukládání rastrových obrázků v barevné hloubce 4 bity(16 barev), později byla přidána podpora pro 8 i 24 bitů. Podporována je RLE komprese, díky níž dosahoval velmi dobrých výsledků při ukládání šestnáctibarevných obrázků. Výhoda tohoto formátu spočívá v dobré bezeztrátové kompresi šestnáctibarevných obrázků, tato vlastnost ho předurčuje pro ukládání grafů a barevných schémat. GIF
Tento formát byl vyvinut firmou CompuServe pro přenos obrázků pomocí modemu přes tzv. BBS modemovou síť (předchůdce Internetu). Pro své vlastnosti se stal velmi rychle populárním a využívá se intenzivně dodnes. V minulosti se potýkal s problémy licenčních poplatků – proto byl jeden čas bojkotován výrobci grafických programů, v současnosti jsou tyto problémy vyřešeny a může se dále volně používat. Zkratka GIF znamená Graphics Interchange Format. Grafický formát GIF se používá pro ukládání rastrových obrázků v barevné hloubce 8bitů (256 barev). Používá velmi účinnou kompresi LZW, to má za následek velmi malou velikost výsledného souboru. Kromě komprese tento formát rovněž podporuje prokládané uložení obrázku a klíčovou barvu. Prokládané uložení se používá při načítání obrázku přes pomalé připojení (modem, pomalá linka). Obrázek se ukládá po řádcích, přičemž se nejprve uloží každý osmý řádek, potom se uloží každý osmý řádek od čtvrtého řádku a následně každý osmý 68
řádek od řádku druhého atd. To umožňuje náhled obrázku při jeho načítání – nejprve se zobrazí hrubý náhled poskládaný z každého osmého řádku, který se při postupném načítání dat zpřesňuje až do plné kvality obrázku. Klíčová barva je barva, která je v obrázku průhledná a v místech, kde se vyskytuje, prosvítá pozadí umístěné za obrázkem. Klíčová barva může být ve formátu GIF pouze jedna. Využívá se zejména v designu webových stránek. 1
Aplikace různých grafických formátů
8
Obr.56 – Princip prokládání u formátu GIF
Obr.57 – Klíčování barvy, klíčová barva je bílá
Formát GIF existuje ve dvou verzích, starší verze je označována jako GIF87a, novější GIF89a. Novější verze přidává možnost pracovat s tzv. animovanými GIFy. Tato vlastnost je rovněž velmi často využívána v oblasti designu webových stránek. Animovaný GIF se skládá ze sekvence za sebou uložených obrázků animace, která se potom ve stanovené frekvenci cyklicky přehrává (zobrazuje). TGA
Formát TGA byl vyvinut firmou Targa Truevision. Byl to jeden z prvních multiplatformních formátů – podporovaly ho programy na různých operačních systémech. Využíval se pro přenos obrázků v barevných hloubkách 24 a 32 bitů v profesionálních programech pro zpracování grafiky. Grafický formát TGA umožňuje uložit obrázky ve všech barevných hloubkách a to jak bez komprese, tak s RLE kompresí. Obvykle se používá pro ukládání 24 bitových obrázků bez komprese. 69
Jeho výhodou je multiplatformnost a při ukládání bez použití komprese i jednoduchost, nevýhodou je velká velikost výsledného souboru. TIFF
Zkratka TIFF označuje Tag Image File Format, jak již samotný význam tohoto názvu napovídá, jedná se o strukturovaný formát pro ukládání komplexních grafických dat. Formát TIFF není jazykem pro popis stránky, jeho účelem je umožnit strukturované ukládání grafických dat. Formát TIFF je velmi bohatý, ne všechny programy, které ho umožňují uložit, umí také přečíst všechny jeho varianty. Postupem času se formát rozšiřoval o nové komprese a formy uložení dat, vznikla i jeho varianta s názvem GEO-TIFF pro použití v systémech GIS. Grafický formát TIFF umožňuje ukládat obrazy ve všech barevných hloubkách s podporou komprese RLE,LZW i JPEG, případně bez komprese. Vše záleží na konkrétním programu použitém pro jeho ukládání nebo načítání. Výhodou tohoto formátu je jeho rozšířenost zejména na poli profesionálních sázecích programů a programů na úpravu grafiky pro tisk a programů z oblasti GIS (v AČR se používá pro ukládání digitálních map a dat o území). Nevýhoda spočívá v jeho značné komplexnosti; ne všechny programy dokáží přečíst obrázek ve formátu TIFF uložený jiným programem.
PNG
Grafický formát PNG neboli Portable Network Format byl zamýšlen jako náhrada staršího formátu GIF zejména pro použití v Internetu. Na rozdíl od formátu GIF u formátu PNG nejsou žádné nejasnosti v licenčních právech. Z grafického formátu GIF převzal kompresi LZW, jejíž účinnost zvýšil použitím předzpracování ukládaného pixelu. Grafický formát PNG podporuje ukládání obrázků v 24 i 32 bitové barevné hloubce, a to při použití bezeztrátové komprese. Při ukládání je možno použít dvojrozměrného prokládacího schématu (na rozdíl od formátu GIF, který umožňuje pouze prokládání řádků), formát PNG dovoluje rozdělit přenášené pixely do sedmi skupin. Dekódované pixely pak mohou vyplňovat čtvercové nebo obdélníkové oblasti, které se při postupném načítání dat zjemňují. Nevýhoda formátu PNG na rozdíl od formátu GIF spočívá v nemožnosti ukládání sekvence obrázků v jednom souboru. JPEG
Tento grafický formát byl vytvořen expertní skupinou Joint Photographic Experts Group pro uložení digitálních fotografií. Využívá komprese JPEG a pracuje pouze s barevnou hloubkou 24 bitů nebo s 8mi bitovými obrázky ve stupních šedi. Jak již bylo napsáno, komprese JPEG je ztrátová a hodí se především pro fotografie, proto se barevný formát JPEG používá hlavně pro přenos a archivování fotografií. Pro své vlastnosti je tento formát velmi oblíben a široce využíván a podporován. 2.8.2
Formáty pro animované sekvence
Formáty pro animované sekvence neboli formáty pro ukládání videa (filmů) se podstatně liší od formátů používaných pro ukládání statických obrázků. Požadavek na omezený datový tok, rychlost dekomprese a kvalitu kladou na algoritmy pro ukládání (a přehrávání) velmi velké nároky. Moderní formáty tyto požadavky řeší modulární strukturou, kde jsou od sebe odděleny použité kompresní metody (kodeky, angl. codec) pro ukládání zvuku a obrazu. Tyto kodeky jsou uloženy ve formě dynamických knihoven (COM modulů) se standardním rozhraním. Takto je 70
umožněno použití různých komprimačních algoritmů jak pro video část, tak i pro audio část; uživatel tak může použít ten nejvhodnější algoritmus pro dané konkrétní použití. Nevýhodou takového otevřeného formátu je možnost použít pro komprimaci kodeku, který není k dispozici na počítači, na kterém má být daný soubor přehrán. V takovém případě nezbývá nic jiného než daný kodek do systému doinstalovat (moderní přehrávače umí neznámý kodek najít a stáhnout z Internetu a nainstalovat automaticky). Mezi moderní, modulární formáty pro ukládání animovaných sekvencí patří zejména formáty AVI firmy Microsoft a MOV firmy Apple. Pro komprimaci obrazu se při zpracování animovaných sekvencí (videa a filmu) používá ztrátová komprese podobná kompresi použité u formátu JPEG. Jednotlivé snímky nejsou ukládány za sebou v sekvenci jako tomu bylo u formátu animovaného GIFu, ale ve velké míře je využíváno rozdílových snímků. Rozdílový snímek obsahuje pouze rozdíl informací (změnu) mezi sousedními snímky. V moderních kodecích se používá různě transformovaný rozdílový snímek, speciální algoritmy dokáží vyhledat místa ve snímku, která se nejméně a nejvíce změnila od předchozího snímku, a to i v případech, kdy je zpracovávaná scéna v pohybu. Konkrétní použité algoritmy jsou obvykle přísně střeženým tajemstvím a objektem patentové ochrany. Formát MPEG
Animační formát MPEG patří do skupiny klasických formátů. Komprimační algoritmy použité tímto formátem jsou dobře popsány a formát MPEG je výsledkem oficiální standardizační aktivity skupiny Motion Picture Experts Group. Dosud jsou známy dvě verze tohoto formátu, MPEG-1 a MPEG-2. Formát MPEG-1 dovoluje uložit obraz v rozlišení až 4095x4095 při snímkové frekvenci 30 snímků za sekundu a přenosové rychlosti 1.5 Mbit/s. Obraz je kódován v barevném modelu YUV. Formát MPEG-2 byl navržen především pro použití v přenosu digitální televize HDTV. Podporuje datový tok až 15 Mbit/s a velké rozlišení a kvalitu obrazu. Obraz je komprimován pomocí diskrétní kosinové transformace, snímky jsou ukládány jako tzv. I-frame (intraframe) – běžný snímek, P-frame (predictive) – rozdílový snímek mezi běžným snímkem a předchozím I nebo P frame a B-frame (bidirectional) – rozdílový snímek mezi dvěma nejbližšími I či P frame. Každý snímek je samostatně komprimován, nejlepší komprese se dosahuje u B-frame a nejhorší u Iframe. Typicky jsou objemy snímků I:P:B po kompresi 15:5:2. Snímky jsou do souboru uloženy v přesně definované posloupnosti
IBBPBBPBBPBBI s periodou 12 snímků. I-frame zde hraje roli tzv. klíčového snímku. Klíčový snímek je snímek, který je uložen s plnou kvalitou. Ukládá se v určité periodě mezi rozdílové snímky a slouží jako reference od které se rozdílová komprese odvíjí. Z důvodu použití ztrátové komprese, při vynechání klíčových snímků by se ztráty neustále kumulovaly až by došlo k úplnému znehodnocení přenášené informace.
Formát AVI
Formát AVI byl vyvinut firmou Microsoft pro její operační systém Windows. V současné době je nosnou součástí komplexního produktu pro zpracování videa a audia s názvem Windows Media. Formát AVI neboli Audio Video Interlaced je modulární a pro uložení videa a audia lze použít celé řady komprimačních kodeků. Mezi nejpopulárnější patří například : Microsoft RLE Cinepak 71
Intel Indeo DivX OpenX
Formát MOV
Původcem formátu MOV je firma Apple, která jej vyvinula pro svůj operační systém MacOS. V současné době je tento formát součástí produktu QuickTime. Ve své podstatě je podobný formátu AVI, navíc umožňuje uložit i hudbu ve formátu MIDI, 360stupňovou fotografii atd. Samostatná práce studenta
1) a) Podle vzorců uvedených v textu skript pro souřadnice x, y, z šroubovice zadané parametricky, vypočtěte nejméně 18 bodů této křivky v rozmezí parametru O až 6pí. Poloměr šroubovice si zvolte libovolně, rovněž tak její stoupání. Výsledky zapište do tabulky (nejlépe v Excelu) s přesností na 2 desetinná místa. b) Z vypočtených bodů vykreslete šroubovici (na milimetrový n. čtverečkovaný papír, příp. na tiskárně/plošném zapisovači počítače) v souřadnicovém systému x,y,z. K řešení (vykreslení) na počítači můžete využít libovolný grafický program. 2) V rovině yz pravoúhlého souřadnicového systému xyz nakreslete(nejlépe na milimetrový papír) nejméně 2 závity pravotočivé Archimedovy spirály. Výchozí poloměr spirály je 20 cm. Počátek souřadnicového systému, jakož i spirály, zvolte tak, aby její kresba byla přibližně uprostřed papíru formátu A4. Jeden závit spirály vyjádřete nejméně pomocí osmi bodů. Úseky spirály mezi jednotlivými body nahraďte křivkou podle křivítka. K vykreslení spirály můžete využít libovolný grafický program. Součástí řešení je tabulka vypočtených hodnot souřadnic Archimedovy spirály (např. v Excelu). 3) Pomocí komerčně dodávaných programů k operačním systému Windows 9x (viz dále) proveďte vzájemné konverse nejméně 5 různých grafických souborů. Vstupem nechť jsou libovolně vybrané grafické soubory formátu JPG, TIF, GIF, BMP, PCX nejlépe z adresáře OS Windows, případně jiného adresáře s grafickými soubory. Výstupem pak jsou konvertované grafické soubory. Výsledky konverse zapište do tabulky v Excelu podle níže uvedeného vzoru. Získané výsledy pod vyplněnou tabulkou písemně zhodnoťte s důrazem na kvalitu konverse a velikost získaných souborů.
72
4) Navrhněte, a na konkrétním příkladě ověřte, možný způsob (metodu, algoritmus) pro úsporné ukládání grafiky s fraktálními motivy (grafikou), vložené do textového souboru formátu doc. Fraktální grafika by měla mít nejméně 8 různých velikostí základního motivu a nejméně 4 barvy. Motivy mohou být graficky spojeny přímkou/křivkou a mohou se překrývat. Formát použitých fraktálních souborů volte podle některého z komerčních programů. 5) S použitím uvedené literatury sestavte tabulky struktur grafických souborů formátu tif, jpg, gif, bmp a pcx. Případová studie 1. GENEROVÁNÍ ZNAČEK NA PROJEKČNÍM DISPLEJI Úvod
Simulační úlohy, řešené v reálném čase, se bez použití různých grafických symbolů, usnadňujících rozhodnutí operátora (např. pilota, navigátora, řidiče, lodivoda apod.), na jeho obrazovce neobejdou. Současné metody generování těchto symbolů používají několik principů. Nejčastější způsob používá substituci (sloučení) dvou obrazů - reálné situace a generovaných symbolů. Jednou z modifikací tohoto způsobu je rozdělení symbolů na dvě části neměnnou a proměnnou, přičemž neměnná část (např. různé stupnice snímaných hodnot jako jsou rychlost, zrychlení, výška, apod.) může být uložena na libovolném paměťovém médiu (film, polovodičová paměť typu PROM či EPROM atd.) a proměnná část (např. sloupcoví ukazatelé, značky apod.) jsou generovány. V této případové studii, která obsahuje jeden konkrétní a praktický případ z počítačové grafiky, jsou rozebrány některé metody generování proměnných symbolů na bázi teorie grafů. Důraz je přitom položen na rychlost generování, která zejména u úloh řešených v reálném čase není zanedbatelná. Dále je zde analyzován a minimalizován počet průchodů zobrazovacího paprsku hranou grafu, protože neošetřený vícenásobný průchod paprsku stejnou hranou grafu působí (svým zvýšeným jasem) rušivě na operátora. Navržené postupy jsou ilustrovány na střeleckých úlohách využívajících metody Snapshoot a Hotline, kterými se dlouhodobě autor studie zabývá. V závěru jsou shrnuty formou algoritmu závěry a doporučení umožňující efektivní generování grafických symbolů v simulačních úlohách. Zobrazení řešené úlohy a generování symbolů
Problematika zobrazení řešené úlohy, a s ní úzce související generování používaných symbolů, zde bude demonstrována na projekčním displeji, používaném v bojových letounech. Jeho uspořádání je na obr. 1. Umístění stínítka obrazovky projekčního displeje do ohniska jeho optiky umožňuje pilotovi sledovat jak reálnou situaci, tak promítaný obraz bez změny akomodace, protože pozorovaný obraz se nachází v nekonečnu.
73
Obr. 1 Tradiční uspořádání projekčního displeje
Legenda: 1 - obrazovka, 2 - optika, 3 - zrcátko, 4 - polopropustná destička, 5 - zrak pilota, 6 - promítaná situace, 7 - reálná situace (cíl), 8 - ovládací panel projekčního displeje
Jak již bylo v úvodu řečeno, zobrazení používá jak pevné, tak pohyblivé symboly značky. Z hlediska studie je zobrazování pevných značek nezajímavé. Proto se jimi nebudeme zabývat. Z pohyblivých značek se omezíme na značky používané u simulačních metod letecké střelby (viz výše). Mezi zde používané pohyblivé symboly patří značky střel (S), dálkové značky střel (DZS) příp. časové značky střel (ČZS), značka fiktivního cíle (ZFC), značka bodu zásahu (ZBZ) a značka symbolického cíle (ZSC). Nás pak nejvíce zajímají první čtyři symboly. Jejich tvary a rozměry jsou na obr. 2. Na tomto místě je třeba podotknout, že pro značky byly použity velmi jednoduché tvary, aby jejich generování nebylo časově náročné. Velikost značek je pak odvozena od rozměrů (velikosti) cíle.(viz obr. 2). Veškeré úlohy (např. střelecké, bombardovací, navigační apod.) jsou řešeny v palubním souřadnicovém systému.
Obr. 2 Tvary a rozměry pohyblivých značek
Legenda: dk … rozměr cíle (rozpětí křídel cíle) Zobrazované znaky je možno chápat jako neorientované grafy složené z hran a vrcholů (obr. 3). Vypočtené souřadnice jednotlivých vrcholů grafu v palubním souřadnicovém systému jsou v tab. 1. 74
Pro lepší pochopení problematiky, uvedeme si některé pojmy z teorie grafů. Definice 1: Prostý graf G je dvojice [V,E] , kde V je množina vrcholů (uzlů) grafu G a E je množina hran grafu G.
Prostý graf může obsahovat hrany čtyř různých typů:
orientované hrany (šipky), neorientované hrany (žebra), orientované smyčky,
neorientované smyčky. Protože existují 4 různé druhy hran grafu G, můžeme vytvořit celkem 16 různých tříd grafů. Z nich nás nejvíce zajímají grafy neorientované.
Definice 2: Mějme opět nějaký graf G = [V,E]. Jestliže každé hraně e z E přiřadíme nějaké nezáporné číslo c , pak budeme G nazývat hranově ohodnoceným grafem. Nabývá-li číslo c logických hodnot 0, 1 , pak budeme G nazývat logicky ohodnoceným grafem. Definice 3: Mějme grafy G´ = [V´, E´ ] a G = [V, E ]. Pak graf G´ budeme nazývat podgrafem grafu G, jestliže platí V’ V a E’ E. Z předchozích definic je zřejmé, že logickým ohodnocením hran grafu G z obr. 3 lze zkonstruovat podgrafy G1 = DZC G2 = ZFC G3 = ZBZ Protože souřadnice vrcholů grafu G známe, stačí pro úplné zadání podgrafů G1, G2
a G3 tři matice spojení. Obr. 3 K výpočtu souřadnic vrcholů grafu
75
Matice spojení KG grafu (podgrafu) je definována následovně KG =
(k ij)
kde i, j = 1, 2, 3, ..., n n ... počet vrcholů grafu G.
Vrchol V
Souřadnice vrcholu xV
yV
zV
1
xZN
yZN + dk/4
zZN - dk/2
2
xZN
yZN
zZN - dk/2
3
xZN
yZN
zZN - dk/8
4
xZN
yZN - dk/8
zZN
5
xZN
yZN
zZN + dk/8
6
xZN
yZN
zZN + dk/2
7
xZN
yZN + dk/4
zZN + dk/2
8
xZN
yZN + dk/4
zZN
9
xZN
yZN + dk/8
zZN
10
xZN
yZN
zZN
Tab. 1 Souřadnice vrcholů grafu
Jednotlivé matice spojení pro náš případ jsou
KG
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
76
K G2
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
K G3
0 1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0
Z těchto matic spojení lze pak s využitím teorie grafů sestavit mikroprogramové řetězce pro generování jednotlivých znaků na stínítku obrazovky projekčního displeje. Obecně lze říci, že nalezení optimálních mikroprogramů je velmi obtížné a přesahu rámec studie.. Přesné algoritmy řešící tento problém dosud neexistují (viz literatura), existují pouze algoritmy přibližné, které dávají více či méně uspokojivé výsledky. V našem případě, vzhledem k malému počtu generovaných znaků (max. 7) a jejich jednoduchému tvaru (tj. malému počtu hran a vrcholů), optimalizace není nutná a problém lze řešit intuitivně. Získané výsledky jsou v tab. 2.. Značka ZFC
Generovaný řetězec 1 1 3 4 2 5 6 1
1
0 1 1 0 6 5 9 8 9 1 9 3
DZS
2 1 3 0 5 1 6
ZBZ
1 1 2 1 6 1 7 Tab. 2 Mikroprogramové řetězce
Jak je na první pohled zřejmé, odchýlili jsme se při zápisu mikroprogramových řetězců od symboliky používané v teorii grafů a použili jsme následující, podstatně jednodušší a přehlednější zápis tvaru c
ij i j
který vyjadřuje přechod z vrcholu i do vrcholu j (tj. ve směru šipky) v grafu G po hraně i, j ohodnocené logickou veličinou 77
Z fyzikálního hlediska je nutné aby paprsek při nadbytečném průchodu hranou grafu (příp. i mezi jinými nespojenými vrcholy) byl zatemněn. Jenom tak lze zabezpečit, že značka bude zobrazena správně resp. všechny hrany grafu (značky) budou mít stejný jas a nebudou tudíž na pilota či operátora působit rušivě. Z tab. 2 je dále zřejmé, že generované řetězce jsou v minimálním tvaru, který umožňuje generování znaků s minimálním počtem kroků. Při jejich sestavování byl použit minimalizační princip o spojnici bodů i, j, k (resp. vrcholů grafu) ležících na přímce. Výchozí pro konstrukci mikroprogramů je tab. 3, případně normalizované matice přírůstků My, Mz vyjadřující normalizované přírůstky souřadnic y a z při přechodu mezi jednotlivými vrcholy grafu, přičemž řádky matice přírůstků odpovídají výchozímu vrcholu a sloupce vrcholu koncovému. Pro měřítko zobrazení značek mz snadno odvodíme vztah Vrchol
Souřadnice x y 0.000 0.250 0.000 0.000 0.000 0.000 0.000 -0.125 0.000 0.000 0.000 0.000 0.000 0.250 0.000 0.250 0.000 0.125 0.000 0.000
1 2 3 4 5 6 7 8 9 10
z -0.500 -0.500 -0.125 0.000 0.125 0.500 0.500 0.000 0.000 0.000
Tab. 3 Normalizované souřadnice vrcholů grafu
mz d k
kde
M
y
f xz
dk ... rozměr (velikost) cíle f ... ohnisková vzdálenost optiky PD xz ... souřadnice x značky ZN
0 0 , 25 0 , 25
0 , 25
0 , 25
0 , 375
0 , 25
0 , 25
0
0
0 0
0 0
0 ,125 0 ,125
0 0
0 0
0 , 25 0 , 25
0 , 25 0 , 25
0 ,125 0 ,125
0 ,125
0 ,125
0 , 375
0 , 375
0 , 25
0
0
0 , 25
0 , 25
0 ,125
0 0 ,125
0 , 25 0 ,125
0 , 25 0 ,125
0 ,125 0
0
0
0 , 25
0 , 25
0 ,125
0 , 25 0 , 25
0 ,5 0 ,5
0 ,5 0 ,5
0 0
0 0
0 , 375
0 ,125
0 ,125
0 , 25
0
0
0 , 25 0 ,125
0 0 ,125
0 0 ,125
0 , 25
0
0
0 ,5 0 ,5
0 ,5 0 ,5
0 , 25 0 , 25
0 0 ,125 0 ,125 0 , 25 0 ,125 0 0
0 0 ,125
78
0 ,125
0 , 25 0 0 0 ,125 0 0 0 ,125 0 0 0
M
z
0 0 0 , 375 0 ,5 0 , 625 1 1 0 ,5 0 ,5 0 , 5
0 0 0 , 375
0 , 375
0 ,5
0 , 625
1
1
0 ,5
0 ,5
0 , 375 0
0 ,5 0 , 25
0 , 625 0 , 625
1 0 , 625
1 0 , 625
0 ,5 0 , 25
0 ,5 0 , 25
0 , 25 0
0 ,5 0 , 375
0 , 50 0 , 375
0 0 ,125
0 0 ,125
0 0
0 0
0 ,5 0 ,5
0 ,5 0 ,5
0 ,5 0 , 625
0 , 25 0 , 25
0 0 ,125
1 1
0 , 625 0 , 625
0 ,5 0 ,5
0 , 375 0 , 375
0 ,5 0 ,5
0 , 25 0 , 25
0 0
0 , 25 0 , 25
0 ,5 0 ,5
0 ,5 0 ,5
0 0
0 0
0 ,5
0 , 25
0
0 , 25
0 ,5
0 ,5
0
0
0 , 5 0 , 25 0 0 ,125 0 ,5 0 ,5 0 0 0 0 ,5
Algoritmus generování symbolů (značek)
1) Provedeme test, zda-li lze symbol (značku) ve smyslu teorie grafů nakreslit jedním tahem. Pokud ano, potom při jejím generování uplatníme algoritmus kresby grafu jedním tahem . V opačném případě pokračujeme podle bodu 2. 2) Nelze-li nakreslit symbol (značku) jedním tahem, potom jí reprezentovaný graf rozdělíme na jednotlivé podgrafy tak, aby tyto pokryly celý původní graf, přičemž každý podgraf musí být zobrazitelný kresbou jedním tahem. Potom spojíme koncové a počáteční vrcholy všech takto vzniklých podgrafů „neviditelnými spojovacími hranami” tak, aby vznikl hledaný graf. Tím postup končí.
Obr. 4 Pohled na projekční displej v kabině pilota s generovanými značkami
2.9
Shrnutí a závěr
Ve studii popisovaná metoda generování symbolů byla navržena pro cvičný letoun české produkce L-149, následně pak L-159. Navržený minimalizační algoritmus vychází z tzv. kresby grafu jedním tahem, přičemž nadbytečné přechody mezi vrcholy či průchody hranami grafu jsou uskutečňovány se zatemněným paprskem. Tím jsou eliminovány rušivé vlivy vícenásobných průchodů. Na druhé straně pak vícenásobných průchodů lze použít ke zvýraznění některých částí grafu. Pozornému čtenáři jistě neuniklo, že ke generování symbolů se používají výhradně přímky, resp. úsečky. Jde o modifikaci vektorového zobrazení, nepoužívajícího oblouky či křivky mezi vrcholy grafu. Přechod k tomuto vyššímu typu značek není až tak složitý, jak by se zdálo. Vyžaduje pouze další matici obsahující typ hrany grafu (přímka, oblouk, křivka. 79
2.10
Kontrolní otázky
1) Co víte o vektorové grafice? 2) Jaké jsou základní výhody a nevýhody vektorové reprezentace grafických dat? 3) Co víte o rastrové grafice? 4) Jaké jsou základní výhody a nevýhody rastrové reprezentace grafických dat? 5) Charakterizujte geometrické transformace. 6) Co je to rasterizace? 7) Co je to alias a antialiasing? 8) Co je to histogram? 9) K čemu slouží gamma korekce? 10) Jak vzniká negativní obraz? 11) Jak vzniká emboss? 12) V čem spočívá princip filtrace obrazu? 13) Uveďte klasifikaci rovinných křivek. 14) K čemu jsou dobré křivky při konstrukci ploch? 15) Jak jsou konstruovány aproximační křivky? 16) Co jsou to Bézierovy křivky ? 17) Proč vznikly metody komprese grafické informace? 18) K čemu slouží grafické formáty? 19) Co je to klíčová barva? 20) Co víte o formátech pro animované sekvence?
2.11
Shrnutí
Tato kapitola obsahuje celkem 7 relativně samostatných odborných částí.. Začíná popisem a vzájemným porovnáním dvou, v počítačové grafice používaných, způsobů grafické reprezentace obrazu, a to tzv. vektorové a rastrové grafiky. Na tuto úvodní pasáž navazuje 2D a 3D geometrická transformace grafické informace a to: posunutí, rotace, změna měřítka, souměrnost a zkosení. Výklad této pasáže se opírá o maticové vyjádření transformačních vztahů, které dělá výklad srozumitelnějším a přehlednějším. Velká část výkladu je věnována vlastní rastrové grafice a tzv. rasterizaci (tj. převodu obrazu do rastrové podoby) základních grafických primitiv a to úsečky a kružnice. Jsou zde uvedeny a zhodnoceny nejčastěji používané algoritmy rasterizace. Rastrová grafika je pak zde podrobena poměrně detailnímu rozboru z hlediska kvality zobrazení. Jsou zde vysvětleny pojmy alias a antialiasing, histogram, jas, kontrast, negativ a emboss. Část výkladu je věnována filtraci šumu v obrazu, ostření obrazu, detekci hran, transformaci barev a změně rozlišení. Pátá část kapitoly je věnována rovinným křivkám (křivky ve 2D). Křivky jsou zde rozděleny podle způsobu zadání a to jako křivky zadané analyticky, resp. explicitně, implicitně a parametricky. V dalším pak je pozornost věnována interpolačním křivkám a aproximačním křivkám (s důrazem na tzv. splajny) které jsou používány při počítačovém konstruování ploch. Závěr kapitoly je věnován ukládání grafické informace do paměti počítače. Jsou zde popsány a zhodnoceny jednak nejčastěji používané způsoby komprese a dekomprese grafické informace a dále pak používané formáty grafických dat. Krátká pasáž je věnována i formátům pro animované sekvence, které v sobě zpravidla, kromě grafické informace, zahrnují i informace zvukové.
80
3
Použití barevného kruhu pro vyjádření barev
Cíle kapitoly:
Vysvětlení barevného modelu práce s příklady barevných schémat barvy.zip v doporučené literatuře práce barevným modelem Klíčová slova:
RGB, monochromatický, komplement, základ, doplňková barva Barevný kruh rozděluje barvy podle jejich charakteru a umožňuje aplikaci tohoto systému v prostředí webové grafiky. Barevný kruh je rozdělen na teplé a studené barvy podle jejich působení na psychiku uživatele. Toto rozdělení je vidět uvnitř kruhu na obrázku 3.1 v levé části. Další varianta zobrazení je v pravé části obrázku, kde je vidět kombinace barev podle barevného modelu. V případě obrázku se jedná o doplňkové barvy. Základní barvu volíme v levé části pod barevným kruhem, k této barvě vybere program kontrastní barvu a zobrazí její kombinaci s různou sytostí této barvy. Výhodou je zobrazení s číselným kódem vyjadřující RGB formát barvy, který lze použít na WWW stránkách.
Obr. 3.1 použití barevného kruhu pomocí projektu v javaskriptu Další výhodou v tomto programu je vytvořen barevného kruhu v barevném schématu pro další varianty. Varianty schématu: Monochromatické – kombinace jedné barvy Kontrast –základ a doplněk Měký kontrast Dvojkontrast Analogické – základ+sousední
81
Vliv a vzájemné působení barev je známé z malířství a tento systém kombinace barev používali impresionisté pro vytvoření kontrastu mezi vzájemnými barvami. Toto lze využít také v projektech zaměřených na reklamní oblast.
3.1
Zadání úkolů vytvořte WWW stránku v popise dvou barevných modelů a to RGB a CMYK popište tři webdesignové nástroje pro práci s barvami pro stránky použijte šablony CSS stylů dle vlastního návrhu
Výstupem tohoto cvičení bude webová stránka, ve které bude opsané principy barevných prostorů RGB a CMYK.
82
4
On-line rastrová grafika
Cíle kapitoly:
Vysvětlení v prostředí internetu Možnosti práce s barvami a vytváření souborů Práce s vrstvami a filtry Klíčová slova:
Filtra, flash, online editory V současné době se začínají používat programy, které se nacházejí na serverech v prostředí internetu. Tento systém dovoluje, aby uživatel pracoval pomocí prohlížeče WWW stránek s využitím flash systému, který vytvoří obrazovkové menu podobné jako v klasických programech typu photoshop a podobně. Tyto programy dovolují ukládat data bud na server, nebo na klientský počítač. V případě uložení na serveru se mohou na projektu vzájemně střídat různí grafici a postupně dopracovat společný projekt. Tyto programy pracují s rastrovou grafikou pomocí klasických nástrojů jako jsou štětce, tužky, výplně apod. Rychlost vytváření obrázků z hlediska odezvy serveru je dostatečná a tak uživatel pro jednoduchou grafiku nemusí instalovat žádný program na svém počítači. Jeden z představitelů těchto programů je sumopaint jehož obrazovka dovoluje vytvářet rastrový obrázek pomocí dříve uvedených nástrojů. . Adresa programu je následující http://www.sumopaint.com/home/
Obr. 4.1 vstupní obrazovka pro sumopaint Po kliknutí na Open Sumo Paint se dostaneme grafické rozhraní, které je zobrazeno na následujícím obrázku. V levé části jsou jednotlivé kreslící nástroje, v pravé části je výběr barev a možnost sledování jednotlivých vrstev, které se dají různě kombinovat. 83
Obr. 4.2 základní okno programu sumopaint s ovládacími nástroji V horní části programu se nachází možnost práce ze soubory,editace obrázku, vrstvami nastavení filtrů a pomoc při hledání informací. Ve velmi podrobném helpu je popis všech základních funkcí tohoto programu, tak aby uživatel měl možnost se zaměřit na určitou oblast.
Obr. 4.3 popis helpu pro oblast práce ze štětci
84
4.1
Pracovní úkol
Vytvořte banner, který použijete pro vámi vytvořené WWW stránky. Tento banner bude v jedné vrstvě obsahovat text s nápisem vašeho jména a přijmení a ve druhé vrstvě bude obsahovat kresbu pozadí. Tento obrázek uložte do svého adresáře ve dvou barevných variantách. Ve druhé vrstvě zkuste použít některý z filtrů, který vytvoří určitý efekt. Na obrázku je ukázka světelného efektu lampy.
Obr. 4.4 použití filtru pro světelný efekt Při nastavení určitého filtru se určují parametry, které ovlivňují určité barevné zobrazení. Meze rastrovými editory existují další varianty těchto editorů, které mají podobné funkce. Tyto editory je možné nalézt na různých WWW stránkách jako online editory. Jejich funkce je zaměřena převážně pro zpracování fotografií a práce ze soubory typu gif,png,jpg a dalších barevných formátů. .
4.2
Kontrolní otázky 1. 2. 3. 4.
Jak se pracuje v prostředí online editoru Kde je umístěn program a kde mohou být umístěna data Jaké možnosti existují při práci s vrstvami Jak se vkládají externí obrázky do výsledného souboru
85
86
5
fraktály a jejich aplikace
Cíle kapitoly:
Vysvětlení principů fraktálů a jeich použití při webové grafice Popis jednotlivých druhů fraktálů se vzorci Práce s programy pro generování fraktálů fraktál explorer a generování krajin Klíčová slova:
Fraktál, mandelbrot, julia množina, teragen, kochova vločka, sierpinského trojúhelník Text kapitoly:
Fraktály lze definovat z hlediska méně matematického jako určitý geometrický objekt s těmito vlastnostmi: Je soběpodobný což znamená že ve zmenšeném i zvětšeném měřítku lze pozorovat soběpodobné útvary ( mají přibližněn podobný tvat). Je generován pomocí opakujících se matematických pravidel, která bývají jednoduchá Tento pojem poprvé použil matematik polského původu pan Benoit Mandelbrot po kterém je pojmenována mandelbrotova množina, která je charakteristickým fraktálem. Jaké jsou vlastnosti mandelbrotovy množiny: Představuje množinu komplexních čísel c, pro která platí následující pravidlo , kde posloupnost z0,z1,z2,... je definována pomocí rekurzivního zápisu Bod c tedy patří do Mandelbrotovy množiny právě tehdy, když uvedená limita neexistuje, nebo je konečná (např. c=0). Matematický algoritmus se používá v určitém programovacím jazyce (např. C jazyk nebo Java) a postupně se zobrazují jednotlivé body této množinou s barevným přiřazením.
87
Fraktály jako matematické utváry s grafickým zobrazením
Obr. 5.1 Mandelbrotova množina Pro pochopení je vhodné ukázat stejný princip na fraktálu kochovi vločky, která je jednou z prvních matematických fraktálních křivek. Postup vytvoření této matematické křivky je následující: Kochova křivka vznikne nekonečným opakováním jednoduchého postupu. Na začátku je prostá úsečka (v případě Kochovy vločky rovnostranný trojúhelník tvořený třemi takovými úsečkami). V každém kroku se pak provede následující:
Na začátku je rovnostranný trojúhelník S jednotlivými stranami proveďme následující: 1. Stranu rozdělme na třetiny 2. Nad prostřední třetinou sestrojme rovnostranný trojúhelník 3. Odstraňme základnu trojúhelníku Tyto činnosti postupně opakujeme a dostaneme jemnější zobrazení na hranách tohoto matematického útvaru.
Obr. 5.2 postupné zobrazení kochovy vločky jako fraktálové křivky Podobným způsobem vznikne také fraktálový útvar zvaný sierpinského trojúhelník. Vzniká rekurzivním vykreslováním rovnostranných trojúhelníků. Tento útvar popsal v roce 1915 polský matematik Waclaw Sierpiski.
88
Obr. 5.3 fraktálový útvar sierpiského trojúhelník V následující části bude popsán program, který dovoluje pracovat s těmito objekty s nastavením nejrůznějších parametrů a také dovoluje změnou měřítka pozorovat stupeň soběpodobnosti v jednotlivých částech geometrického útvaru.
5.1
Použití programu fraktál exploreru
Tento volně šiřitelný program slouží jako ukázka geometrických útvarů fraktálů s možností jednoduché animace. Na obrázku je zobrazeno několik základních druhů fraktálů, které jsou generované v základním okně programu. Tento program dovoluje také zobrazit 3D fraktály abstraktního charakteru a provádět s nimi posuny do stran, otočení objektu a vytvoření animace objektu fraktálu s uložením do videosouboru pro pozdější zobrazení. Další možností je nastavování jednotlivých parametrů ve vzorcích, které se používají pro generování fraktálů a tímto způsobem ovlivňovat grafické zobrazení.
Obr. 5.4 ukázka generování fraktálů v programu Na obr 5.4 je vidět zobrazení různých typů fraktálů. Toto zobrazení dosáhneme kliknutím na první tři ikony v horní části menu. Prvním fraktálem je mandelbrotova množina na které můžeme zkoumat soběpodobnost útvarů. Levým tlačítkem můžeme vybrat požadovanou oblast pro zobrazení podívat se další detaily vybraného fraktálu. Protože počítač má omezené schopnosti výpočtu po nějaké době již nelze další detaily matematicky spočítat z důvodu konečného počtu desetinných čísel při výpočtu na počítači. 89
Použití speciálního programu pro vytváření fraktálů
Na dalším obrázku obr.5.5 můžeme sledovat možnost nastavení parametrů pro matematický vzorec, který provádí výpočet matematické množiny vybraného fraktálu. Ve vzorci je vidět kurzivní význam při generování fraktálu.
Obr.5.5 zobrazení rovnice fraktálů s možností nastavení parametrů Mezi významné vlastnosti zobrazení je transformace čísel na barevné vyjaření, které může uživatel vidět na svém monitoru. Toto barevné vyjádření lze měnit výběrem barevného gradientu. Tyto možnosti je vidět na fraktálu mandelbrotovi množiny . Tažením pomocí myši za jednotlivé body gradientu dosáhneme změny barevného zobrazení fraktálu. Také hodnotu nekonečna, které je představováno černou barvou lze nastavit na čtverečku afinity color. Barevné zobrazení fraktálu pro použití pro webovou grafiku
Obr. 5.6 barevné přiřazení jednotlivým číselným oblastem
90
Obr. 5.7 ukázka vytvoření 3D modelu fraktálu Velmi zajímavou části je zobrazení fraktálu v 3D prostru s možností otáčení v jednotlivých osách. Tato funkce je zobrazena na obr. 5.7 s ukázkou abstraktního fraktálu ve zlaté barvě. Kliknutím na jednotlivé šipky, které jsou umístěny po obvodu dochází k natočením fraktálu podle požadované osy. Program provede transformaci ve 3D prostoru se zobrazením fraktálu.
Obr. 5.8 možnost výsledku do typu souboru jpeg Další důležitou částí je možnost uložení výsledného obrázku do souboru, který použijeme pro další aplikace (např. umístění na WWW stránce). Program dovoluje ukládání do různých typů obrázků (jpeg,bmp,GIF). Varianta umístění výsledného obrázku je vidět na obr.5.8, který ukazuje výběr souboru s pomocnými informacemi pro uložení dat. Výsledný obrázek můžeme před uložením významně ovlivnit pomocí filtrů, které dovolují zpracovat obrázek s určitými efekty. Jedná se o sérii efektů zaměřených na reliéfy, úpravu hran a okrajů nebo operace s gradienty barev. Tyto možnosti aplikace programu je vidět na obr. 5.9 s vytvořením reliéfu.
91
Obr. 5.9 aplikace filtrů na obrázek fraktálu mandelbrotovi množiny V praxi se používá velké množství různých programů, které dovolují generovat obrázky fraktálů. Jedna z variant je použití určitých „fraktálových laboratoří, které generují fraktály jako umělecká díla.
Obr. 5.10 ukázka fraktálové laboratoře Tyto systémy dovolují animace objektů a vytvořit fraktál podle požadavků uživatele. Autoři pak dále používají autorskou ochranu pro takto vygenerované obrázky. Samostatná práce studenta: Výstupem tohoto projektu bude www stránka s ukázkami 3 fraktálů pomocí programu fractal exploreru. Ke každému fraktálu vložit popis parametrů z rovnice uvedené v programu. Soubory HTML uložíte do vlastního FTP adresáře. Jednotlivé záložky WWW stránek: principy fraktálů historie a současnost fraktálů fractal explorer generování fraktálů vytvoření rovnic pro různé druhy fraktálů fraktály na webu http://www.fractal-recursions.com/ 92
5.2
Aplikace fraktálů na reálné objekty krajin
Dalším posuven v oblasti aplikace fraktálů je jejich použití při generování virtuální reality určitého vybraného objektu. V našem případě se bude jednat o generování krajin. Tímto druhem programu se zabývá firma PlanetSide, která vytvářela programy pro videa přistání sond na marsu a dalších planetách. Při těchto videosekvencích používala generován povrch jednotlivých planet pomocí fraktálů, kdy fraktály vytvářely povrch s různými tvarů kráterů. Z tohoto systému se později vytvořil projekt zaměřený ne generování krajin. Program, který bude popsán na následujících obrázcích dovoluje vygenerovat pohoří, které je téměř nerozeznatelné od skutečného pohoří. Při vytvoření modelu se nejprve vygeneruje pomocí fraktálu povrch pohoří a následně na tento povrch se umístí textura určitého povrch. Další fází je nastavení světelných podmínek jako je sluneční svit, mraky, obloha a podobně. Výsledný obrázek je pak vyrenederován z nastavených parametrů.
Další informace
http://www.plan etside.co.uk/cont ent/view/15/27/
Obr. 5.11 www stránky webu pro teragen program firmy Planet Side Na WWW stránkách http://www.planetside.co.uk/content/view/15/27/ můžeme sledovat jak se pomocí programu vytváří virtuální realita, která se dále používá pro různé oblasti reklamy nebo ve filmovém průmyslu. Základní myšlenku programu můžeme vidět na hlavním okně programu na obr. 5.12, který zobrazuje dvě podokna. V levé části jsou parametry kamery, kterou se díví uživatel na krajinu a v pravém podokně jsou parametry pro generování krajiny s využitím fraktálů.
93
Obr. 5.12 ukázka generování krajin pomocí programu Terragen Na levé straně jsou na okrajích ikony pro nastavení dalších dodatečných efektů jeko je obloha, slunce a mraky. Také trato nastavení používají fraktály pro vytvoření efektu mraků a podobně.
5.3
Samostatná práce studenta
Téma fraktály – generování virtálních krajin Výstupem tohoto cvičení bude vytvořit 3 obrázky pro různá období jako baner html stránky 600 x200 pixelů. Popište způsob nastavení parametrů v programu a uložte obrazovky pro nastavení do powerpointu s popisem významu parametrů. Pro jednotlivé slide použijte následující obsah:
5.4 Další informace
http://www.ellio ttfractals.com/
použití fraktálů pro generování krajin ukázka programu principy generování možnosti změn prostředí světla použití textu krajina v zimně a v létě práce s programem
Aplikace fraktálů v ekonomické oblasti
Význam fraktálů se projevil také v použití pro ekonomickou oblast. Protože fraktály jsou spojeny s teorií chaosu, jednotlivé rovnice fraktálů se dají použít pro popis některých ekonomických jevů. Jedna z praktických aplikací je použití při predikci pohybu na akciovém trhu, který je charakterizován nepředvídatelnými změnami při obchodování s jednotlivými akciemi. Pokud vyhledáme spojení termínu „fractal and 94
stock market“ dostaneme více než milion odkazů. Z tohoto množství odkazů je zřejmé, že touto oblastí se zabývá velké množství odborných stránek.
Obr.5.13 ukázka spojení akciového trhu a teorie fraktálů Jednotlivé teorie se zabývají snahou použít fraktálové teorie pro predikci akcí, nebo vyjádřit jejich pohyb pomocí matematických vzorců. Tyto systémy se snaží pracovat s jednotlivými klienty, kteří nakupují na akciovém trhu a posílají jim doporučení pro nákup a prodej akcií. Je zřejmé, že vytvořit takový model úspěšnosti je velmi obtížné, protože množství vlivů, které ovlivňují chování jednotlivých investorů je velmi velké. Pro studenty je velmi dobré prostudovat aplikace, které se zabývají touto oblastí a pochopit posun od abstraktního zobrazení geometrického útvaru po využití fraktálů při predikci akciového trhu.
5.5
Otázka ke kapitole
Jaký je historický vývoj fraktálů Jaké jsou charakteristické vlastnosti fraktálů Jaký je algoritmus generování kochovi vločka Na jakém principu pracuje program pro generování virtuální reality Ve které ekonomické oblasti se používají fraktály
95
96
Literatura [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30]
SOBOTKA Počítačová grafika. České Budějovice : Nakladatelství KOPP, 1999. SOCHOR; ŽÁRA; BENEŠ Algoritmy počítačové grafiky. SOBOTA; MILÁNOVÁ; MILÁN Grafické editory. České Budějovice : Nakladatelství KOPP, 1997. SOBOTA; MILÁN Grafické formáty. České Budějovice : Nakladatelství KOPP, 1996. MARTIŠEK Matematické principy grafických systémů. Brno : Littera Kovařík, 2002. GRANÁT; SECHOVSKÝ Počítačová grafika. Praha : SNTL, 1980. SEDLÁČEK Úvod do teorie grafů. Praha : Akademia, 1981. NEČAS Grafy a jejich použití. Praha : SNTL, 1978. NEŠETŘIL Teorie grafů. Praha : SNTL, 1979. PLESNÍK Grafové algoritmy. Veda. Bratislava : Vydavatelstvo SAV, 1983. JAMES, D.; MURRAY; WILLIAM VAN RYPER. Encyklopedie grafických formátů. 1.vydání. Brno : Computer Press, 1995. ŠNOREK, M. Technické vybavení pro počítačovou grafiku. Praha : ČVUT, 1997. PELIKÁN, PC - prostorové modelování. Praha : Grada, 1992. BOSÁK, Grafy a ich aplikácie. 2. vydanie. Bratislava : Alfa, 1980. KOLÁŘ, Algebra a grafy. Praha : Ediční středisko ČVUT, 1982. DRS; JEŽEK; NOVÁK, Počítačová grafika. Praha : Ediční středisko ČVUT, 1982. Digitální fotografie. Chip Speciál. Vogel Computer Media, Praha, 1995. ŽÁRA, Moderní počítačová grafika. První vydání. Praha : Computer Press, 1998. FOŘT, Mechanical Desktop 4. První vydání. Praha : Computer Press, 2000. REKTORYS, Přehled užité matematiky I. Vydání šesté. Praha : Prometheus, 1996. BUBENÍK; PULTAR, Matematické vzorce a metody. Praha : ČVUT, 1994. BUDÍNSKÝ, Analytická a diferenciální geometrie. Praha : SNTL, 1983. JEŽEK, Geometrické a počítačové modelování. (Přednáška) ZČU, 1993. POLÁČEK; JEŽEK; KOPINCOVÁ, Počítačová grafika. Praha : ČVUT, 1991. DRS, Plochy ve výpočetní technice. Praha : SNTL, 1984. PICHL; KUKA; PICHLOVÁ, Symbols Generation In: Book of Abstracts of ITEC 2001, Lille, France, 2001. PICHL; KURKA; PICHLOVÁ, Graphical Symbols for Aircraft Head-Up Displays Generation. In: Sborník & CD-ROM of 12th International Training & Education Conference ITEC 2001, Lille, France 24. - 26.4.2001. HODICKÝ; FRANTIŠ, Počítačová grafika. Brna : VA Brno, 2003. SLAVÍK, P. Metody zpracování grafické informace. Praha : ČVUT, 1995. DRS, L. Plochy ve výpočetní technice. (Matematický seminář č. 20). Praha : SNTL, 1984.
Internetové zdroje
[31] http://www.stud.fee.vutbr.cz/xalexa00/curves/obsah.html [32] http://www.stud.fee.vutbr.cz/xkouri01/download/nurbs/nurbsdoc.htm [33] http://www.color.org
97
98
Název: © Počítačová grafika
2. aktualizované vydání Autor: © Doc. Ing. Karel Pichl, CSc. © Ing. Jindřich Petrucha, Ph.D. Vydavatel, vyrobil: © Evropský polytechnický institut, s.r.o. Osvobození 699, 686 04 Kunovice
Náklad: Počet stran: Rok vydání:
30 ks 98 2011
ISBN: 978-80-7314-261-2