Barevný model RGBA - RGBA color model

Příklad obrázku RGBA složeného na pozadí šachovnice. alfa je 0% nahoře a 100% dole.

RGBA znamená červená zelená modrá alfa . I když je někdy popisován jako barevný prostor , ve skutečnosti jde o tříkanálový barevný model RGB doplněný čtvrtým alfa kanálem . Alfa označuje, jak je každý pixel neprůhledný, a umožňuje kombinovat obraz s ostatními pomocí alfa kompozice , s průhlednými oblastmi a vyhlazováním okrajů neprůhledných oblastí.

Termín však není definovat, co RGB barevný prostor je používán. Rovněž neuvádí, zda jsou barvy předem vynásobeny hodnotou alfa, a pokud ano, neuvádí, v jakém barevném prostoru byla tato premultiplikace provedena. To znamená, že k určení způsobu zpracování je zapotřebí více informací než jen „RGBA“ obrázek.

V některých kontextech zkratka „RGBA“ znamená konkrétní rozložení paměti ( níže nazývané RGBA8888 ), přičemž pro alternativy se používají jiné výrazy jako „BGRA“. V jiných kontextech „RGBA“ znamená jakékoli rozložení.

Reprezentace

V počítačové grafice musí být pixely kódující informace o barevném prostoru RGBA uloženy v paměti počítače (nebo v souborech na disku). Ve většině případů se používají čtyři stejně velké kusy sousední paměti, jeden pro každý kanál, a 0 v kanálu označuje černou barvu nebo transparentní alfa, zatímco všechny 1 bity označují bílou nebo plně neprůhlednou alfa. Zdaleka nejběžnějším formátem je uložení 8 bitů (jeden bajt ) pro každý kanál, což je 32 bitů pro každý pixel.

Pořadí těchto čtyř bytů v paměti se může lišit, což může vést ke zmatku, když se vyměňuje obrazová data. Tato kódování jsou často označována čtyřmi písmeny v určitém pořadí (např. RGBA, ARGB atd.). Interpretace těchto 4písmenných mnemotechnických pomůcek není dostatečně ustálená. Existují dva typické způsoby, jak porozumět mnemotechnické pomůcce, jako je „RGBA“:

  • Ve schématu pořadí bajtů „RGBA“ znamená bajt R, následovaný bajtem G, následovaným bajtem B a následovaným bajtem A. Toto schéma se běžně používá pro popis formátů souborů nebo síťových protokolů, které jsou oba orientovány na bajty.
  • Ve schématu pořadí slov „RGBA“ znamená úplné 32bitové slovo, kde R je významnější než G, což je významnější než B, což je významnější než A.

V systému big-endian jsou obě schémata ekvivalentní. To není případ systému s malým endianem , kde jsou tyto dvě mnemotechnické pomůcky navzájem obrácené. Abychom byli jednoznační, je důležité uvést, jaké řazení se používá při odkazování na kódování. Tento článek bude používat schéma, které má určitou popularitu, což je přidání přípony „8888“ k označení, zda jsou diskutovány 4 8bitové jednotky nebo „32“, pokud je diskutována jedna 32bitová jednotka.

Převaděč reprezentace RGBA
Malý Endian Big-endian
RGBA8888 ABGR32 RGBA32
ARGB32 BGRA8888 ARGB8888
RGBA32 ABGR8888 RGBA8888

RGBA8888

V OpenGL a Portable Network Graphics (PNG) se používá pořadí bajtů RGBA, kde jsou barvy uloženy v paměti tak, že R je na nejnižší adrese, G za ní, B za tím a A poslední. Na trochu endianské architektuře je to ekvivalentní k ABGR32.

V mnoha systémech, kde je více než 8 bitů na kanál (například 16 bitů nebo s plovoucí desetinnou čárkou), jsou kanály uloženy v pořadí RGBA, i když jsou 8bitové kanály uloženy v jiném pořadí.

ARGB32

Kanály jsou uspořádány v paměti takovým způsobem, že jedno 32bitové celé číslo bez znaménka má alfa vzorek v nejvyšších 8 bitech, následovaný červeným vzorkem, zeleným vzorkem a nakonec modrým vzorkem v nejnižších 8 bitech:

Ukázka rozložení v typickém pixelu 32 bpp

Hodnoty ARGB jsou obvykle vyjádřeny pomocí 8 hexadecimálních číslic, přičemž každý pár hexadecimálních číslic představuje hodnoty alfa, červeného, ​​zeleného a modrého kanálu. 80FFFF00Představuje například 50,2% neprůhledné (nepředmnožené) žluté. 80Hex hodnota, což je 128 v desítkové soustavě, představuje alfa hodnotu 50,2%, protože 128 je přibližně 50,2% z maximální hodnoty 255 (FF hex); pokračovat v dešifrování 80FFFF00hodnoty, první FFpředstavuje maximální hodnotu, kterou může mít červená; druhá FFje jako předchozí, ale pro zelenou; konečná 00představuje minimální hodnotu, kterou modrá může mít (efektivně - žádná modrá). V důsledku toho červená + zelená získá žlutou. V případech, kdy se alfa nepoužívá, může být zkráceno na 6 číslic RRGGBB, proto bylo zvoleno dát alfa do horních bitů. V závislosti na kontextu 0xse před šestnáctkové číslice umístí znak a nebo číslo (#).

Toto rozložení se stalo populární, když byla na osobních počítačích představena 24bitová barva (a 32bitová RGBA). V té době bylo pro programy mnohem rychlejší a snazší manipulovat s jednou 32bitovou jednotkou než se čtyřmi 8bitovými jednotkami.

V systémech little-endian je to ekvivalentní pořadí bytů BGRA. V systémech big-endian je to ekvivalentní pořadí bajtů ARGB.

RGBA32

V některém softwaru pocházejícím z big-endianových strojů, jako je Silicon Graphics , byly barvy uloženy ve 32 bitech podobných ARGB32, ale s alfa ve spodní části 8 bitů spíše než nahoře. Například 808000FFbude červená a zelená: 50,2%, modrá: 0%a alfa: 100%, hnědá. Toho byste dosáhli, kdyby data RGBA8888 byla na těchto strojích čtena jako slova. Používá se v Portable Libovolné mapě a ve FLTK , ale obecně je vzácný.

Rozložení pixelů RGBA

Bajty jsou uloženy v paměti na malém endianovém počítači v pořadí ABGR.

Viz také

Reference

externí odkazy