Poznámky ke správě barev

Ke správnému používání správy barev je vhodné pochopit pochopit nejen teoretické základy – dobře popsané na mnoha webových stránkách – ale občas i vlastnosti (a omezení) konkrétní aplikace.

Následující poznámky se týkají především profilů vytvořených ArgyllCMS (tedy normy ICC verze 2.1) a CMS engine LittleCMS (LCMS). Nejedná se o návod, pouze postřehy či vysvětlení, které mi původně nebylo jasné z dokumentace k příslušným programům.

Typy ICC profilů

Pro základní popis ICC profilů viz např. [doplnit]. Zajímavé jsou části týkající se barev zařízení, PCS (profile connection space).

Způsob převodu mezi barvami zařízení a PCS určuje v případě ArgyllCMS typ použitého modelu: shaper/matrix nebo CLUT.

Shaper/matrix profil používá interní funkci, která CMM (colour management module – např. LCMS) sdělí správnou „barvu“ v druhém prostoru. Tyto profily mají malou velikost souboru, převedené barvy mají obvykle hladké přechody (tj. žádné skoky). Mají své uplatnění u dobře kalibrovaných zařízení (tj. dobře linearizovaných zařízení). Vhodné mohou být především pro monitory (zvláště klasické CRT nebo kvalitních LCD). Pokud se charakterizované zařízení „nechová“ správně z hlediska linearizace, pak je výsledkem nepřesný ICC profil – tj. profil s vysokým DeltaE (chybou interpolace).

CLUT profil, neboli profil obsahující colour lookup tables, oproti tomu nespoléhá na funkci, ale poskytuje přímo převodní tabulky pro vybraný vzorek barev. Počet vzorků barev použitých při tvorbě profilu pak přímo ovlivňuje kvalitu ICC profilu, zejména u zařízení, která nejsou dobře zkalibrovaná. Hodnoty chybějících barev se nadále interpolují ze sousedních známých hodnot, záleží však na typu CMS engine, jakým způsobem. Nevýhodou je zdlouhavá příprava profilu (měření mnoha vzorků) a velikost souboru ICC profilu – nehodí se k použití jako vložený profil, neb zbytečně zvyšuje nároky na prostor či přenosovou kapacitu.

Hodnocení kvality profilů

Kvalitní profil se vykazuje:

  • Nízkou průměrnou i maximální odchylkou DeltaE. DeltaE vyjadřuje chybu v převodu barev pomocí příslušného profilu a porovnání převedené hodnoty s hodnotou naměřenou kalibrační sondou. Je-li vysoká, lze usuzovat na „nedobré“ chování charakterizovaného zařízení- tj. např. špatně zkalibrovaná tiskárna, nelineárně se chovající senzor fotoaparátu, apod.
  • konverzními křivkami s hladkým průběhem. Jakékoliv ostré zlomy se obvykle negativně projeví na náhlých barevných přechodech. Opět platí, že charakterizace špatně zkalibrovaného zařízení snáze vede ke kostrbatým křivkám. (Informace o profilu lze zobrazit např. pomocí xicclu -fif -ir -g profil.icc)

Záměry převodu mezi prostory

Jedním z nejdůležitějších úkolů CMS je převod mezi barvovými prostory, která mají různou velikost (neboli gamut), zvláště pak ve směru z většího gamutu (AdobeRGB) do menšího gamutu (monitor, tiskárna).

Způsoby převodu určují tzv. záměry – jejich popis viz např. [doplnit].

Problematické jsou především perceptuální a saturační záměr: aby byly barvy správně převedeny z jednoho prostoru do druhého, musí být známa velikost gamutu obou prostorů (tj. například AdobeRGB a monitoru), v lepším případě velikost skutečného gamutu obrázku (ten může být menší než gamut barvového prostoru, který mu je přiřazen).

Řeší se to dvěma způsoby: buď se informace o velikosti gamutu uloží přímo do ICC profilu nebo je CMM musí spočíst v případě potřeby – tj. vytvořit device-link profil (viz níže) za běhu.

