Paleta (výpočetní) - Palette (computing)

Ukázkový obrázek
Paleta použitá na obrázku, která se otáčí kolem barevného prostoru RGB .

V počítačové grafice je paleta , také nazývaná tabulka pro vyhledávání barev (CLUT), korespondenční tabulkou, ve které je vybraným barvám z barevného reprodukčního rozsahu určitého barevného prostoru přiřazen rejstřík, na který lze odkazovat. Pomocí odkazování na barvy pomocí indexu, který vyžaduje méně informací, než kolik je potřeba k popisu skutečných barev v uvedeném barevném prostoru, si tato technika klade za cíl snížit využití dat, ať už jde o zpracování užitečného zatížení, šířku přenosového pásma, využití RAM nebo trvalé úložiště. Obrázky, ve kterých jsou barvy označeny odkazy na CLUT, se nazývají indexované barevné obrázky.

Popis

V roce 2019 je nejběžnějším barevným prostorem obrazu ve výpočetní technice barevný model RGB s barevnou hloubkou 8 bitů na pixel . Pomocí této techniky se k popisu úrovně jasu v každém z kanálů RGB používá 8 bitů na pixel , takže k úplnému popisu barvy každého pixelu je zapotřebí 24 bitů úložiště. Cílem použití palet je snížit tento požadavek na úložiště snížením sady možných barev, které mají být zpracovány najednou (často pomocí adaptivních metod), za předpokladu, že každé možné barvě je přiřazen index, který umožňuje odkazovat na každou barvu použití méně informací, než je potřeba k úplnému popisu barvy. Běžným příkladem je paleta 256 barev běžně používaná ve formátu souboru GIF , ve které je vybráno 256 barev, které mají být použity k reprezentaci obrázku, z celého 24bitového barevného prostoru, přičemž každé je přiřazen 8bitový index. Tímto způsobem, zatímco systém může potenciálně reprodukovat jakoukoli barvu v barevném prostoru RGB (pokud to umožňuje omezení 256 barev), je požadavek na úložiště na pixel snížen z 24 na 8 bitů na pixel.

Hlavní paleta

Adaptivní paleta barev rozšiřující se ze 2 barev na 256 barev, která ukazuje, jak se obrázek mění (kliknutím zobrazíte animaci).

V aplikaci zobrazující mnoho různých miniatur obrázků v mozaice na obrazovce nemusí být program schopen načíst všechny adaptivní palety každé zobrazené miniatury obrázku současně do registrů barev hardwaru. Řešením je použít jedinečnou, běžnou hlavní paletu nebo univerzální paletu , kterou lze použít k přiměřené přesnosti zobrazení jakéhokoli druhu obrázku.

To se provádí výběrem barev takovým způsobem, aby hlavní paleta obsahovala plný barevný prostor RGB „miniaturně“, což omezuje možné úrovně, které mohou mít červené, zelené a modré složky. Tento druh uspořádání je někdy označován jako jednotná paleta . Normální lidské oko má citlivost na tři základní barvy v různých stupních: čím více k zelené, tím méně k modré. Uspořádání RGB toho tedy může využít, a to přiřazením více úrovní pro zelenou složku a méně pro modrou.

Takto vytvořenou hlavní paletu lze naplnit až 8R × 8G × 4B = 256 barev , ale v paletě tak nezůstane místo pro vyhrazené barvy, barevné indexy, které by program mohl použít pro speciální účely. Obecnější je použít pouze 6R × 6G × 6B = 216 (jako v případě webových barev ), 6R × 8G × 5B = 240 nebo 6R × 7G × 6B = 252 , což ponechává prostor pro některé vyhrazené barvy.

Poté při načítání mozaiky miniatur obrázků (nebo jiných heterogenních obrázků) program jednoduše namapuje každý původní indexovaný barevný pixel na jeho nejblíže aproximovaný v hlavní paletě (po uložení do hardwarových barevných registrů) a zapíše výsledek do vyrovnávací paměť videa. Zde je ukázka jednoduché mozaiky čtyř miniatur obrázků pomocí hlavní palety 240 barev uspořádaných RGB plus 16 dalších přechodných odstínů šedé; všechny obrázky jsou sestaveny bez výrazné ztráty přesnosti barev:

