Evropský polytechnický institut, s.r.o.. soukromá vysoká škola na Moravě Kunovice POČÍTAČOVÁ GRAFIKA Doc. Ing. Karel Pichl, CSc. Ing. Jindřich Petrucha, Ph.D. 2
2
Evropský polytechnický institut, s.r.o. Kunovice Počítačová grafika Doc. Ing. Karel Pichl, CSc. Ing. Jindřich Petrucha, Ph.D. Kunovice 2 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, 2 Neprošlo jazykovou úpravou ISBN: 978-8-734-26-2 4
Obsah ÚVOD DO POČÍTAČOVÉ GRAFIKY... 7. Pojem barva... 7.2 Barevné modely....2. Barevný model RGB....2.2 Barevný model CMY....2.3 Barevný model CMYK....2.4 Barevný model HSV... 2.2.5 Barevný model HLS... 2.2.6 Modely pro televizní a videotechniku... 3.3 Uložení obrazu v počítači... 4.3. Základní pojmy... 4.3.2 Barevné módy... 6.4 Samostatná práce studenta... 8.5 Kontrolní otázky... 8.6 Shrnutí kapitoly... 9 2 ROVINNÁ GRAFIKA... 2 2. Úvod do 2D grafiky (rozdíly mezi rastrem a vektorem)... 2 2.2 Vektorová reprezentace obrazu... 2 2.2. Rastrová reprezentace obrazu... 22 2.3 Geometrické transformace... 23 2.3. 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)... 3 2.4. Rasterizace úsečky... 3 2.4.2 Rasterizace kružnice... 35 2.5 Rastrová grafika... 37 2.5. Alias a antialiasing... 37 2.5.2 Histogram... 38 2.5.3 Práce s histogramem... 4 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. 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. 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. Rastrové grafické formáty... 68 2.8.2 Formáty pro animované sekvence... 7 2.9 Shrnutí a závěr... 79 2. Kontrolní otázky... 8 2. Shrnutí... 8 3 POUŽITÍ BAREVNÉHO KRUHU PRO VYJÁDŘENÍ BAREV... 8 3. Zadání úkolů... 82 5
4 ON-LINE RASTROVÁ GRAFIKA... 83 4. Pracovní úkol... 85 4.2 Kontrolní otázky... 85 5 FRAKTÁLY A JEJICH APLIKACE... 87 5. Použití programu fraktál exploreru... 89 5.2 Aplikace fraktálů na reálné objekty krajin... 93 5.3 Samostatná práce studenta... 94 5.4 Aplikace fraktálů v ekonomické oblasti... 94 5.5 Otázka ke kapitole... 95 LITERATURA... 97 6
Ú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. Vytváření modelů CMYK a RGB pro barevné vyjadření 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 7. 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.. 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
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 =,299 R +,587 G +,4B 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 2, pro zelenou je to 64 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 936 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. 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 993 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
.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.2. 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 <,>, případně <,255>. Hodnota nula znamená, že daná barevná složka není přítomna, hodnota (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. modrá tyrkysová fialová bílá zelená černá Obr.3 RGB krychle červená žlutá.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.
c r m g y 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..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á zelená černá fialová bílá tyrkysová modrá 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.
Obr.5 Model HSV.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ě..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. 2
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..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í 3
Y.299 U.4 V.65.587.289.55.4 R.437 G. B Hodnoty modelu YCbCr získáme podle tohoto maticového násobení Y.299 Cb.687 Cr.5.587.333.487.4 R.5 G.83 B Jas Y nabývá hodnot v intervalu <.,.>, barevné složky Cb a Cr nabývají hodnot v intervalu <-.5,.5>. Jasová složka Y se nazývá luminance a barevné složky Cb a Cr se nazývají chrominance..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..3. 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í. 4
Rozlišení 32x2 64x48 8x6 24x768 52x864 28x24 6x2 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 Počet potřebných bitů na jeden pixel 6 4 256 8 65535 (high colour, tisíce barev) 6 6,7 mil ( true colour, miliony barev) 24 6,7 mil + (true colour, miliony barev) 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. X * Y * Bpp M 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í 24x768. Počet současně zobrazitelných barev Počet potřebných bitů na jeden pixel Velikost dat 6 4 393 26 256 8 786 432 65535 (high colour) 6 572 864 6,7 mil ( true colour) 24 2 359 296 6,7 mil + (true colour) 32 3 45 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. 5
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 6 Hz. I když lidské oko vnímá obrazovku monitoru s obnovovací frekvencí 6Hz 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 6Hz 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 Hz. 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ž x 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..3.2 Barevné módy 6 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 6 hodnot (-5). 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 ( až 5) a ke každému indexu barvy příslušné hodnoty R,G a B složky. Ty nabývají hodnot 255, mají tedy velikost 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 6
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 6 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ů ( 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 6 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 5 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 -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, 7
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 6,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. Ukoly studenta s garfikou.4 Samostatná práce studenta. 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)..5 Kontrolní otázky ) 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í? ) Co víte o obnovovací frekvenci? 8
.6 Shrnutí kapitoly Počítačová grafika se rozvinula z teoretické vědy na počátku 7. 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. 9
2
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. Matematické reprezentace grafiky 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, Catmull- Rom 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. Ú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áří 2
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 4,,, BLUE; značí vykreslení kružnice S(,), r = 4, a to modře. LINE, 2, 4, 4, RED; značí vykreslení úsečky z bodu A(,2) do bodu B(4,4), 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. 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. Práce s geometrickou transformací v souřadných systémemch 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. 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 e i,x, e i,y, e i,z, resp. e i,x, e i,y, e i,z.pro bázové vektory prvního a, i =,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
tj. E = EA neboli: Předchozí rovnice je vyjádřením vektorů jedné báze pomocí vektorů báze druhé, a proto například první řádek (souřadnice a, a 2, a 3 ) je souřadnicemi vektoru v 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 = a x + a 2 y + a 3 z + Px y = a 2 x + a 22 y + a 23 z + Py z = a 3 x + a 32 y + a 33 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 - P A - 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.: ) 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 - = A T. 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: 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 =, můžeme transformační vztah zapsat v jednoduché podobě a podobně inverze: kde X Y x, y, z w w X = X A H, X = XA H-, Z w 25
Prvky a, a 2, a 3, a 2, a 22, a 23, a 3, a 32, a 33, matice A H odpovídají stejným prvkům v matici A. Prvky a 4, a 24, a 34 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 Transformace ve 2D Algoritmy pro 2D transformace s využitím matic 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 a 3 a a 23, 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. Souměrnost Obr 9 - Rotace ve 2D Souměrnost (angl. symetry) je možno rozdělit na souměrnost středovou a osovou (viz obr.). Středová souměrnost je rotací o 8 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 - 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. - 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 (,), 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.2 demonstruje změnu měřítka a vztah je odpovídající transformační maticí. Obr 2 - 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 =. 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 3 - 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 = -. 2) Souměrnost podle roviny yz pro Sx = -, xz pro Sy = - a xy pro Sz = - (viz obrázek.9). 3) Souměrnost podle osy x pro Sy = Sz = -, y pro Sx = Sz = - a z pro Sx = Sy = -. 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.4) můžeme rozdělit na tři případy: ve směru roviny yz, kterou reprezentujeme maticí: 3
Obr. 4 - 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é. Pasterizace objektu pro zobrazení na monitoru počítače 2.4. 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. 3
Úsečka je zadána většinou těmito parametry: počáteční a koncový bod ([x, y ] a ([x, y ]), šíř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 [x, y ] a podle směrnice k = Δy/ Δx = (y 2 - y )/(x 2 - x ), určují která osa roviny xy bude řídící pro rasterizaci. Je-li k<, je řídící osa x, je-li k>, 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. 5 - 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. 6 - Výsledek DDA algoritmu Algoritmus: procedure LineDDA (x,y,x2,y2, colour: integer); var y, k :real; begin y:= y; dy:= (y2-y)/(x2-x); PutPixel (x,y); while x<x2 do begin x:= x+; y:=y+dy; Putpixel(x,round(y),colour) end; Možnosti algoritmu pro zpracování pomocí určitého programovacího jazyka 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+ bude zobrazen. Δd < Yi; Δd Yi +; 33
Obr. 7 - 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 +, Y = k(xi + ) + q; d = Y Yi = k(xi + ) + q Yi; d2 = Yi + Y = Yi + k(xi + ) + q; Δd = d d2 = 2m(Xi + ) 2Yi + 2q ; Definujeme tzv. predikci : Pi = Δd ΔX = 2 ΔYXi 2Yi ΔX + 2 ΔY + ΔX(2q - ); [] 2 ΔY + ΔX(2q - ) = konst; Pi+ = 2 ΔYXi+ 2ΔXYi+ + konst; Pi+ = Pi2ΔY - 2ΔX(Yi+ Yi ), jestli Xi+ = Xi+; Pi Yi+ = Yi Pi+ =Pi + 2ΔY; Pi Yi+ = Yi + Pi+ =Pi + 2ΔY - 2 ΔX; Algoritmus: ) vykresli bod [X A ; Y A ], X := X A, X := X A, i =. 2) z rovnice [] vypočítej P. 3) je-li P i < tak X i + := X i +, Y i + := Y i, P i+ := P(i) + 2Δy. je-li P i tak X i + := X i +, Y i + := Y i +, P i+ := P(i) + 2Δy - 2Δx. 4) vykresli bod [X i +; Y i +] 5) je-li X i + < X B tak i := i + 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