Většina linuxových programů používá k transoformacím barev knihovnu LCMS. Dle dokumentace k LCMS: je-li požadován perceptuální záměr a ICC profil neobsahuje převodní tabulky tohoto záměru, pak je transformace provedena relativním kolorimetrickým záměrem. Nepříjemné na tom je, že uživatel se tuto skutečnost nedozví. I toto má řešení – záleží poté na aplikaci, zda použije LCMS k vytvoření device-link profilu (s přemapováním gamutu) za běhu.

Pozn.: Dle mých testů to vypadá, že CinePaint nevytváří device-link profily za běhu. Oproti tomu, tiskový plugin CinePaintu se separací do CMYKu by měl použít device-link profil (alespoň dle blogu Kai-Uwe Behrmanna).

Uložení informace potřebné k perceptuálnímu záměru do ICC profilu je možné pouze u CLUT profilů – jinými slovy, shaper/matrix profily neumožňují používání perceptuálního záměru (tedy alespoň v případě použití LittleCMS).

Tabulky pro převod barev v CLUT profilu se označují jako AtoB a reverzní BtoA, kde A jsou barvy zařízení popsaného profilem a B jsou barvy PCS. Dále se číslují: AtoB0 (a reverzní tabulka BtoA0) pro perceptuální záměr, AtoB1 pro kolorimetrický a AtoB2 pro saturační. AtoB1 se sdílí pro relativní i absolutní kolorimetrický záměr (jediný rozdíl je v definici bílého bodu – u relativního se přepočte na cílový barvový prostor).

ArgyllCMS ukládá informaci o perceptuálním záměru do tabulky BtoA0. Tj. máme-li obrázek v AdobeRGB a budeme převádět do Tiskárna.icc, pak Tiskárna.icc bude obsahovat převodní tabulku BtoA0 k perceptuálnímu záměru.

K vytvoření BtoA0 v profilu Tiskárna.icc je zapotřebí již při vytváření profilu znát informaci o zdrojovém barvovém prostoru (tj. v tomto případě AdobeRGB). Toto je hlavní omezení této metody – máme-li obrázky v různých pracovních prostorech (sRGB, ProPhotoRGB, AdobeRGB), nezbývá, než vytvořit varianty profilu Tiskárna.icc pro každý z nich.

Toto omezení se plně projeví u profilu monitoru – např. v CinePaintu edituji 16b RGB obrázky a používám pro ně prostor Kodak ProPhotoRGB. U 8bitových RGB obrázků je riskantní používat prostory s velkým gamutem, obvykle je tedy ukládám v sRGB. Při soft-proof bych navíc potřeboval profil monitoru s ohledem na profil tiskárny…

Pozn.: Stejně tak převody mezi syntetickými profily (např. Kodak ProPhotoRGB do sRGB) pomocí LCMS nepodporují perceptuální záměr, tj. transformace se provede dle relativního kolorimetrického záměru.

[Doplnit informace o kompenzaci černého bodu. Nedoporučuje se pro Absolutní kolorimetrický a perceptuální záměr. Odkaz na dokument implementace dle Adobe.]

Device link profily

Device link profil je zvláštní druh profilu, který spojuje vstupní a výstupní profil, a nejedná se tedy o profil nezávislý na zařízení. Pro názornost: klasicky probíhá konverze ze vstupního barvového prostoru do PCS a z PCS do výstupního barvového prostoru (tedy ve dvou krocích). Device link profil oproti tomu převádí přímo ze vstupního do výstupního barvového prostoru.

ArgyllCMS podporuje tři módy výpočtu device link profilů: jednoduchý (parametr -s programu collink), s mapováním gamutu (-g) a s inverzním mapováním gamutu (-G).

Jednoduchý mód pouze spojí informace o transformaci (CLUT) obsažené ve vstupním a výstupním profilu. Takto obvykle pracují CMS engine. Důsledkem je, že pokud ani jeden z profilů neobsahuje informace k mapování gamutu, tak výsledný device link profil to taktéž nedokáže.

