次の方法で共有


WCS 変換作成アルゴリズム

変換の作成

 

シーケンシャル変換の実行

 

最適化された変換の作成

 

ICCProfileFromWCSProfile

 

黒の保存と黒の世代

 

色域を確認する

変換の作成

カラー変換のしくみを適切に説明するには、ICM 2.0 と CTE の内部の両方を介して完全な処理パスを説明すると便利です。 ICM 2.0 CreateColorTransformW 関数は、アプリケーションがカラー管理を実行するために使用できる色変換を作成します。 この関数は、 LOGCOLORSPACE と意図の入力からカラー コンテキストを作成します。 意図はベースラインICC色域マッピングアルゴリズムにマッピングされ、相関する。 その後、この関数は ICM 2.0 関数 CreateMultiProfileTransform を 呼び出して、一貫性のある色処理を行います。 CreateColorTransform 関数は、通常、内部最適化変換構造にデータをコピーします。

ICM 2.0 CreateMultiProfileTransform 関数は、プロファイルの配列と意図の配列、または単一のデバイス リンク プロファイルを受け入れ、アプリケーションがカラー マッピングを実行するために使用できる色変換を作成します。 これらの入力プロファイルと意図を処理して、デバイス モデル、色の外観モデル、色域境界の説明、および色域マッピング モデルを作成します。 これを行う方法を次に示します。

  • デバイス モデルは、DM プロファイルから直接初期化されます。 CreateMultiProfileTransform の呼び出しでは、プロファイルごとに 1 つのデバイス モデルが作成されます。
  • 色の外観モデルは、CAM プロファイルから直接初期化されます。 CreateMultiProfileTransform の呼び出しには、プロファイルごとに 1 つの CAM プロファイルがあります。 ただし、複数のプロファイルに同じ CAM プロファイルを指定できます。
  • 色域境界の説明は、デバイス モデル オブジェクトと CAM オブジェクトから初期化されます。 CreateMultiProfileTransform の呼び出しには、プロファイルごとに 1 つの色域境界の説明があります。
  • 色域マッピング モデルは、2 つの色域境界と 1 つの意図から初期化されます。 CreateMultiProfileTransform の呼び出しから作成されたデバイス モデルの各ペアの間に、色域マッピング モデルを作成する必要があります。 これは、デバイス モデルよりも 1 つ少ない色域マップ モデルを使用することを意味します。 意図の数はデバイス モデルの数と一致するため、必要以上に 1 つの意図もあります。 リスト内の最初の意図はスキップされます。 デバイス モデルと意図の一覧を確認し、色域マッピング モデルを作成します。 最初と 2 番目のデバイス モデルと 2 番目の意図を選択し、最初の色域マッピング モデルを初期化します。 2 番目と 3 番目のデバイス モデルと 3 番目の意図を選択し、2 番目の色域マッピング モデルを初期化します。 すべての色域マッピング モデルを作成するまで、この方法で続行します。

プロファイルが適切に処理され、すべての中間オブジェクトが作成および初期化されたら、次の呼び出しで CITE 変換を作成できます。 pDestCAMpDestDM は、CreateMultiProfileTransform の呼び出しの最後のプロファイルに関連付けられているものです。

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

プラグインのサポート

変換リストの設定に関連する問題の 1 つは、必要なプラグインが使用可能かどうかを検証することです。 次のモデル スイッチは、この動作を制御するためにこのポリシーを提供します。 この変換リストの管理は内部最適化変換構造のメソッドですが、各モデル メソッドはそれ自体と独自のパラメーター値のセットへのポインターを提供します。

モードは、次のいずれかである必要があります。

  • TfmRobust: 測定プロファイルで優先プラグインが指定されていて、プラグインが使用できない場合、新しい CTE システムはベースライン プラグインを使用します。 どちらのプラグインも使用できない場合、変換によってエラーが報告されます。
  • TfmStrict: ColorContext で優先プラグインが指定されている場合は、プラグインを使用できる必要があります。 優先プラグインが見つからない場合は、ベースライン プラグインが使用されます。 どちらのプラグインも使用できない場合、変換によってエラーが報告されます。
  • TfmBaseline: AddMeasurementStep ではベースライン プラグインのみを使用できます。 ColorContext で優先プラグインが指定されている場合、プラグインは無視されます。 ベースライン プラグインを使用できない場合、変換によってエラーが報告されます。

変換の実行

ICM 2.0 API TranslateColors 関数は、カラー変換で定義されているように、カラーの配列をソース カラー空間 から宛先カラー空間に変換します。 この関数は、キャッシュされた色の配列に対して内部的にチェックして、一般的に変換される色の即時一致を可能にします。 この変換では、チャネルごとのバイト配列あたり 8 ビットと、チャネルごとの 32 ビットの float 配列がサポートされます。 他のすべての形式は、新しい CTE に渡す前に変換されます。

ICM 2.0 API TranslateBitmapBits 関数は、定義された形式のビットマップの色を変換して、要求された形式で別のビットマップを生成します。 この関数は、キャッシュされた色の配列に対して内部的にチェックして、一般的に変換される色の即時一致を可能にします。 コード パス、サポート、テストの複雑さが多くなりすぎないようにするために、変換および補間エンジンで実際にサポートされるビットマップ形式の数は限られています。 この関数は、非ネイティブの受信および送信ビットマップ形式を、処理のためにネイティブでサポートされる形式に変換する必要があります。 この変換では、チャネルごとのバイト ビットマップあたり 8 ビットと、チャネルごとの 32 ビットの浮動小数点ビットマップのみがサポートされます。 他のすべての形式は、新しい CTE に渡す前に変換されます。

 

シーケンシャル変換の実行

ICM 関数 CreateColorTransformW または CreateMultiProfileTransform が呼び出されたときに dwFlags パラメーターに SEQUENTIAL_TRANSFORM ビットが設定されている場合、変換手順は順番に実行されます。 つまり、 CreateColorTransform 呼び出しまたは CreateMultiProfileTransform 呼び出しで指定された各デバイス モデル、色の外観モデル、および色域マッピング モデルを個別にステップ実行します。 これはプラグイン モジュールのデバッグに役立ちますが、最適化された変換を使用して実行するよりもはるかに遅くなります。 したがって、運用環境のソフトウェアでは、シーケンシャル モードで実行することはお勧めしません。 また、シーケンシャル モードと最適化モードで得られる結果に若干の違いがある場合があります。 これは、関数が連結されるときに発生するバリエーションが原因です。

