Sdílet prostřednictvím


Algoritmy vytváření transformací WCS

vytváření transformací

 

provádění sekvenční transformace

 

vytváření optimalizovaných transformací

 

ICCProfileFromWCSProfile

 

zachování černé pleti a černé generace

 

Kontrola gamutu

Vytváření transformací

Abyste správně vysvětlili, jak fungují transformace barev, je užitečné vysvětlit úplnou cestu zpracování prostřednictvím ICM 2.0 i vnitřních vlastností CTE. ICM 2.0 CreateColorTransformW funkce vytvoří transformaci barev, kterou mohou aplikace použít k provádění správy barev. Tato funkce vytvoří kontext barvy z LOGCOLORSPACE a záměrných vstupů. Záměry se mapují na směrný algoritmus mapování gamutů ICC. Funkce pak volá funkci ICM 2.0 CreateMultiProfileTransform pro konzistentní zpracování barev. Funkce CreateColorTransform obecně kopíruje data do interní optimalizované struktury transformace.

Funkce ICM 2.0 CreateMultiProfileTransform přijímá pole profilů a pole záměrů nebo jeden profil propojení zařízení a vytvoří transformaci barev, kterou můžou aplikace použít k mapování barev. Zpracovává tyto vstupní profily a záměry k vytváření modelů zařízení, modelů vzhledu barev, popisů hranic gamutu a modelů mapování gamutů. Tady je postup:

  • Modely zařízení se inicializují přímo z profilů DM. Existuje jeden model zařízení vytvořený pro každý profil ve volání CreateMultiProfileTransform.
  • Modely vzhledu barev se inicializují přímo z profilů CAM. Každý profil CAM je ve volání CreateMultiProfileTransform. Stejný profil CAM je však možné zadat pro více než jeden profil.
  • Popisy hranic gamutu se inicializují z objektu modelu zařízení a objektu CAM. Pro každý profil ve volání CreateMultiProfileTransformexistuje jeden popis hranice gamutu .
  • Modely mapování gamutu se inicializují ze dvou hranic gamutu a záměru. Je nutné vytvořit model mapování gamut mezi každou dvojicí modelů zařízení vytvořených z volání CreateMultiProfileTransform. Všimněte si, že to znamená, že používáte méně modelů mapování gamutů než model zařízení. Vzhledem k tomu, že počet záměrů odpovídá počtu modelů zařízení, existuje také jeden více záměrů, než je vyžadováno. První záměr v seznamu se přeskočí. Projdete si seznam modelů a záměrů zařízení a vytvoříte modely mapování gamutů. Vyberte první a druhý model zařízení a druhý záměr a pak inicializujete první model mapování gamutu. Vyberte druhý a třetí model zařízení a třetí záměr a pak inicializujete druhý model mapování gamutu. Pokračujte tímto způsobem, dokud nevytvořili všechny modely mapování gamutů.

Pokud jsou profily správně zpracovány a všechny přechodné objekty byly vytvořeny a inicializovány, můžete vytvořit transformaci CITE pomocí následujícího volání. pDestCAM a pDestD M jsou přidružené k poslednímu profilu volání CreateMultiProfileTransform.

HRESULT CreateCITEColorTransform(
 __inout     IDeviceModel          *pSourceDM,
 __inout     IColorAppearanceModel *pSourceCAM,
 __in        GamutMapArray         *pGamutMapArray,
 __inout     IColorAppearanceModel *pDestCAM,
 __inout     IDeviceModel          *pDestDM,
             EColorTransformMode    eTransformMode,
 __deref_out IColorTransform      **ppCTS
 );

Podpora modulů plug-in

Jedním z problémů souvisejících s nastavením seznamu transformací je ověření, jestli je k dispozici požadovaný modul plug-in. Následující přepínač modelu poskytuje tuto zásadu pro řízení tohoto chování. Správa tohoto seznamu transformací je metoda v interní optimalizované struktuře transformace, ale každá metoda modelu poskytuje ukazatel na sebe a vlastní sadu hodnot parametrů.

Režim musí být jeden z následujících.

  • TfmRobust: Pokud profil měření určuje upřednostňovaný modul plug-in a modul plug-in není k dispozici, nový systém CTE použije základní modul plug-in. Pokud není k dispozici žádný modul plug-in, transformace oznámí chybu.
  • TfmStrict: Pokud ColorContext určuje upřednostňovaný modul plug-in, musí být modul plug-in dostupný. Pokud se nenajde žádný upřednostňovaný modul plug-in, použije se základní modul plug-in. Pokud není k dispozici žádný modul plug-in, transformace oznámí chybu.
  • TfmBaseline: V addMeasurementStep je možné použít pouze základní moduly plug-in. Pokud ColorContext určuje upřednostňovaný modul plug-in, modul plug-in bude ignorován. Pokud základní modul plug-in není k dispozici, transformace oznámí chybu.

Provádění transformace

Rozhraní API ICM 2.0 TranslateColors funkce překládá pole barev ze zdrojového barevného prostoru do cílového barevného prostoru definovaného transformací barev. Tato funkce interně kontroluje pole barev uložených v mezipaměti a umožňuje okamžité porovnávání běžně transformovaných barev. Tato transformace podporuje 8bitová pole bajtů na kanál a 32bitová pole na kanál float. Všechny ostatní formáty budou převedeny před předáním do nového CTE.

Rozhraní API ICM 2.0 TranslateBitmapBits funkce přeloží barvy rastrového obrázku s definovaným formátem pro vytvoření jiného rastrového obrázku v požadovaném formátu. Tato funkce interně kontroluje pole barev uložených v mezipaměti a umožňuje okamžité porovnávání běžně transformovaných barev. Aby se zabránilo příliš mnoha cestám kódu, podpoře a testování složitosti, ve skutečnosti se v transformačním a interpolačním modulu podporuje pouze omezený počet rastrových formátů. Tato funkce musí přeložit ne nativní příchozí a odchozí rastrové formáty do nativně podporovaných formátů pro zpracování. Tato transformace podporuje pouze 8bitové rastrové obrázky na bajty kanálu a 32bitové rastrové obrázky na kanál s plovoucími rastry. Všechny ostatní formáty budou převedeny před předáním do nového CTE.

 

Provádění sekvenční transformace

Pokud má parametr dwFlags nastavenou SEQUENTIAL_TRANSFORM bit, když funkce ICM CreateColorTransformW nebo CreateMultiProfileTransform jsou volány, kroky transformace se sekvenčně spustí. To znamená, že kód prochází každý model zařízení, model vzhledu barev a model mapování gamut samostatně, jak je specifikováno CreateColorTransform nebo CreateMultiProfileTransform volání. To může být užitečné pro ladění modulů plug-in, ale je mnohem pomalejší než provádění prostřednictvím optimalizované transformace. Spouštění v sekvenčním režimu se proto nedoporučuje pro produkční software. Ve výsledcích získaných v sekvenčním režimu a v optimalizovaném režimu mohou být také mírné rozdíly. Důvodem jsou varianty zavedené při zřetězení funkcí.

Vytvoření optimalizovaných transformací

