Rastrová grafika

Pojem **rastrová grafika** v počítačovej terminológii označuje spôsob uloženia grafickej informácie opisom jednotlivých bodov usporiadaných v myslenej mriežke. Každý bod (pixel) má v mriežke určenú svoju presnú polohu, farbu a iné parametre, napr. priehľadnosť (alfa kanál). 
Farba bodu (pixela) sa dá opísať za pomoci farebného modelu, ktorý opisuje jednotlivé body miešaním základných farieb alebo farby a jasu. Množstvo použitých bitov potrebných na opis závisí od zvolenej farebnej hĺbky. Napr. ak je použitá len čierna a biela farba, stačí na opis farby jedného bodu jediný bit. 
Veľkosť obrázka závisí aj od rozlíšenia, ktoré sa udáva v DPI (počet bodov na palec). Na zobrazenie na monitore postačuje rozlíšenie 72 DPI, na tlač na tlačiarni aspoň 300 DPI.

## Rastrová grafika
Na obrázok sa pozerá ako na sieť (raster) veľmi malých štvorcov – pixelov, uložených v pevných riadkoch a stĺpcoch – v obdĺžnikovej matici. Rozmer každého obrázka je pre počítač počet pixelov na šírku × počet pixelov na výšku. Pre každý pixel (štvorček) je nutné okrem polohy (riadok a stĺpec) zakódovať aj farbu, resp. ďalšie parametre, napr. priezračnosť. 

### Čierno-biely obraz
Ak je obrázok monochromatický (čierna a biela farba), kódovanie je jednoduché: 1 – rozsvietený (biely) bod, 0 – nerozsvietený (čierny) bod), napr.

```
100111001
	011010110
	101101101
	110111011
	111010111
	111101111
```

A teda zápis v riadku vyzerá : 100111001 011010110 101101101 110111011 111010111 111101111, čo je 54 bitov. Po osemnásobnom zväčšení obrázok vyzerá takto: Súbor:srdce1.gif

### Odtiene sivej
Pri niektorých obrázkoch je potrebné zaznamenať aj odtiene, preto dve farby – čierna a biela – nestačia. Výhodné je zakódovať odtiene sivej farby pomocou ôsmich bitov tak, aby informácia o každom bode zaberala 1 B, t. j. jedno pamäťové miesto počítača. Čím bude bod svetlejší, tým väčšia hodnota sa do pamäte uloží. Preto bod čiernej farby sa uloží ako 0 a bod bielej farby ako maximálna možná hodnota – 255. Obrázok bude kódovaný nasledujúco:


```
192   0    0   255  255  192   0    0   255
	 0   255  192   0   192   0   255  192   0
	192   0   255  192   0   255  192   0   255
	255  192   0   255  255  192   0   255  255
	255  255  192   0   192   0   255  255  255
	255  255  255  192   0   255  255  255  255
```

Obrázok bude v pamäti počítača zaberať 54 bajtov (pamäťových miest) a po osemnásobnom zväčšení obrázok bude vyzerať takto: Súbor:srdce2.gif

### Farebný obraz
Pri farebnom kódovaní obrazu všetky farebné modely kódujú farbu troma nezávislými hodnotami. Najvýhodnejšie je každý pixel obrazu zakódovať pomocou troch pamäťových miest – troch bajtov. Obrázok s rozmermi 1024 × 768 pixelov tak v pamäti grafickej karty zaberie 2 359 296 bajtov. V minulosti kvôli cene pamätí sa na grafické karty montovali pamäte menších rozmerov, teda na kódovanie farieb sa použil menší počet bajtov. Najstaršie počítače používali iba 16 farieb, to znamená, že každý bod bol zakódovaný 4 bitmi, neskôr sa začali vyrábať grafické karty (VGA) s 256 farbami, ktoré mali každý bod kódovaný 8 bitmi. Po zlacnení počítačových pamätí už bolo možné vyrábať karty SVGA, ktoré kódovali farby pomocou 16 bitov (dve pamäťové miesta) v režime High Color (vysoká farebnosť). V súčasnosti už grafické karty majú toľko pamäte, že bez problémov môžu kódovať každý bod 24 bitmi (tri pamäťové miesta) v režime True Color (pravá farebnosť). Opísaný spôsob uloženia obrázka (keď je každý bod kódovaný pomocou niekoľkých bitov – 4, 8, 16 alebo 24) používa formát, ktorý sa volá bitová mapa (BitMaP). Obrázky v takomto formáte sú v počítači uložené v súboroch s príponou BMP. Pri plnej farebnosti je každý bod obrázka zakódovaný 24 bitmi, čo sú tri pamäťové miesta počítača. Pričom 255 0 0 je sýta červená farba, 0 255 0 je sýta zelená farba, 0 0 255 je sýta modrá farba, 0 0 0 je čierna farba a 255 255 255 je biela farba. Obrázok srdca môžeme týmto spôsobom zakódovať napríklad aj takto (kvôli kratšiemu zápisu je použitá šestnástková sústavá): 