最適化された変換の作成

最適化された変換は、多次元参照テーブルです。 テーブルは、入力色を変換に適用する多次元補間エンジン (四面体補間など) によって処理できます。 次のセクションでは、最適化された参照テーブルの作成方法について説明します。 その後のセクションでは、最適化された参照テーブル内で補間する方法について説明します。

スパース参照テーブル

従来のプリンターには CMYK インクがあります。 色域を拡張するには、システムに新しいインクを追加する方法があります。 通常追加されるインクは、CMYK インクの再現が困難な色です。 一般的な選択肢は、オレンジ、緑、赤、青などです。"見かけの解像度" を上げるには、濃淡の異なるインク (ライト シアン、ライト マゼンタなど) を使用できます。 実際には、プリンター デバイスには 4 つ以上のチャネルがあります。

プリンターは出力デバイスですが、デバイス空間から別の色空間への色変換も実行します。 CMYK プリンターの場合、これは CMYK から XYZ への変換、またはプリンターの "前方モデル" になります。 前方モデルを他の変換と組み合わせることにより、別のデバイスで CMYK プリントをエミュレートできます。 たとえば、CMYK をモニター RGB にプリンターすると、その CMYK プリンターの印刷をモニターでエミュレートする校正メカニズムが可能になります。 同様に、hi-fi プリンターにも同じことが適用されます。 CMYKOG から RGB への変換により、モニター上の CMYKOG プリンターの校正が可能になります。

このような色変換を実装する従来のアプローチは、均一なLUTを使用することです。 たとえば、CMYKOG プリンターの ICC プロファイルでは、ICC 仕様では、CMYKOG から ICC プロファイル接続空間 (CIELAB または CIEXYZ) に送る、前方モデルの CMYKOG デバイス空間に均一サンプリングを表す均一なLUT を格納する A2B1 タグが義務付けられています。 ICCデバイスリンクプロファイルは、CMYKOG空間から、CMYKOG空間で均一にサンプリングされたLUTの形で、デバイス空間を含む任意の色空間への直接変換を可能にします。 モノクロデバイス(1チャンネル)の場合を除き、大量のLUTが生成されるため、サンプリングは256レベル(ビット深度8)では行われません。 代わりに、ビット深度が低いサンプリングが使用されます。一般的な選択肢としては、9 (ビット深度 3)、17 (ビット深度 4)、33 (ビット深度 5) などがあります。 各チャネルのレベル数が 256 未満の場合、1 つのレベルがサンプリングされた 2 つのレベル間にある場合に結果を生成するために、LUT が補間アルゴリズムと組み合わせて使用されます。

均一なLUTは概念的に実装が簡単であり、均一なLUTの補間は一般的に効率的ですが、入力寸法と共にLUTサイズは指数関数的に増加します。 実際、 d が Uniform LUT で使用されるステップの数で、 n がソース カラー 空間内のチャネルの数である場合、LUT のノード数は 、LUT 内のノード数の変数を表示します。 明らかに、ノードの数はすぐにメモリ内の非常に多くのストレージを必要とするため、最上位のコンピューティング システムでも需要の処理が困難になります。 6 つまたは 8 つのチャネルを持つデバイスの場合、デバイス プロファイルの ICC 実装では、いくつかの手順を使用する必要があります。場合によっては、A2B1 テーブルの 5 ステップまででも、ギガバイト単位ではなくメガバイト単位でプロファイルを保持する必要があります。 明らかに、より少ない数のステップを使用すると、サンプルが少なくなるため、補間エラーが増加します。 LUT は均一である必要があるため、デバイス値の小さな変化によって大幅な色差が発生する可能性がある領域でも、色空間全体の精度が低下します。

着色剤が 4 つを超えるデバイスでは、デバイス空間全体の特定の部分空間が他の部分よりも重要です。 たとえば、CMYKOG 空間では、シアンインクとグリーンインクが互いに大きく重なっているため、一緒に使用されることはほとんどありません。 同様に、黄色とオレンジのインクは互いに大きく重なります。 ステップ数の均一な減少は、色空間全体の品質の全体的な低下と見なすことができます。これは、あり得ないインクの組み合わせには余裕がありますが、可能性の高い組み合わせや重要な組み合わせには適していません。

均一にサンプリングされたLUTは補間にシンプルで効率的ですが、寸法が大きくなるにつれて膨大なメモリ要件が課されます。 実際には、デバイスには 6 つまたは 8 つのチャネルがある場合でも、同時に使用されることはほとんどありません。 ほとんどの場合、色変換に対する入力色は数個の "アクティブ" 色材しか持たないため、低次元の色空間に存在します。 これはまた、次元が低い場合に補間が高速になるため、その低次元空間でより効率的に補間を実行できることを意味します。

したがって、このアプローチは、デバイス空間全体をさまざまな次元のサブスペースに階層化することです。 そして、より低い寸法(3つまたは4つの着色剤を組み合わせたもの)がより重要であるため、空間を階層化することによって、異なるサンプリングレートを適用することもできます。つまり、異なる数のステップが断片に対して行われます。より低い次元のためにサンプリング レートを増加させ、より高い次元のためにそれらを減らします。

表記を修正するために、 n は、サンプリングする色変換のソースカラー空間内のチャネルの数です。 また、特に指定がない限り、 n を入力ディメンションとして参照し、 5 以上の n を表示 することもできます。

基本的な構成要素は、入力 次元n の 1 つの均一な LUT ではなく、さまざまな入力ディメンションとサイズの LUT です。 より正確に言えば、LUT はユニットキューブに課される長方形の格子です。つまり、すべてのデバイス座標が [0, 1] の範囲に正規化されます)。 がlutの入力寸法である場合(n以下のVが必要ですが、n以下である必要があることに注意してください)、ν 1次元サンプリンググリッドで構成されます。

Samp i: 1 次元サンプリング グリッドを表示します。

ここで、すべての xjs は範囲 [0, 1]、 上付き文字 d(i) は 、少なくとも 1 である必要がある i 番目のチャネル サンプリングのステップの数であり、 X (下付き) d(i) のスプパースクリプトを示 します。1 である必要があります。 一方、 上付き文字 X (下付き 1) は 0 である必要はありません。

次の 2 つの特殊な場合の LUT のみが定義されます。