Optimalizovaná transformace je multidimenzionální vyhledávací tabulka. Tabulku může zpracovávat multidimenzionální interpolační modul, jako je interpolace tetrahedral, která použije vstupní barvy na transformaci. Následující část popisuje, jak se vytvářejí optimalizované vyhledávací tabulky. Následující část popisuje, jak interpolovat v optimalizovaných vyhledávacích tabulkách.

Řídké vyhledávací tabulky

Konvenční tiskárny mají inkousty CMYK. Pokud chcete gamut rozšířit, jedním z přístupů je přidání nových rukopisů do systému. Přidaných inkoustů jsou obvykle barvy, které barvy CMYK mají potíže s reprodukcí. Mezi běžné volby patří oranžová, zelená, červená, modrá atd. Chcete-li zvýšit "zjevné rozlišení", inkousty s různými odstíny lze použít, například světle azurová, světle purpurová atd. V důsledku toho má zařízení tiskárny více než čtyři kanály.

I když jsou tiskárny výstupními zařízeními, provádějí také převod barev z prostoru zařízení do jiného barevného prostoru. V případě tiskárny CMYK by to byla transformace z CMYK na XYZ nebo "forward model" tiskárny. Kombinací dopředu modelu s jinými transformacemi je možné emulovat tisk CMYK na jiném zařízení. Například tiskárna CMYK monitoru RGB by umožnila mechanismus kontroly pravopisu, který emuluje tisk tiskárny CMYK na monitoru. Podobně platí i pro hi-fi tiskárny. Převod CMYKOG na RGB umožňuje kontrolu pravopisu tiskárny CMYKOG na monitoru.

Konvenční přístup k implementaci takového převodu barev spočívá v použití jednotné funkce LUT. Například v profilu ICC pro tiskárnu CMYKOG specifikace ICC vyžaduje značku A2B1, která uchovává uniformní LUT představující jednotné vzorkování v prostoru zařízení CMYKOG pro předávací model, který přechází z CMYKOG na spojovací prostor profilu ICC (buď CIELAB nebo CIEXYZ). Profil propojení zařízení ICC umožňuje přímou transformaci prostoru zařízení CMYKOG na libovolnou barevnou mezeru, včetně prostoru zařízení, a to také ve formě vzorku LUT jednotně v prostoru CMYKOG. Vzorkování se nikdy neudělá s 256 úrovněmi (hloubka bitu 8) kvůli obrovskému výsledku LUT, s výjimkou případu monochromatických zařízení (1 kanál). Místo toho se používá vzorkování s nižší hloubkou bitu; některé typické volby jsou 9 (hloubka bitu 3), 17 (hloubka bitu 4), 33 (bitová hloubka 5). S počtem úrovní nižších než 256 v každém kanálu se LUT používá ve spojení s interpolačním algoritmem k vytvoření výsledku, pokud je úroveň mezi dvěma úrovněmi vzorku.

I když je jednotná funkce LUT koncepčně jednoduchá a interpolace jednotek LUT je obecně efektivní, velikost LUT se exponenciálně zvyšuje se vstupní dimenzí. Pokud d je počet kroků použitých v uniformě LUT a n je počet kanálů ve zdrojovém barevném prostoru, pak počet uzlů v LUT je Ukazuje proměnnou pro počet uzlů v LUT.. Je zřejmé, že počet uzlů rychle vyžaduje tolik úložiště v paměti, že dokonce i systémy top-of-the-line computing mají potíže se zpracováním poptávky. U zařízení se šesti nebo osmi kanály vyžaduje implementace profilu zařízení ICC několik kroků v LUT, někdy dokonce až pět kroků v tabulce A2B1, aby se profil zachoval v megabajtech místo gigabajtů. Použití menšího počtu kroků zvyšuje interpolační chybu, protože teď existuje méně vzorků. Vzhledem k tomu, že LUT musí být jednotná, je přesnost v celém barevném prostoru degradována i v těchto oblastech prostoru, kde může být významný rozdíl barev způsobený malou změnou hodnoty zařízení.

V zařízeních s více než čtyřmi barevnými barvami jsou určité podprostory celého prostoru zařízení důležitější než ostatní. Například v prostoru CMYKOG, azurové a zelené inkousty jsou zřídka používány dohromady, protože jejich odstíny se vzájemně překrývají. Podobně se žlutá a oranžová inkousty vzájemně překrývají. Rovnoměrné snížení počtu kroků lze považovat za celkové snížení kvality v celém barevném prostoru, což je něco, co si můžete dovolit pro nedostupné kombinace rukopisu, ale ne pro pravděpodobné nebo důležité kombinace.

I když je jednotně vzorek LUT jednoduchý a efektivní pro interpolaci, při nárůstu dimenzí představuje obrovské požadavky na paměť. Ve skutečnosti může mít zařízení šest nebo osm kanálů, ale zřídka se používají současně. Ve většině případů má vstupní barva pro transformaci barev pouze několik "aktivních" barev a proto se nachází v dolním dimenzionálním barevném prostoru. To také znamená, že interpolaci je možné provádět efektivněji v tomto nižším dimenzionálním prostoru, protože interpolace je rychlejší, když je dimenze nižší.

Přístup je proto stratifikovat celý prostor zařízení do podprostorů různých dimenzí. A vzhledem k tomu, že nižší rozměry (ty kombinující tři nebo čtyři barvanty) jsou důležitější, stratifikací prostoru můžete také použít různé vzorkovací frekvence; to znamená, že se jedná o jiný počet kroků, než o kusy; zvýšení míry vzorkování pro nižší rozměry a jejich snížení pro vyšší rozměry.

Pokud chcete opravit zápisy, n je počet kanálů ve zdrojovém barevném prostoru transformace barev, kterou chcete vzorek vzorkovat. Můžete také odkazovat na n jako vstupní dimenzi a Zobrazuje n větší nebo rovno 5. , pokud není uvedeno jinak.

Základní stavební bloky jsou LUT různých vstupních dimenzí a velikostí, místo jedné uniformy LUT se vstupní dimenzí n. Přesněji řečeno,LUT je obdélníková mřížka uložená na jednotkovou krychli; to znamená, že všechny souřadnice zařízení jsou normalizovány do rozsahu [0, 1]). je-li vstupní dimenze lut (všimněte si, že nemusí být rovna n, i když Zobrazuje hodnotu V menší nebo rovno n. je vyžadován), pak se skládá z ν jednorozměrných vzorkovacích mřížek:

Samp i: Zobrazuje jednorozměrnou mřížku vzorkování.

kde všechny xjs musí být v rozsahu [0, 1], Zobrazuje horní index d(i). je počet kroků pro vzorkování i. kanálu, který musí být alespoň 1, a Ukazuje spuperscript X (dolní index) d(i). musí být 1. Na druhé straně Zobrazuje horní index X (dolní index 1). nemusí být 0.

Budou definovány pouze následující dva zvláštní případy LUT.

