Zpet
Přepočet barev z RGB do YCbCr

Teorie:

YCbCr je barevný prostor, kde již nejsou zastoupeny barvy jako u RGB (reg,green, blue - červená, zelená, modrá) , ale Y představuje světelnost a Cb a Cr představují chromizační signály. A proč se vůbec barvy při kompresích přepočítávají? Vysvětlení je velice jednoduché. Lidské oko dokáže velice dobře rozlišit změnu ve světelnosti, ale už nedokáže rozlišit malé změny v chromizačních signálech. Při 50% ztrátě informací v chromizačních kanálech je změna celého obrázku nepostřehnutelná. Pokud bychom používali tuto metodu jako kompresi samostatně, tak bychom ušetřili až 50% informací na popis velmi podobně vypadajícího obrázku.

YCbCr barevný prostor byl doporučen institucí CCIR pod označením 601, a to pro barevné televizní vysílaní, kde v signále bylo zapotřebí uchovat informaci o jasu (složka Y) a zbytek informací "vmodulovat" do černobílého signálu. Přepočet barev se provádí podle těchto doporučených vzorců.

Y=0.299R+0.587G+0.114B
Cb=-0.1687R-0.3313G+0.5B+128
Cr=0.5R-0.4187G-0.0813B+128

Pro připomenutí

RGB je barevný prostor, kde barva a jas každého bodu obrázku jsou vyjádřeny kombinací tří složek, barvy červené (R - red), zelené (G - green) a modré (B - blue). Tyto tři složky lze považovat za bázi prostoru RGB, všechny ostatní barvy jsou lineárními kombinacemi těchto složek.

Příklad: (viz. MATLAB - Help - RGB)

R G B Barva
0 0 0 černá
1 1 1 bílá
1 0 0 červená
0 1 0 zelená
0 0 1 modrá
1 1 0 žlutá
1 0 1 fialová
0,50 0,50 0,50 šedá
1 0,62 0,40 měděná

Přepočet vygenerovaných obrázků

RGB Obr1 YCbCr
=>
RGB Obr2 YCbCr
=>
RGB Obr3 YCbCr
=>
RGB Obr4 YCbCr
=>
RGB Obr5 YCbCr
=>

Ukázka 50% ztráty informací v Cb a Cr signálech

Ztráta spočívá v průměrování (nahrazení) dvou hodnot vedle sebe. Asi nějak takto
1 2 3 4 5 6 7 8 (S)před
1 3 5 7 (S)po

RGB před ztrátou YCbCr před ztrátou
=>
YCbCr po ztrátě RGB po ztrátě
=>

Vypis programu v matlabu


ycbcr50.zip

Tabulka zabíraného místa.

Popis

Velikost v matlabu

Celý obrázek RGB 1843200 B
Celý obrázek YCbCr 1843200 B
Vrstva Y 614400 B
Vrstva Cr,Cb před "kompresí" 614400 B
Vrstva Cr,Cb po "kompresi" 153600 B
Celý obrázek po "kompresi" 921600B
Rozdíl před a po kompresi 921600B
Rozdíl v procentech 50%
Kompresní poměr 1:2

Závěr:

Jak je patrno z tohoto pokusu, je mnohem lepší přepočítat obraz do YCbCr než jej komprimovat přímo v RGB barevném prostoru. Dokonce může i urychlit další kompresní metody, protože například u DCT je ve dvou kanálech potřeba o polovinu méně operací než při komprimaci celého obrázku, což může být docela velké urychlení.

Zpet


Leoš Maršálek, Jan Skapa © 2003 Leos.Marsalek@tiscali.cz, jeniczek.s@seznam.cz