Recenze  |  Aktuality  |  Články
Doporučení  |  Diskuze
Fotoškola  |  Seriály
Fotoaparáty  |  Objektivy
Fotomobily  |   Software
Příslušenství  |  Ostatní
Svět hardware  |  TV Freak
Svět mobilně

Formáty pro ukládání fotografií - 1.díl: základy

31.10.2007, Roman Pihan, článek
Většina fotografů pracuje ve formátu JPEG, který se stal de facto široce používaným standardem pro ukládání digitálních snímků. Je to formát vynikající, avšak nehodí se vždy a všude. Jaké jsou tedy jeho limity a další možnosti? Začneme ale od začátku …

Pixel – základ pro uložení digitálního obrazu


V době vzniku digitální fotografie bylo potřeba nějak rozumně obrazová data uspořádat a uložit. Vznikl proto již téměř legendární pixel – nejmenší jednotka obrazové informace. Pixel je zkratka pro picture element, kde se ale za slovo picture uvažuje jeho běžná zkratka „pix“, a rozumí se jím jeden plně barevný bod obrazu. Pixel sám o sobě nemá předepsaný žádný tvar - může být čtvercový, kruhový nebo libovolný, v praxi je však užitečné si ho představit jako obdélník, který vznikne rozřezáním obrazu na určitý počet svislých a vodorovných segmentů.


Obraz je tvořen mozaikou pixelů, kde každý pixel má jen 1 barvu a vyjadřuje tedy průměrnou barvu plochy, kterou representuje


Rozlišení


Pokud reálný obraz rozřežete na určitý počet svislých a vodorovných elementů, vytvoříte vlastně mozaiku obrazu. Každý segment (obdélník) v této mozaice přitom nadále obsahuje detailní kresbu, my však potřebujeme tento jeden segment popsat jen jedním pixelem - jednou barvou. Pixel tak vyjadřuje průměrnou barvu každého segmentu mozaiky a nutně tím dochází k zjednodušení obrazu. Logicky proto čím více pixelů, tím jemněji/přesněji obraz popisujeme. Známe-li navíc rozměry obrazu, je možné se znalostí jeho rozlišení v pixelech spočítat velikost jednoho pixelu.


Rozlišení
Rozměr
Pixel [mm]
Televize
720x576
42" úhlopříčka
1,18x1,11
LCD obrazovka
1600x1200
20" úhlopříčka
0,255x0,255
Fotografie
3000x2000 (6 MPix)
13 x 9 cm
0,043x0,045
Příklad velikosti pixelů pro různá zařízení/média


Barva pixelu


Máme-li definován pixel jako nejmenší jednotku obrazu, tak zbývá nějak číselně zakódovat jeho barvu, jas a ostatní parametry tak, aby odpovídaly možnostem lidského oka. Nejběžnější representace používaná v digitálních fotoaparátech pro zachycení snímku a v počítačích pro zobrazení je tzv. RGB representace, kde každý pixel je popsán trojicí čísel RGB – Red, Green, Blue. Ty vyjadřují červenou, zelenou a modrou složku jednoho každého pixelu. Jejich mícháním je možné vytvářit množství barev podobného rozsahu jako má lidské vidění. Je však mnoho způsobů jak barvu pixelu popsat, neboli je mnoho barevných modelů. RGB model je přitom jen jeden z nich, za ostatní jmenujme např. model CMYK či model L*a*b.



RGB model definuje barvu jednoho pixelu tak, že popisuje barvu 3 světel, které kdyby svítily na stejné místo, tak by barvu namixovaly


Barevná hloubka


Barva každého pixelu v RGB representaci je zakódována 3 čísly, které vyjadřují jas jeho červené (Red), zelené (Green) a modré (Blue) složky. I tady je však třeba provést určité zjednodušení, protože uložit reálné číslo např. na 10 desetinných míst je datově velmi náročné. Proto se každá barva pixelu kóduje zjednodušeně buď jen 1 bytem nebo 2 byty. Byte je základní jednotka počítačové informace a je tvořen 8 bity, kde bit je elementární buňka schopná nést jen informaci „0“ nebo „1“. Např. kapacita paměťové karty se udává v počtu bytů, které je karta schopna pojmout. Byte je informačně ale poměrně „chudý“ a umí zakódovat jen celá čísla od 0 do 255 – má tedy celkem 256 úrovní.



Barevná hloubka určuje celkový počet barev, které v obrázku mohou existovat. Nízký počet možných barev (dole) vede k neplynulým přechodům a tak se nedostatek barev nejčastěji objevuje např. v obloze, na jednolitém pozadí atp.

Pokud tedy na každou RGB složku pixelu reservujete „jen“ 1 byte, tak barvu pixelu zakódujete celkem 3 byty, každá barevná složka má ale jen 256 úrovní svého jasu, od 0 (nesvítí) až 255 (maximum). V takovém případě se hovoří o barevné hloubce 8 bitů na kanál neboli 3x8=24 bitů na pixel (24 bpp = bit per pixel). V profesionální praxi je to však často málo a tak se používá i vyšší barevná hloubka, tedy 16 bitů (2 byte) na kanál tedy 3x16=48 bitů na pixel (bpp).