UzavřenýLUT: Jedná se o LUT s dodatečným požadavkem, že pro každý Samp*i*, Zobrazuje horní index X (dolní index 1) se rovná 0. a Zobrazí horní index d(i) větší nebo rovno 2. . Uniform closed LUT je uzavřený LUT, který má stejný Zobrazuje horní index d(i). pro každý kanál a uzly jsou rovnoměrně rozmístěné mezi 0 a 1.

Open LUT: Jedná se o LUT s dodatečným požadavkem, že pro každý Samp i, SHows horní index X (dolní index 1) větší než 0. . Je v pořádku mít Zobrazí horní index d(i) rovná 1. .

Cílem je stratifikovat jednotkovou krychli [0, 1] n do kolekce uzavřených LUT a otevřených LUT, aby celá kolekce pokryla datovou krychli jednotky. Je koncepčně jednodušší uspořádat tyto vrstvy "LUT" podle jejich dimenzí, takže na nejvyšší úrovni:

Ukazuje nejvyšší úroveň pro uspořádání L U T strata podle jejich dimenzí.

kde Zobrazuje dolní index sigma k. je "k -dimensional strata collection." Všimněte si, že rozměr strata začíná od 3 místo 0; to znamená, že interpolace tříbarevných kombinací je možné zpracovat bez příliš velkého požadavku na paměť.

Popis strata LUT

V této implementaci:

  1. Zobrazuje dolní index sigma 3. se skládá z uzavřených lutů se třemi vstupy, jedna z každé možné kombinace tří barevných odstínů vybraných z n barevných odstínů.

  2. Zobrazuje dolní index sigma 4. se skládá z jednoho uzavřeného LUT pro kombinaci CMYK (nebo prvních čtyř barev), spolu s Ukazuje (n přes 4) minus 1. otevřít luty pro všechny ostatní čtyřbarevné kombinace. Když zkombinujete kombinaci CMYK, uznáváte, že je to důležitá kombinace.

  3. Pro Ukazuje k rovnou 5, ..., n. , Zobrazuje dolní index sigma k. se skládá z Zobrazení (n až k). otevřených lutů, jednu pro každou možnou kombinaci výběru k barevných odstínů z celkového počtu n barevných odstínů.

Zbývá zadat velikosti lutů. Klíčovým rozdílem mezi otevřenými a uzavřenými luty je, že otevřené luty se nepřekrývají a uzavřené luty se můžou překrývat na hraničních plochách. Skutečnost, že jednorozměrné vzorkování v otevřeném LUT neobsahuje hodnotu 0, v podstatě znamená, že otevřené LUT chybí polovina okrajových tváří, a proto název "otevřený". Pokud se dva luty nepřekrývají, můžete v každém kanálu použít jiný počet kroků nebo umístění uzlů. Totéž platí, pokud se dva luty překrývají. V takovém případě, pokud se počet kroků nebo umístění uzlů liší, bod, který leží v průsečíku dvou lutů, obdrží jinou interpolační hodnotu v závislosti na tom, který LUT se používá v interpolaci. Jednoduchým řešením tohoto problému je použití jednotného vzorkování se stejným počtem kroků při každém překrytí dvou lutů. Jinými slovy:

Všechny uzavřené luty (všechny tříbarevné luty a CMYK LUT v této implementaci) musí být jednotná a musí mít stejný počet kroků, které jsou označeny d.

Následující dva algoritmy lze použít k určení počtu kroků d pro uzavřené luty a počet kroků pro otevřené luty.

Algoritmus č. 1

Tento algoritmus nevyžaduje externí vstup.

Všechny uzavřené luty budou jednotné s d počet kroků.

Všechny otevřené luty dimenzí k budou mít stejný počet kroků Zobrazí d(k). v každém vstupním kanálu a uzly jsou rovnoměrně rozmístěné; to znamená, že pro každý Ukazuje, že se rovná 1, 2, ..., k. .

Samp i: Zobrazuje algoritmus samp i.

Nakonec v následující tabulce 1 zadejte d a d (k). Tři režimy, "důkaz", "normální" a "nejlepší" jsou nastavení kvality ICM 2.0. V této implementaci má režim kontroly nejmenší nároky na paměť a nejlepší režim má největší nároky na paměť.

Pokud chcete tento algoritmus implementovat, musíte volat následující algoritmus č. 2. Uživatelé můžou určit vlastní umístění vzorkování pomocí tabulek jako vodítka.

Algoritmus č. 2

Tento algoritmus vyžaduje externí vstup ve formě seznamu "důležitých" umístění vzorkování, ale je adaptivní a může ušetřit místo v paměti potenciálně.

Požadovaný vstup je pole hodnot zařízení zadaných uživatelem. Tyto hodnoty zařízení označují, která oblast barevného prostoru zařízení je důležitá; to znamená, která oblast by měla být vzorkována více.

Všechny uzavřené luty budou jednotné s d počet kroků, jak je popsáno v algoritmu č. 1. Hodnoty pro d jsou uvedeny v tabulce 1.

a) Uniform Closed LUT

Režim kontroly pravopisu Normální režim Nejlepší režim
d 9 17 33

 

(b) Otevřít LUT

Vstupní dimenze Režim kontroly pravopisu Normální režim Nejlepší režim
4 5 7 9
5 2 3 3
6 2 3 3
7 2 2 2
8 nebo více 2 2 2

 

tabulka 1: velikosti LUT použité v algoritmu

Každý otevřený LUT může mít v každém vstupním kanálu jiný počet kroků a umístění vzorkování nemusí být rovnoměrně rozložená. Pro danou otevřenou vrstvu LUT existuje přidružená barevná kombinace, například Zobrazuje dolní index C 1, ..., dolní index jazyka C. , kde Zobrazuje dolní index jazyka C i. s jsou různá celá čísla mezi 1 a n. Jedná se o indexy kanálu odpovídající "aktivním" barvením v této vrstvě.

KROK 1: Vyfiltrujte vstupní pole hodnot zařízení, které nejsou obsaženy v této vrstvě. Hodnota zařízení Zobrazuje dolní index X 1, X dolní index 2, ..., X dolní index n. je obsažen ve vrstvě, pokud a pouze v případě, že Zobrazí sadu hodnot pro kanál. a všechny ostatní kanály jsou 0. Pokud filtrovaná sada obsahuje N položek, nechejte

Zobrazí rovnici, která se má použít, pokud filtrovaná sada obsahuje N položek.

Pro každou Ukazuje, že se rovná 1, 2, ..., k. , iterujte následující kroky 2-5:

KROK 2: Pokud Zobrazí d dolní index nezávazně (k) rovná 1. , Samp i má pouze 1 bod, který musí být 1,0. Přechod na další i. V opačném případě pokračujte krokem 3.

KROK 3: Seřazení filtrovaných ukázek ve vzestupném pořadí v Ukazuje dolní index C i. kanálu.

KROK 4: Definování mřížky nezávazného vzorkování pomocí uzlů

Zobrazuje uzly používané k definování mřížky nezávazného vzorkování.

where J equal to 1, 2, ..., d subscriptative (k).