IndexedColorSample (mozaika) .png

Adaptivní paleta

Při použití indexovaných barevných technik, skutečný život obrazy jsou zastoupeny s lepší věrností TrueColor původní pomocí adaptivní palety (někdy napsána adaptační malířské palety ), ve kterém jsou barvy vybrané nebo quantized prostřednictvím nějakého algoritmu přímo z původního obrazu (o vybírání nejčastější barvy). Tímto způsobem as dalším rozdrcením se indexovaný barevný obrázek může téměř shodovat s originálem.

To však vytváří silnou závislost mezi pixely obrazu a jeho adaptivní paletou. Za předpokladu omezeného 8bitového hloubkového grafického zobrazení je nutné načíst adaptivní paletu daného obrázku do registrů barevného hardwaru před načtením samotného povrchu obrázku do vyrovnávací paměti rámců . Chcete -li zobrazit různé obrázky s různými adaptivními paletami, musí být načteny jeden po druhém, jako v prezentaci . Zde jsou ukázky čtyř různých indexovaných barevných obrázků s barevnými skvrnami, které ukazují jejich příslušné (a do značné míry nekompatibilní) adaptivní palety:

IndexedColorSample (natrhané jahody) .png IndexedColorSample (oříznutí Caerulea3) .png IndexedColorSample (Lapis.elephant.800pix.060203) .png IndexedColorSample (Lemon) .png

Průhlednost v paletách

Jednu položku palety v indexovaném barevném obrázku lze označit jako průhlednou barvu, aby bylo možné provést jednoduché překrytí videa : překrytí daného obrázku na pozadí takovým způsobem, že některá část překrývajícího se obrázku zakryje pozadí a zbývající ne . Překrývání filmových/televizních titulů a kreditů je typickou aplikací překrytí videa.

V obrázku, který má být překryt (předpokládá se indexovaná barva), hraje daný záznam palety roli průhledné barvy. Obvykle je indexové číslo 0, ale jiné lze zvolit, pokud je překrytí prováděno softwarem . V době návrhu je položka průhledné palety barev přiřazena libovolné (obvykle výrazné) barvě. V níže uvedeném příkladu je typický ukazatel šipky pro polohovací zařízení navržen na oranžovém pozadí, takže zde oranžové oblasti označují průhledné oblasti (vlevo). Za běhu je překrývající se obrázek umístěn kdekoli nad obrázek na pozadí a je smíchán takovým způsobem, že pokud je barevným indexem pixelu průhledná barva, pixel pozadí zůstane zachován, jinak bude nahrazen.

Tato technika se používá pro ukazatele, v typických 2-D videohrách pro postavy, kulky atd. ( Skřítci ), titulkování videa a další aplikace pro míchání obrázků.

Některé starší počítače, jako Commodore 64 , MSX a Amiga, podporují skřítky a/nebo překrytí videa na celou obrazovku hardwarem. V těchto případech je číslo položky průhledné palety definováno hardwarem a dříve to bylo číslo 0.

Některé formáty souborů indexovaných barevných obrázků jako GIF nativně podporují označení daného záznamu palety jako průhledného , volně volitelného mezi libovolnými položkami palety použitými pro daný obrázek.
Formát souboru BMP ve své tabulce barev rezervuje místo pro hodnoty kanálu alfa, nicméně v současné době se tento prostor nepoužívá k uchovávání žádných translucenčních dat a je nastaven na nulu. Naproti tomu PNG podporuje alfa kanály v položkách palety, což umožňuje poloprůhlednost v paletovaných obrázcích.

Při práci s obrázky Truecolor mohou některá zařízení pro míchání videa využívat jako průhlednou barvu triplet RGB (0,0,0) (žádná červená, žádná zelená, žádná modrá: nejtmavší odstín černé, někdy v tomto kontextu označovaný jako superčerná ). . V době návrhu je nahrazen takzvanou magickou růžovou . Stejným způsobem může běžný software pro publikování na počítačích předpokládat, že z fotografií a ilustrací bude vyloučen čistě bílý triplet RGB (255 255 255), aby se textové odstavce mohly dostat do ohraničovacího rámečku obrázku pro nepravidelné uspořádání textu kolem předmětů obrázku.

