"均等色空間上の各格子点に、該格子点上の色値が該均等色空間において移動すべき方向を表すベクトルを割り当てるステップと、前記均等色空間上の入力色値に対する移動の方向を前記ベクトルに基づいて求め、該入力色値を、出力装置の色再現域にマッピングするステップと、を含むことを特徴とする色再現域圧縮方法。前記マッピングするステップは、前記均等色空間上の入力色値に対して、a1の入力色値に対する移動の方向を、前記ベクトルを用いた補間演算によって求め、b前記求めた移動の方向に、入力色値を前記ベクトルの分だけ移動させ、c前記移動した後の入力色値が、前記出力装置の色再現域の内にある場合は該色再現域にある色値を出力し、前記出力装置の色再現域の外にある場合は、前記移動した後の色値を次の入力色値とし、dすべての入力色値について、前記aからcまでのステップを繰り返す、ことを特徴とする請求項1記載の色再現域圧縮方法。前記ベクトルを割り当てるステップは、前記均等色空間上の各格子点に、該均等色空間の原点に向かうベクトルを割り当てるステップと、ソース色再現域のガマット表面上の特定の入力色値と前記出力装置の色再現域のガマット表面上の特定の出力色値との対応関係を定義するステップと、前記定義された対応関係に基づいて、前記原点に向かうベクトルの向きを修正するステップと、を含むことを特徴とする請求項1又は2に記載の色再現域圧縮方法。前記修正するステップはa前記定義された対応関係における前記特定の入力色値と前記特定の出力色値とを結ぶラインを定義し、b前記定義されたラインを構成する単位ベクトルを求め、c前記求められた単位ベクトルの開始位置から所定の範囲内にある格子点を取得し、取得された格子点と前記開始位置との距離を計算して、該計算された距離に基づく重みをかけたベクトルを前記取得された格子点のベクトルに加算し、該加算によって得られたベクトルを単位ベクトル化し、dすべての前記定義された対応関係について、前記aからcまでのステップを繰り返す、ことによって、前記原点に向かうベクトルの向きを修正することを特徴とする請求項3に記載の色再現域圧縮方法。前記対応関係は、前記入力色値と前記出力色値とを結ぶ中継点の色値を用いて定義され、前記ラインは、前記特定の入力色値から前記中継点の色値を経由して前記特定の出力色値に至るラインとして定義される、ことを特徴とする請求項4に記載の色再現域圧縮方法。請求項1~5のいずれか1項に記載の色再現域圧縮方法を用いて色再現域を圧縮する圧縮手段と、前記圧縮手段によって圧縮された均等色空間上の色値を、前記出力装置に依存する色空間の色値に変換する手段と、を備えることを特徴とするプロファイル生成装置。請求項1~5のいずれか1項に記載の方法をコンピュータに実行させるプログラム。しかしながら、特許文献1や特許文献2で開示されるような幾何学的なルールは、例えばYMCKRGBといった比較的少数の色について定義されたソース色再現域とプリンタ色再現域との対応関係を大域的に拡大することによって決定される。そのため、ルール決定において重視された色以外の色については対応関係を必ずしも適切には定義できない。また、幾何学的なルールは、多くの場合、3次元で表現される均等色空間を2次元平面に縮退させた上で決定される。そのため、例えば、ソース色再現域のある色相平面に存在する色をプリンタ色再現域の他の色相平面に存在する色にマッピングすることが適当な場合でも、そのようなマッピングは実現できない。さらに、上記のような問題を様々なルールを導入して解決しようとした場合、ルール設計が複雑になりすぎるという新たな問題が生じてしまっていた。本発明に係る色再現域圧縮方法は、均等色空間上の各格子点に、該格子点上の色値が該均等色空間において移動すべき方向を表すベクトルを割り当てるステップと、前記均等色空間上の入力色値に対する移動の方向を前記ベクトルに基づいて求め、該入力色値を、出力装置の色再現域にマッピングするステップと、を含むことを特徴とする。本発明によれば、複雑なルール設定を行うことなく、より精密な制御が可能なガマットマッピングを実現できる。以下、本発明を実施するための形態について図面を用いて説明する。図1は、本実施例に係る色再現域の圧縮を実現するためのシステム構成の一例を示す図である。このシステムは、ホストPC100とMFP110の2つの主要な構成要素からなり、ホストPC100とMFP110はネットワーク130を介して接続されている。ホストPC100は、プロファイルを生成調整する処理を行うホストコンピュータであり、分光測色器120が接続されている。ホストPC100は、HDD101、ROM102、RAM103、USBI/F104、CPU105、マウスキーボード106、ディスプレイ107、NetworkI/F108、内部バス109で構成される。HDD101は、プログラムやデータを格納する記憶装置である。ROM102は、ホストPC100起動時のプログラムを格納するメモリである。RAM103は、HDD101やROM102から読み込まれたプログラムを格納したり、プログラム実行の際の一時的なデータ記憶を行うメモリである。USBI/F104は、外部機器との接続のインターフェースを行う。CPU105は、様々なプログラムを実行して各部を制御するためのプロセッサである。マウスキーボード106は、ユーザからの入力を受け付ける入力手段である。ディスプレイ107は、入力情報や処理結果等の状態表示を行う表示手段である。NetworkI/F108は、ネットワーク130とのインターフェース動作を行う。内部バス109は、上記各部を接続するバスである。分光測色器120は、USBI/F104を介してホストPC100に接続されており、ホストPC100からの所定のコマンド通信にしたがって、色値の測定を行う。MFP110は、ネットワーク130経由で受信したホストPC100からの印刷指示と印刷データに従って印刷処理を行う。MFP110は、HDD111、ROM112、RAM113、NetworkI/F114、画像処理部115、ディスプレイタッチパネル116、CPU117、プリンタ部118、内部バス119で構成される。HDD111は、プログラムやデータを格納する記憶装置である。ROM112は、MFP110起動時のプログラムを格納するメモリである。RAM113は、HDD111やROM112から読み込まれたプログラムを格納したり、プログラム実行の際の一時的なデータ記憶を行うメモリである。NetworkI/F114は、ネットワーク130とのインターフェース動作を行う。画像処理部115は、NetworkI/F114を介して受信した印刷データをプリンタ部118での印刷処理に適した画像に変換する。ディスプレイタッチパネル116は、入力情報や処理結果等の状態表示を行うための表示手段の機能、およびユーザからの入力を受け付ける入力手段の機能を備える。CPU117は、様々なプログラムを実行して各部を制御するためのプロセッサである。プリンタ部118は、画像処理部115において変換されたCMYKデータを基に記録媒体紙上に画像を印刷する。プリンタ部118の記録方式としては、電子写真方式あるいはインクジェット方式などが挙げられる。内部バス119は、上記各部を接続するバスである。次に、MFP110が、印刷データを受信して印刷処理動作を行うまでの処理の流れを図2を用いて説明する。なお、本処理は、HDD111からRAM113に読み込まれたプログラムをCPU117が実行することによって実現される。まず、CPU117は、NetworkI/F114を介してホストPC100から印刷データPDLデータを受信し、RAM113に格納する201。次に、CPU117は、格納されたPDLデータを解釈する202。PDLデータは、描画データ毎にRGB値やCMYK値の色値を持っている。そこで、CPU117は、次に、その色値をプリンタで再現するためのCMS処理を行う203。具体的には、モニタやオフセット印刷機の色情報を示すソースプロファイル206と、プリンタの色情報を示すデスティネーションプロファイル207とを組み合わせて、モニタや印刷機の色をプリンタで再現するための色情報を生成する処理を行う。ホストPC100で生成されるプロファイルは、MFP110のHDD111上に転送され、CMS処理のデスティネーションプロファイルとして用いられる。CMS処理を終えた後、CPU117は、ラスタライズ処理を行う204。すなわち、CMS処理されたPDLデータをプリンタ部118の解像度に合わせた画像にビットマップ展開する処理を行う。そして、CPU117は、展開したビットマップデータを画像処理部115に送る。画像処理部115で、プリンタ部116に適した画像処理が行われた後、画像はプリンタ部118に転送される205。次に、ホストPC100上で動作するプログラムとして実現される、プロファイル生成装置のソフトウェアモジュール構成について、図3を用いて説明する。プロファイル生成制御モジュール300は、プロファイル生成処理に関する制御の全般を担い、以下の各モジュール及び各部を統括的に制御する。すなわち、プロファイル生成用パッチ作成モジュール301、パッチ出力制御モジュール302、ガマットマッピングLUT生成モジュール304、プロファイル生成演算モジュール305を制御する。また、分光測色器制御I/F303、測色値保存部306、ガマットマッピングLUT保存部307、プロファイル保存部308を制御する。以下、各モジュール及び各部における処理について説明する。プロファイル生成用パッチ作成モジュール301は、分光測色器120のタイプ情報を基にプロファイル生成のためのパッチ画像データを作成する。作成されたパッチ画像データはプロファイル生成制御モジュール300に送られ、プロファイル生成制御モジュール300を介して、パッチ出力制御モジュール302に送られる。パッチ出力制御モジュール302は、プロファイル生成制御モジュール300から受け取ったパッチ画像データを、CMS処理を行うことなく出力する旨の印刷指示と共にMFP110に送る。MFP110では、受け取った印刷指示に基づいてパッチ画像データを出力する。そして、分光測色器制御I/F303を介して、MFP110から出力されたパッチ画像上のパッチの測定が制御される。得られた測色値はプロファイル生成制御モジュール300に送られる。プロファイル生成制御モジュール300は取得した測色値を測色値保存部306に渡す。測色値保存部306は渡された測色値情報をHDD101に格納する。ガマットマッピングLUT生成モジュール304は、パッチ画像データのパッチ信号値CMYK値、パッチ画像の測色値Lab値、および所定のパラメータの情報に基づいて色再現域圧縮を行うための情報であるガマットマッピングLUTを生成する。生成されたガマットマッピングLUTは、プロファイル生成制御モジュール300を介してガマットマッピングLUT保存部307に送られ、ガマットマッピングLUT保存部307によってHDD101に格納保存される。なお、LUTは、ルックアップテーブルの略である。プロファイル生成演算モジュール305は、パッチ画像データのパッチ信号値CMYK値、パッチ画像の測色値Lab値、ガマットマッピングLUT、および所定のパラメータの情報に基づいてプロファイルを生成する。生成されたプロファイルは、プロファイル生成制御モジュール300を介してプロファイル保存部308に送られ、プロファイル保存部308によってHDD101に格納保存される。次に、ガマットマッピングLUTやプロファイルの生成時に参照されるパラメータについて説明する。図4は、使用するパラメータ等をユーザに入力させるためにディスプレイ107に表示される、プロファイル生成時設定画面Build設定画面の一例を示している。Build設定画面400には、各種設定値を入力するためのフィールドやチェックボックス等が含まれる。401は生成されたプロファイルを保存する際のファイル名を入力させるテキストフィールドであり、402は測色データを保存する際のファイル名を入力させるテキストフィールドである。そして、403はプロファイル生成のターゲットとなるプリンタを指定するフィールドである。404はガマットマッピングLUTの格子点数を指定するチェックボックスであり、405はプロファイルのLab→CMYKのLUTの格子点数を指定するチェックボックスである。406は、Lab→CMYKのLUTを生成する際の色分解テーブルの設定であり、トナーあるいはインクの最大載り量を指定するフィールドである。ここでは、理論上の上限値400に対して、240が指定されている。そして、407は墨入れ量を指定するフィールドであり、408は分光測色器のタイプを指定するフィールドである。409は、プロファイルの生成動作を開始するための開始ボタンである。次に、プロファイル生成用パッチ作成モジュール301で作成されるパッチ画像データについて説明する。図5は、作成されたパッチ画像データの一例を示す図である。プロファイル生成用パッチ作成モジュール301は、まず、プリンタの用紙サイズに対応する画像全体枠500を生成し、そして、使用する分光測色器120のタイプに応じたパッチを画像全体枠500内に配列する。ここでは、配列するパッチの個数を、CMYKのうちCMYは同じ分割数の個数を取り、CMYの分割数はKの濃度に応じて以下の通りの組み合わせを取るものとする。KCMY06x6x6206x6x6406x6x6606x6x6804x4x41003x3x3分割数が6x6x6の場合、CMYの取る信号値は0,20,40,60,80,100となり、CMYでの組み合わせ数は、216個となる。分割数が4x4x4の場合、CMYの取る信号値は0,33,66,100となり、CMYの組み合わせ数は、64個となる。分割数が3x3x3の場合、CMYの取る信号値は、0,50,100となり、CMYの組み合わせ数は、27個となる。したがって、パッチの総個数は、955個となる。CMYの増加は、C→M→Y→Kの順で値が増加していくものとする。一番左上のパッチ501は、CMYK=0,0,0,0、つまり、何も印字しないパッチである。本発明におけるプロファイルは、デバイス独立色空間からデバイス依存色空間への変換のためのLUTを持つものとし、本実施例では、デバイス独立色空間として均等色空間で代表的なLab色空間、デバイス依存色空間としてCMYK色空間を用いるものとする。よって、上述の通りプロファイルの持つLUTは、均等に分割した3次元のLab格子点上にCMYKデータを格納した、Lab→CMYKのLUTであるものとする。この際の格子点数は、図4に示されるように17x17x17や33x33x33などの値をとるものとするが、これらに限定されるものではない。また、後述するように、Lab→CMYKのLUTを生成する処理には、RGB→CMYKの色分解処理も含むが、色分解処理をプロファイルには含まれないものとする場合には、プロファイルはLab→RGBのフォーマットを持つものとしてもよい。さらに、デバイス独立色空間としては、Lab以外の均等色空間であるLuv、CIECAM02のような色の見えモデルを導入したJCh色空間などであってもよい。次に、ガマットマッピングLUTのフォーマットについて説明する。ガマットマッピングLUTも、プロファイルの持つLUTと同様、3次元の格子点を持つLUTである。このLUTが持つ格子点上の値は、格子点のLab値が移動すべき方向を示すLab色空間でのベクトル値である。全ての格子点が持つベクトル値は単位ベクトルであって、移動の方向は、概略プリンタの色再現域に向かっている。なお、本実施例においてガマットマッピングLUTの格子点数は、プロファイルの格子点数とは独立に設定するものとしているが、独立に設定するのではなくプロファイルの格子点数と常に同じ格子点数となるようにしてもよい。次に、プロファイル生成演算モジュール305における、プロファイル生成の処理フローについて説明する。プロファイルの生成は、プロファイル生成制御モジュール300から、パッチ信号値CMYK値、パッチ測色値Lab値および設定されたパラメータの情報を得て行う。図6のaは、プロファイルのLab→CMYKLUTを生成する処理フローを示すブロック図である。プロファイル生成演算モジュール305は、ガマットマッピング処理GamutMapping600、Lab→DeviceRGB変換処理601、色分解処理602の各処理によって、Lab→CMYKLUTを生成する。プロファイル生成フローにおいて、プロファイル生成演算モジュール305は、最初にLab格子点値を設定されたパラメータに従って発生する。設定された格子点数が17x17x17の場合、Lの値は0から100まで6.25刻みで増分し、a,bの値は、-128から128まで16刻みで増分するように取り、b→a→Lの順で昇順に発生させる。設定された格子点数が33x33x33の場合、Lの値は0から100まで3.125刻みで、a,bの値は-128から128まで8刻みで増分するように取り、b→a→Lの順で昇順に発生させる。なお、最終的にLab値とCMYK値の対応関係が定義できればよいので、L,a,bの昇順或いは降順はこれに限られない。Lab格子点値が取るLab値はプリンタの色再現域よりも広いため、まず、ガマットマッピング処理により色空間圧縮を行う。ガマットマッピング処理600では、発生したLab格子点値を、DeviceRGB→Lab測色値テーブル604及びガマットマッピングLUT603の情報を用いて色空間圧縮する。詳細なアルゴリズムについては後述する。ここで、DeviceRGB→Lab測色値テーブル604は、DeviceRGB値を入力とし、Lab値を出力とする3次元のLUTであって、プリンタの色再現域を決定する情報である。Lab→CMYKLUTを生成する処理に先立って具体的にはパッチ画像の測色を行った後、このDeviceRGB→Lab測色値テーブル604を求める処理が行われ、測色値保存部306を介してHDD101上に格納される。図6のbは、DeviceRGB→Lab測色値テーブル604を求める処理フローを示すブロック図である。まず、DeviceRGB格子点値を発生させる。格子点数が例えば33x33x33であるとすると、DeviceRGB格子点値は、0から255まで8刻みで増分し、B→G→Rの順で昇順に発生する。このように発生したDeviceRGB値を、色分解処理602によってCMYK値に変換する。この時、色分解処理602のパラメータは、プロファイル生成フローで用いたものと同じパラメータを用いる。その後、CMYK→Lab測色値テーブル621をLUTとして用いた補間演算620を行って、色分解されたCMYK値に対するLab値を得る。なお、CMYK→Lab測色値テーブル621は、パッチ画像におけるパッチ信号値CMYK値と測色値保存部306によって保存された測色値Lab値とを対応付けたLUTである。このようにして、DeviceRGB→Lab測色値テーブル604が求められる。一方、ガマットマッピングLUT603は、Lab→Labのルックアップテーブルである。ガマットマッピングLUT603の生成フローについては、後で詳細に説明する。プロファイル生成フローの説明に戻る。ガマットマッピング処理600に続くLab→DeviceRGB変換処理601では、色空間圧縮されたLab値を、上述のようにして求めたDeviceRGB→Lab測色値テーブル604を用いて、出力装置に依存する色空間の色値であるDeviceRGB値に逆変換する。この逆変換の演算も様々な既知の方法があり、どのような方法を用いても構わない。最後に、色分解処理602が、上述のBuild設定画面で設定された、トナーやインクの最大載り量や墨入れ量の情報を基に、DeviceRGB値をCMYK値に変換する。これらの処理によりLab格子点値に対応するCMYK値を演算して、プロファイルを完成させる。以上のようにして、プロファイル生成制御モジュール300はプロファイルを生成し、生成したプロファイルと測色値情報は、プロファイル保存部308によってHDD101に格納保存される。次に、ガマットマッピングLUT生成モジュール304における、ガマットマッピングLUT603の生成フローについて説明する。ガマットマッピングLUT603の生成は、プロファイル生成制御モジュール300から、DeviceRGB→Lab測色値テーブル604を得て行う。このガマットマッピングLUT603を求める処理は、先に述べたDeviceRGB→Lab測色値テーブル604の生成と同様、プロファイルの生成に先立って実行され、ガマットマッピングLUT保存部307を介してHDD101上に格納される。図7は、ガマットマッピングLUT603を求める処理フローを示す図である。ガマットマッピングLUT生成処理700では、まず、パラメータ設定において指定された格子点数に従ってLab格子点値を発生する。格子点数が例えば33x33x33の場合、Lの値は0から100まで3.125刻みで増分し、a,bの値は、-128から128まで8刻みで増分するように取り、b→a→Lの順で昇順に発生させる。もちろん、プロファイルの格子点と同様、格子点の数は、33x33x33に限るものではない。そして、格子点発生したLab値に対する移動量であるLabベクトル値単位ベクトルを計算して、Lab格子点値と計算されたLabベクトル値との対応関係を、ガマットマッピングLUT603とする。生成したガマットマッピングLUT603は、ガマットマッピングLUT保存部307を介してHDD101に格納される。このようにして均等色空間上の各格子点に、単位ベクトルが割り当てられる。図8は、ガマットマッピングLUT603の説明図であって、図8のaはLab色空間のa-b平面への投影を、図8のbはa-L平面への投影をそれぞれ示している。図8のa及びbにおける投影図上の格子800はLab色空間を均等に分割した格子点を示すものであるが、説明の簡便さのため、すべての格子点は示されていない。図8のa及びbにおいて斜線で示される領域801はプリンタ色再現域を示している。本実施例においては、各Lab格子点とプリンタ色再現域801の中央原点に位置する収束点804とを結ぶ直線図8では破線で示される803を想定し、その直線に沿って収束点804に向かう単位ベクトル802を割り当てている。具体的には、以下のとおりである。読みこんだDeviceRGB→Lab測色値テーブル604の中から収束点804を求める。DeviceRGB255,255,255に対応するLab測色値Lw,aw,bw及び、DeviceRGB0,0,0に対応するLab測色値Lk,ak,bkを取り出し、収束点804をLwLk/2,0,0とする。各格子点Lg,ag,bgと収束点804の座標を元に、ベクトルLwLk/2-Lg,ag,bgの方向に沿った単位ベクトルを以下の式1を用いて計算する。2Lgagbg2Lgagbg式1計算された単位ベクトルを、格子点Lg,ag,bgに割り当てる。このような処理を全ての格子点に適用し、ガマットマッピングLUT603を生成する。次に、プロファイル生成フローの中で実行される、ガマットマッピング処理600の詳細について説明する。ガマットマッピング処理600の実行に際しては、プロファイル生成フローの開始時に、初期化を行う必要がある。そこで、この初期化処理について、まず説明する。図9は、ガマットマッピングの初期化処理の流れを示すフローチャートである。ステップ901において、CPU105は、ガマットマッピング処理600に必要な情報であるガマットマッピングLUT603とDeviceRGB→Lab測色値テーブル604をHDD101から読み込む。ステップ902において、CPU105は、読み込んだガマットマッピングLUT603に対して変数の定義を行う。具体的には、読み込んだガマットマッピングLUT603の格子点数がN個だとした場合、Lab格子点のLab値をLab_gridN、各格子点に割り当てられたベクトルの値をVec_gridNと定義する。このような定義付けが完了すると、ガマットマッピングの初期化処理は終了する。続いて、ガマットマッピング処理600の内容について説明する。図10は、ガマットマッピング処理600の詳細を示すフローチャートである。なお、以下の説明での加算/減算は全てベクトル値の演算を意味するものとする。ステップ1001において、CPU105は、入力されたLab値入力色値をLab_in、出力するLab値出力色値をLab_mappedと定義する。この場合において入力されたLab値は、プロファイル生成演算モジュール305が発生させたマッピング元となるLab格子点値であり、出力するLab値は、マッピング結果となるLab値である。ステップ1002において、CPU105は、任意のLab_in=任意の入力されたLab値がプリンタ色再現域の外にあるのか内にあるのかを判定する。この場合のプリンタ色再現域の内外判定は、Lab_inと収束点とを結ぶ直線と、プリンタ色再現域のガマット表面DeviceRGB→Lab測色値テーブル604の最外殻にあたる平面との関係を調べることによって達成される。つまり、Lab_inと収束点とを結ぶ直線が、プリンタ色再現域のガマット表面と交わらないのなら、Lab_inはプリンタ色再現域の内側にあると判定される。一方、Lab_inと収束点とを結ぶ直線が、プリンタ色再現域のガマット表面と交わる場合には、Lab_inはプリンタ色再現域の外にあると判定される。なお、プリンタ色再現域のすべてのガマット表面について交わるかどうかをチェックしてもよいが、およそ交わる可能性のないガマット表面を除いた特定の平面についてのみ交わるかどうかをチェックするようにしてもよい。このようなチェックによって、任意のLab_inがプリンタ色再現域の外にあると判定された場合は、ステップ1003に進む。一方、プリンタ色再現域の内にあると判定された場合は、後続のステップ1003~ステップ1007の処理を行う必要がないので、ステップ1008に進む。ステップ1003において、CPU105は、Lab_mappedにLab_inを代入する。ステップ1004において、CPU105は、Lab_mappedの位置における移動量単位ベクトルVecを、ガマットマッピングLUT603を用いた補間演算によって算出する。ガマットマッピングLUT603はLab値を格子点としたルックアップテーブルであり、既知の3次元入力3次元出力のLUT補間演算が使用できる。Lab_mappedの位置における移動量Vecが求められればよいので、補間演算の方法については問わない。ステップ1005において、CPU105は、算出された移動量VecをLab_mappedに加算する。ステップ1006において、CPU105は、移動量Vecが加算されたLab_mappedがプリンタ色再現域の外にあるのか内にあるのかを判定する。この場合のプリンタ色再現域の内外判定は、上述のステップ1002における処理とほぼ同様である。すなわち、Lab_mappedと収束点とを結ぶ直線と、プリンタ色再現域のガマット表面との関係を調べることによって達成される。このようなチェックによって、移動量Vecが加算されたLab_mappedがプリンタ色再現域の外にあると判定された場合は、ステップ1004に戻る。一方、プリンタ色再現域の内側にあると判定された場合は、ステップ1007に進む。ステップ1007において、CPU105は、ステップ1005で移動量Vecが加算される前のLab_mapped-VecとLab_mappedとを結ぶ直線がガマット表面と交差する点の色値を求め、マッピング後のLab値として出力する。ステップ1008において、CPU105は、未処理の入力Lab値があるかどうかを判定する。未処理の入力Lab値がある場合には、ステップ1002に戻る。一方、すべての入力Lab値について処理を完了した場合には、本処理を抜ける。以上の処理によって、与えられた入力色値Lab値に対応するマッピング後の出力色値Lab値が得られる。図11は、以上のような色再現域圧縮処理により得られる結果の一例を示す図である。図11において、1101はプリンタ色再現域であり、図8の801と同じである。なお、図8における格子点はガマットマッピングLUTの格子点であったのに対し、図11における格子点はプロファイルの格子点である。ここでは、同じ格子点を持つものとして図示してある。Lab格子点1100が、ガマットマッピングLUT603で定義されるベクトル1102図8における単位ベクトル802に従って軌跡1103に沿って移動していき、プリンタ色再現域1101のガマット表面上の点1104に収束しているのが分かる。このように本実施例に係るガマットマッピング処理においては、より直接的に入力色値のマッピング先が指定される。そのため、複雑なルール設定を行うことなくガマットマッピングを行うことができる。次に、均等色空間上でのより細かい移動制御が可能なガマットマッピングルックアップテーブルの生成方法について、実施例2として説明する。本実施例に係るガマットマッピングLUTの生成では、マッピング元となるソース色再現域のガマット表面上の色値特定のLab値と、プリンタ色再現域のガマット表面上の色値マッピング後の狙いとするLab値との対応関係を必要とする。図12のa及びbはそのような対応関係の定義付けを模式的に示した図である。図12のa及びbにおいて、斜線の領域1201はプリンタ色再現域を示し、その外側にある領域1202はソース色再現域を示している。この場合において、線分1203はプリンタ色再現域1201のガマット表面上の白Whiteから赤Redを結んでおり、破線で示された曲線1204はソース色再現域1202のガマット表面上の白Whiteから赤Redを結んでいる。このような状況において、ソース色再現域1202における白Whiteから赤Redにかけての色をプリンタ色再現域1201における白Whiteから赤Redで再現する場合、本実施例では、マッピングの対応関係を複数定義する。具体的には、ソース色再現域1202のガマット表面上のある点がプリンタ色再現域1201のガマット表面上のどの点に対応するのかを示す対応点の情報両矢印1205で示されるを複数定義する。次に、このようにして定義されたマッピング対応関係を実現するガマットマッピングLUT603を構築する方法について説明する。図13は、上述したマッピング対応関係、およびDeviceRGB→Lab測色値テーブル604を入力とする、ガマットマッピングLUT生成処理700における処理の流れを示すフローチャートである。ステップ1301において、CPU105は、DeviceRGB→Lab測色値テーブル604を読み込み、ガマットマッピングLUTを指定された格子点数に応じて初期化する。ここで行う初期化は、例えば実施例1で説明したような方法で、プリンタ色再現域内の収束点に向かう方向を持ったベクトルを各格子点に割り当ててもよいし、予め作成され保存されているガマットマッピングLUTを読み込んで初期値としてもよい。後者の方法であれば、毎回、ガマットマッピングLUTをゼロから作成する手間を省くことができる。ステップ1302において、CPU105は、初期化したガマットマッピングLUTのLab格子点のLab値をLab_gridN、各格子点に割り当てられたベクトルをVec_gridNと定義する。Nは格子点数であり、33x33x33などの値である。ステップ1303において、CPU105は、マッピング対応関係対応点の情報を読み込む。このマッピング対応関係を示す対応点の組数図12における両矢印1205で示される数は多いほど望ましく、また、色空間全域にわたっている方がより望ましい。ステップ1304において、CPU105は、読みこんだ全てのマッピング対応点について、その出発点と目的点とを結ぶラインを構成するような複数L個の単位ベクトルを生成して、それぞれの単位ベクトルの開始位置を求める。この場合の出発点と目的点とを結ぶラインは直線である。ステップ1305において、CPU105は、生成したL個の単位ベクトルの開始位置をflow_spLその単位ベクトル量をflow_vecLとして、ラインを構成する単位ベクトルの集まりをベクトル列ベクトルフローとして保存する。図14は、本ステップで保存されるベクトルフローの一例を示す図であり、図12における両矢印1205に対応するようなベクトルフロー1401がそれぞれ生成されているのが分かる。ステップ1306において、CPU105は、未処理のマッピング対応関係対応点の組があるかどうかを判定する。未処理の対応点があれば、ステップ1304に戻り、次の対応点についてステップ1304~ステップ1305の処理を繰り返す。すべての対応点についてベクトルフローが得られていれば、ステップ1307に進む。ステップ1307において、CPU105は、ベクトルフローを構成する単位ベクトルについて、flow_spLから所定の距離Dの範囲内にある格子点を、格子点Lab_gridNの集合の中から取得する。そして、取得されたM個のLab格子点をLab_gridMとする。ここで距離Dは、対応点の定義がLab格子点に影響を及ぼすように、少なくともLab格子点の間隔の数値よりも2倍以上大きい数であることが望ましい。ステップ1308において、CPU105は、Lab_gridMとflow_spLとの距離dを求める。ステップ1309において、CPU105は、Lab_gridMに対応する格子点上のベクトルVec_gridMに対して、距離dの関数であるFdをflow_vecLに掛けた上で加算する。ここで、Fdは、距離が0の時に最大値1を取り、距離が離れるにつれて値が小さくなっていくような、例えば以下のような式で表される関数である。F1式2ここで、図15は、ステップ1307~ステップ1309の処理によって、Lab色空間上でのベクトルがどのように変化するのかを模式的に示した図である。簡単化のため、格子点Lab_gridM上のVec_gridMが、4つのFlow_vecによって受ける影響について説明する。Flow_sp1からLab_gridMとの距離をd1とすると、Flow_vec1がLab_gridM上のベクトルに及ぼす影響は、Flow_vec1fd1の加算である。同様に、Flow_vec2~Flow_vec4を順に重み付け加算していく。これを式で表すと以下のとおりである。Vecgrid=VecgridFlowvecfFlowvecfFlowvecfFlowvecf式3そして、最終的に、Lab_gridM上のVec_gridMは、ベクトル1400のようになり、Flow_vec1~Flow_vec4で示されるベクトルの方向に近づいているのが分かる。最後に、上記加算によって得られたベクトル1400が単位ベクトル化され、ベクトル1401が得られる。図13のフローの説明に戻る。ステップ1310において、CPU105は、未処理のベクトルフローがあるかどうかを判定する。未処理のベクトルフローがあれば、ステップ1307に戻り、次のベクトルフローについてステップ1307~1309の処理を繰り返す。すべてのベクトルフローについて処理が終了していれば、ステップ1311に進む。ステップ1311において、CPU105は、全てのLab格子点Lab_gridNに対応づけられたVec_gridNを単位ベクトル化正規化する。ステップ1312において、CPU105は、Lab_gridNとVec_gridNとの対応関係を、ガマットマッピングLUT603として、ガマットマッピングLUT保存部307を介してHDD101に格納する。このような処理によって、Lab格子点上に割り当てられる単位ベクトルに対してマッピング対応関係対応点の方向付けを反映し、単位ベクトルの向きをより適切なものに修正することができる。そして、用意するマッピング対応関係の情報を増やすことで、より精密なガマットマッピングのためのガマットマッピングLUTの生成が可能となる。実施例2では、マッピング対応関係を2つの対応点ソース色再現域のガマット表面上の点とプリンタ色再現域のガマット表面上の点の2点によって定義した。続いて、マッピング対応関係を、対応点同士を結ぶ1以上の中継点を含めた計3点以上の点によって定義する態様について、実施例3として説明する。図16は、本実施例において用意されるマッピング対応関係の一例を示す図である。図16において、1601はプリンタ色再現域、1602はソース色再現域を示している。そして、ソース色再現域1602のガマット表面上の点マッピング対応関係の出発点1603と、プリンタ色再現域1601のガマット表面上の点マッピング対応関係の目的点1604との間に、中継点1605が存在している。これら3点を結ぶラインここでは破線で示される曲線1606を例えばスプライン補間などによって求め、マッピング対応関係として定義する。なお、ここでは中継点が1個の場合について説明したが、中継点の数が多い場合には、対応点の出発点から目的点までを各中継点を経由して順番に繋いだ区分直線によってマッピング対応関係を定義してもよい。このようにして得られた曲線1606を複数の単位ベクトルを用いて近似するとベクトルフロー1607が得られる。そして、各ベクトルフローについて、図13のステップ1307以下の処理を行うことにより、中継点も含めたマッピング対応関係の方向付けを、Lab格子点上の移動量であるLabベクトル値単位ベクトルに反映することができる。図17は、本実施例に係る、ガマットマッピングLUT生成処理700における処理の流れを示すフローチャートである。なお、既に述べた実施例2と共通する部分については説明を簡略化ないしは省略し、ここでは差異点を中心に説明することとする。ステップ1701において、CPU105は、DeviceRGB→Lab測色値テーブル604を読み込み、ガマットマッピングLUTを指定された格子点数に応じて初期化する。ステップ1702において、CPU105は、初期化したガマットマッピングLUTのLab格子点のLab値をLab_gridN、各格子点に割り当てるベクトルをVec_gridNと定義する。ステップ1703において、CPU105は、マッピング対応関係の情報、すなわち、対応点出発点、目的点及び中継点の情報を読み込む。ステップ1704において、出発点から中継点を通って目的点に至るライン曲線を求める。ステップ1705において、CPU105は、求められた曲線を複数L個の単位ベクトルで近似して、それぞれの単位ベクトルの開始位置を求める。ステップ1706において、CPU105は、生成したL個の単位ベクトルの開始位置をflow_spLその単位ベクトル量をflow_vecLとして、これらの単位ベクトルで構成される曲線をベクトル列ベクトルフローとして保存する。ステップ1707において、CPU105は、未処理のマッピング対応関係があるかどうかを判定し、未処理の対応点があれば、ステップ1704に戻ってステップ1704~ステップ1706の処理を繰り返す。未処理のマッピング対応関係がなければ、ステップ1708に進む。ステップ1708~ステップ1713の各処理は、図13におけるステップ1307~ステップ1312の各処理と同様であるので、説明は省略する。このような処理により、実施例2の場合よりもさらに精緻なガマットマッピングLUTの生成が可能となる。"