KROK 5: Regulujte nezávaznou mřížku, abyste zajistili, že vyhovuje striktní monotonicity a také že končí 1,0. Vzhledem k tomu, že pole je již seřazené, uzly v nezávazné mřížce jsou již monotónní nedekonreasování. Sousední uzly ale můžou být identické. V případě potřeby to můžete vyřešit odebráním identických uzlů. Nakonec po tomto postupu, pokud je koncový bod menší než 1,0, nahraďte ho 1.0.

Všimněte si, že krok 5 je důvodem, proč strata LUT může mít v každém kanálu jiný počet kroků. Po normalizaci může být počet kroků v kanálu menší než Ukazuje d dolní index nezávazně (k). .

Interpolace

Stratifikací jednotkové krychle můžete sestavit otevřením LUT strata a uzavřenou vrstvou LUT. Chcete-li provést interpolaci pomocí této "řídké struktury LUT", postupujte podle těchto kroků. Předpokládejme, že daná vstupní hodnota zařízení Zobrazuje (dolní index X 1, dolní index X 2, ..., X dolní index n). .

KROK 1: Určete počet aktivních kanálů. Toto je počet nenulových kanálů. Určuje rozměr vrstvy k hledání obsahujících stratum. Přesněji řečeno, dimenze strata je 3, pokud je počet aktivních kanálů Ukazuje menší než nebo rovno 3. , jinak je dimenze strata stejná jako počet aktivních kanálů.

KROK 2: V Zobrazí dolní index sigma k. , vyhledejte obsahující stratum. Hodnota zařízení je obsažena v otevřené vrstvě, pokud všechny kanály odpovídající vrstvě mají nenulovou hodnotu a všechny ostatní kanály jsou nulové. Hodnota zařízení je obsažena v uzavřené vrstvě, pokud každý kanál, který není reprezentován stratum je nula. Pokud se nenajde žádná vrstva obsahující vrstvu, dojde k chybovému stavu. Zrušení a nahlášení selhání Pokud se najde obsahující stratum, přejděte k dalšímu kroku.

KROK 3: Pokud je obsahující stratum uzavřen, lze interpolaci v rámci stratum provést jakýmkoli známým interpolačním algoritmem. V této implementaci je volba algoritmu metahedral interpolace. Pokud je obsah vrstvy otevřený a hodnota zařízení leží přísně v rámci vrstvy, to znamená,

Zobrazuje dolní index X větší nebo rovnou... prvním uzlu v i kanálu.

kde i je index kanálu pro stratum, pak funguje standardní interpolační algoritmus, jako je interpolace metahedralů.

Pokud Zobrazí dolní index X menší než... první uzel v i kanálu pro některé i, pak hodnota zařízení spadá do "mezery" mezi stratum a nižšími dimenzionálními podprostory. Tento moI se nezabývá interpolačním algoritmem za sekundu, takže jakýkoli interpolační algoritmus lze použít k interpolaci v rámci této "mezery", i když upřednostňovaný algoritmus je následující transfinite interpolace.

Architektura interpolačního modulu je znázorněna ve dvou částech obrázku 1.

diagram, který znázorňuje část architektury modulu interpolace

diagram, který znázorňuje část 2 architektury modulu interpolace

Obrázek 1: Architektura modulu interpolace

Jak bylo vysvětleno dříve, tento algoritmus dokáže dosáhnout přiměřeně zhuštěného vzorkování v oblastech prostoru zařízení, které obsahují důležitou kombinaci barevných odstínů, a současně minimalizuje celkovou velikost potřebných luT. Následující tabulka ukazuje porovnání počtu uzlů potřebných pro řídkou implementaci LUT (pomocí algoritmu č. 1 a normálního režimu) a odpovídající jednotné implementace LUT.

Počet vstupních kanálů LUT Uniform LUT
5 142498 1419857
6 217582 24137567
7 347444 410338673
8 559618 6975757441

 

Interpolace v rámci datové krychle jednotky

Základním krokem v případě obdélníkové mřížky je interpolace uvnitř ohraničující buňky. U vstupního bodu můžete snadno určit ohraničující buňku. V obdélníkové mřížce je zadaná výstupní hodnota u každého vrcholu (rohových bodů) ohraničující buňky. Jsou to také jediné podmínky hranic, které musí interpolant splňovat: Interpolant musí projít všemi těmito body. Všimněte si, že tyto podmínky hranic jsou na "diskrétních" bodech, v tomto případě 2n rohových bodů buňky, kde n je rozměr barevného prostoru.

Před přechodem na hranice je užitečné formalizovat koncept hraničních podmínek. Pro libovolnou podmnožinu hranice ohraničení ohraničující buňky (jednotková krychle v n dimenzích) je podmínka hranice pro S specifikace funkce BC: S → Rm, kde m je výstupní dimenze. Jinými slovy, interpolant, který může být označen interp: [0,1]n→ Rm, musí splňovat: Interp(x) = BC(x) pro všechny x v S.

Ve standardním scénáři interpolace datové krychle jednotky je S sada diskrétních bodů, které jsou 2n vrcholy datové krychle.

Nyní můžete zobecnit podmínky hranic, abyste vyřešili výše popsané problémy, a poskytnout nový algoritmus interpolace v rámci datové krychle jednotky. Místo povolení pouze samostatných hraničních bodů je možné podmínky hranice uložit na celou hranici tváře datové krychle. Přesné předpoklady jsou následující:

(a) Bod vn =(1;1,...,1) je zvláštní a je povolena pouze diskrétní hraniční podmínka. Jinými slovy, na n hranici tváří xi=1 (i=1,...,n) nelze vynucovat žádné podmínky souvislé hranice.

(b) Pro každou z zbývajících n okrajových tváří xi=0 (i=1,...,n) lze na celou tvář uložit podmínku hranice, s podmínkou kompatibility, že pokud se dvě tváře protínají, podmínky hranic na tvářích by se měly shodnout na průsečíku.

(c) Všechny vrcholy, které nejsou obsaženy v tvářích s podmínkou hranice, budou mít individuální (diskrétní) hranici podmínky.

Můžete odkazovat na diskrétní hranici podmínky jako konečných dat a souvislou hranici podmínku jako transfinite data v diskusi o interpolaci konečných a transfinitových dat.

Nejprve si prohlédněte standardní interpolaci (jako je ta použitá v patentu Sakamoto), která pomáhá stanovit zápisy pro tuto konkrétní formulaci problému. Je známo, že jednotkovou krychli [0,1]n lze rozdělit na n! tbhedra, parametrizován množinou permutací na n symboly. Konkrétněji, každý takový čtyřhedron je definován nerovnostmi

Ukazuje vzorec pro nerovnosti mezi chronohedrony.

where σ:{1,2,..,n}→{1,2,...,n} je permutace "symbolů" 1, 2, ..., n, to znamená mapování bijective množiny symbolů. Pokud například n = 3 a σ = (3, 2, 1), což znamená σ(1)=3, σ(2)=2, σ(3)=1, pak je odpovídající chronohedron definován z≥y≥x, kde se pro x1, x, y, z používá x1, x2, x3. Všimněte si, že tyto čtyřhedrony nejsou vzájemně oddělené. Pro účely interpolace budou body, které leží na společné tváři dvou odlišných chronohedronů, mít stejnou interpolační hodnotu bez ohledu na to, který chronohedron se používá v interpolaci. V případě standardního scénáře interpolace konečných bodů pro daný vstupní bod (x1, ..., xn) nejprve určete, ve kterém chronohedronu leží, nebo odpovídajícím způsobem odpovídající permutační σ, pak je interpolační interpolant definován jako