Mód s mapováním gamutu (ať již prostý či inverzní) je již přínosnější: vytvoří CLUT profil s tabulkami pro převod ze vstupního gamutu do výstupního gamutu. Volitelně lze doplnit informaci o skutečně použitém barvovém prostoru obrázku – v tom případě bude vytvořen device link profil pro konkrétní obrázek.

Jinými slovy: program collink nahrazuje chytré CMM a vytvoří speciální profil, použitelný pouze pro příslušnou situaci. Míru „speciálnosti“ určují záměr transformace, vstupní a výstupní profil a případě i gamut konkrétního obrázku.

Využití device link profilů je zřejmě nejčastější při přípravě snímku pro tisk (tj. převedení do barvového prostoru tiskárny) nebo transformaci do barvového prostoru s malým gamutem (např. konverze RAW snímku do sRGB).

Pozn.: Vytváření device link profilů s přemapováním gamutu má praktický smysl pouze tehdy, použije-li se perceptuální či saturační záměr transformace. Pro kolorimetrické záměry transformace stačí normální profily.

Pozn. 2: Při transformaci barev z velkého barevného prostoru do malého (sRGB, tiskárna) může obrázek ztratit „živost“, zvláště pokud v původním obrázku byly hodně saturované jinak obrazově nevýznamné části (málo zastoupené či jinak nedůležité). Spíše než zvyšováním sytosti barev výsledného obrázku je lépe zkusit relativní kolorimetrický záměr. Pokud by jeho použitím došlo k splynutí odstínů, které by měly být rozlišitelné, lze zkusit transformovat barvy pomocí dočasného barvového prostoru. Např. z Kodak ProPhotoRGB relativním kolorimetrickým záměrem do Adobe RGB a z něho perceptuálním záměrem do sRGB.

Praktická realizace

Převod obrázku do prostoru tiskárny perceptuálním záměrem pro konkrétní obrázek image.tif (s vloženým profilem):

  • Vytvořit soubor s gamutem obrázku (image.gam): tiffgamut -cmt -ia -pj image.tif image.tif. Pokud je obrázek zašuměný, je lépe jej nejprve zmenšit
  • Vytvořit device link profil: collink -v -qh -G image.gam -cmt -dpp -ip -op image.tif tiskarna.icc image_link.icc
  • Převést obrázek do barvového prostoru tiskárny: cctiff image_link.icc image.tif image_tisk.tif

Pokud vyhovuje mírně horší kvalita transformace barev s perceptuálním záměrem, stačí při vytváření profilu pro tiskárnu zadat vstupní gamut parametrem -S input.icc programu collprof a profil používat pouze pro obrázky, které jsou v tomto vstupním (pracovním) prostoru.

Hodnota bílého bodu pro monitor

Otázka stará jak colour management: na jakou hodnotu bílého bodu mám nastavit svůj monitor?

ArgyllCMS při měření hodnoty bílého bodu nabízí několik informací: Correlated Colour Temperature a Visual Colour Temperature + jejich varianty pro denní světlo a informaci o DeltaE to locus.

Pro lepší pochopení doporučuji přečíst článek na Wikipedii a přínosnou diskusi na Luminous Landscape.

Osobně se na to dívám takto:

  • Lidské oko je adaptibilní – tj. přizpůsobí se hodnotě bílé (v rozumném rozsahu). Ač přepnutí z 6500 K na 5000 K působí jako velmi velká změna, po chvíli to přestanu vnímat.
  • Je nepříjemné mít nastavenu teplotu bílého bodu odlišně (hlavně směrem k teplým barvám) než je použité okolní osvětlení.
  • Není dobré nastavovat hodnotu bílé daleko od nativní hodnoty monitoru, zvláště u LCD panelu, neb roste riziko posterizace. Výjimkou mohou být hardwarově kalibrované LCD nebo monitory s vyšší bitovou hloubkou převodníku než 8 bitů.

Pokud pracuji na fotkách, které budu tisknout, tak zatáhnu rolety a v místnosti svítím lampou s teplotou okolo 5000 K a monitor též přepnu na tutéž teplotu (kalibrace mám uloženy v monitoru). Při denním světle působí 5000 K poněkud zažloutle, pak používám obvyklých 6500 K.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..