```
C0 C0 C0  FF 00 00  FF 00 00  FF FF FF  FF FF FF  C0 C0 C0  FF 00 00  FF 00 00  FF FF FF
FF 00 00  FF 00 00  FF 00 00  FF 00 00  C0 C0 C0  FF 00 00  FF 00 00  FF 00 00  FF 00 00
C0 C0 C0  FF 00 00  FF 00 00  FF 00 00  FF 00 00  FF 00 00  FF 00 00  FF 00 00  00 00 00
FF FF FF  C0 C0 C0  FF 00 00  FF 00 00  FF 00 00  FF 00 00  FF 00 00  00 00 00  00 00 FF
FF FF FF  FF FF FF  C0 C0 C0  FF 00 00  FF 00 00  FF 00 00  00 00 00  00 00 FF  00 FF 00
FF FF FF  FF FF FF  FF FF FF  C0 C0 C0  FF 00 00  00 00 00  00 00 FF  00 FF 00  00 FF 00
```


Obrázok bude v pamäti počítača zaberať 162 bajtov (pamäťových miest) a po osemnásobnom zväčšení bude vyzerať takto: Súbor:srdce3.gif

Veľká pamäťová náročnosť už teda nie je problém grafickej karty počítača, stále je však problém pri posielaní takýchto obrázkov prostredníctvom internetu, pretože obrázok s rozmermi 1024 × 768 pixelov v režime true color je príliš veľký. Na zníženie pamäťových nárokov sa používa paleta farieb a kompresia dát (stlačenie).

### Paleta farieb
Paleta využíva skutočnosť, že na kreslených obrázkoch väčšinou nie je použitých viac ako 256 farieb. Zníženie pamäťových nárokov spočíva v tom, že očíslujeme všetky použité farby v obrázku číslami od 0 do 255 a potom kódujeme každý bod tak, že uvedieme poradové číslo farby v palete. Tým namiesto troch pamäťových miest zakódujeme každý bod iba pomocou jedného pamäťového miesta. Naše „srdce“ teda zakódujeme takto:

Paleta: 

```
00 00 00 00 , 01 C0 C0 C0, 02 FF 00 00, 03 00 FF 00, 04 00 00 FF, 05 FF FF FF
```


Obrázok:

```
01  02  02  05  05  01  02  02  05
02  02  02  02  01  02  02  02  02
01  02  02  02  02  02  02  02  00
05  01  02  02  02  02  02  00  04
05  05  01  02  02  02  00  04  03
05  05  05  01  02  00  04  03  03
```

Ak spočítame počet pamäťových miest, dostaneme 24 B použitých v palete a 54 B použitých na obrázok, čo je spolu 78 B (bez použitia palety to bolo 162 B).

### Kompresia
Ďalší spôsob, ako znížiť pamäťovú náročnosť obrázka, je použitie kompresie. Kompresia môže byť:
* bezstratová
* stratová
Princíp bezstratovej kompresie spočíva v tom, že ak sa pixel s rovnakou farbou vyskytuje viackrát za sebou, do pamäte neukladáme jednotlivé pixely, ale uložíme, koľkokrát sa pixel danej farby vyskytol. Napr. (zjednodušene) osemkrát červená, trikrát modrá atď. 
 
Algoritmy používané na bezstratovú kompresiu:
* Run-Length kódovanie (RLC)
* Entropické kódovanie (), ako napríklad Huffmanov kód
* Kódovanie s použitím dinamicky vytváraného slovníka, ako napríklad (LZW) 

Stratová kompresia je založená na vynechávaní niektorých málo viditeľných detailov obrazu. V praxi to znamená, že ak je niekde napríklad jedna svetložltá bodka uprostred veľkého bieleho poľa, jednoducho sa vymaže. Ďalej ak je niekde tenká čiara medzi dvoma plochami, potom sa farba tejto čiary upraví tak, aby sa jej farba dala vypočítať zložením farieb plôch, ktoré obklopuje (zjednodušene povedané).

Algoritmy používané na stratovú kompresiu:
* Redukovanie farebného priestoru
* Prevzorkovanie sýtosti farieb
* Transformačné kódovanie, ako napríklad Fourierova transformácia
* Fraktálová kompresia

Ďalšou možnosťou na spracovanie obrazových informácií je vektorová grafika.

## Rastrové formáty
* BMP
* GIF
* JPG
* PNG
* PCX
* TIFF

Kategória:Počítačová grafika