Zobrazí rovnici, která definuje interpolaci typu tetrahedral.

kde Zobrazuje rovnici pro standardní základní vektory. pro i=1, ..., n a e1, ..., en jsou standardní základní vektory. Než přejdete na generalizaci, všimněte si, že v0, v1, ..., vn jsou vrcholy chronohedronu a Ukazuje barycentrické souřadnice. jsou "barycentrické souřadnice".

Pro obecný případ řadičů základní desky na hraničních plochách můžete použít koncept barycentrické projekce. Stejně jako v případě určitého vstupního bodu (x1, ..., xn), nejprve určete, ve kterém se nachází chronohedron, nebo odpovídajícím způsobem, odpovídající permutační σ. Pak proveďte řadu barycentrických projekcí následujícím způsobem. První projekce Ukazuje dolní index BProj 1 (x). odešle bod do roviny Zobrazí hodnotu X dolního indexu (1) rovnou 0., pokud nezobrazí X rovnou dolnímu indexu V. v takovém případě se nezmění. Přesná definice mapy BProj je definována takto:

Zobrazí rovnici pro přesnou definici mapy BProj.

Zobrazí rovnici pro dolní index P. a k = 1, 2, ..., n.

V případě Ukazuje X se rovná dolnímu indexu V. můžete zastavit, protože BC je definováno vn podle předpokladu (a). V případě Ukazuje X není rovno dolnímu indexu V. , je jasné, že zobrazuje dolní index BProj 1 (X). má σ(1)th komponentu. Jinými slovy, je na jedné z hraničních tváří. Buď je na tváři, na které je definováno BC, v takovém případě můžete zastavit, nebo provést další barycentrickou projekci Ukazuje BProj dolní index 2 (X, kde zobrazuje X rovná se dolnímu indexu BProj 1 (X). . A pokud zobrazí X'=Bproj dolní index 1 (X'). je na tváři, na které je definována BC, můžete zastavit; jinak proveďte další projekci Zobrazí dolní index BProj 3 (X' ). . Vzhledem k tomu, že každá projekce zmenší jednu komponentu, efektivní dimenze se sníží, takže víte, že proces se musí nakonec zastavit. V nejhorším případě provedete n projekcí až do dimenze 0, tj. vrcholy datové krychle, které podle předpokladu (c) budou definovány podle předpokladu (c).

Za předpokladu, že byly provedeny projekce K, s

Ukazuje rovnici, která se má použít za předpokladu, že byla provedena projekce K.

x(0)= x, vstupní bod a BC je definován v x(k). Pak odviňte projekce definováním řady výstupních vektorů:

Zobrazuje rovnice pro řadu výstupních vektorů.

where Zobrazuje rovnici pro horní index Y (K). a nakonec získáte odpověď.

Zobrazuje interp(x) rovnou horní index y (0).

Příklad práce

Diagram znázorňující příklad interpolace s jednotkovou krychlí

Obrázek 2: Příklad práce

Představte si situaci znázorněnou na obrázku 2, kde n = 3, m = 1 a máte následující řadiče zabezpečení:

a) Čtyři samostatné řadiče domény na vrcholech

(0, 0, 1): β001

(0, 1, 1): β011

(1, 0, 1): β101

(1, 1, 1): β111

b) Souvislá BC na obličeji x3=0: F(x1, x2)

Výpočet č. 1: Vstupní bod x = (0,8, 0,5, 0,2). Ohraničující tetrahedron je spojen s permutací <1, 2, 3>.

1. projekce: Zobrazuje rovnici pro první projekci.

Toto je již na obličeji x3=0, takže můžete zastavit. Zpětná náhrada pak dává

Zobrazí odpověď pro první projekci. , která je odpovědí.

Výpočet č. 2: Vstupní bod x = (0,2, 0,5, 0,8). Ohraničující chronohedron je spojen s permutací <3, 2, 1>.

1. projekce: Zobrazuje rovnici pro první projekci výpočtu 2.

2. projekce: Ukazuje rovnici pro druhou projekci výpočtu 2.

Třetí projekce: Zobrazuje rovnici pro třetí projekci výpočtu 2. , který je na obličeji x3=0. Zpětná náhrada pak dává

Zobrazí první dvě rovnice pro zpětné nahrazení.

Zobrazuje třetí rovnici zpětné náhrady. , což je konečná odpověď.

Aplikace

(a) sekvenční interpolační

diagram, který znázorňuje sekvenční interpolaci metahedralů

Obrázek 3: sekvenční interpolace metahedralů

Viz obrázek 3. Pokud chcete interpolovat mezi dvěma rovinami, na kterých byly uloženy nekompatibilní mřížky, zvažte buňku ohraničující daný bod P zobrazený na obrázku. Vrcholy "horní" buňky pocházejí přímo z mřížky v horní rovině. Vrcholy v dolní tváři nejsou kompatibilní s mřížkou v dolní rovině, takže celá tvář je považována za BC s hodnotami získanými interpolací v mřížce v dolní rovině. Pak je jasné, že toto nastavení splňuje předpoklady (a), (b) a (c) výše a můžete použít interpolační algoritmus.

Je také jasné, že algoritmus snížil rozměr problému interpolace o 1, protože výsledkem je lineární kombinace hodnot ve vrcholech v horní mřížce a interpolace v dolní rovině, která má rozměr menší 1. Pokud v dolní rovině existuje podobná konfigurace roviny sendviče, můžete použít postup v této rovině a dále snížit rozměr o 1. Tento postup může pokračovat, dokud nedosáhnete dimenze 0. Tato kaskáda projekcí a interpolací může být označována jako "Sekvenční interpolace Mezisekvenčními interpolacemi".

(b) Interpolace mezer

Diagram znázorňující interpolaci mezer

Obrázek 4: Interpolace mezer

Jedná se o mřížku uloženou na krychli, která se nachází výhradně uvnitř kladného kvadrantu. Samotná datová krychle má mřížku a každá rovina souřadnic má mřížky, které nemusí být nutně kompatibilní. Mezera mezi datovou krychlí a rovinami souřadnic má průřez, který je ve tvaru L a není dosažitelný standardním technikám. S technikou zavedenou zde však můžete snadno zavést buňky, které pokrývají tuto mezeru. Obrázek 4 znázorňuje jednu z těchto možností. Mřížky na rovině souřadnic podporují interpolaci, která poskytuje nezbytné BCS pro všechny dolní plochy buňky, přičemž jeden zbývající vrchol, jehož BC je poskytován v dolním rohu datové krychle.

Konečná poznámka k implementaci