Bitů/pixel

(bytů/pixel)

Bitů/kanál
Počet
barev/kanál
Celkový počet
barev
24 (3)
8
256
16 777 216
48 (6)
16
65 536
281 475 miliard
Porovnání datové náročnosti a počtu barev jednoho pixelu pro různé barevné hloubky




I když se celkový počet 16 milionů barev zdá úctyhodný, v reálu to není zase až tak moc – jen 256 úrovní na každé RGB „světlo“. U snímků proto někdy barvy dojdou a objeví se nepříjemná posterizace – zejména po významné editaci snímku


Velikost jedné fotografie


Vezměme pro příklad reálnou fotografii tvořenou např. 6 miliony pixelů (6 Mpix), jejíž rozlišení je 3000x2000 pixelů. Pokud každý pixel uložíme v 24 bitové barevné hloubce na pixel (3 byte na pixel), tak musí mít velikost 3x6=18 Megabytů = 18 MB. Takto uložených fotografií se tedy na 1 GB paměťovou kartu vejde asi 55. Pokud použijeme vyšší barevnou hloubku, velikost fotografie stoupne na dvojnásobek (36 MB) a na kartu se jich vejde jen asi 28. To je skutečná realita v případě, že není použita žádná komprese. Obraz je tedy uložen zcela nekomprimován tak, jak to umí např. formát TIFF. Protože ale podobné velikosti na jednu fotografii jsou velmi nepraktické a i zbytečné, přichází ke slovu populární JPEG s jeho kompresí, který velikost fotografii dramaticky sníží a přitom jí nijak významně neublíží.


Proč je RAW menší?


Možná vznikne otázka, proč je velikost RAW souboru, který ukládá syrová data ze senzoru, menší než 36 MB. Odpověď vězí v Bayerově masce a reálné barevné hloubce senzoru (resp. jeho A/D převodníku).

Je přirozené se domnívat, že 6 MPix fotoaparát má svůj senzor vybavený 6 miliony RGB pixelů. Musel by tedy mít 6 milionů mikropixelů citlivých na červenou barvu, 6 milionů na zelenou a 6 milionů na modrou. Takový senzor by měl tedy 6x3=18 milionů mikropixelů. Bohužel, skutečnost je složitější a zdaleka ne tak přímočará.

6 MPix fotoaparát má sice 6 milionů pixelů na senzoru, ale pouze černobílých, tedy neschopných vidět barvu. Aby senzor viděl i barvu, je před jednotlivými pixely barevná RGB maska s tím, že barvy jsou uspořádány do matice a zelená maska je ve čtverci dvakrát (tím se simuluje zvýšená citlivost oka na zelenou). Vzniká tzv. Bayerova RGBG maska. Z toho vyplývá, že 6 MPix fotoaparát má "pouze" 1.5 milionu červených pixelů, 1.5 milionu modrých a 3 miliony zelených.

Aby se pro každý RGB pixel obrazu získala plnobarevná RGB informace, vždy ze 4 sousedních pixelů senzoru (2x2) se vypočítá jeden RGB pixel obrazu. Pro další pixel obrazu je potom použita pouze o 1 pixel posunutá čtveřice pixelů senzoru, takže ve výsledku je každý pixel senzoru použit 4x - neboli došlo k interpolaci obrazu.



Princip tvorby obrazu pomocí Bayerovy masky. Uložíte-li tedy data přímo ze senzoru, vytvoří se menší soubor, protože výpočet na plné RGB proběhne až v PC

Uložíte-li tedy 6 MPix RAW obraz ze senzoru, je třeba uložit jen 6 milionů „černobílých“ čísel, protože interpolace na barvy podle Bayerovy masky proběhne až v PC. Barevná hloubka většiny senzorů (resp. A/D převodníků za nimi) je 12 bitová a tedy na každý pixel je třeba 1,5 bytu. 6 MPix fotoaparát by měl tedy mít 9 MB velký RAW. V praxi se na RAW snímky uplatňuje ještě bezeztrátová komprese a tak jsou praktické RAW soubory ještě menší - pro 6 MPix fotoaparát kolem 6 MB/snímek.

Příště se podíváme na základy komprese a JPEG formát.
Autor: Roman Pihan

Vystudoval ČVUT Fakultu elektrotechnickou. Po nástupu digitální fotografie se stal jedním z propagátorů jejího využití v komerční i amatérské praxi. Pravidelně přispívá fotografickými články do řady odborných časopisů, lektoruje a přednáší fotografii na konferencích. Vydal úspěšné knihy „Mistrovství práce s DSLR“ a „Mistrovství práce se světlem“.