Grafické a multimediálne lne systémy Ing. Pavol Bezák, PhD. Ústav aplikovanej informatiky, automatizácie a matematiky MTF STU Katedra aplikovanej informatiky a automatizácie m. č. S-325 e-mail: pavol.bezak@stuba.sk Ak. rok 2011/12, LS
Lekcia 1 Úvod do problematiky 2
Obsah 1. Prehľad vývoja 2. Základné pojmy 3. Referenčný model PG (CGRM) 4. Systémové architektúry GS a MMS 3
Prehľad vývoja
Počítačová grafika vznik termínu Computer Graphics Termín Computer Gaphics zaviedol okolo roku 1960 William Fetter (1928-2002), ktorý pôsobil vo firme Boeing ako vedúci úseku dizajnu (art director) a prezentoval ho ako nové návrhové metódy s použitím počítača. 5
Počítačová grafika míľniky 1960: Vektorový (kaligrafický) monitor. 1962: I. E. Sutherland, "Sketchpad: A Man-Machine Graphical Communication System," Ph.D. Thesis, MIT. 1970: Nástup rastrovej grafiky. 70-te r.: Osvetľovacie algoritmy (Goraude and Phong shading - tieňovanie). 1980: Renderovacie algoritmy (Ray Tracing metóda sledovania lúča). 1984: Renderovacie algoritmy (Radiosity rádiositná metóda. Nástup globálnych osvetľovacích modelov (simulovanie fyzikálneho šírenia svetla v scéne). 6
Počítačová grafika míľniky (pokr.) 1981: Koncepcia pracovnej stanice (Apollo Workstation), PC. 1982: Založená firma Silicon Graphics (SGI). 1984: GUI - X Window System. 1984: Pracovné stanice SGI Workstation (IRIS GL). 90-te r.: Dominancia SGI v oblasti high end počítačovej graficky a GS: HW - RealityEngine, InfiniteReality (WS Onyx 2), RealityMonster,... SW - OpenGL, OpenInventor, Performer, Digital Media Labs,... Koniec 90-tych rokov 20. stor.: prienik PC s výkonným grafickým akcelerátorom (3Dfx, Matrox, Intel, S3, NVidia, ATI,...) do oblasti PG. HW: Graphics-on-a-chip,... SW: DirectX, OpenGL, computer games Súčasnosť Pozri: Prvé grafické akcelerátory pre PC Programovateľný grafický HW, 3D grafika, Virtuálna realita, GUI, GPU computing,... 7
Hlavné aplikačné oblasti počítačovej grafiky HCI: Human Computer Interface GUI: Graphical User Interface GIS: Geographical Information Systems HCI a GUI Grafické systémy Prezentačné a vizualizačné systémy GIS Virtuálna realita Grafické API (OpenGL, Direct3D,...) Animačné systémy Scientific Visualization Medical Imaging Multimediálne systémy Renderovacie systémy WWW Paint & Imaging Systems (Photoshop) Počítačové hry Modelovacie systémy (3D Studio Max) CAD systémy (Inventor) Analytické systémy (FEM) 8
Aplikácie počítačovej grafiky Hlavné oblasti využitia počítačovej grafiky: Geometrické modelovanie Rendering (fotorealistické zobrazovanie scén) Spracovanie obrazu Vizualizácia údajov Animácia Virtuálna realita CAD/CAM GIS Web GUI Multimédia PC hry 9
Základné pojmy
Architektúra rastrového grafického systému Peripheral display processor for performance Display memory: data plus rasterizer software Frame buffer: image to display Video controller: low level monitor specific driver 11
Grafický adaptér / akcelerátor Základné moduly typického 2D grafického adaptéra 12
Počítačová grafika - definícia Definícia PG (Computer Graphics) je vedná disciplína, ktorá sa zaoberá transformáciou údajov na grafické zobrazenia a naopak. Počítačová grafika sa zaoberá manipuláciou s vizuálnymi a geometrickými informáciami pomocou výpočtovej techniky. Podľa charakteru vstupu a výstupu spracovávaných údajov sa PG delí na: modelovanie (geometrické), vizualizáciu údajov, rekonštrukciu údajov a číslicové spracovanie obrazu. 13
Možnosti opisu obrazu v PG rastrový obraz = matica bodov vektorový obraz = množina objektov Zobrazenie obrazu Výstupné zariadenia Rastrové: monitor (800 600px, 1024 768px, 1600 x 1200px), tlačiarne laserové a atramentové (300dpi, 600dpi,..), plotter atramentový. Vektorové: plotter perový (už sa takmer nepoužíva). Vstupné grafické zariadenia Rastrové: skener - zariadenie pre snímanie obrazu myš zariadenie pre poskytovanie súradníc polohy 14
(pixel, pel = picture element) Pixel, dot a vertex Obrazový prvok, element - bod, ktorý sa používa pre zobrazovanie rastrovej grafiky na výstupné zariadenie (pixel resp. pel, dot), má fyzický rozmer: displej niekoľko malých bodov luminofóru (triáda) vysvieti jeden pixel, atramentová tlačiareň veľkosť bodu zodpovedá veľkosti kvapky farby (dot), laserová tlačiareň veľkosť bodu zodpovedá niekoľkým zrnkám toneru. Bod, ktorý špecifikuje polohu - vrchol (vertex): súradnice určujúce polohu bodu v obraze, nemá fyzický rozmer. 15
Klasifikácia typov PG V zásade sa grafika pre spracovanie na PC delí na rastrovú(bitmapovú) a vektorovú. Rastrová grafika predstavuje obrázky, ktoré sú zložené z jednotlivých obrazových bodov, čo sú fyzicky malé štvorčeky (pixel) po celej ploche obrázku. Vektorová grafika je spôsob vytvárania obrázku s použitím matematicky definovaných vektorových objektov, ako napr. štvorec, kružnica, krivka, polygón a pod. @ cca 10x 16
Rastrová grafika - charakteristika Rastrová resp. bitmapová grafika je zložená zčíselných hodnôt špecifikujúcich farbu každého pixlu alebo všeobecne obrazového prvku. Pixel je obrazový bod, ktorého atribútom je farba bodu, a ktoré dohromady dávajú celkový obraz. Bitmapa je zložená z poľa hodnôt, ktoré nastavujú farbu a zapínajú príslušný pixel počas zobrazovania bitmapy. Bitmapy sa často používajú pre reprezentáciu zložitých obrázkov vychádzajúcich z reálneho sveta, ako napr. digitalizované fotografie alebo video snímky. Nevýhodou bitmapy je problém s nezávislosťou od výstupného zariadenia. Patrí sem aj problém s interpretáciou farieb. Zobrazenie farebného obrázku na čiernobielom zariadení zvyčajne nie je uspokojivé. Bitmapy často predpokladajú pevne dané rozlíšenie a rozmer obrázku. Aj keď je možné bitmapu roztiahnuť alebo zúžiť na iné rozmery, tento proces obyčajne vedie k duplicite alebo strate stĺpcov prípadne riadkov, čo má za následok skreslenie výsledného obrazu. 17
Bitová mapa (bitmapa) Bitmapa je pravouhlá oblasť s plošnými rozmermi, ktoré zodpovedajú jej šírke a výške v bodoch. Napríklad nasledujúca mriežka predstavuje veľmi malú bitmapu o šírke deväť bodov a výške šesť bodov (rozmeroch 9 krát 6). 0 1 2 3 4 5 0 1 2 3 4 5 6 7 8 Okrem plošného rozmeru majú bitmapy ešte aj farebný rozmer. Je to počet bitov, potrebných k uloženiu jedného bodu bitmapy (farebná hĺbka alebo počet bitov na pixel). Každý bod bitmapy je vždy reprezentovaný rovnakým počtom bitov. Bitová mapa s jedným bitom na bod sa označuje ako jednofarebná (monochromatická) bitmapa. Bitmapy s viacerými odtieňmi šedi alebo farebné bitmapy vyžadujú pre uloženie jedného bodu viac bitov. Počet možných farieb zodpovedá výrazu 2 bpp 18
Počet zobraziteľných farieb (farebná hĺbka) Najjednoduchším farebným rozlíšením je aplikácia čiernych a bielych bodov (1 bit) vhodné pre tzv. perové kresby Pri použití 4-bitovej schémy možno zobraziť 16 farieb, čo postačuje na opis napr. kruhového diagramu 8-bitový formát znamená použitie 256 farieb. Takáto paleta je vhodná na zobrazenie ikon, grafických motívov. Zvláštnym prípadom 8- bitového formátu je 256 stupňov sivej. Pre fotorealistické zobrazenie potrebujeme minimálne 16-bitové (High Color) alebo lepšie 24-bitové zobrazenie (True Color). V profesionálnej oblasti sa možno stretnúť s 32-bitovým zobrazením (CMYK azurová, purpurová, žltá a čierna). 19
Počet zobraziteľných farieb (pokr.) Aby bol obrázok farebný, musíme každému pixlu obrázka priradiť určitú farbu. Počet farieb Počet bitov 2 1 4 2 16 4 256 8 bitov =1 bajt ~16 mil. true color 24 bitov=3 bajty pixel 1 1 0 1 1 1 0 1 0 255 28-1 Ak pre každú farbu použijeme 1 bajt 20
Monochromatický rastrový obraz BW (Black and White) - už z názvu je zrejmé, že body tvoriace obraz môžu byť buď biele (1) alebo čierne (0). Na uloženie informácie o ôsmich obrazových bodoch nám potom postačí jeden bajt. 0 1 21
Odtiene sivej grayscale Dovoľuje vybrať pre daný obrazový bod jeden z 256 odtieňov sivej farby. Toto farebné rozlíšenie je úplne postačujúce napr. na kvalitné zobrazenie čierno-bielej fotografie. Pri tejto farebnej hĺbke potrebujeme na uloženie informácie o farbe jedného bodu jeden bajt. 8 bitov 255 0 22
Rozmer (rozlíšenie) rastrového obrázka Rozlíš íšenie (rozmer) obrázka: je počet pixlov použitých pre rastrový obrázok, ktorý napr. reprezentuje fyzickú veľkosť originálu (analógového), meraných v dpi (dots per inch). Rozlišovaciu schopnosť majú aj vstupné a výstupné rastrové zariadenia pre snímanie a tlačenie obrázkov. Rozlišovacia schopnosť bežného CRT monitora je 72 dpi. Pr.. vzťahu rozlíš íšenie fyzická veľkos kosť obrázka: Majme fotografiu rozmerov 4 x 6 palcov (1 inch = 25,4 mm). Zoskenujme ju s rozlíšením 100 dpi. Potom veľkosť digitálnej fotografie bude 400 x 600 pixelov. Ak rozlíšenie obrazovky monitora bude 75 dpi, potom táto fotografia bude na ňom zobrazená v mierke 133% (o 33% väčšia), ako aktuálne foto (5,33 x8 ). Ak foto vytlačíme na tlačiarni s rozlíšením 300 dpi, potom jej rozmer bude 1,33 x 2 palce (33% originálu) 23
Rozmer rastrového obrázka (pokr.) Pri bitmapových obrázkoch možno rozlíšenie bez straty kvality len zmenšovať. Každé zväčšovanie rozlíšenia je zbytočné, lebo kvalita obrázku sa nezvýši. Okrem toho, taký obrázok môže mať neúmerne veľký objem údajov a manipulácia s ním je na monitore obtiažna. Vyššie DPI je výhodné použiť napr. pri skenovaní výrezu z fotografie, aby táto časť obrázku nebola príliš malá. Nutné je uplatňovať zásadu, že už v prvej fáze vzniku obrázku treba pracovať s takým rozlíšením, ktoré je potrebné pre požiadavky kvality zobrazenia (monitor, tlač,...). Pre tlač treba vyššiu kvalitu, ako pri zobrazení na monitore. 24
Zmena veľkosti rastrového obrázka Veľkosť rastrového obrázka je jeho rozmer v pixloch. Zmeniť jeho veľkosť znamená zmeniť počet pixlov. Zmenu veľkosti obrázka tlačeného na papier (napr. v cm) je možné realizovať 2 rôznymi spôsobmi: 1. Zmeníme rozmery digitálneho obrázka v pixloch. 2. Zmeníme len dpi pre tlač. Zatiaľčo zmena veľkosti digitálneho obrázka v pixloch je zásadný (všeobecne nevratný) zásah do obrázka, zmena dpi je len zmena kozmetická dpi môžeme meniť ľubovolne, tam a späť a na digitálny obrázok to nebude mať žiadny vplyv. 25
Pamäťové nároky pre rastrové obrázky Pre kvalitné zobrazenie postačuje farebná hĺbka 24 bitov (TrueColor), čo zodpovedá použitiu vyše 16 miliónov farieb. Platí tu priama úmera: čím väčšie rozlíšenie má obrázok, tým viac potrebujeme miesta pre jeho uloženie. Tabuľka ukazuje pamäťovú náročnosť bitmapových obrázkov uložených v pravých farbách (TrueColor). Rozmery obrázka v [cm] DPI Počet pixlov Veľkosť v [kb] 9 x 13 100 181 350 531 9 x 13 200 725 401 2 125 21 x 29,7 (A4) 200 3 866 948 11 329 9/2,54*13/2,54*100*100 181350*24/8/1024 26
Závislosť veľkosti potrebnej video pamäte grafického akcelerátora od rozmeru a počtu farieb Rozlíšenie 4 bity (16 farieb) 8 bitov (256 farieb) 16 bitov (64 tisíc farieb) 24 bitov (16 mil. farieb) 32 bitov (4 294 967 296 f.) 320x200 256 KB 256 KB 256 KB 256 KB - 640x480 256 KB 512 KB 1 MB 1 MB 2 MB 800x600-512 KB 1 MB 2 MB 2 MB 1027x768-1 MB 2 MB 4 MB 4 MB 1280x1024-2 MB 4 MB 4 MB 6 MB 1600x1200-2 MB 4 MB 6 MB 8 MB 27
Vektorová grafika Výhodou vektorových dát oproti bitmapovým je predovšetkým omnoho väčšie množstvo transformácií, ktorým je ich možné podrobiť. Vektorové dáta sú omnoho bližšie k logickému významu toho, čo opisujú. Napríklad úsečka je vo vektorovom tvare opísaná ako úsečka plus jej súradnice koncových bodov, farba atď., zatiaľčo v bitmapovom vyjadrení by išlo o veľké množstvo pixlov, z ktorých by niektoré neležali na jednej priamke a mali by inú farbu ako ostatné. Pre rotovanie úsečky vo vektorovom tvare je potrebné zmeniť len súradnice jej krajných bodov, zatiaľčo pri rastrovom ide o zložitý úkon spojený s vyhľadaním pixlov a zmenou farby vo veľkej časti obrazu. 28
Vektorový obrázok Vektorový obrázok je zložený z geometrických prvkov (primitives) animovaný obrázok formátu GIF len v PPT prezentácii. V PDF verzii pozri obrázok tu: http://en.wikipedia.org/wiki/geometric_primitive 29
Grafické formáty - rozdelenie Pre záznam digitalizovaného obrazu dnes existuje celý rad grafických formátov. Rastrové (bitmapové) Obraz je opísaný ako matica farebných bodov Vektorové Obraz je opísaný postupnosťou kresliacich príkazov Animačnomultimediálne Meta súbory vektorové a rastrové dáta súčasne 30
Grafické aplikačné programové rozhranie Programovacie jazyky (C, C++, C#, Java atď.), ktoré chcú využívať funkcionality grafického hardvéru (adaptér), musia vedieť komunikovať s jeho ovládačom. Toto umožňuje aplikačné programové rozhranie (application programming interface - API). API odstraňuje nízkoúrovňové programovanie zobrazovacieho zariadenia a robí programovanie jednoduchším a umožňuje využívanie všetkých možností tohto zariadenia. Vhodne navrhnuté API uľahčuje prácu vývojárom pri vyvíjaní nového hardvéru. Najrozšírenejšie grafické API v súčasnosti sú Direct3D a OpenGL. Pre programovanie grafických adaptérov boli vyvinuté samostatné programovacie jazyky, ktoré kooperujú s jednotlivými API. Pre Direct3D to je HLSL (high level shader language) a pre OpenGL to je assembler podporovaný priamo v OpenGL rozšíreniach. Pre tento asembler bol vyvinutý jazyk Cg (C for Graphics) firmou nvidia, ktorý je kompatibilný so syntaxou HLSL. Pre OpenGL bol navrhnutý aj jazyk GLSL (OpenGL shading languge), ktorý je priamo zahrnutý do špecifikácie 2.0. 31
Základné porovnanie OpenGL A D3D 32
Grafické aplikačné programové rozhranie (GAPI) GAPI je nízko úrovňové rozhranie na grafický HW. 33
Referenčný model PG
Referenčný model PG (CGRM) Referenčný model predstavuje rámec pre tvorbu noriem. Poskytuje vzor resp. množinu princípov, ktoré má budúce riešenie mať. CGRM - Computer Graphics Reference Model 35
Systémové architektúry
Decentralizovaná a centralizovaná (klient/server) architektúra Aplikačný program Aplikačný program Grafická databáza GKS PHIGS WS 1 Grafická databáza WS 2 Grafická databáza WS 3 Grafická databáza WS 1 WS 2 WS 3 37 Obr. 1-4
Model štandardizácie grafického systému Aplikačný program Jazykové rozhranie Hardvérovo nezávislé rutiny Hardvérovo závislé rutiny Fyzické zariadenia Rozhranie na zariadenia 38 Obr. 1-3
Prístupy k riešeniu interakcie AP - GS V zásade existujú dva prístupy k riešeniu interakcie medzi používateľom (aplikačným programom) a grafickým systémom: 1. Prostredníctvom grafickej knižnice z vyššieho programovacieho jazyka (napr. jazyk C/C++) v programovacom režime. Funkcie grafickej knižnice sú volané z úrovne programovacieho jazyka. 2. Prostredníctvom interaktívneho grafického modelovacieho programu. Grafické funkcie sú volané cez používateľské rozhranie systému a nie zo zdrojového kódu, bez požiadavky ovládania programovania v niektorom z programovacích jazykov. V tomto prípade je proces prístupu do grafickej knižnice pre používateľa transparentný (skrytý). 39
Schematické zobrazenie interakcie AP - GS Aplikačný program Aplikačný program Grafická knižnica Grafické zariadenia Grafická knižnica Grafické zariadenia 40