Ve skutečné aplikaci se z větších mřížek extrahuje "datová krychle jednotek", která je základním nastavením algoritmu, a hodnoty na vrcholech mohou vyžadovat nákladný výpočet. Na druhou stranu je zřejmé, že interpolace tetrahedral vyžaduje pouze hodnoty na vrcholech chronohedronu, což je podmnožina všech vrcholů jednotkové datové krychle. Proto je efektivnější implementovat to, co lze volat "odložené vyhodnocení". V softwarové implementaci předchozího algoritmu je typické, že má podprogram, který přebírá jednotkovou krychli a hodnoty na vrcholech jako vstup. Odložené vyhodnocení znamená, že místo předání hodnot na vrcholech se předají nezbytné informace k vyhodnocení hodnot vrcholů, aniž by bylo skutečně nutné vyhodnocení provést. Uvnitř podprogramu se provede skutečné vyhodnocení těchto hodnot pouze pro vrcholy, které patří do ohraničujícího chronohedronu, po určení ohraničujícího chronohedronu.

Vyhledávací tabulka pro použití s virtuálními zdroji RGB s vysokým dynamickým rozsahem

V případě, že je transformace vytvořena se zdrojovým zařízením modelovaným jako virtuálním zařízením RGB, je možné, že hodnoty barevného zdroje můžou být záporné nebo větší než unity (1,0). V takovém případě se zdrojové zařízení označuje jako vysoce dynamický rozsah (HDR). V tomto případě je třeba věnovat zvláštní pozornost.

V případě transformací HDR lze minimální a maximální hodnoty pro každý barevný kanál určit z hranice gamutu zařízení. Pomocí těchto hodnot se použije jednoduché měřítko pro každý barevný kanál, takže barevné hodnoty, které se rovnají minimálnímu barevnému odstínu, budou převedeny na 0,0 a barevné hodnoty, které se rovnají maximálnímu barevnému odstínu, budou převedeny na hodnotu 1,0 s lineárním měřítkem hodnot, mezi kterými se mapuje lineárně mezi 0,0 a 1,0.

ICCProfileFromWCSProfile

Vzhledem k tomu, že hlavním účelem této funkce je podporovat před-Vista verze Systému Windows, musíte vygenerovat profily ICC verze 2.2 definované v ICC Specification ICC.1:1998-09. V některých případech (viz následující tabulka "Základní mapování třídy profilu zařízení do ICC"), můžete vytvořit matici nebo profil ICC založený na TRC z profilu WCS. V jiných případech se profil ICC skládá z LUT. Následující proces popisuje, jak vytvořit AToB a BToA LUTs. Profily ICC mají samozřejmě i další pole. Některá data mohou být odvozena z profilu WCS. U jiných dat budete muset vyvíjet inteligentní výchozí hodnoty. Autorská práva budou přiřazena společnosti Microsoft; vzhledem k tomu, že se jedná o technologii Microsoftu, která se používá k vytvoření lutů.

Tento návrh by měl fungovat pro všechny typy modelů zařízení, včetně modulů plug-in. Pokud má modul plug-in přidružený základní model zařízení, je možné určit základní typ zařízení.

Těžkou součástí vytváření profilu ICC je vytvoření vyhledávacích tabulek AToB a BToA. Tyto tabulky mapují mezi místem zařízení, například RGB nebo CMYK, a prostorem pro připojení profilu (PCS), což je varianta CIELAB. To je v podstatě stejné jako proces správy barev použitý v transformaci CITE pro mapování z místa zařízení na prostor zařízení. K provedení transformace však musíte mít následující informace.

  1. Referenční zobrazení podmínek pro PCS

  2. Referenční gamut PCS.

  3. Model zařízení, který převádí mezi hodnotami PCS a colorimetry.

Profil WCS a jeho přidružená CAM jsou poskytovány jako parametry. Existují dva základní modely zařízení, které převádějí mezi colorimetry a kódováním PCS. Důvod, proč potřebujete dva, je vysvětlen níže.

  1. Referenční podmínky zobrazení pro PCS můžete získat ze specifikace formátu profilu ICC. Informace uvedené ve specifikaci formátu profilu ICC jsou dostatečné k výpočtu všech dat potřebných k inicializaci CAM používané cms. Pro konzistenci a flexibilitu jsou tyto informace uloženy v barevném profilu WCS.

  2. Můžete také použít profil WCS k uložení ukázek, které definují referenční gamut PCS. Systém správy barev CITE (CMS) má dva způsoby, jak vytvořit gamut hranice. Jedním z nich je vzorek kompletního prostoru zařízení a použití modelu zařízení k vytvoření hodnot měření. Druhou metodou je použití měřených vzorků z profilu k vytvoření referenční gamutové hranice. Vzhledem k tomu, že gamut ICC PCS je příliš velký, aby byl užitečný referenční gamut, první metoda je nevhodná. Druhá metoda je ale flexibilní přístup založený na profilu. Chcete-li předefinovat referenční gamut PCS, můžete změnit data měření v profilu zařízení PCS.

  3. ICC PCS je modelování ideálního zařízení. Vytvořením modelu PCS jako skutečného zařízení můžete využít proces správy barev používaný v inteligentním cmm. Vytvoření modelu zařízení z barevné škály na kódování PCS je jednoduché. Jednoduše namapujete mezi skutečnými colorimetrickémi hodnotami a hodnotami zakódovanými v PCS. Vzhledem k tomu, že rozhraní CMS pro modely zařízení podporuje pouze hodnoty XYZ, může být také nutné mapovat mezi XYZ a LAB. Jedná se o dobře známou transformaci. Tento model je popsán v dokumentu 2.2.02 "Základní modely zařízení" v oddílech 7.9 a 7.10.

Možná budete muset provést určité mapování gamutů, pokud je gamut zařízení větší než gamut pcS. Pro tento účel lze použít základní gmmy. Všimněte si, že správně vytvořený profil ICC obsahuje vyhledávací tabulky pro záměry Relativní Colorimetric, Perceptual a Sytost, i když můžou všechny odkazovat na stejné LUT interně.

diagram znázorňující vytvoření A T o B L U T.

Obrázek 5: Vytvoření AToB LUT

Tento proces je znázorněn na obrázku 5. Nejprve se model zařízení inicializuje z dat v profilu DM. Pak následujícím způsobem vytvořte hraniční mez gamutu zařízení. Vzorkování dat z modelu zařízení se spouští prostřednictvím modelu zařízení za účelem získání barevných dat. Barevná data se spouští přes CAM a vytvářejí data vzhledu. Data vzhledu se používají k vytvoření hranice gamutu zařízení.

Dále použijte data z referenčního profilu měření PCS k vytvoření hranice gamutu pro PCS.

K inicializaci GMM použijte dvě hranice gamutu, které se právě vytvořily. Pak pomocí modelu zařízení, GMM a modelu zařízení PCS vytvořte transformaci. Spuštěním vzorkování prostoru zařízení prostřednictvím transformace vytvořte AToB LUT.

diagram, který znázorňuje vytvoření A T o B L U T pomocí vzorkování prostoru P C S.

Obrázek 6: Vytvoření BToA LUT

Obrázek 6 znázorňuje vytvoření BToA LUT. To je téměř stejné jako vytvoření AToB LUT s rolemi zdroje a cíle vyměněna. Musíte také vzorek kompletní gamut PCS k vytvoření LUT.