閉じた LUT: これは、各 Samp*i* に対して、 上付き文字 X (下付き 1) が 0 に等しいことを 示し、上 付き文字 d(i) が 2 以上 であることを追加要件とする LUT です。 均一な閉じた LUT は、チャネルごとに同じ 上付き文字 d(i) を示す 閉じた LUT であり、ノードは 0 から 1 の間で均一に間隔をあけられます。

オープンLUT:これは、各Samp iSHows上付きX(下付き1)が0より大きい という追加要件を持つLUTです。 上 付き文字 d(i) を 1 に設定 してもかまいません。

目標は、ユニット キューブ [0, 1] n を閉じた LUT とオープン LUN のコレクションに階層化し、コレクション全体がユニット キューブをカバーするようにすることです。 概念的には、これらの "LUT strata" をディメンション別に整理して、最上位レベルで整理する方が簡単です。

L U T 層をディメンション別に整理するための最上位レベルを示します。

ここで 、sigma 添字 k を示 します。"k -dimensional strata collection" です。strata ディメンションは 0 ではなく 3 から始まる点に注意してください。つまり、ポイントは、3 色材の組み合わせの補間がメモリ要件をあまり必要とせずに処理できるためです。

LUT ストラタの説明

この実装では、次の操作を行います。

  1. シグマ下付き 3 を示します。 は、3 つの入力を持つ閉じた LUT で構成されています。1 つは、 n 個の着色剤から選択された 3 つの着色剤の可能な組み合わせから 1 つです。

  2. シグマ下付き 4 を示します。 は、CMYK (または最初の 4 つの着色剤) の組み合わせに対する 1 つの閉じた LUT と、他のすべての 4 色材の組み合わせに対するオープン LUT (4 つ以上の n) から 1 を引いた 状態で構成されます。 CMYK の組み合わせを歌うことで、それが重要な組み合わせであることを確認できます。

  3. [Shows k equal to 5, ..., n. , Shows sigma subscript k. consists of Shows (n over k).open LUT, one for each possible combination of choosing k 色材 from the total of n 色材.

LUT のサイズは引き続き指定します。 開いている LUT と閉じた LUN の主な違いは、開いている LUN が重ならないようにし、閉じた LUN が境界面で重なることがあります。 オープン LUT の 1 次元サンプリングに 0 が含まれていないという事実は、基本的に、開いている LUT が境界面の半分を欠いていることを意味するため、"open" という名前になります。2 つの LUT が重複しない場合は、各チャネルで異なる数のステップまたはノードの場所を使用できます。 2 つの LUN が重複している場合も同じではありません。 その場合、ステップ数またはノード位置が異なる場合、2 つの LUT の交差部分にある点は、補間で使用される LUT に応じて異なる補間値を受け取ります。 この問題の簡単な解決策は、2 つの LUN が重なるたびに、同じ数のステップで均一サンプリングを使用することです。 つまり、以下の要件が適用されます。

閉じたすべての LUT (この実装の 3 色材 LUT と CMYKLUT) はすべて均一で、同じ数のステップを持つ必要があります。これは d と示されます。

次の 2 つのアルゴリズムを使用して、閉じた LUN のステップ 数 d とオープン LUT のステップ数を決定できます。

アルゴリズム #1

このアルゴリズムでは、外部入力は必要ありません。

閉じたすべての LUT は、 ステップ数 d で統一されます。

ディメンション k のすべてのオープン LUT には、各入力チャネルで同じ数のステップが表示され、ノードは等間隔です。つまり、各 Shows i が 1、2、...、k. に等しいことを示します。

Samp i: samp i アルゴリズムを表示します。

最後に、次の表 1 に dd (k ) を指定します。 "proof"、"normal"、"best" の 3 つのモードは、ICM 2.0 の品質設定です。 この実装では、証明モードのメモリ占有領域は最小で、最適モードはメモリ占有領域が最も大きくなります。

このアルゴリズムを実装するには、次のアルゴリズム #2 を呼び出す必要があります。 ユーザーは、ガイドとしてテーブルを使用して、独自のサンプリング場所を指定できます。

アルゴリズム #2

このアルゴリズムでは、"重要な" サンプリング場所のリストの形式で外部入力が必要ですが、より適応性が高く、メモリ領域を節約できる可能性があります。

必要な入力は、ユーザーが指定したデバイス値の配列です。 これらのデバイス値は、デバイスの色空間のどの領域が重要であるかを示します。つまり、どのリージョンをさらにサンプリングする必要があります。

閉じたすべての LUT は、アルゴリズム #1 で説明されているように 、d 個のステップ数で統一されます。 d の値を表 1 に示します。

(a) Uniform Closed LUT

校正モード 標準モード 最適なモード
d 9 十七 33

 

(b) LUT を開く

入力ディメンション 校正モード 標準モード 最適なモード
4 5 7 9
5 2 3 3
6 2 3 3
7 2 2 2
8 以上 2 2 2

 

表 1: アルゴリズムで使用される LUT サイズ

開いている各LUTは、各入力チャンネルで異なる数のステップを持つ可能性があり、サンプリング位置を均等に間隔を空ける必要はありません。 特定のオープンなLUT層には、関連する色材の組み合わせがあります。たとえば、 C 下付き文字 1、...、C 下付き文字 k. を表示 します。ここで、 C 添字 i. s は 1 から n の間の個別の整数です。 これらは、この層の「活性」着色剤に対応するチャネル指数である。

手順 1: この階層に含まれていないデバイス値の入力された配列を除外します。 デバイスの値は、チャネルの値のセットを表示する場合にのみ、階層に X 添字 1、X 下付き 2、...、X の下付き文字 n が含まれます。その他すべてのチャネルが 0 の場合のみです。 フィルター処理されたセットに N 個のエントリがある場合は、

フィルター処理されたセットに N 個のエントリがある場合に使用する数式を示します。

Shows i equal to 1, 2, ..., k. では、 次の手順 2 から 5 を繰り返します。

手順 2: 仮 の仮の d を示す場合 (k) 、Samp i は 1 つのポイントのみを持ち、1.0 にする必要があります。 次の i に進 みます。 それ以外の場合は、手順 3 に進みます。

手順 3: フィルター処理されたサンプルを、 "" チャネルで昇順に並べ替えます。

手順 4: ノードを使用して "仮" サンプリング グリッドを定義する

ここで 、j が 1、2、...、d の下付き仮題 (k) と等しいことを示 します。

手順 5: 仮のグリッドを正則化して、厳密な単調性に準拠し、1.0 で終わることを確認します。 配列は既に並べ替えられているため、仮のグリッド内のノードは既に単調な非宣言です。 ただし、隣接するノードは同一である可能性があります。 必要に応じて、同じノードを削除することで、この問題を解決できます。 最後に、この手順の後、エンドポイントが 1.0 未満の場合は、1.0 に置き換えます。

手順 5 は、LUT ストラタが各チャネルで異なる数のステップを持つ可能性がある理由です。 正則化の後、チャネル内のステップの数は、 仮の下付き文字 (k) を示す よりも少ない場合があります。

補間

UNIT CUBE の階層化は、開いている LUT ストラタと閉じた LUT ストラタによって構築できます。 この "スパース LUT 構造" を使用して補間を実行するには、次の手順に従います。 指定された入力デバイスの値が表示されているとします (X 添字 1、X 下付き文字 2、...、X 添字 n)。

手順 1: "アクティブ" チャネルの数を決定します。 これは、0 以外のチャネルの数です。 これにより、含まれる層を検索する階層ディメンション k が決定されます。 より正確には、アクティブなチャネルの数が 3 以下の場合、階層ディメンションは 3 になります。それ以外の場合、strata ディメンションはアクティブなチャネルの数と同じです。

手順 2: [ σ 添字 k. を表示 します] 内で、含まれる階層を検索します。 デバイス値は、その階層に対応するすべてのチャネルがゼロ以外の値を持ち、他のすべてのチャネルが 0 の場合、開いている階層に含まれます。 階層で表されていないすべてのチャネルが 0 の場合、デバイス値は閉じた階層に含まれます。 含まれる階層が見つからない場合は、エラー状態になります。 取り消し、エラーを報告します。 含まれる階層が見つかった場合は、次の手順に進みます。

手順 3: 含まれる層が閉じている場合、階層内の補間は既知の補間アルゴリズムで実行できます。 この実装では、アルゴリズムの選択は四面体補間です。 含まれる階層が開き、デバイスの値が厳密に階層内にある場合、つまり、

X の添字 i が次の値以上であることを示します。... i 番目のチャネルの最初のノード

ここで、i は階層のチャネル インデックスであり、四面体補間などの標準補間アルゴリズムが機能します。

[ Shows X subscript i less than... first node in i th channel for some i, then the device value falls into the "gap" between the stratum and the lower dimensional subspaces. この MOI はそれ自体の補間アルゴリズムには関係ないため、任意の補間アルゴリズムを使用してこの "ギャップ" 内を補間できますが、推奨されるアルゴリズムは次のトランスフィナイト補間です。

補間モジュールのアーキテクチャを図 1 の 2 つの部分に示します。

補間モジュール アーキテクチャのパート 1 を示す図。

補間モジュール アーキテクチャのパート 2 を示す図。

図 1: 補間モジュールのアーキテクチャ

前述のように、このアルゴリズムは、必要な LUT の合計サイズを最小限に抑えながら、着色剤の重要な組み合わせを含むデバイス空間の領域で合理的に高密度のサンプリングを実現できます。 次の表は、スパース LUT の実装に必要なノードの数 (アルゴリズム #1 と通常モードを使用) と、対応する UNIFORM LUT 実装の比較を示しています。

入力チャネルの数 スパース LUT Uniform LUT
5 142498 1419857
6 217582 24137567
7 347444 410338673
8 559618 6975757441

 

単位キューブ内の補間

長方形グリッドの場合の基本的なステップは、外側のセル内の補間です。 入力ポイントの場合、外側のセルを簡単に決定できます。 四角形のグリッドでは、外側のセルの各頂点 (コーナー ポイント) の出力値が指定されます。 また、インターポラントが満たす必要がある唯一の境界条件 (BC) でもあります。補間は、これらすべての点を通過する必要があります。 これらの境界条件は "不連続" ポイント上にあり、この場合はセルの 2n のコーナー ポイントです。ここで、n は色空間の次元です。

次に進む前に、境界条件の概念を形式化すると便利です。 外側のセルの境界 (n 次元の単位キューブ) のサブセット S の場合、S の境界条件は関数 BC: S → Rm の仕様です。ここで、m は出力ディメンションです。 言い換えると、Interp: [0,1]n→ Rm を表す可能性がある補間値は、S のすべての x に対して Interp(x) = BC(x) を満たす必要があります。

単位キューブの補間の標準シナリオでは、S はキューブの 2n 頂点である離散点のセットです。

境界条件を一般化して、前に説明した問題を解決し、ユニット キューブ内に新しい補間アルゴリズムを提供できるようになりました。 個別の境界ポイントのみを許可する代わりに、キューブの境界面全体に境界条件を適用できます。 正確な前提は次のとおりです。

(a) ポイント vn =(1,1,...,1) は特殊であり、個別の境界条件のみが許可されます。 つまり、n 個の境界面に xi=1 (i=1,...,n) の連続境界条件を適用することはできません。

(b) 残りの n 個の境界面のそれぞれに対して xi=0 (i=1,...,n) の境界条件を顔全体に適用できます。2 つの面が交差する場合は、面の境界条件が交差に一致する必要があります。

(c) 境界条件を持つ面に含まれていない頂点には、個別の (不連続) 境界条件があります。

離散境界条件を有限データと呼び、連続境界条件を無期限データと呼び、有限データと無期限データの補間について説明できます。

まず、この問題の特定の定式化の表記を設定するのに役立つ標準的な四面体補間(阪本特許で使用されているような)を確認します。 単位立方体[0,1]nをnに分割できることは知られている! 4 面体。n 個の記号の順列のセットによってパラメーター化されます。 より具体的には、このような四面体はそれぞれ不等式によって定義される

四面体の不等号の数式を示します。

ここで、σ:{1,2,..,n}→{1,2,...,n} は、"symbols" 1,2, ..., n の順列です。つまり、n 個のシンボルのセットの二次的なマッピングです。 たとえば、n = 3、σ = (3、2、1) の場合、σ(1)=3、σ(2)=2、σ(3)=1、対応する四面体は z≥y≥x で定義され、x1、y、z は x1、x2、x3 に使用されます。 これらの四面体は互いに不整合ではないことに注意してください。 補間の目的上、2 つの異なる四面体の共通面上にある点は、補間でどの四面体が使用されているかに関係なく、同じ補間値を持つことになります。 それでも、有限点の補間の標準的なシナリオでは、特定の入力点 (x1、...、xn) について、最初に、それが存在する四面体を決定します。または同等に、対応する順列σ、次に四面体補間は次のように定義されます。

四面体間外挿を定義する数式を示します。

ここで、 標準基底ベクトルの式を示 します。i=1、...、n、e1、...、en は標準基底ベクトルです。 一般化に進む前に、v0、v1、...、vn は四面体の頂点であり、 重心座標を示 します。これは "重心座標" であることに注意してください。

境界面上の VC の一般的なケースでは、重心投影の概念を使用できます。 以前と同様に、特定の入力ポイント (x1、...、xn) に対して、最初に、対応する順列σが存在する 4 面体を決定します。 次に、次のように一連の重心投影を実行します。 最初の図法は BProj 添字 1 (x) を示 しています。ポイントを平面に送信します。X の添字デルタ (1) が 0 に等しい 場合を除きます。ただし、 X が V 添字 n と等しい 場合を除きます。この場合は変更されません。 マップ BProj の正確な定義は次のように定義されます。

マップ BProj の正確な定義の数式を示します。

with P 添字 k および k = 1、2、...、n の数式を示します。

X が V 添字 n と等しい場合は 、BC が前提条件 (a) によって vn で定義されているため、停止できます。 X が V の下付き文字 n と等しくない 場合、 BProj 添字 1 (X) の 場合、σ(1)番目のコンポーネントが全滅していることは明らかです。 つまり、境界面の 1 つ上にあります。 BC が定義されている顔上にあるか、その場合は停止するか、 BProj 下付き文字 2 (X') を示す 別の重心投影を実行します。ここで、 X' は BProj の下付き文字 1 (X) と等しくなります 。 また、 X''= Bproj 添字 1 (X') が BC が定義されている顔上にある場合は、停止できます。それ以外の場合は、 BProj 添字 3 (X'') を示す 別のプロジェクションを実行します。 すべての投影は 1 つのコンポーネントを全滅させるので、有効なディメンションは減少するため、プロセスは最終的に停止する必要があります。 最悪のシナリオでは、次元 0 まで n 個の射影を実行します。つまり、予測 (c) に従ってキューブ上の頂点を定義すると、BC が定義されます。

K 投影が実行されていると仮定すると、次の操作を行います。

K 投影が実行されたと仮定して使用する式を示します。

x(0)= x、入力ポイント、BC は x(k) で定義されます。 次に、一連の出力ベクトルを定義してプロジェクションをアンワインドします。

一連の出力ベクトルの数式を示します。

ここで 、Y 上付き (K) の数式を示 し、最終的に回答を取得します。

y 上付き (0) と等しい Interp(x) を示します。

作業例

単位キューブを使用した補間の動作例を示す図。

図 2: 作業例

図 2 に示されている状況を考えてみましょう。n = 3、m = 1、次の VC があります。

(a) 頂点上の 4 つの個別の BCs

(0, 0, 1): β001

(0, 1, 1): β011

(1, 0, 1): β101

(1, 1, 1): β111

(b) 顔 x3=0 の連続 BC: F(x1, x2)

計算 #1: 入力ポイント x = (0.8、0.5、0.2)。 外側の四面体は、順列 <1、2、3>に関連付けられています。

第 1 投影: 最初の射影の方程式を示します。

これは既に顔 x3=0 上にありますので、停止できます。 その後、後方置き換えによって

最初のプロジェクションの回答を示します。 これが答えです。

計算 #2: 入力ポイント x = (0.2, 0.5, 0.8)。 外側の四面体は、順列 <3、2、1>に関連付けられています。

1 番目の射影: 計算 2 の最初の射影の数式を示します。

2 番目の射影: 計算 2 の 2 番目の射影の数式を示します。

3 番目の射影: 計算 2 の 3 番目の射影の数式を示 します。これは、顔 x3=0 上にあります。 その後、後方置き換えによって

後方置換の最初の 2 つの数式を示します。

後方置換の 3 番目の数式を示 します。これが最終的な答えです。

アプリケーション

(a) シーケンシャル四面体補間

シーケンシャル四面体補間を示す図。

図 3: シーケンシャル四面体補間

図 3 を参照してください。 互換性のないグリッドが適用されている 2 つの平面間を補間するには、図に示す特定の点 P を囲むセルを検討してください。 セルの "上" 頂点は、上平面のグリッドから直接取得されます。 底面の頂点は、底面のグリッドと互換性がないため、面全体は、下部平面のグリッドで補間によって取得された値を持つ BC を持つものとして扱われます。 その後、この設定が上記の前提条件 (a)、(b)、および (c) を満たすことは明らかであり、補間アルゴリズムを適用できます。

また、アルゴリズムによって補間問題の次元が 1 減少していることも明らかです。これは、結果が上のグリッドの頂点の値と、次元が 1 未満の下の平面での補間の線形の組み合わせであるためです。 同様のサンドイッチ平面の構成が下の平面に存在する場合は、その平面にプロシージャを適用して、寸法をさらに 1 減らすことができます。 この手順は、ディメンション 0 に達するまで続行できます。 この投影と補間のカスケードは、"シーケンシャル四面体補間" と呼ばれます。

(b) ギャップ補間

ギャップ補間を示す図。

図 4: ギャップ補間

これは、正のクアドラント内に厳密に座っているキューブに課されるグリッドです。 キューブ自体にはグリッドがあり、各座標平面には必ずしも互換性のないグリッドがあります。 キューブと座標平面の間の "ギャップ" には、"L 字形" の断面があり、標準的な手法には対応できません。 しかし、ここで紹介する手法では、このギャップをカバーする細胞を簡単に導入できます。 図 4 は、これらの 1 つを示しています。 座標平面上のグリッドは補間をサポートし、セルのすべての底面に必要な VC を提供し、残りの頂点は BC がキューブの下隅から提供されます。

実装に関する最後の注意事項

実際のアプリケーションでは、アルゴリズムの基本的な設定である "単位キューブ" がより大きな格子から抽出され、頂点の値には高価な計算が必要な場合があります。 一方、四面体補間では、単位キューブのすべての頂点のサブセットである四面体の頂点の値のみが必要であることは明らかです。 そのため、"遅延評価" と呼ばれるものを実装する方が効率的です。上記のアルゴリズムのソフトウェア実装では、ユニット キューブとその頂点の値を入力として受け取るサブルーチンを使用するのが一般的です。 遅延評価とは、頂点で値を渡す代わりに、頂点の値を評価するために必要な情報が、実際に評価を実行せずに渡されることを意味します。 サブルーチン内では、これらの値の実際の評価は、外側の四面体が決定された後、外側の四面体に属する頂点に対してのみ行われます。

高ダイナミック レンジの仮想 RGB ソース デバイスで使用するルックアップ テーブル

仮想 RGB デバイスとしてモデル化されたソース デバイスを使用して変換が構築される場合、ソース 着色剤の値が負の値であるか、unity (1.0) より大きい場合があります。 この場合、ソース デバイスは高ダイナミック レンジ (HDR) と呼ばれます。 この場合は特別な考慮事項が行われます。

HDR 変換の場合、各色材チャネルの最小値と最大値は、デバイスの色域境界から決定できます。 これらの値を使用すると、各着色剤チャネルに対して単純なスケーリングが適用され、最小着色剤と等しい着色剤値が 0.0 に変換され、最大着色剤と等しい着色剤値が 1.0 に変換され、0.0 から 1.0 の間で線形にマップされる値の線形スケーリングが行われます。

ICCProfileFromWCSProfile

この機能の主な目的は、Windows の Vista より前のバージョンをサポートするため、ICC 仕様 ICC.1:1998-09 で定義されているバージョン 2.2 ICC プロファイルを生成する必要があります。 特定のケース (次の表「ベースラインデバイスからICCプロファイルクラスマッピング」を参照)、WCSプロファイルからマトリックスまたはTRCベースのICCプロファイルを作成できます。 それ以外の場合、ICC プロファイルは LUT で構成されます。 次のプロセスでは、AToB および BToA LUT を作成する方法について説明します。 もちろん、ICCプロファイルには他のフィールドもあります。 一部のデータは WCS プロファイルから派生させることができます。 その他のデータの場合は、インテリジェントな既定値を開発する必要があります。 著作権は Microsoft に割り当てられます。これは、LUT の作成に使用されている Microsoft テクノロジであるためです。

この設計は、プラグインを含むすべての種類のデバイス モデルで機能する必要があります。プラグインにベースライン デバイス モデルが関連付けられている限り、基になるデバイスの種類を決定できます。

ICC プロファイルの作成の難しい部分は、AToB および BToA 参照テーブルを作成することです。 これらのテーブルは、RGB や CMYK などのデバイス空間と、CIELAB のバリアントであるプロファイル接続空間 (PCS) の間でマップされます。 これは基本的に、CITE 変換でデバイス空間からデバイス空間にマップするために使用されるカラー管理プロセスと同じです。 ただし、変換を行うには、次の情報が必要です。

  1. PCS の参照表示条件。

  2. PCS 色域を参照します。

  3. PCS 値と色度を変換するデバイス モデル。

WCS プロファイルとそれに関連付けられている CAM は、パラメーターとして提供されます。 測色と PCS エンコードの間で変換する 2 つのベースライン デバイス モデルがあります。 2 つ必要な理由を以下に説明します。

  1. PCS の参照表示条件は、ICC プロファイル形式仕様から取得できます。 ICC プロファイル形式仕様で提供される情報は、CMS で使用される CAM を初期化するために必要なすべてのデータを計算するのに十分です。 一貫性と柔軟性を確保するために、この情報は WCS カラー プロファイルに格納されます。

  2. WCS プロファイルを使用して、PCS の参照色域を定義するサンプルを格納することもできます。 CITE カラー管理システム (CMS) には、色域境界を作成する 2 つの方法があります。 1 つは、デバイス空間全体をサンプリングし、デバイス モデルを使用して測定値を作成することです。 2 つ目の方法は、プロファイルから測定されたサンプルを使用して、参照色域境界を作成する方法です。 ICC PCS の色域が大きすぎて有用な参照色域を作成できないため、最初の方法は不適切です。 しかし、2 つ目の方法は、柔軟なプロファイルベースのアプローチです。 参照 PCS の色域を再定義するには、PCS デバイス プロファイルの測定データを変更します。

  3. ICC PCSは理想的な装置のモデリングである。 実際のデバイスとして PCS のモデルを作成することで、スマート CMM で使用されるカラー管理プロセスを利用できます。 色測定から PCS エンコードへのデバイス モデルの作成は簡単です。 実際のカラーメトリック値と PCS でエンコードされた値の間でマップするだけです。 デバイス モデルの CMS インターフェイスでは XYZ 値のみがサポートされるため、XYZ と LAB の間でマップする必要がある場合もあります。 これはよく知られた変換です。 このモデルについては、セクション 7.9 および 7.10 のドキュメント 2.2.02 の「ベースライン デバイス モデル」で説明されています。

デバイスの色域が PCS の色域よりも大きい場合は、いくつかの色域マッピングを実行する必要があります。 この目的には、ベースライン GMM を使用できます。 適切に作成された ICC プロファイルには、相対 Colorimetric、Perceptual、および Saturation 意図のルックアップ テーブルがありますが、これらはすべて内部的に同じ LUT を指している可能性があることに注意してください。

A T o B L U T の作成を示す図。

図 5: AToB LUT の作成

このプロセスを図 5 に示します。 まず、デバイス モデルは DM プロファイル内のデータから初期化されます。 次に、次のようにデバイスの色域境界を構築する。 デバイス モデルからのデータのサンプリングは、デバイス モデルを通じて実行され、比色データが取得されます。 カラーメトリック データは CAM を介して実行され、外観データが作成されます。 外観データは、デバイスの色域境界を作成するために使用されます。

次に、参照 PCS 測定プロファイルのデータを使用して、PCS の色域境界を作成します。

GMM を初期化するために作成した 2 つの色域境界を使用します。 次に、デバイス モデル、GMM、PCS デバイス モデルを使用して変換を作成します。 変換を介してデバイス空間のサンプリングを実行して、AToB LUT を作成します。

P C S 空間のサンプリングを使用した A T o B L U T の作成を示す図。

図 6: BToA LUT の作成

図 6 は、BToA LUT の作成を示しています。 これは、ソースと宛先の役割が交換された AToB LUT の作成とほぼ同じです。 また、完全な PCS 色域をサンプリングして、LUT を作成する必要があります。

CAM(WCSのCIECAM02)がプロセスに関与するため、メディアホワイトポイントと PCS ホワイトポイント(ICCがD50の場合に義務付ける)との間の色の適応はCAMによって透過的に影響されることに注意してください。

HDR 仮想 RGB デバイス

HDR 仮想 RGB デバイスのプロファイルを生成する場合は、特別な考慮事項を考慮する必要があります。つまり、着色剤の値が 0.0 未満または 1.0 より大きいデバイス。 ATOB LUT の生成では、より大きな 1D 入力 LUN のセットが構築されます。 着色剤の値は、範囲 0 に合わせて拡大縮小およびオフセットされます。 1は、WCSプロファイルの最小および最大着色剤値を使用する。

HDR デバイスの色材スペースが完全に設定される可能性はないため、タグの 3-D LUT にも特別なサポートが提供されます。 まばらに設定された領域の色を処理するために、色材は 0.0 および 1.0 を超える外挿を実現できるように再コーディングされます。 使用される範囲は -1 です。 +4.

3-D LUT に再スケーリングが適用されているため、結果を 0 の範囲にマップし直すために、一連の 1D 出力 LUN が構築されます。 1.

複数の PCS

ICCは、1つのPCSがCMSのすべての意図された用途を満たすのに十分に柔軟ではないことを発見した。 プロファイル仕様のバージョン4では、ICCは実際に2つのPCSエンコーディングがあることを明らかにしました。 1 つは比色意図に使用されます。は、知覚の意図に使用されます。 (彩度の意図に PCS は指定されません。ICC はこの部分をあいまいなままにしています。)カラーメトリック PCS には最小および最大の明度が指定されていますが、彩度と色相の値は約 127 ±です。 この PCS は長方形のプリズムのように見えます。 前述のように、知覚 PCS ボリュームはインクジェット プリンターの色域に似ています。

2つのICC PCSには、2つの異なるデジタルエンコーディングもあります。 知覚 PCS では、値 0 は 0 の明るさを表します。 カラーメトリック PCS では、0 の値は PCS の最小明度を表し、0 より大きい値です。 この問題は、PCS エンコードごとに異なるデバイス モデルを使用することで解決できます。

色域マッピング

ICC プロファイルに AToB LUT を作成するには、デバイスの色域から適切な PCS 空間にマップします。 BToA LUT を作成するには、PCS 空間からデバイスの色域にマップします。 AToB LUN のマッピングは、測定ベースの CMS で使用されるマッピングとよく似ています。 知覚 PCS の場合は、任意の色域外色のクリッピングまたは圧縮を使用して、デバイスの妥当な色域を知覚 PCS 色域境界にマップします。 測色意図の場合は、明るさをクリップする必要がありますが、彩度と色相の値はすべてカラーメトリック PCS 色域に収まります。

BToA LUN のマッピングは少し異なります。 比色の意図はまだ簡単です。PCS 値をデバイスの色域にクリップするだけです。 しかしICCは、可能なすべてのPCS値が、知覚PCSの参照色域内の値だけでなく、あるデバイス値にマップされることを要求する。 そのため、GMM が参照色域外のソース カラーを処理できることを確認する必要があります。 これは、これらの色をデバイスの色域境界にクリッピングすることによって処理できます。

ベースライン デバイスから ICC プロファイル クラスへのマッピング

ベースライン デバイスの種類 ICC プロファイル クラス 注釈
RGB キャプチャ デバイス 入力デバイス ("scnr") PCS は CIELAB です。 AToB0Tag は、相対的な測色意図を持つ PCS へのデバイスです。
CRT、LCD モニター ディスプレイ デバイス ("mntr") PCS は CIEXYZ です。 モデル変換については、次を参照してください。
RGB プロジェクター 色空間 ("spac") PCS は CIELAB です。
RGB および CMYK プリンター 出力デバイス ("prtr") PCS は CIELAB です。
RGB 仮想デバイス (HDR 以外の場合) ディスプレイ デバイス ("mntr") PCS は CIEXYZ です。
RGB 仮想デバイス (HDR ケース) 色空間 ("spac") PCS は CIELAB です。

 

モニター・プロファイルの変換には、LUT のビルドは含まれませんが、代わりにマトリックスまたは TRC モデルの構築で構成されます。 ICCで使用されるモデルは、WCS CRTまたはLCDモデリングで使用されるモデルとは少し異なり、「黒補正」用語が欠落している。 具体的には

WCS モデル: W C S モデルを示します。

ICC モデル: I C C モデルを示します。

WCSモデルからICCモデルへの変換は次のように行われます。

新しい曲線を定義する:

新しい曲線を定義するマトリックスを表示します。

これらは 1 から 1 にマップされないため、トーン再現曲線ではありません。 正規化によって実現されます。 ICC モデルの最終的な定義は次のとおりです。

I C C モデルの最終的な定義を示します。

I C C モデルの最終的なマトリックスを示します。

HDR 以外の RGB 仮想デバイスの場合は、空間効率のために表示 ICC プロファイルも生成します。 その場合、三刺激行列 MICC は、上記のモデル変換なしで WCS プロファイルのプライマリから直接得ることができる。 最後の一つ, しかし重要, この三刺激マトリックスは、PCSのICC仕様に準拠するために、D50に色的に適応しなければならないということです. つまり、ICC プロファイルでエンコードされるマトリックスの各行のエントリは、それぞれ 96.42、100、および 82.49 に合計する必要があります。 現在の実装では、色順応はCAT02によって行われ、これはCAM02で使用される色適応変換でもあります。

黒の保存と黒の世代

黒い保存の実装は、ブラック チャネルをサポートするデバイスでのブラック チャネルの生成と結び付けられています。 これを実現するために、各ソースの色に関する情報が収集され、黒チャネルをサポートするデバイス モデルが、出力時に黒チャネルを最適に設定する方法を決定できるようになります。 黒の保持は、ある黒チャネル デバイス間で変換するカラー変換に関連しますが、黒チャネル変換先デバイスを含むすべての変換に対して黒の生成が実装されます。

ブラック チャンネル情報は、 BlackInformation と呼ばれるデータ構造に記録されます。 BlackInformation 構造体には、色に黒の色材のみが含まれているかどうかを示すブール値と、黒の重みと呼ばれる "黒" の度合いを示す数値が含まれています。 ブラック チャンネルをサポートするソース デバイスの場合、黒の重みはソースカラーの黒い着色剤の割合です。 黒チャネルを含まないソース デバイスの場合、黒の重みは他の着色剤と外観値を使用して計算されます。 「色純度」と呼ばれる値は、最大着色剤値と最小着色剤値の差を最大着色剤値で割ることによって計算されます。 "相対明度" と呼ばれる値は、色の明るさと宛先デバイスの最小明度の差を、宛先デバイスの最小と最大の明度の差で割って計算されます。 ソース デバイスが追加デバイス (モニターまたはプロジェクター) の場合、黒の重量は、1.0 から色の純度を引いた相対明度を乗算した値であると判断されます。 たとえば、ソース デバイスが RGB モニターの場合、色ごとに R、G、B の最大値と最小値が計算され、黒の重みが数式によって決定されます。

BW = (1.0 – (max(R,G,B) – min(R,G,B)) / max(R, G, B)) * 相対明度

ソース デバイスで CMY プリンターなどの減算色付けがサポートされている場合は、前の数式で使用する前に、個々の着色剤を "1.0 から減算" する必要があります。 したがって、CMY プリンターの場合、R = 1.0 – C、G = 1.0 – M、B = 1.0 – Y です。

色変換によって処理される各色の黒い情報は、色の翻訳プロセス中に決定されます。 黒のみの情報は、黒の保持が指定されている場合にのみ決定されます。 黒い重量は、宛先デバイス モデルが黒い着色剤をサポートしているかどうかを常に決定します。 黒い情報は ColorimetricToDeviceColorsWithBlack メソッドを使用して宛先デバイス モデルに渡されます。このメソッドでは、結果の LUT が使用されます。

色変換の最適化のため、上記のプロセスは最適化された変換 LUT の作成時にのみ発生し、TranslateColors メソッドの実行中には発生しないことに注意してください。

3 つ以上のソース チャネルを使用した変換の最適化

最適化された変換のサイズは、ソース デバイス内のカラー チャネルの数、各ソース カラー チャネルのテーブル内のステップ数、出力デバイスのカラー チャネルの数など、いくつかの要因によって決まります。 変換テーブルのサイズを決定する数式は次のとおりです。

Size = Number of steps per channel source\ device(Number\ of\ channels\ in\ source\ device) x number of channels in output device

ご覧のように、ソース デバイス内のチャネルの数に応じて、テーブルのサイズが指数関数的に大きくなります。 多くのソース デバイスでは、赤、緑、青などの 3 つのカラー チャネルがサポートされています。 ただし、ソース デバイスが CMYK などの 4 つのチャネルをサポートしている場合、テーブルのサイズとテーブルの構築に必要な時間は、ステップ数の係数で増加します。 変換が "オン ザ フライ" で構築される測定ベースの CMS では、今回は許容できない場合があります。

色変換テーブルを構築するために必要な時間を短縮するために、2つの事実を利用することができる。 まず、ソース デバイスが 3 つ以上のカラー チャネルをサポートしている場合でも、中間デバイスに依存しない色空間 (CIECAM02 Ja C b C ) には 3 つのカラー チャネルしかありません。 2 つ目に、処理の最も時間のかかる部分は、デバイス モデリング (デバイスの色座標から三刺激値への変換) ではなく、色域マッピングです。 これらのファクトを使用して、デバイスに依存しない色空間の色を色域マッピング手順を通じて変換し、最後に出力デバイスのカラー モデルを使用して色変換する予備色変換テーブルを作成できます。 このテーブルの構造は 3 次元です。 次に、ソースの色の組み合わせを中間のデバイスに依存しない空間に変換して、ディメンション 4 の最終的な色変換テーブルを構築し、暫定的な色変換テーブルを使用して、出力デバイスの色空間への変換を完了します。 そのため、計算 (ルックアップ テーブルのステップ数) から、チャネルの色域マッピング計算 の数\ を、中間テーブルの ₃ 色域マッピング計算のステップ数に減らします。 デバイス モデリングと 3 次元テーブル参照の (ルックアップ テーブル) 数\ チャネル の計算でステップ数を実行する必要がある場合でも、これは元の計算よりもはるかに高速です。

前のプロセスは、ソース デバイス モデルとカラー変換の他のコンポーネントとの間で情報を渡す必要がない場合に適しています。 しかし、出力装置とソース装置の両方が黒色着色剤をサポートし、かつソースブラック着色剤が出力黒着色剤を決定する際に使用される場合、ソースブラック情報を適切に通信することが失敗する。 別のプロセスとして、デバイスに依存しない色空間の色を色域マッピング手順のみを使用して変換する予備色変換テーブルを作成します。 次に、次の手順を使用して、ディメンション 4 の最終的な色変換テーブルを構築します。a) ソースの色の組み合わせを中間デバイスに依存しない空間に変換し、b) 実際の色域マッピング プロセスを適用する代わりに予備カラー テーブルで補間して色域マッピング手順を実行し、c) 色域マッピング手順とソースブラック チャネル情報から得られた値を使用して、出力デバイス モデルを使用して出力デバイスの色材を計算します。 このプロセスは、黒チャネルがない場合でも、ソースデバイスモデルと出力デバイスモデルの間で転送される情報がある場合にも使用できます。たとえば、2 つのモジュールが、モジュール間のデータ交換を可能にするプラグイン アーキテクチャで実装されている場合などです。

上記の 2 つのプロセスを使用して、4 次元カラー変換テーブルの構築に必要な時間を効果的に短縮できます。

CheckGamut

ICM は CreateTransform を呼び出し、 CreateMultiProfileTransform はフラグ値の単語を受け取り、そのうちの 1 つはENABLE_GAMUT_CHECKING。 このフラグが設定されている場合、CITE は変換を異なる方法で作成する必要があります。 最初の手順は同じです。ソースと宛先の CAM を初期化する必要があります。その後、ソースと宛先の色域境界記述子を初期化する必要があります。 指定した意図に関係なく、CheckGamut GMM を使用する必要があります。 CheckGamut GMM は、ソースと宛先のデバイス モデルと色域境界記述子を使用して初期化する必要があります。 ただし、変換では、ソース デバイス モデル、ソース CAM、介在する GMM、CheckGamut GMM で構成される切り捨てられた変換を作成する必要があります。 これにより、CheckGamut CMM によって出力されるデルタ J、デルタ C、およびデルタ h 値が最終的な結果の値になります。

変換に 2 つのデバイス プロファイルしかない場合、CheckGamut の意味は明確です。 2 つ以上のデバイス プロファイルと 2 つ以上の GMM がある場合、CheckGamut は、最初のデバイス モデルで変換された色と、最後の GMM 以外のすべての色が宛先デバイスの色域内に収まるかどうかを報告します。

基本的な色管理の概念

Windows カラー システムのスキーマとアルゴリズムの