(57)【特許請求の範囲】
【請求項１】
均等色空間上の複数の格子点のそれぞれに対して、該格子点上の色値が該均等色空間において移動すべき方向を表すベクトルを割り当てる割り当てステップと、
前記均等色空間上の入力色値のうち任意の入力色値に対する移動の方向を、前記ベクトルを用いた補間演算によって求め、該求めた移動の方向に当該任意の入力色値を前記ベクトルの分だけ移動させる移動ステップと、
前記移動した後の前記任意の入力色値が出力装置の色再現域の内にあるか否か判定する判定ステップと、
前記判定ステップにて前記移動した後の前記任意の入力色値が出力装置の色再現域の内にあると判定された場合は該色再現域にある当該移動した後の色値を出力し、
前記判定ステップにて前記移動した後の前記任意の入力色値が出力装置の色再現域の内にあると判定されなかった場合は当該移動した後の色値を前記移動ステップにおける次の任意の入力色値とすることで、前記均等色空間上の入力色値を前記出力装置の色再現域にマッピングするマッピングステップと、
を含むことを特徴とする色再現域圧縮方法。
【請求項２】
前記割り当てステップは、
前記均等色空間上の各格子点に、該均等色空間の原点に向かうベクトルを割り当てるステップと、
ソース色再現域のガマット表面上の特定の入力色値と前記出力装置の色再現域のガマット表面上の特定の出力色値との対応関係を定義するステップと、
前記定義された対応関係に基づいて、前記原点に向かうベクトルの向きを修正するステップと、
を含むことを特徴とする請求項１に記載の色再現域圧縮方法。
【請求項３】
前記修正するステップは
ａ）前記定義された対応関係における前記特定の入力色値と前記特定の出力色値とを結ぶラインを定義し、
ｂ）前記定義されたラインを構成する単位ベクトルを求め、
ｃ）前記求められた単位ベクトルの開始位置から所定の範囲内にある格子点を取得し、  取得された格子点と前記開始位置との距離を計算して、該計算された距離に基づく重みをかけたベクトルを前記取得された格子点のベクトルに加算し、該加算によって得られたベクトルを単位ベクトル化し、
ｄ）すべての前記定義された対応関係について、前記ａ）からｃ）までのステップを繰り返す、
ことによって、前記原点に向かうベクトルの向きを修正する
ことを特徴とする請求項２に記載の色再現域圧縮方法。
【請求項４】
前記対応関係は、前記特定の入力色値と前記特定の出力色値とを結ぶ中継点の色値を用いて定義され、
前記ラインは、前記特定の入力色値から前記中継点の色値を経由して前記特定の出力色値に至るラインとして定義される、
ことを特徴とする請求項３に記載の色再現域圧縮方法。
【請求項５】
請求項１〜４のいずれか1項に記載の色再現域圧縮方法を用いて色再現域を圧縮する圧縮手段と、
前記圧縮手段によって圧縮された均等色空間上の色値を、前記出力装置に依存する色空間の色値に変換する手段と、
を備えることを特徴とするプロファイル生成装置。
【請求項６】
請求項１〜４のいずれか１項に記載の方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カラー画像形成装置のカラーマッチングに用いられるカラープロファイルの生成における色再現域圧縮方法に関するものである。
【背景技術】
【０００２】
紙などの記録媒体上にCyan,Magenta,Yellow,Blackといったカラートナーを用いて画像形成を行う電子写真記録方式のプリンタ（画像形成装置）は、記録媒体の反射光をカラートナーが吸収することによって発色する減法混色を色再現の原理としている。一般に、画像形成装置等の出力装置における色再現域（以下、「プリンタ色再現域」と呼ぶ。）は、自発光によって発色する加法混色を色再現の原理としたモニタ等の入力装置における色再現域よりもせまい傾向にある。
【０００３】
このため、従来より、画像形成装置では表現できない色を、画像形成装置で表現可能な色再現域に圧縮するガマットマッピングという技術が数多く提案されている。
【０００４】
その最も原始的な手法として、明度・彩度・色相で表現され知覚的に均等なLab色空間において、マッピングされる色再現域（以下、「ソース色再現域」と呼ぶ。）の色を、明度と色相を保存して彩度方向に圧縮し、プリンタ色再現域にマッピングする手法がある。また、ソース色再現域の色をプリンタ色再現域の内部に設けた仮想的な収束点に向けて圧縮してプリンタ色再現域にマッピングする手法もある。
【０００５】
さらにこのような原始的な手法に改良を加えたものも提案されている。例えば、Lab色空間上において、ソース色再現域中の色の明度に応じて明度及び色相を保存して彩度方向に圧縮する方法と、プリンタ色再現域の内部に設けた仮想収束点に向けて圧縮する方法とを切り替える技術が提案されている（特許文献１参照）。
【０００６】
また、ソース色再現域中の色のＬａｂ色空間上での位置に応じて、プリンタ色再現域内の仮想収束点をさまざまに設定してガマットマッピングを行う技術も提案されている（特許文献２参照）。
【０００７】
特許文献1や特許文献２のような技術は、Ｌａｂ色空間のような均等色空間上での幾何学的なルールに基づいて、ソース色再現域からプリンタ色再現域へのマッピング方向を決定するもので、上記以外にも数多くの技術が提案されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００１−２５７９００号公報
【特許文献２】特開平９−０９８２９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１や特許文献２で開示されるような幾何学的なルールは、例えばYMCKRGBといった比較的少数の色について定義されたソース色再現域とプリンタ色再現域との対応関係を大域的に拡大することによって決定される。そのため、ルール決定において重視された色以外の色については対応関係を必ずしも適切には定義できない。
【００１０】
また、幾何学的なルールは、多くの場合、3次元で表現される均等色空間を2次元平面に縮退させた上で決定される。そのため、例えば、ソース色再現域のある色相平面に存在する色をプリンタ色再現域の他の色相平面に存在する色にマッピングすることが適当な場合でも、そのようなマッピングは実現できない。
【００１１】
さらに、上記のような問題を様々なルールを導入して解決しようとした場合、ルール設計が複雑になりすぎるという新たな問題が生じてしまっていた。
【課題を解決するための手段】
【００１２】
本発明に係る色再現域圧縮方法は、均等色空間上の複数の格子点のそれぞれに対して、該格子点上の色値が該均等色空間において移動すべき方向を表すベクトルを割り当てる割り当てステップと、前記均等色空間上の入力色値のうち任意の入力色値に対する移動の方向を、前記ベクトルを用いた補間演算によって求め、該求めた移動の方向に当該任意の入力色値を前記ベクトルの分だけ移動させる移動ステップと、前記移動した後の前記任意の入力色値が出力装置の色再現域の内にあるか否か判定する判定ステップと、前記判定ステップにて前記移動した後の前記任意の入力色値が出力装置の色再現域の内にあると判定された場合は該色再現域にある当該移動した後の色値を出力し、前記判定ステップにて前記移動した後の前記任意の入力色値が出力装置の色再現域の内にあると判定されなかった場合は当該移動した後の色値を前記移動ステップにおける次の任意の入力色値とすることで、前記均等色空間上の入力色値を前記出力装置の色再現域にマッピングするマッピングステップと、を含むことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複雑なルール設定を行うことなく、より精密な制御が可能なガマットマッピングを実現できる。
【図面の簡単な説明】
【００１４】
【図１】システム構成の一例を示す図である。
【図２】ＭＦＰにおける印刷データ受信から印刷処理までの処理の流れを示す図である。
【図３】プロファイル生成装置のソフトウェアモジュール構成を示す図である。
【図４】プロファイル生成時設定画面の一例を示す図である。
【図５】パッチ画像データの一例を示す図である。
【図６】プロファイル生成の動作フローを示す図である。
【図７】ガマットマッピングルックアップテーブルを求める処理フローを示す図である。
【図８】ガマットマッピングルックアップテーブルの説明図である。
【図９】ガマットマッピングの初期化処理の流れを示すフローチャートである。
【図１０】ガマットマッピング処理の詳細を示すフローチャートである。
【図１１】ガマットマッピング処理結果の一例を示す図である。
【図１２】マッピング対応関係の定義付けを模式的に示した図である。
【図１３】実施例２に係るガマットマッピングルックアップテーブル生成処理の流れを示すフローチャートである。
【図１４】ベクトルフローの一例を示す図である。
【図１５】Ｌａｂ色空間上でのベクトルがどのように変化するのかを模式的に示した図である。
【図１６】実施例３に係るマッピング対応関係の一例を示す図である。
【図１７】実施例３に係るガマットマッピングルックアップテーブル生成処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について図面を用いて説明する。
【実施例１】
【００１６】
図１は、本実施例に係る色再現域の圧縮を実現するためのシステム構成の一例を示す図である。
【００１７】
このシステムは、ホストＰＣ１００とＭＦＰ(Multi Function Peripheral)１１０の２つの主要な構成要素からなり、ホストＰＣ１００とＭＦＰ１１０はネットワーク１３０を介して接続されている。
【００１８】
ホストＰＣ１００は、プロファイルを生成・調整する処理を行うホストコンピュータであり、分光測色器１２０が接続されている。
【００１９】
ホストＰＣ１００は、ＨＤＤ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＵＳＢ  Ｉ／Ｆ１０４、ＣＰＵ１０５、マウス・キーボード１０６、ディスプレイ１０７、ＮｅｔｗｏｒｋＩ／Ｆ１０８、内部バス１０９で構成される。
【００２０】
ＨＤＤ１０１は、プログラムやデータを格納する記憶装置である。
【００２１】
ＲＯＭ１０２は、ホストＰＣ１００起動時のプログラムを格納するメモリである。
【００２２】
ＲＡＭ１０３は、ＨＤＤ１０１やＲＯＭ１０２から読み込まれたプログラムを格納したり、プログラム実行の際の一時的なデータ記憶を行うメモリである。
【００２３】
ＵＳＢ  Ｉ／Ｆ１０４は、外部機器との接続のインターフェースを行う。
【００２４】
ＣＰＵ１０５は、様々なプログラムを実行して各部を制御するためのプロセッサである。
【００２５】
マウス・キーボード１０６は、ユーザからの入力を受け付ける入力手段である。
【００２６】
ディスプレイ１０７は、入力情報や処理結果等の状態表示を行う表示手段である。
【００２７】
ＮｅｔｗｏｒｋＩ／Ｆ１０８は、ネットワーク１３０とのインターフェース動作を行う。
【００２８】
内部バス１０９は、上記各部を接続するバスである。
【００２９】
分光測色器１２０は、ＵＳＢ  Ｉ／Ｆ１０４を介してホストＰＣ１００に接続されており、ホストＰＣ１００からの所定のコマンド通信にしたがって、色値の測定を行う。
【００３０】
ＭＦＰ１１０は、ネットワーク１３０経由で受信したホストＰＣ１００からの印刷指示と印刷データに従って印刷処理を行う。
【００３１】
ＭＦＰ１１０は、ＨＤＤ１１１、ＲＯＭ１１２、ＲＡＭ１１３、ＮｅｔｗｏｒｋＩ／Ｆ１１４、画像処理部１１５、ディスプレイ+タッチパネル１１６、ＣＰＵ１１７、プリンタ部１１８、内部バス１１９で構成される。
【００３２】
ＨＤＤ１１１は、プログラムやデータを格納する記憶装置である。
【００３３】
ＲＯＭ１１２は、ＭＦＰ１１０起動時のプログラムを格納するメモリである。
【００３４】
ＲＡＭ１１３は、ＨＤＤ１１１やＲＯＭ１１２から読み込まれたプログラムを格納したり、プログラム実行の際の一時的なデータ記憶を行うメモリである。
【００３５】
ＮｅｔｗｏｒｋＩ／Ｆ１１４は、ネットワーク１３０とのインターフェース動作を行う。
【００３６】
画像処理部１１５は、ＮｅｔｗｏｒｋＩ／Ｆ１１４を介して受信した印刷データをプリンタ部１１８での印刷処理に適した画像に変換する。
【００３７】
ディスプレイ＋タッチパネル１１６は、入力情報や処理結果等の状態表示を行うための表示手段の機能、およびユーザからの入力を受け付ける入力手段の機能を備える。
【００３８】
ＣＰＵ１１７は、様々なプログラムを実行して各部を制御するためのプロセッサである。
【００３９】
プリンタ部１１８は、画像処理部１１５において変換されたＣＭＹＫデータを基に記録媒体（紙）上に画像を印刷する。プリンタ部１１８の記録方式としては、電子写真方式あるいはインクジェット方式などが挙げられる。
【００４０】
内部バス１１９は、上記各部を接続するバスである。
【００４１】
次に、ＭＦＰ１１０が、印刷データを受信して印刷処理動作を行うまでの処理の流れを図２を用いて説明する。なお、本処理は、ＨＤＤ１１１からＲＡＭ１１３に読み込まれたプログラムをＣＰＵ１１７が実行することによって実現される。
【００４２】
まず、ＣＰＵ１１７は、ＮｅｔｗｏｒｋＩ／Ｆ１１４を介してホストＰＣ１００から印刷データ（ＰＤＬデータ）を受信し、ＲＡＭ１１３に格納する（２０１）。
【００４３】
次に、ＣＰＵ１１７は、格納されたＰＤＬデータを解釈する（２０２）。
【００４４】
ＰＤＬデータは、描画データ毎にＲＧＢ値やＣＭＹＫ値の色値を持っている。そこで、ＣＰＵ１１７は、次に、その色値をプリンタで再現するためのＣＭＳ処理を行う（２０３）。具体的には、モニタやオフセット印刷機の色情報を示すソースプロファイル（２０６）と、プリンタの色情報を示すデスティネーションプロファイル（２０７）とを組み合わせて、モニタや印刷機の色をプリンタで再現するための色情報を生成する処理を行う。ホストＰＣ１００で生成されるプロファイルは、ＭＦＰ１１０のＨＤＤ１１１上に転送され、ＣＭＳ処理のデスティネーションプロファイルとして用いられる。
【００４５】
ＣＭＳ処理を終えた後、ＣＰＵ１１７は、ラスタライズ処理を行う（２０４）。すなわち、ＣＭＳ処理されたＰＤＬデータをプリンタ部１１８の解像度に合わせた画像にビットマップ展開する処理を行う。
【００４６】
そして、ＣＰＵ１１７は、展開したビットマップデータを画像処理部１１５に送る。画像処理部１１５で、プリンタ部１１６に適した画像処理が行われた後、画像はプリンタ部１１８に転送される（２０５）。
【００４７】
次に、ホストＰＣ１００上で動作するプログラムとして実現される、プロファイル生成装置のソフトウェアモジュール構成について、図３を用いて説明する。
【００４８】
プロファイル生成制御モジュール３００は、プロファイル生成処理に関する制御の全般を担い、以下の各モジュール及び各部を統括的に制御する。すなわち、プロファイル生成用パッチ作成モジュール３０１、パッチ出力制御モジュール３０２、ガマットマッピングＬＵＴ生成モジュール３０４、プロファイル生成演算モジュール３０５を制御する。また、分光測色器制御Ｉ／Ｆ３０３、測色値保存部３０６、ガマットマッピングＬＵＴ保存部３０７、プロファイル保存部３０８を制御する。以下、各モジュール及び各部における処理について説明する。
【００４９】
プロファイル生成用パッチ作成モジュール３０１は、分光測色器１２０のタイプ情報を基にプロファイル生成のためのパッチ画像データを作成する。作成されたパッチ画像データはプロファイル生成制御モジュール３００に送られ、プロファイル生成制御モジュール３００を介して、パッチ出力制御モジュール３０２に送られる。
【００５０】
パッチ出力制御モジュール３０２は、プロファイル生成制御モジュール３００から受け取ったパッチ画像データを、ＣＭＳ処理を行うことなく出力する旨の印刷指示と共にＭＦＰ１１０に送る。ＭＦＰ１１０では、受け取った印刷指示に基づいてパッチ画像データを出力する。そして、分光測色器制御Ｉ／Ｆ３０３を介して、ＭＦＰ１１０から出力されたパッチ画像上のパッチの測定が制御される。得られた測色値はプロファイル生成制御モジュール３００に送られる。プロファイル生成制御モジュール３００は取得した測色値を測色値保存部３０６に渡す。測色値保存部３０６は渡された測色値情報をＨＤＤ１０１に格納する。
【００５１】
ガマットマッピングＬＵＴ生成モジュール３０４は、パッチ画像データのパッチ信号値（ＣＭＹＫ値）、パッチ画像の測色値（Ｌａｂ値）、および所定のパラメータの情報に基づいて色再現域圧縮を行うための情報であるガマットマッピングＬＵＴを生成する。生成されたガマットマッピングＬＵＴは、プロファイル生成制御モジュール３００を介してガマットマッピングＬＵＴ保存部３０７に送られ、ガマットマッピングＬＵＴ保存部３０７によってＨＤＤ１０１に格納・保存される。なお、“ＬＵＴ”は、ルックアップテーブルの略である。
【００５２】
プロファイル生成演算モジュール３０５は、パッチ画像データのパッチ信号値（ＣＭＹＫ値）、パッチ画像の測色値（Ｌａｂ値）、ガマットマッピングＬＵＴ、および所定のパラメータの情報に基づいてプロファイルを生成する。生成されたプロファイルは、プロファイル生成制御モジュール３００を介してプロファイル保存部３０８に送られ、プロファイル保存部３０８によってＨＤＤ１０１に格納・保存される。
【００５３】
次に、ガマットマッピングＬＵＴやプロファイルの生成時に参照されるパラメータについて説明する。
【００５４】
図４は、使用するパラメータ等をユーザに入力させるためにディスプレイ１０７に表示される、プロファイル生成時設定画面（Ｂｕｉｌｄ設定画面）の一例を示している。
【００５５】
Ｂｕｉｌｄ設定画面４００には、各種設定値を入力するためのフィールドやチェックボックス等が含まれる。
【００５６】
４０１は生成されたプロファイルを保存する際のファイル名を入力させるテキストフィールドであり、４０２は測色データを保存する際のファイル名を入力させるテキストフィールドである。そして、４０３はプロファイル生成のターゲットとなるプリンタを指定するフィールドである。
【００５７】
４０４はガマットマッピングＬＵＴの格子点数を指定するチェックボックスであり、４０５はプロファイルのＬａｂ→ＣＭＹＫのＬＵＴの格子点数を指定するチェックボックスである。
【００５８】
４０６は、Ｌａｂ→ＣＭＹＫのＬＵＴを生成する際の色分解テーブルの設定であり、トナーあるいはインクの最大載り量を指定するフィールドである。ここでは、理論上の上限値（４００％）に対して、２４０％が指定されている。
【００５９】
そして、４０７は墨入れ量を指定するフィールドであり、４０８は分光測色器のタイプを指定するフィールドである。４０９は、プロファイルの生成動作を開始するための開始ボタンである。
【００６０】
次に、プロファイル生成用パッチ作成モジュール３０１で作成されるパッチ画像データについて説明する。
【００６１】
図５は、作成されたパッチ画像データの一例を示す図である。
【００６２】
プロファイル生成用パッチ作成モジュール３０１は、まず、プリンタの用紙サイズに対応する画像全体枠５００を生成し、そして、使用する分光測色器１２０のタイプに応じたパッチを画像全体枠５００内に配列する。ここでは、配列するパッチの個数を、ＣＭＹＫのうちＣＭＹは同じ分割数の個数を取り、ＣＭＹの分割数はKの濃度に応じて以下の通りの組み合わせを取るものとする。
Ｋ          ＣＭＹ
０          ６ｘ６ｘ６
２０        ６ｘ６ｘ６
４０    ６ｘ６ｘ６
６０    ６ｘ６ｘ６
８０    ４ｘ４ｘ４
１００    ３ｘ３ｘ３
【００６３】
分割数が６ｘ６ｘ６の場合、ＣＭＹの取る信号値は０，２０，４０，６０，８０，１００（％）となり、ＣＭＹでの組み合わせ数は、２１６個となる。分割数が４ｘ４ｘ４の場合、ＣＭＹの取る信号値は０，３３，６６，１００（％）となり、ＣＭＹの組み合わせ数は、６４個となる。分割数が３ｘ３ｘ３の場合、ＣＭＹの取る信号値は、０，５０，１００（％）となり、ＣＭＹの組み合わせ数は、２７個となる。したがって、パッチの総個数は、９５５個となる。ＣＭＹの増加は、Ｃ→Ｍ→Ｙ→Ｋの順で値が増加していくものとする。一番左上のパッチ５０１は、ＣＭＹＫ＝（０，０，０，０）、つまり、何も印字しないパッチである。
【００６４】
本発明におけるプロファイルは、デバイス独立色空間からデバイス依存色空間への変換のためのＬＵＴを持つものとし、本実施例では、デバイス独立色空間として均等色空間で代表的なＬａｂ色空間、デバイス依存色空間としてＣＭＹＫ色空間を用いるものとする。よって、上述の通りプロファイルの持つＬＵＴは、均等に分割した３次元のＬａｂ格子点上にＣＭＹＫデータを格納した、Ｌａｂ→ＣＭＹＫのＬＵＴであるものとする。この際の格子点数は、図４に示されるように１７ｘ１７ｘ１７や３３ｘ３３ｘ３３などの値をとるものとするが、これらに限定されるものではない。また、後述するように、Ｌａｂ→ＣＭＹＫのＬＵＴを生成する処理には、ＲＧＢ→ＣＭＹＫの色分解処理も含むが、色分解処理をプロファイルには含まれないものとする場合には、プロファイルはＬａｂ→ＲＧＢのフォーマットを持つものとしてもよい。さらに、デバイス独立色空間としては、Ｌａｂ以外の均等色空間であるＬｕｖ、ＣＩＥＣＡＭ０２のような色の見えモデルを導入したＪＣｈ色空間などであってもよい。
【００６５】
次に、ガマットマッピングＬＵＴのフォーマットについて説明する。ガマットマッピングＬＵＴも、プロファイルの持つＬＵＴと同様、３次元の格子点を持つＬＵＴである。このＬＵＴが持つ格子点上の値は、格子点のＬａｂ値が移動すべき方向を示すＬａｂ色空間でのベクトル値である。全ての格子点が持つベクトル値は単位ベクトルであって、移動の方向は、概略プリンタの色再現域に向かっている。なお、本実施例においてガマットマッピングＬＵＴの格子点数は、プロファイルの格子点数とは独立に設定するものとしているが、独立に設定するのではなくプロファイルの格子点数と常に同じ格子点数となるようにしてもよい。
【００６６】
次に、プロファイル生成演算モジュール３０５における、プロファイル生成の処理フローについて説明する。プロファイルの生成は、プロファイル生成制御モジュール３００から、パッチ信号値（ＣＭＹＫ値）、パッチ測色値（Ｌａｂ値）および設定されたパラメータの情報を得て行う。
【００６７】
図６の（ａ）は、プロファイルのＬａｂ→ＣＭＹＫ ＬＵＴを生成する処理フローを示すブロック図である。プロファイル生成演算モジュール３０５は、ガマットマッピング処理（Gamut Mapping）６００、Ｌａｂ→ＤｅｖｉｃｅＲＧＢ変換処理６０１、色分解処理６０２の各処理によって、Ｌａｂ→ＣＭＹＫ ＬＵＴを生成する。
【００６８】
プロファイル生成フローにおいて、プロファイル生成演算モジュール３０５は、最初にＬａｂ格子点値を設定されたパラメータに従って発生する。設定された格子点数が１７ｘ１７ｘ１７の場合、Ｌの値は０から１００まで６．２５刻みで増分し、ａ，ｂの値は、−１２８から１２８まで１６刻みで増分するように取り、ｂ→ａ→Ｌの順で昇順に発生させる。設定された格子点数が３３ｘ３３ｘ３３の場合、Ｌの値は０から１００まで３．１２５刻みで、ａ，ｂの値は−１２８から１２８まで８刻みで増分するように取り、ｂ→ａ→Ｌの順で昇順に発生させる。なお、最終的にＬａｂ値とＣＭＹＫ値の対応関係が定義できればよいので、Ｌ，ａ，ｂの昇順（或いは降順）はこれに限られない。
【００６９】
Ｌａｂ格子点値が取るＬａｂ値はプリンタの色再現域よりも広いため、まず、ガマットマッピング処理により色空間圧縮を行う。ガマットマッピング処理６００では、発生したＬａｂ格子点値を、ＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４及びガマットマッピングＬＵＴ６０３の情報を用いて色空間圧縮する。詳細なアルゴリズムについては後述する。
【００７０】
ここで、ＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４は、ＤｅｖｉｃｅＲＧＢ値を入力とし、Ｌａｂ値を出力とする３次元のＬＵＴであって、プリンタの色再現域を決定する情報である。Ｌａｂ→ＣＭＹＫ ＬＵＴを生成する処理に先立って（具体的にはパッチ画像の測色を行った後）、このＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４を求める処理が行われ、測色値保存部３０６を介してＨＤＤ１０１上に格納される。
【００７１】
図６のｂ）は、ＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４を求める処理フローを示すブロック図である。まず、ＤｅｖｉｃｅＲＧＢ格子点値を発生させる。格子点数が例えば３３ｘ３３ｘ３３であるとすると、ＤｅｖｉｃｅＲＧＢ格子点値は、０から２５５まで８刻みで増分し、Ｂ→Ｇ→Ｒの順で昇順に発生する。このように発生したＤｅｖｉｃｅＲＧＢ値を、色分解処理６０２によってＣＭＹＫ値に変換する。この時、色分解処理６０２のパラメータは、プロファイル生成フローで用いたものと同じパラメータを用いる。その後、ＣＭＹＫ→Ｌａｂ測色値テーブル６２１をＬＵＴとして用いた補間演算６２０を行って、色分解されたＣＭＹＫ値に対するＬａｂ値を得る。なお、ＣＭＹＫ→Ｌａｂ測色値テーブル６２１は、パッチ画像におけるパッチ信号値（ＣＭＹＫ値）と測色値保存部３０６によって保存された測色値（Ｌａｂ値）とを対応付けたＬＵＴである。このようにして、ＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４が求められる。
【００７２】
一方、ガマットマッピングＬＵＴ６０３は、Ｌａｂ→Ｌａｂのルックアップテーブルである。ガマットマッピングＬＵＴ６０３の生成フローについては、後で詳細に説明する。
【００７３】
プロファイル生成フローの説明に戻る。
【００７４】
ガマットマッピング処理６００に続くＬａｂ→ＤｅｖｉｃｅＲＧＢ変換処理６０１では、色空間圧縮されたＬａｂ値を、上述のようにして求めたＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４を用いて、出力装置に依存する色空間の色値であるＤｅｖｉｃｅＲＧＢ値に逆変換する。この逆変換の演算も様々な既知の方法があり、どのような方法を用いても構わない。
【００７５】
最後に、色分解処理６０２が、上述のＢｕｉｌｄ設定画面で設定された、トナーやインクの最大載り量や墨入れ量の情報を基に、ＤｅｖｉｃｅＲＧＢ値をＣＭＹＫ値に変換する。
【００７６】
これらの処理によりＬａｂ格子点値に対応するＣＭＹＫ値を演算して、プロファイルを完成させる。
【００７７】
以上のようにして、プロファイル生成制御モジュール３００はプロファイルを生成し、生成したプロファイルと測色値情報は、プロファイル保存部３０８によってＨＤＤ１０１に格納・保存される。
【００７８】
次に、ガマットマッピングＬＵＴ生成モジュール３０４における、ガマットマッピングＬＵＴ６０３の生成フローについて説明する。ガマットマッピングＬＵＴ６０３の生成は、プロファイル生成制御モジュール３００から、ＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４を得て行う。このガマットマッピングＬＵＴ６０３を求める処理は、先に述べたＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４の生成と同様、プロファイルの生成に先立って実行され、ガマットマッピングＬＵＴ保存部３０７を介してＨＤＤ１０１上に格納される。図７は、ガマットマッピングＬＵＴ６０３を求める処理フローを示す図である。
【００７９】
ガマットマッピングＬＵＴ生成処理７００では、まず、パラメータ設定において指定された格子点数に従ってＬａｂ格子点値を発生する。格子点数が例えば３３ｘ３３ｘ３３の場合、Ｌの値は０から１００まで３．１２５刻みで増分し、ａ，ｂの値は、−１２８から１２８まで８刻みで増分するように取り、ｂ→ａ→Ｌの順で昇順に発生させる。もちろん、プロファイルの格子点と同様、格子点の数は、３３ｘ３３ｘ３３に限るものではない。そして、格子点発生したＬａｂ値に対する移動量であるＬａｂベクトル値（単位ベクトル）を計算して、Ｌａｂ格子点値と計算されたＬａｂベクトル値との対応関係を、ガマットマッピングＬＵＴ６０３とする。生成したガマットマッピングＬＵＴ６０３は、ガマットマッピングＬＵＴ保存部３０７を介してＨＤＤ１０１に格納される。このようにして均等色空間上の各格子点に、単位ベクトルが割り当てられる。
【００８０】
図８は、ガマットマッピングＬＵＴ６０３の説明図であって、図８の（ａ）はＬａｂ色空間のａ*−ｂ*平面への投影を、図８の（ｂ）はａ*−Ｌ*平面への投影をそれぞれ示している。図８の（ａ）及び（ｂ）における投影図上の格子８００はＬａｂ色空間を均等に分割した格子点を示すものであるが、説明の簡便さのため、すべての格子点は示されていない。図８の（ａ）及び（ｂ）において斜線で示される領域８０１はプリンタ色再現域を示している。
【００８１】
本実施例においては、各Ｌａｂ格子点とプリンタ色再現域８０１の中央（原点）に位置する収束点８０４とを結ぶ直線（図８では破線で示される）８０３を想定し、その直線に沿って収束点８０４に向かう単位ベクトル８０２を割り当てている。具体的には、以下のとおりである。
【００８２】
・  読みこんだＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４の中から収束点８０４      を求める。（ＤｅｖｉｃｅＲＧＢ（２５５，２５５，２５５）に対応するＬａｂ測色値（Ｌｗ，ａｗ，ｂｗ）及び、ＤｅｖｉｃｅＲＧＢ（０，０，０）に対応するＬａｂ測色値（Ｌｋ，ａｋ，ｂｋ）を取り出し、収束点８０４を（（Ｌｗ＋Ｌｋ)／２，０，０）とする。）
【００８３】
・  各格子点（Ｌｇ，ａｇ，ｂｇ）と収束点８０４の座標を元に、ベクトル（（Ｌｗ＋Ｌｋ)／２−Ｌｇ， ａｇ， ｂｇ）の方向に沿った単位ベクトルを以下の式（１）を用いて計算する。
((Lw+Lk)/2-Lg, ag, bg)/| ((Lw+Lk)/2-Lg, ag, bg)|      ・・・式（１）
【００８４】
・  計算された単位ベクトルを、格子点（Ｌｇ，ａｇ，ｂｇ）に割り当てる。
【００８５】
このような処理を全ての格子点に適用し、ガマットマッピングＬＵＴ６０３を生成する。
【００８６】
次に、プロファイル生成フローの中で実行される、ガマットマッピング処理６００の詳細について説明する。
【００８７】
ガマットマッピング処理６００の実行に際しては、プロファイル生成フローの開始時に、初期化を行う必要がある。そこで、この初期化処理について、まず説明する。図９は、ガマットマッピングの初期化処理の流れを示すフローチャートである。
【００８８】
ステップ９０１において、ＣＰＵ１０５は、ガマットマッピング処理６００に必要な情報であるガマットマッピングＬＵＴ６０３とＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４をＨＤＤ１０１から読み込む。
【００８９】
ステップ９０２において、ＣＰＵ１０５は、読み込んだガマットマッピングＬＵＴ６０３に対して変数の定義を行う。具体的には、読み込んだガマットマッピングＬＵＴ６０３の格子点数がN個だとした場合、Ｌａｂ格子点のＬａｂ値をＬａｂ＿ｇｒｉｄ（Ｎ）、各格子点に割り当てられたベクトルの値をＶｅｃ＿ｇｒｉｄ（Ｎ）と定義する。このような定義付けが完了すると、ガマットマッピングの初期化処理は終了する。
【００９０】
続いて、ガマットマッピング処理６００の内容について説明する。図１０は、ガマットマッピング処理６００の詳細を示すフローチャートである。なお、以下の説明での加算／減算は全てベクトル値の演算を意味するものとする。
【００９１】
ステップ１００１において、ＣＰＵ１０５は、入力されたＬａｂ値（入力色値）をＬａｂ＿ｉｎ 、出力するＬａｂ値（出力色値）をＬａｂ＿ｍａｐｐｅｄと定義する。この場合において“入力されたＬａｂ値”は、プロファイル生成演算モジュール３０５が発生させたマッピング元となるＬａｂ格子点値であり、“出力するＬａｂ値”は、マッピング結果となるＬａｂ値である。
【００９２】
ステップ１００２において、ＣＰＵ１０５は、任意のＬａｂ＿ｉｎ（＝任意の入力されたＬａｂ値）がプリンタ色再現域の外にあるのか内にあるのかを判定する。この場合のプリンタ色再現域の内外判定は、Ｌａｂ＿ｉｎと収束点とを結ぶ直線と、プリンタ色再現域のガマット表面（ＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４の最外殻にあたる平面）との関係を調べることによって達成される。つまり、Ｌａｂ＿ｉｎと収束点とを結ぶ直線が、プリンタ色再現域のガマット表面と交わらないのなら、Ｌａｂ＿ｉｎはプリンタ色再現域の内側にあると判定される。一方、Ｌａｂ＿ｉｎと収束点とを結ぶ直線が、プリンタ色再現域のガマット表面と交わる場合には、Ｌａｂ＿ｉｎはプリンタ色再現域の外にあると判定される。なお、プリンタ色再現域のすべてのガマット表面について交わるかどうかをチェックしてもよいが、およそ交わる可能性のないガマット表面を除いた特定の平面についてのみ交わるかどうかをチェックするようにしてもよい。このようなチェックによって、任意のＬａｂ＿ｉｎがプリンタ色再現域の外にあると判定された場合は、ステップ１００３に進む。一方、プリンタ色再現域の内にあると判定された場合は、後続のステップ１００３〜ステップ１００７の処理を行う必要がないので、ステップ１００８に進む。
【００９３】
ステップ１００３において、ＣＰＵ１０５は、Ｌａｂ＿ｍａｐｐｅｄにＬａｂ＿ｉｎを代入する。
【００９４】
ステップ１００４において、ＣＰＵ１０５は、Ｌａｂ＿ｍａｐｐｅｄの位置における移動量（単位ベクトル）Ｖｅｃを、ガマットマッピングＬＵＴ６０３を用いた補間演算によって算出する。ガマットマッピングＬＵＴ６０３はＬａｂ値を格子点としたルックアップテーブルであり、既知の３次元入力３次元出力のＬＵＴ補間演算が使用できる。Ｌａｂ＿ｍａｐｐｅｄの位置における移動量Ｖｅｃが求められればよいので、補間演算の方法については問わない。
【００９５】
ステップ１００５において、ＣＰＵ１０５は、算出された移動量ＶｅｃをＬａｂ＿ｍａｐｐｅｄに加算する。
【００９６】
ステップ１００６において、ＣＰＵ１０５は、移動量Ｖｅｃが加算されたＬａｂ＿ｍａｐｐｅｄがプリンタ色再現域の外にあるのか内にあるのかを判定する。この場合のプリンタ色再現域の内外判定は、上述のステップ１００２における処理とほぼ同様である。すなわち、Ｌａｂ＿ｍａｐｐｅｄと収束点とを結ぶ直線と、プリンタ色再現域のガマット表面との関係を調べることによって達成される。このようなチェックによって、移動量Ｖｅｃが加算されたＬａｂ＿ｍａｐｐｅｄがプリンタ色再現域の外にあると判定された場合は、ステップ１００４に戻る。一方、プリンタ色再現域の内側にあると判定された場合は、ステップ１００７に進む。
【００９７】
ステップ１００７において、ＣＰＵ１０５は、ステップ１００５で移動量Ｖｅｃが加算される前の“Ｌａｂ＿ｍａｐｐｅｄ−Ｖｅｃ”と“Ｌａｂ＿ｍａｐｐｅｄ”とを結ぶ直線がガマット表面と交差する点の色値を求め、マッピング後のＬａｂ値として出力する。
【００９８】
ステップ１００８において、ＣＰＵ１０５は、未処理の入力Ｌａｂ値があるかどうかを判定する。未処理の入力Ｌａｂ値がある場合には、ステップ１００２に戻る。一方、すべての入力Ｌａｂ値について処理を完了した場合には、本処理を抜ける。
【００９９】
以上の処理によって、与えられた入力色値（Ｌａｂ値）に対応するマッピング後の出力色値（Ｌａｂ値）が得られる。
【０１００】
図１１は、以上のような色再現域圧縮処理により得られる結果の一例を示す図である。
【０１０１】
図１１において、１１０１はプリンタ色再現域であり、図８の８０１と同じである。なお、図８における格子点はガマットマッピングＬＵＴの格子点であったのに対し、図１１における格子点はプロファイルの格子点である。ここでは、同じ格子点を持つものとして図示してある。Ｌａｂ格子点１１００が、ガマットマッピングＬＵＴ６０３で定義されるベクトル１１０２（図８における単位ベクトル８０２）に従って軌跡１１０３に沿って移動していき、プリンタ色再現域１１０１のガマット表面上の点１１０４に収束しているのが分かる。
【０１０２】
このように本実施例に係るガマットマッピング処理においては、より直接的に入力色値のマッピング先が指定される。そのため、複雑なルール設定を行うことなくガマットマッピングを行うことができる。
【実施例２】
【０１０３】
次に、均等色空間上でのより細かい移動制御が可能なガマットマッピングルックアップテーブルの生成方法について、実施例２として説明する。
【０１０４】
本実施例に係るガマットマッピングＬＵＴの生成では、マッピング元となるソース色再現域のガマット表面上の色値（特定のＬａｂ値）と、プリンタ色再現域のガマット表面上の色値（マッピング後の狙いとするＬａｂ値）との対応関係を必要とする。図１２の（ａ）及び（ｂ）はそのような対応関係の定義付けを模式的に示した図である。
【０１０５】
図１２の（ａ）及び（ｂ）において、斜線の領域１２０１はプリンタ色再現域を示し、その外側にある領域１２０２はソース色再現域を示している。この場合において、線分１２０３はプリンタ色再現域１２０１のガマット表面上の白（Ｗｈｉｔｅ）から赤（Ｒｅｄ）を結んでおり、破線で示された曲線１２０４はソース色再現域１２０２のガマット表面上の白（Ｗｈｉｔｅ）から赤（Ｒｅｄ）を結んでいる。
【０１０６】
このような状況において、ソース色再現域１２０２における白（Ｗｈｉｔｅ）から赤（Ｒｅｄ）にかけての色をプリンタ色再現域１２０１における白（Ｗｈｉｔｅ）から赤（Ｒｅｄ）で再現する場合、本実施例では、マッピングの対応関係を複数定義する。具体的には、ソース色再現域１２０２のガマット表面上のある点がプリンタ色再現域１２０１のガマット表面上のどの点に対応するのかを示す対応点の情報（両矢印１２０５で示される）を複数定義する。
【０１０７】
次に、このようにして定義されたマッピング対応関係を実現するガマットマッピングＬＵＴ６０３を構築する方法について説明する。
【０１０８】
図１３は、上述したマッピング対応関係、およびＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４を入力とする、ガマットマッピングＬＵＴ生成処理７００における処理の流れを示すフローチャートである。
【０１０９】
ステップ１３０１において、ＣＰＵ１０５は、ＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４を読み込み、ガマットマッピングＬＵＴを指定された格子点数に応じて初期化する。ここで行う初期化は、例えば実施例１で説明したような方法で、プリンタ色再現域内の収束点に向かう方向を持ったベクトルを各格子点に割り当ててもよいし、予め作成され保存されているガマットマッピングＬＵＴを読み込んで初期値としてもよい。後者の方法であれば、毎回、ガマットマッピングＬＵＴをゼロから作成する手間を省くことができる。
【０１１０】
ステップ１３０２において、ＣＰＵ１０５は、初期化したガマットマッピングＬＵＴのＬａｂ格子点のＬａｂ値をＬａｂ＿ｇｒｉｄ（Ｎ）、各格子点に割り当てられたベクトルをＶｅｃ＿ｇｒｉｄ（Ｎ）と定義する。Ｎは格子点数であり、３３ｘ３３ｘ３３などの値である。
【０１１１】
ステップ１３０３において、ＣＰＵ１０５は、マッピング対応関係（対応点）の情報を読み込む。このマッピング対応関係を示す対応点の組数（図１２における両矢印１２０５で示される数）は多いほど望ましく、また、色空間全域にわたっている方がより望ましい。
【０１１２】
ステップ１３０４において、ＣＰＵ１０５は、読みこんだ全てのマッピング対応点について、その出発点と目的点とを結ぶラインを構成するような複数（Ｌ個）の単位ベクトルを生成して、それぞれの単位ベクトルの開始位置を求める。この場合の出発点と目的点とを結ぶラインは直線である。
【０１１３】
ステップ１３０５において、ＣＰＵ１０５は、生成したＬ個の単位ベクトルの開始位置をｆｌｏｗ＿ｓｐ（Ｌ）,その単位ベクトル量をｆｌｏｗ＿ｖｅｃ（Ｌ）として、ラインを構成する単位ベクトルの集まりをベクトル列（ベクトルフロー）として保存する。図１４は、本ステップで保存されるベクトルフローの一例を示す図であり、図１２における両矢印１２０５に対応するようなベクトルフロー１４０１がそれぞれ生成されているのが分かる。
【０１１４】
ステップ１３０６において、ＣＰＵ１０５は、未処理のマッピング対応関係（対応点の組）があるかどうかを判定する。未処理の対応点があれば、ステップ１３０４に戻り、次の対応点についてステップ１３０４〜ステップ１３０５の処理を繰り返す。すべての対応点についてベクトルフローが得られていれば、ステップ１３０７に進む。
【０１１５】
ステップ１３０７において、ＣＰＵ１０５は、ベクトルフローを構成する単位ベクトルについて、ｆｌｏｗ＿ｓｐ（Ｌ）から所定の距離Ｄの範囲内にある格子点を、格子点Ｌａｂ＿ｇｒｉｄ（Ｎ）の集合の中から取得する。そして、取得されたＭ個のＬａｂ格子点をＬａｂ＿ｇｒｉｄ（Ｍ）とする。ここで距離Ｄは、対応点の定義がＬａｂ格子点に影響を及ぼすように、少なくともＬａｂ格子点の間隔の数値よりも２倍以上大きい数であることが望ましい。
【０１１６】
ステップ１３０８において、ＣＰＵ１０５は、Ｌａｂ＿ｇｒｉｄ（Ｍ）とｆｌｏｗ＿ｓｐ（Ｌ）との距離ｄを求める。
【０１１７】
ステップ１３０９において、ＣＰＵ１０５は、Ｌａｂ＿ｇｒｉｄ（Ｍ）に対応する格子点上のベクトルＶｅｃ＿ｇｒｉｄ（Ｍ）に対して、距離ｄの関数であるＦ（ｄ）をｆｌｏｗ＿ｖｅｃ（Ｌ）に掛けた上で加算する。ここで、Ｆ（ｄ）は、距離が０の時に最大値１を取り、距離が離れるにつれて値が小さくなっていくような、例えば以下のような式で表される関数である。
F(d) = 1 / (d^4 + 1)          ・・・式（２）
【０１１８】
ここで、図１５は、ステップ１３０７〜ステップ１３０９の処理によって、Ｌａｂ色空間上でのベクトルがどのように変化するのかを模式的に示した図である。
【０１１９】
簡単化のため、格子点Ｌａｂ＿ｇｒｉｄ（Ｍ）上のＶｅｃ＿ｇｒｉｄ（Ｍ）が、４つのＦｌｏｗ＿ｖｅｃによって受ける影響について説明する。
【０１２０】
Ｆｌｏｗ＿ｓｐ（１）からＬａｂ＿ｇｒｉｄ（Ｍ）との距離をｄ１とすると、Ｆｌｏｗ＿ｖｅｃ（１）がＬａｂ＿ｇｒｉｄ（Ｍ）上のベクトルに及ぼす影響は、Ｆｌｏｗ＿ｖｅｃ（１） ＊ ｆ（ｄ１） の加算である。同様に、Ｆｌｏｗ＿ｖｅｃ（２）〜Ｆｌｏｗ＿ｖｅｃ（４）を順に重み付け加算していく。これを式で表すと以下のとおりである。
【０１２１】
Vec_grid(M)＝Vec_grid(M)+Flow_vec(1)*f(d1)+Flow_vec(2)*f(d2)+Flow_vec(3)*f(d3)+Flow_vec(4)*f(d4)        ・・・式（３）
【０１２２】
そして、最終的に、Ｌａｂ＿ｇｒｉｄ（Ｍ）上のＶｅｃ＿ｇｒｉｄ（Ｍ）は、ベクトル１４００のようになり、Ｆｌｏｗ＿ｖｅｃ（１）〜Ｆｌｏｗ＿ｖｅｃ（４）で示されるベクトルの方向に近づいているのが分かる。
【０１２３】
最後に、上記加算によって得られたベクトル１４００が単位ベクトル化され、ベクトル１４０１が得られる。
【０１２４】
図１３のフローの説明に戻る。
【０１２５】
ステップ１３１０において、ＣＰＵ１０５は、未処理のベクトルフローがあるかどうかを判定する。未処理のベクトルフローがあれば、ステップ１３０７に戻り、次のベクトルフローについてステップ１３０７〜１３０９の処理を繰り返す。すべてのベクトルフローについて処理が終了していれば、ステップ１３１１に進む。
【０１２６】
ステップ１３１１において、ＣＰＵ１０５は、全てのＬａｂ格子点Ｌａｂ＿ｇｒｉｄ（Ｎ）に対応づけられたＶｅｃ＿ｇｒｉｄ（Ｎ）を単位ベクトル化（正規化）する。
【０１２７】
ステップ１３１２において、ＣＰＵ１０５は、Ｌａｂ＿ｇｒｉｄ（Ｎ）とＶｅｃ＿ｇｒｉｄ（Ｎ）との対応関係を、ガマットマッピングＬＵＴ６０３として、ガマットマッピングＬＵＴ保存部３０７を介してＨＤＤ１０１に格納する。
【０１２８】
このような処理によって、Ｌａｂ格子点上に割り当てられる単位ベクトルに対してマッピング対応関係（対応点）の方向付けを反映し、単位ベクトルの向きをより適切なものに修正することができる。そして、用意するマッピング対応関係の情報を増やすことで、より精密なガマットマッピングのためのガマットマッピングＬＵＴの生成が可能となる。
【実施例３】
【０１２９】
実施例２では、マッピング対応関係を２つの対応点（ソース色再現域のガマット表面上の点とプリンタ色再現域のガマット表面上の点の２点）によって定義した。続いて、マッピング対応関係を、対応点同士を結ぶ１以上の中継点を含めた計３点以上の点によって定義する態様について、実施例３として説明する。
【０１３０】
図１６は、本実施例において用意されるマッピング対応関係の一例を示す図である。図１６において、１６０１はプリンタ色再現域、１６０２はソース色再現域を示している。そして、ソース色再現域１６０２のガマット表面上の点（マッピング対応関係の出発点）１６０３と、プリンタ色再現域１６０１のガマット表面上の点（マッピング対応関係の目的点）１６０４との間に、中継点１６０５が存在している。これら３点を結ぶライン（ここでは破線で示される曲線１６０６）を例えばスプライン補間などによって求め、マッピング対応関係として定義する。なお、ここでは中継点が１個の場合について説明したが、中継点の数が多い場合には、対応点の出発点から目的点までを各中継点を経由して順番に繋いだ区分直線によってマッピング対応関係を定義してもよい。
【０１３１】
このようにして得られた曲線１６０６を複数の単位ベクトルを用いて近似するとベクトルフロー１６０７が得られる。そして、各ベクトルフローについて、図１３のステップ１３０７以下の処理を行うことにより、中継点も含めたマッピング対応関係の方向付けを、Ｌａｂ格子点上の移動量であるＬａｂベクトル値（単位ベクトル）に反映することができる。
【０１３２】
図１７は、本実施例に係る、ガマットマッピングＬＵＴ生成処理７００における処理の流れを示すフローチャートである。なお、既に述べた実施例２と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。
【０１３３】
ステップ１７０１において、ＣＰＵ１０５は、ＤｅｖｉｃｅＲＧＢ→Ｌａｂ測色値テーブル６０４を読み込み、ガマットマッピングＬＵＴを指定された格子点数に応じて初期化する。
【０１３４】
ステップ１７０２において、ＣＰＵ１０５は、初期化したガマットマッピングＬＵＴのＬａｂ格子点のＬａｂ値をＬａｂ＿ｇｒｉｄ（Ｎ）、各格子点に割り当てるベクトルをＶｅｃ＿ｇｒｉｄ（Ｎ）と定義する。
【０１３５】
ステップ１７０３において、ＣＰＵ１０５は、マッピング対応関係の情報、すなわち、対応点（出発点、目的点）及び中継点の情報を読み込む。
【０１３６】
ステップ１７０４において、出発点から中継点を通って目的点に至るライン（曲線）を求める。
【０１３７】
ステップ１７０５において、ＣＰＵ１０５は、求められた曲線を複数（Ｌ個）の単位ベクトルで近似して、それぞれの単位ベクトルの開始位置を求める。
【０１３８】
ステップ１７０６において、ＣＰＵ１０５は、生成したＬ個の単位ベクトルの開始位置をｆｌｏｗ＿ｓｐ（Ｌ）,その単位ベクトル量をｆｌｏｗ＿ｖｅｃ（Ｌ）として、これらの単位ベクトルで構成される曲線をベクトル列（ベクトルフロー）として保存する。
【０１３９】
ステップ１７０７において、ＣＰＵ１０５は、未処理のマッピング対応関係があるかどうかを判定し、未処理の対応点があれば、ステップ１７０４に戻ってステップ１７０４〜ステップ１７０６の処理を繰り返す。未処理のマッピング対応関係がなければ、ステップ１７０８に進む。ステップ１７０８〜ステップ１７１３の各処理は、図１３におけるステップ１３０７〜ステップ１３１２の各処理と同様であるので、説明は省略する。
【０１４０】
このような処理により、実施例２の場合よりもさらに精緻なガマットマッピングＬＵＴの生成が可能となる。
【図１】
0005773749.tif 000002
【図２】
0005773749.tif 000003
【図３】
0005773749.tif 000004
【図４】
0005773749.tif 000005
【図５】
0005773749.tif 000006
【図６】
0005773749.tif 000007
【図７】
0005773749.tif 000008
【図８】
0005773749.tif 000009
【図９】
0005773749.tif 000010
【図１０】
0005773749.tif 000011
【図１１】
0005773749.tif 000012
【図１２】
0005773749.tif 000013
【図１３】
0005773749.tif 000014
【図１４】
0005773749.tif 000015
【図１５】
0005773749.tif 000016
【図１６】
0005773749.tif 000017
【図１７】
0005773749.tif 000018