Mějte na paměti, že vzhledem k tomu, že cam (CIECAM02 ve WCS) je zapojena do procesu, chromatická adaptace mezi bílým bodem média a bílým bodem PCS (pověřená ICC, aby byla d50) transparentně ovlivněna cam.

Virtuální zařízení HDR RGB

Při generování profilů pro virtuální zařízení HDR RGB je třeba věnovat zvláštní pozornost; to znamená, že zařízení, pro která mohou být barevné hodnoty menší než 0,0 nebo větší než 1,0. Ve generování ATOB LUT je sestavena větší sada 1D vstupních LUT. Barevné hodnoty jsou škálovány a posunuty na rozsah 0 .. 1 s minimálními a maximálními barevnými hodnotami v profilu WCS.

Vzhledem k tomu, že barevné místo pro zařízení HDR pravděpodobně nebude zcela naplněno, zvláštní podpora je k dispozici také v 3D LUT značky. Aby bylo možné zpracovat barvy v řídce naplněné oblasti, jsou barevné prostředky překódovány tak, aby bylo možné dosáhnout extrapolace nad rámec 0,0 a 1,0. Použitá oblast je -1 .. +4.

Vzhledem k opětovnému škálování použitému pro 3D LUT je sada 1D výstupních LUT sestavená tak, aby mapovala výsledek zpět do rozsahu 0 .. 1.

Více než jeden počítač PCS

ICC zjistil, že jeden PCS nebyl dostatečně flexibilní pro splnění všech zamýšlených použití CMS. Ve verzi 4 specifikace profilu ICC vysvětlil, že existují skutečně dvě kódování PCS. Jeden se používá pro barevné záměry; další se používá pro záměr perceptual. (Pro záměr Sytost není zadán žádný počítač PCS. ICC opustil tuto část nejednoznačný.) Colorimetric PCS má zadanou minimální a maximální světlost, ale hodnoty chroma a odstínu jsou přibližně ± 127. Tento pcs vypadá jako obdélníkový prism. Jak jsme zmínili dříve, perceptuální svazek PCS se podobá gamut inkoustové tiskárně.

Dva počítače PCS ICC mají také dvě různé digitální kódování. V perceptuální PCS představuje hodnota nula světlost nuly. V barevném pcS představuje hodnota nula minimální světlost PCS, která je větší než nula. Tento problém můžete vyřešit pomocí jiného modelu zařízení pro každé kódování PCS.

Mapování gamutů

Pokud chcete vytvořit luty AToB v profilu ICC, namapujete z gamutu zařízení na příslušný prostor PCS. Pokud chcete vytvořit luty BToA, mapujete z prostoru PCS na gamut zařízení. Mapování lutů AToB je poměrně podobné tomu, které se používá v CMS založeném na měření. Pro perceptuální PCS namapujte zařízení na hranici gamutu perceptual PCS pomocí výřezu nebo komprese pro všechny barvy mimo gamut. U barevných záměrů možná budete muset ořízit světlost, ale všechny hodnoty chroma a odstínu se budou vejít do barevného gamutu PCS.

Mapování pro luty BToA je trochu jiné. Barevné záměry jsou stále snadné; stačí vystřižovat hodnoty PCS do gamutu zařízení. ICC ale vyžaduje, aby se všechny možné hodnoty PCS mapují na určitou hodnotu zařízení, nikoli pouze hodnoty v referenčním gamutu perceptuální PCS. Proto je nutné zajistit, aby gmmy mohly zpracovávat zdrojové barvy, které jsou mimo referenční gamut. To lze zpracovat oříznutím těchto barev na ohraničení gamutu zařízení.

Mapování standardních zařízení na třídu profilu ICC

Typ základního zařízení Třída profilu ICC Poznámka
Zařízení pro zachytávání RGB Vstupní zařízení ("scnr") PCS je CIELAB. AToB0Tag je device to PCS with relative colorimetric intent.
CRT, LCD monitor Zobrazovací zařízení ("mntr") PCS je CIEXYZ. Převod modelů najdete v následujících tématech.
Projektor RGB Barevný prostor (mezera) PCS je CIELAB.
Tiskárna RGB a CMYK Výstupní zařízení ("prtr") PCS je CIELAB.
Virtuální zařízení RGB (případ bez HDR) Zobrazovací zařízení ("mntr") PCS je CIEXYZ.
Virtuální zařízení RGB (případ HDR) Barevný prostor (mezera) PCS je CIELAB.

 

Převod profilů monitorování nezahrnuje vytváření LUT, ale místo toho se skládá z vytvoření matice nebo modelu TRC. Model použitý v ICC se mírně liší od modelu použitého v MODELU WCS CRT nebo LCD v tom, že chybí termín "černá oprava". Specificky

Model WCS: Ukazuje model W C S.

Model ICC: Ukazuje model I C C.

Převod modelu WCS na model ICC se provádí následujícím způsobem.

Definování nových křivek:

Zobrazí matici definující nové křivky.

Nejsou to tónové křivky pro reprodukci, protože nenamapují 1 na 1. Normalizace toho dosáhne. Poslední definice modelu ICC jsou:

zobrazuje konečné definice modelu I C.

Zobrazuje konečnou matici modelu I C.

U virtuálních zařízení, která nejsou HDR RGB, generujete také profil ICC pro efektivitu prostoru. V takovém případě lze tristimulusovou matici M ICC získat přímo z primárních profilů WCS bez výše uvedeného převodu modelu. Jednou z konečných, ale důležitých poznámek je, že tato tristimulační matice musí být chromaticky přizpůsobena D50 tak, aby odpovídala specifikaci ICC PCS. Jinými slovy, položky na každém řádku matice, které mají být kódovány v profilu ICC, musí sečíst v uvedeném pořadí na 96,42, 100 a 82,49. V současné implementaci provádí chromatická adaptace CAT02, což je také chromatická adaptační transformace používaná v CAM02.

Černá zachování a černá generace

Implementace zachování černé pleti je svázána s generováním černého kanálu v zařízeních, která podporují černý kanál. Aby toho bylo možné dosáhnout, shromažďují se informace o každé zdrojové barvě, aby modely zařízení, které podporují černý kanál, určily, jak nejlépe nastavit černý kanál na výstupu. Zachování černé barvy je sice relevantní pro transformace barev, které se převádějí mezi jedním černým zařízením na druhé, ale pro všechny transformace zahrnující cílové zařízení černého kanálu se implementuje generování černého kanálu.

