次の方法で共有


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 つの色域境界と意図から初期化されます。 CreateMultiProfileTransform の呼び出しから作成されたデバイス モデルの各ペアの間に、色域マッピング モデルを作成する必要があります。 これは、デバイス モデルよりも 1 つ少ない色域マップ モデルを使用することを意味します。 意図の数はデバイス モデルの数と一致するため、必要以上に 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 印刷をエミュレートできます。 たとえば、モニター RGB に CMYK プリンターを使用すると、その CMYK プリンターの印刷をモニターでエミュレートする校正メカニズムが可能になります。 同様に、ハイファイ プリンターにも同じことが適用されます。 CMYKOGからRGBへの変換は、モニター上のCMYKOGプリンタの校正を可能にします。

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

均一なLUTは概念的に実装が簡単で、均一なLUTの補間は一般的に効率的ですが、入力次元に応じてLUTサイズは指数関数的に増加します。 実際、 d が均一な LUT で使用されるステップの数で、 n がソースカラー空間のチャネル数である場合、LUT のノード数は 、LUT 内のノード数の変数を示します。 明らかに、ノードの数はメモリ内に非常に多くのストレージを迅速に要求するため、最上位のコンピューティング システムでも需要を処理するのが困難です。 6 つまたは 8 つのチャネルを持つデバイスの場合、デバイス プロファイルの ICC 実装では、LUT でいくつかの手順を使用する必要があります。場合によっては、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次元サンプリンググリッドで構成されます。

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

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

次の 2 つの特殊なケースの LUT のみが定義されます。

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

開いている LUT: これは、各 Samp i に対して、 上付き文字 X (下付き 1) が 0 より大きい という追加の要件を持つ LUT です。 上付き d(i) を 1 に等しく表示 しても問題ありません。

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

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

ここで 、σ 添字 k. は "k 次元階層コレクション" です。階層ディメンションは 0 ではなく 3 から始まる点に注意してください。つまり、3 色材の組み合わせの補間は、メモリ要件が多すぎずに処理できるため、ポイントです。

LUT 階層の説明

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

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

  2. シグマ添字 4 を示します。 は、CMYK (または最初の 4 つの色材) の組み合わせに対する 1 つの閉じた LUT と 、Shows (n over 4) から 1 を引いた 値で構成されます。他のすべての 4 色材の組み合わせに対して LUT を開きます。 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 色材を n 色材の合計から選択します。

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

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

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

アルゴリズム #1

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

閉じたすべての LUT は、 d ステップ数と一様になります。

ディメンション k のすべてのオープン LUT には、各入力チャネルで同じ数のステップが表示され、ノードの間隔が等しくなります。つまり、各 Shows i equal to 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 17 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 階層には、関連する色材の組み合わせがあります。たとえば、 Shows C subscript 1, ..., C subscript k. (下 付き文字 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) を 1 に等しく表示する場合。 サンプル i には 1 ポイントしか含めず、1.0 にする必要があります。 次の i に進 みます。 それ以外の場合は、手順 3 に進みます。

手順 3: フィルター処理されたサンプルを、 C 添字 i. チャネルの昇順で並べ替えます。

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

ここで 、j が 1、2、...、d 添字仮置き (k) と等しいことを示 します。

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

なお、ステップ5は、LUT層が各チャンネルで異なるステップ数を有し得る理由である。 正則化の後、チャネル内のステップ数は、 d 添字仮 (k) を示す よりも小さい場合があります。

補間

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

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

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

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

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

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

[ Shows X subscript i less than... first node in i th channel for some i] (一部の i チャネルの最初のノード) に X 添字 i を表示する場合、デバイスの値は、階層と下位次元サブスペースの間の "ギャップ" に分類されます。 この MOI はそれ自体補間アルゴリズムとは関係ないので、任意の補間アルゴリズムを使用してこの "ギャップ" 内の補間を行うことができますが、推奨されるアルゴリズムは次の無期限補間です。

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

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

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

図 1: 統合モジュールのアーキテクチャ

前述のように、このアルゴリズムは、必要な LUT の合計サイズを最小限に抑えながら、着色剤の重要な組み合わせを含むデバイス空間の領域で合理的に高密度のサンプリングを実現できます。 次の表は、スパース LUT の実装に必要なノード数 (アルゴリズム #1 と通常モードを使用) と対応する均一な 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、x2、x3 には共通表記 x、y、z が使用されます。 これらの四面体は互いに不整合ではないことに注意してください。 補間の目的上、2 つの異なる四面体の共通面に横たわっている点は、補間で使用される四面体に関係なく、同じ補間値を持つことになります。 それでも、有限点を補間する標準的なシナリオでは、特定の入力点 (x1、...、xn) に対して、最初に、それが存在する四面体を決定します。または同等に、対応する順列σ、四面体間挿法は として定義されます。

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

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

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

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

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

X が V 添字 n と等しいことを示す場合は 、BC は前提条件 (a) によって vn で定義されているため、停止できます。 [ Shows X is not equal to V subscript n. ( Shows X is equal to V subscript n. ( Shows BProj subscript 1 (X) is is clear that shows BProj subscript 1 (X). has the σ(1)th component annihilated」。 つまり、境界面の 1 つに位置します。 BC が定義されている顔上にあるか、その場合は停止するか、別の barycentric プロジェクションを実行します 。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) の数式を示 します。最後に回答を取得します。

Interp(x) が y の上付き文字 (0) と等しいことを示します。

作業例

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

図 2: 作業例

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

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

(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 つを示しています。 座標平面上のグリッドは補間をサポートし、セルのすべての底面に必要な BC を提供します。残りの頂点は 1 つで、BC はキューブの下隅で提供されます。

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

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

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

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

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

ICCProfileFromWCSProfile

この機能のメイン目的は Vista 以前のバージョンの Windows をサポートするため、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 を作成します。

PRS 空間のサンプリングを使用した A T o B L 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 入力 UD セットが構築されます。 色材の値はスケーリングされ、範囲 0 にオフセットされます。 WCS プロファイルの最小および最大色材値を使用して 1。

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 LUT のマッピングは、測定ベースの CMS で使用されるマッピングとよく似ています。 知覚 PCS の場合は、色域外の色にクリッピングまたは圧縮を使用して、デバイスのもっともらしい色域を知覚 PCS 色域境界にマップします。 比色意図の場合は、明度をクリップする必要がある場合がありますが、彩度と色相の値はすべてカラーメトリック PCS の色域に収まります。

BToA LUT のマッピングは少し異なります。 比色の意図はまだ簡単です。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 プロファイルも生成されます。 その場合、三刺激行列 M ICC は、上記のモデル変換なしでWCSプロファイルのプライマリから直接得ることができる。 最後に、しかし重要な点の1つは、このトリスティムラスマトリックスがPCの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\ channels\ in\ source\ device) x 出力デバイス内のチャネル数

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

色変換テーブルを構築するために必要な時間を短縮するために、2つの事実を利用することができる。 まず、ソース デバイスが 3 つ以上のカラー チャネルをサポートしている場合でも、中間デバイスに依存しない色空間 (CIECAM02 Ja C b C ) には 3 つのカラー チャネルしかありません。 第 2 に、処理の最も時間のかかる部分は、デバイス モデリング (デバイスの色座標から tristimulus 値への変換) ではなく、色域マッピングです。 これらのファクトを使用して、色域マッピングの手順を通じてデバイスに依存しない色空間の色を変換し、最後に出力デバイスの色モデルを使用して色を変換する予備色変換テーブルを作成できます。 このテーブルの構造は、ディメンション 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 カラー システムのスキーマとアルゴリズム