Programy 2-D malování , jako Microsoft Paint a Deluxe Paint , mohou při provádění operací vyjmutí, kopírování a vložení použít barvu pozadí určenou uživatelem .

Ačkoli jsou bitové masky obrazu a alfa kanály příbuzné (protože se používají ke stejným účelům), jsou to techniky, které vůbec nezahrnují použití palet ani průhledné barvy, ale mimo obrázek přidaly další binární datové vrstvy.

Softwarové palety

Microsoft Windows

Aplikace Microsoft Windows spravují paletu 4bitových nebo 8bitových indexovaných barevných zobrazovacích zařízení prostřednictvím specializovaných funkcí rozhraní Win32 API . Použitelnost palet v režimech zobrazení Highcolor a Truecolor se stává diskutabilní. Tato API se zabývají takzvanou „systémovou paletou“ a mnoha „logickými paletami“.

„Systémová paleta“ je kopie hardwarových registrů barevného displeje v RAM , především fyzická paleta, a je to jedinečný, sdílený společný zdroj systému. Při spuštění je načten výchozí systémovou paletu (hlavně „hlavní paleta“, která funguje dostatečně dobře u většiny programů).

Pokud má daná aplikace v úmyslu vydávat barevnou grafiku a/nebo obrázky, může si nastavit vlastní „logickou paletu“, tj. Svůj vlastní soukromý výběr barev (až 256). Předpokládá se, že každý grafický prvek, který se aplikace pokusí zobrazit na obrazovce, využívá barvy logické palety. Každý program může libovolně spravovat jednu nebo více logických palet bez dalšího očekávaného rušení (předem).

Než bude výstup skutečně vytvořen, musí si program uvědomit svoji logickou paletu: Systém se pokusí spojit „logické“ barvy s „fyzickými“. Pokud je v systémové paletě již zamýšlená barva, systém interně mapuje logické indexy indexů systémové palety (protože se zřídka shodují). Pokud zamýšlená barva ještě není k dispozici, systém použije interní algoritmus k vyřazení nejméně používané barvy v systémové paletě (obecně jedné, kterou používá jiné okno na pozadí) a nahradí ji novou barvou. Vzhledem k omezenému prostoru pro barvy v systémové paletě se algoritmus také pokouší přemapovat podobné barvy dohromady a vždy se vyhne vytváření nadbytečných barev.

Konečný výsledek závisí na tom, kolik aplikací se současně pokouší zobrazit své barvy na obrazovce. Okno v popředí je vždy upřednostňováno, takže okna na pozadí se mohou chovat různými způsoby: od poškození až po rychlé překreslení. Když se změní systémová paleta, systém spustí konkrétní událost, aby informoval každou aplikaci. Když je okno přijato, může se rychle překreslit pomocí jediné funkce Win32 API. To však musí být provedeno explicitně v programovém kódu; proto skutečnost, že mnoho programů tuto událost nezvládne a jejich okna se v této situaci poškodí.

Aplikace může vynutit načtení systémové palety konkrétními barvami (dokonce i v určitém pořadí) a „oklamat“ systém tím, že mu řekne, že jde o barevné záznamy určené pro animaci (rychlé změny barev ve fyzické paletě u konkrétních záznamů) ). Systém pak bude předpokládat, že tyto položky hardwarové palety již nejsou zdarma pro jeho algoritmus správy barev palet. Konečný výsledek závisí na schopnostech programu vynucování barev a chování ostatních programů (i když je tento problém stejný jako v běžném případě) a na samotném operačním systému.

Viz také

Poznámky

Reference

  • Julio Sanchez a Maria P. Canton (2003). Příručka pro počítačovou grafiku. Stiskněte CRC. ISBN  0-8493-1678-2 .
  • Palety barev v Microsoft Developer Network (MSDN)
  • Záznam tabulky barev RGBQUAD ve struktuře BITMAPINFO v Microsoft Developer Network (MSDN)