Informace o černém kanálu jsou zaznamenány v datové struktuře s názvem BlackInformation. BlackInformation struktura obsahuje logickou hodnotu označující, zda barva obsahuje pouze černou barvou a číselnou hodnotu označující stupeň "černé hmotnosti". U zdrojových zařízení, která podporují černý kanál, je černá hmotnost procentem černé barvy ve zdrojové barvě. U zdrojových zařízení, která neobsahují černý kanál, se černá hmotnost vypočítá pomocí ostatních barevných odstínů a hodnoty vzhledu. Hodnota s názvem "čistota barev" se vypočítá tak, že vezme rozdíl mezi maximální barvou a minimální barvantní hodnotou dělenou maximální barvou. Hodnota s názvem "relativní světlost" se vypočítá rozdílem mezi světlostí barvy a minimální světlostí cílového zařízení dělenou rozdílem mezi minimální a maximální světlostí cílového zařízení. Pokud je zdrojovým zařízením doplňkové zařízení (monitor nebo projektor), je černá hmotnost určena jako 1,0 minus čistota barev vynásobená relativní lehkostí. Pokud je například zdrojovým zařízením monitor RGB, vypočítá se maximální hodnota a minimální hodnota R, G a B pro každou barvu a černá váha je určená vzorcem:

BW = (1,0 – (max(R;G;B) – min(R;G;B)) / max(R, G, B)) * relativní světlost

Pokud zdrojové zařízení podporuje subtractive coloration, například tiskárnu CMY, musí být jednotlivé barevné barvy "doplněny" (odečítané od 1,0) před použitím v předchozím vzorci. Pro tiskárnu CMY tedy R = 1,0 – C, G = 1,0 – M a B = 1,0 – Y.

Černé informace pro každou barvu zpracovávanou transformací barev se určují během procesu překladu barev. Informace, které jsou pouze černé, jsou určeny pouze v případě, že je zadána ochrana černé. Černá hmotnost se vždy určí, pokud model cílového zařízení podporuje černý barevný odstín. Černé informace se předávají cílovému modelu zařízení prostřednictvím metody ColorimetricToDeviceColorsWithBlack, která používá výsledný identifikátor LUT.

Všimněte si, že kvůli optimalizaci transformace barev dochází k výše uvedenému procesu pouze při vytváření optimalizované transformace LUT, ne během provádění TranslateColors metoda.

Optimalizace pro transformace s více než třemi zdrojovými kanály

Velikost optimalizované transformace je určena několika faktory: počet barevných kanálů ve zdrojovém zařízení, počet kroků v tabulce pro každý barevný kanál zdroje a počet barevných kanálů ve výstupním zařízení. Vzorec pro určení velikosti transformační tabulky je:

Size = Počet kroků na kanál zdroj\ zařízení(Number\ of\ channels\ in\ source\ device) x počet kanálů ve výstupním zařízení

Jak vidíte, velikost tabulky roste exponenciálně v závislosti na počtu kanálů ve zdrojovém zařízení. Mnoho zdrojových zařízení podporuje tři barevné kanály, například červené, zelené a modré. Pokud ale zdrojové zařízení podporuje čtyři kanály, například CMYK, velikost tabulky a čas potřebný k vytvoření tabulky se zvětšují podle počtu kroků. V CMS založeném na měření, kde se transformace vytvářejí "za běhu", může být tento čas nepřijatelný.

Pokud chcete zkrátit dobu potřebnou k vytvoření tabulky převodu barev, je možné využít dvě fakta. Za prvé, zatímco zdrojové zařízení může podporovat více než tři barevné kanály, zprostředkující barevný prostor nezávislý na zařízení (CIECAM02 Ja C b C ) má pouze tři barevné kanály. Za druhé, nejčasově náročná část zpracování není modelování zařízení (převod z barevných souřadnic zařízení na tristimulační hodnoty), ale mapování gamutů. Pomocí těchto faktů můžete vytvořit předběžnou tabulku převodu barev, která převádí barvy v barevném prostoru nezávislém na zařízení prostřednictvím kroků mapování gamutů a nakonec prostřednictvím výstupního barevného modelu zařízení. Konstrukce této tabulky má rozměr tři rozměry. Pak vytvoříme dimenzi čtyři konečné tabulky pro převod barev převedením kombinace zdrojových barev na mezilehlých prostorů nezávislých na zařízení a potom pomocí předběžné tabulky převodu barev dokončete převod na výstupní barevný prostor zařízení. Snížíte tak výpočet (počet kroků ve vyhledávací tabulce) počet\ kanálů\ gamut mapování výpočtů na počet kroků v zprostředkující tabulce ₃ mapování gamutů. I když musíte provést počet kroků v počtu kanálů\ výpočty modelování zařízení a trojrozměrných vyhledávání tabulek, je to ještě mnohem rychlejší než původní výpočet.

Předchozí proces bude fungovat dobře za předpokladu, že mezi modelem zdrojového zařízení a jakoukoli jinou komponentou v transformaci barev není potřeba informace předávat. Pokud ale výstupní zařízení i zdrojové zařízení podporují černou barvou, použije se při určování výstupního černého barevného zabarvení, proces správně nesdělí zdrojové černé informace. Alternativním postupem je vytvořit předběžnou tabulku převodu barev, která převádí barvy v barevném prostoru nezávislém na zařízení pouze prostřednictvím kroků mapování gamutů. Pak pomocí následujících kroků vytvořte tabulku 4 konečné barevné převody dimenzí: a) převeďte kombinace zdrojových barev na mezilehlý prostor nezávislý na zařízení, b) proveďte kroky mapování gamutů interpolací v předběžné tabulce barev místo použití skutečných procesů mapování gamutů a c) použijte výsledné hodnoty z kroků mapování gamutu a všechny informace o zdrojovém černém kanálu k výpočtu barevných barev výstupních zařízení pomocí modelu výstupního zařízení. Tento proces lze také použít, pokud jsou mezi zdrojovými a výstupními modely zařízení přenášeny informace, i když neexistuje žádný černý kanál; Pokud jsou například dva moduly implementovány s architekturou modulu plug-in, která umožňuje výměnu dat mezi moduly.

Předchozí dva procesy lze použít k efektivnímu zlepšení času potřebného k vytvoření čtyřrozměrné tabulky transformace barev.

CheckGamut

ICM volá CreateTransform a CreateMultiProfileTransform vezme slovo hodnot příznaků, z nichž jeden je ENABLE_GAMUT_CHECKING. Pokud je tento příznak nastaven, CITE musí vytvořit transformaci odlišně. Počáteční kroky jsou stejné: zdrojové a cílové camy musí být inicializovány, pak musí být inicializovány popisovače hranic zdrojového a cílového gamutu. Bez ohledu na zadaný záměr je nutné použít GMM CheckGamut. CheckGamut GMM by se měl inicializovat pomocí modelů zdrojových a cílových zařízení a popisovačů hranic gamutu. Transformace by však měla vytvořit zkrácenou transformaci, která se skládá ze zdrojového modelu zařízení, zdrojové kamery CAM, jakýchkoli intervencí GMM a gmm checkGamut. To zajišťuje, že výstup hodnot delta J, delta C a delta h pomocí cmM CheckGamut se stane konečným výsledným hodnotami.

Význam CheckGamut je jasný, pokud v transformaci existují pouze dva profily zařízení. Pokud existuje více než dva profily zařízení a více než dva gmmy, checkGamut hlásí, jestli barvy, které byly transformovány pomocí prvního modelu zařízení, a všechny kromě poslední GMM spadají do gamut cílového zařízení.

koncepty základní správy barev

schémata a algoritmy systému Windows Color System