(57)【特許請求の範囲】
【請求項１】
プロファイルフォーマットのパブリックタグに格納された色変換演算の代わりに、前記プロファイルフォーマットのプライベートタグである第一および第二のタグを使用して、入力画像データに色変換演算を施すカラー画像処理装置であって、
複数の色変換演算の各々を示す第一の色変換演算データを格納する前記パブリックタグ、前記複数の色変換演算の各々を無効にするか否かを示す無効情報を格納する前記第一のタグ、並びに、前記第一のタグの無効情報によって無効にすることが示される色変換演算に代わる色変換演算を示す第二の色変換演算データを格納する前記第二のタグを含むプロファイルを格納する格納手段と、
カラー画像データを入力する入力手段と、
前記第一のタグに格納された前記無効情報に基づき、前記パブリックタグに格納された前記第一の色変換演算データに対応する色変換演算を無効にするか否かを判定する判定手段と、
前記判定手段により無効にすると判定された場合、前記第二のタグに従い、前記無効にすると判定された色変換演算に代わる色変換演算を示す前記第二の色変換演算データを前記第二のタグから読み取る読取手段と、
前記読取手段が読み取った前記第二の色変換演算データを、前記無効にする色変換演算の前記第一の色変換演算データの代わりに使用して、前記入力手段が入力した画像データに色変換演算を施す処理手段とを有することを特徴とするカラー画像処理装置。
【請求項２】
前記第二のタグは、前記第一のタグに格納された前記無効情報によって無効にされる色変換演算に対応するシーケンス構造体を含み、前記シーケンス構造体は、前記無効にされる色変換演算に代わる色変換演算を構成する変換の各々に対応する演算構造体を含むことを特徴とする請求項1に記載されたカラー画像処理装置。
【請求項３】
前記演算構造体で定義可能な色変換演算の種類は予め定義されていて、前記演算構造体は、色変換演算の種類を示すデータおよび色変換のパラメータを含むことを特徴とする請求項2に記載されたカラー画像処理装置。
【請求項４】
プロファイルフォーマットのパブリックタグに格納された色変換演算の代わりに、前記プロファイルフォーマットのプライベートタグである第一および第二のタグを使用して、入力画像データに色変換演算を施すカラー画像処理方法であって、
複数の色変換演算の各々を示す第一の色変換演算データを格納する前記パブリックタグ、前記複数の色変換演算の各々を無効にするか否かを示す無効情報を格納する前記第一のタグ、並びに、前記第一のタグの無効情報によって無効することが示される色変換演算に代わる色変換演算を示す第二の色変換演算データを格納する前記第二のタグを含むプロファイルをメモリから読み出すステップと、
カラー画像データを入力する入力ステップと、
前記第一のタグに格納された前記無効情報に基づき、前記パブリックタグに格納された前記第一の色変換演算データに対応する色変換演算を無効にするか否かを判定する判定ステップと、
前記判定ステップで無効にすると判定された場合、前記第二のタグに従い、前記無効にすると判定された色変換演算に代わる色変換演算を示す前記第二の色変換演算データを前記第二のタグから読み取る読取ステップと、
前記読取ステップで読み取った前記第二の色変換演算データを、前記無効にする色変換演算の前記第一の色変換演算データの代わりに使用して、前記入力ステップで入力した画像データに色変換演算を施すステップとを有することを特徴とするカラー画像処理方法。
【請求項５】
画像処理装置を制御して、請求項4に記載されたカラー画像処理を実行することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロファイルフォーマットのパブリックタグに格納された色変換演算の代わりに、プロファイルフォーマットのプライベートタグである第一および第二のタグを使用して、入力画像データに色変換演算を施すカラー画像処理に関する。
【０００２】
【従来の技術】
プロファイルフォーマットは、一つのデバイスの色空間に対応してフォーマッティングされたカラー画像データを、別のデバイスの色空間、または、デバイスから独立した色空間（以下「デバイス独立色空間」と呼ぶ）に対応してフォーマッティングされたカラー画像データに変換するために使用される。例えば、ICCプロファイルフォーマットは、RGB（赤、緑および青）色空間に対応してフォーマッティングされたカラー画像データを「プロファイル結合空間」と呼ばれるデバイス独立色空間に変換し、次に、カラープリンタのCMY（シアン、マゼンタおよびイエロー）色空間に対応してフォーマッティングされたカラー画像データに変換するための一連の標準色変換演算を定義する。
【０００３】
標準化されたICCプロファイルは、場合によっては異なるデバイスの間に色の互換性を成立させるが、標準化されたICCプロファイルが実行する色変換演算の数と種類、および、色変換を実行する順序に関しては融通性を欠いている。
【０００４】
すなわち、ICCプロファイルはパブリックタグの中で色変換演算を定義する。一般に、タグは、色変換演算を実行するために使用されるフォーマッティングされたデータ、および/または、他のタグを指示するポインタを記憶する一つのメモリ領域である。ICCにより定義されるパブリックタグは、所定の一連の色変換を所定の順序で実行する標準化された色変換演算を容れるタグから構成されている。ICCパブリックタグの変更は不可能である。
【０００５】
これに関して、ICCパブリックタグはICCで定義済みの色変換演算に限定されているから、いくつかの色変換演算、とくに、ICCでは対応できない色空間相互の変換に必要とされるような色変換演算を実行することができない。
【０００６】
さらに、ICCパブリックタグの変更は不可能であるから、色変換を実行するためにパブリックタグを一度アクセスしたならば、そのパブリックタグに格納されているプリセットされた色変換演算のすべてを指定された順序で実行しなければならない。場合によっては、その結果、色変換に誤りを生じることもある。また、単に効率が低下するだけの場合もある。例えば、色変換演算が必要であるか否かに関わらず、入力画像データに対して不必要な色変換演算が実行されてしまうこともある。
【０００７】
従って、ソフトウェア開発者がICCプロファイルフォーマットに格納された色変換演算の種類、数および順序を変更することを可能にするようなICCプロファイルフォーマットを変更するシステムが必要である。
【０００８】
【課題を解決するための手段】
【０００９】
本発明にかかるカラー画像処理装置は、プロファイルフォーマットのパブリックタグに格納された色変換演算の代わりに、前記プロファイルフォーマットのプライベートタグである第一および第二のタグを使用して、入力画像データに色変換演算を施すカラー画像処理装置であって、複数の色変換演算の各々を示す第一の色変換演算データを格納する前記パブリックタグ、前記複数の色変換演算の各々を無効にするか否かを示す無効情報を格納する前記第一のタグ、並びに、前記第一のタグの無効情報によって無効にすることが示される色変換演算に代わる色変換演算を示す第二の色変換演算データを格納する前記第二のタグを含むプロファイルを格納する格納手段と、カラー画像データを入力する入力手段と、前記第一のタグに格納された前記無効情報に基づき、前記パブリックタグに格納された前記第一の色変換演算データに対応する色変換演算を無効にするか否かを判定する判定手段と、前記判定手段により無効にすると判定された場合、前記第二のタグに従い、前記無効にすると判定された色変換演算に代わる色変換演算を示す前記第二の色変換演算データを前記第二のタグから読み取る読取手段と、前記読取手段が読み取った前記第二の色変換演算データを、前記無効にする色変換演算の前記第一の色変換演算データの代わりに使用して、前記入力手段が入力した画像データに色変換演算を施す処理手段とを有することを特徴とする。
【００１０】
本発明にかかるカラー画像処理方法は、プロファイルフォーマットのパブリックタグに格納された色変換演算の代わりに、前記プロファイルフォーマットのプライベートタグである第一および第二のタグを使用して、入力画像データに色変換演算を施すカラー画像処理方法であって、複数の色変換演算の各々を示す第一の色変換演算データを格納する前記パブリックタグ、前記複数の色変換演算の各々を無効にするか否かを示す無効情報を格納する前記第一のタグ、並びに、前記第一のタグの無効情報によって無効することが示される色変換演算に代わる色変換演算を示す第二の色変換演算データを格納する前記第二のタグを含むプロファイルをメモリから読み出すステップと、カラー画像データを入力する入力ステップと、前記第一のタグに格納された前記無効情報に基づき、前記パブリックタグに格納された前記第一の色変換演算データに対応する色変換演算を無効にするか否かを判定する判定ステップと、前記判定ステップで無効にすると判定された場合、前記第二のタグに従い、前記無効にすると判定された色変換演算に代わる色変換演算を示す前記第二の色変換演算データを前記第二のタグから読み取る読取ステップと、前記読取ステップで読み取った前記第二の色変換演算データを、前記無効にする色変換演算の前記第一の色変換演算データの代わりに使用して、前記入力ステップで入力した画像データに色変換演算を施すステップとを有することを特徴とする。
【００１８】
【好ましい実施形態の詳細な説明】
図1は、本発明の代表的な一実施形態の外観を示す図である。図1に示すコンピュータ装置1は、MacintoshまたはMicrosoft(R) Windowsなどのウィンドウゥズ環境を有するIBM PCコンパチブルコンピュータのような装置である。コンピュータ装置1は、カラーモニタなどの表示スクリーン2と、テキストデータおよびプログラマの指令を入力するためのキーボード4と、表示スクリーン2に表示されたオブジェクトを指示しかつ操作するためのマウスなどのポインティングデバイス6と、コンピュータ装置1により生成されたカラー画像を出力するプリンタ16とを備えている。
【００１９】
コンピュータ装置1は、図2に示すコンピュータディスク7のような大容量記憶デバイスを含む。このコンピュータディスク7には、パブリックタグおよびプライベートタグを含むICCプロファイル8のようなプロファイルフォーマット、DOS(R)オペレーティングシステム（以下「OS」という）、並びに、Microsoft Windows(R)のようなウィンドウズOSとが格納されている。同様に、コンピュータディスク7には、キヤノン(R)カラーマッチングソフトウェア（以下「CCM」という）9、プライベートタグを作成および変更するアプリケーションプログラム10、並びに、プロファイルマネジャルーチン12が格納されている。これらはすべて、ディスク7のデータファイルの操作および格納、並びに、表示スクリーン2を介してオペレータへそれらファイル内のデータを提示するといったコンピュータ装置1のプログラム命令を格納している。これらのプログラムについては、以下で、さらに詳細に説明する。
【００２０】
コンピュータ装置1は、さらに、フロッピディスク（以下「FD」という）を差し込むことができるフロッピディスクドライブ（以下「FDD」という）のインタフェイス14を含む。そのようなFDからの情報は、コンピュータディスク7にダウンロードすることができる。このような情報は、CMM(Color Management Module)9のようなデータファイルおよびアプリケーションプログラム、プライベートタグを作成および変更するアプリケーションプログラム10、並びに、プロファイルマネジャルーチン12が挙げられる。コンピュータ装置1は、さらに、CD-ROMインタフェイス（図示せず）を含むことができ、このインタフェイスからの情報もディスク7へダウンロードすることができる。
【００２１】
カラー画像データは、文書または他の画像を走査して、それらのビットマップ画像をコンピュータ装置1に提供するスキャナ15によって入力される。カラー画像データは、ネットワークインタフェイス17のような様々な他の供給源から、または、ファクシミリ/MODEMインタフェイス18を介した他の外部デバイスからコンピュータ装置1に入力してもよい。
【００２２】
なお、さらに、ネットワークインタフェイス17のような様々な他の供給源の、または、ファクシミリ/MODEMインタフェイス18を介した他の外部装置のICCプロファイル8が、コンピュータ装置1によりアクセスされる。
【００２３】
図1にはプログラム可能な汎用コンピュータの構成を示したが、本発明を実施する際は、専用のコンピュータ、スタンドアローンのコンピュータ、または、その他の種類のデータ処理装置を使用できることを理解すべきである。
【００２４】
図2は、コンピュータ装置1の内部構成の詳細を示すブロック図である。図2に示すように、コンピュータ装置1は、コンピュータバス21とインタフェイスする中央処理装置（以下「CPU」という）20を含む。同様に、スキャナインタフェイス22、ネットワークインタフェイス17、ファックス/MODEMインタフェイス18、ディスプレイインタフェイス23、キーボードインタフェイス25、マウスインタフェイス29、メインメモリ30、ディスク7、FDDインタフェイス14およびプリンタインタフェイス24も、コンピュータバス21とインタフェイスしている。
【００２５】
Microsoft Windows(R)、CMM 9、プライベートタグを作成および変更するアプリケーションプログラム10、プロファイルマネジャルーチン12およびその他のアプリケーションプログラム（図示せず）のような格納されたプログラム命令を実行する際に、CPU20が使用するランダムアクセスメモリを提供するように、メインメモリ30はコンピュータバス21とインタフェイスしている。すなわち、CPU20は、それらのプログラムをディスク7またはFDDインタフェイス14のFDの何れかからメインメモリ30へロードし、メインメモリ30に格納されたそれらのプログラムを読出して実行する。
【００２６】
CMM 9を含むカラー画像処理システムに関して本発明を説明する。簡単に言えば、CMM 9は、RGBのような第一のカラーフォーマットのカラー画像データを入力し、そのカラー画像データをCMYのような第二のフォーマットに変換する。上記の色変換動作を実行するために、CMM 9はICCプロファイルに格納されたデータを使用する。このデータは「International Color Consortium Profile Format」第3.01版（1995年5月8日改訂）に解説されていて、その内容は参考として本出願にも取り入れられている。
【００２７】
要するに、ICCプロファイルは、あるデバイスで作成されたカラーデータを別のデバイスに固有の色空間に変換する、という対ごとに使用することができるデバイスプロファイルである。例えば、先に説明したとおり、ICCプロファイルを使用して、モニタ用のRGBカラー画像データを、プリンタ用のCMY画像データに変換することができる。
【００２８】
ICCプロファイルは、特定のデバイスに関する色変換情報をCMM 9に提供する。さらに詳細に言えば、ICCプロファイルは、デバイスごとに提供され、カラー画像データをデバイスに従属する色空間（以下「デバイス従属色空間」という）からプロファイル結合空間へ変換し、さらにプロファイル結合空間から別のデバイス従属色空間へ変換する際に、CMM 9により使用される。この関係を図3に示す。
【００２９】
すなわち、図3は、モニタ31のRGB画像データをプロファイル結合空間34のデバイスから独立した画像データに変換する際に使用されるICCプロファイル32を有するモニタ31を示す。プリンタ35は、デバイスから独立したプロファイル結合空間のカラー画像データを、プリンタ35が利用可能なCMY画像データに変換するICCプロファイル37を含む。このように、CMM 9は、二つのデバイス従属色空間の間で変換を行うためにICCプロファイルを使用する。なお、図3は、モニタ31とプリンタ35に関してそれぞれICCプロファイル32および37を示しているが、それらのICCプロファイルがそれぞれ対応する装置に常駐しているわけではない。それらのICCプロファイルは、ICCプロファイルに従って変換されるべきデータに埋め込まれてもよく、または、接続されたパーソナルコンピュータのメモリに記憶されていてもよい。例えば、ICCプロファイルは、単一のCPUによりアクセス可能な単一のメモリに格納させることが可能であろう。
【００３０】
さらに、ICCプロファイルは、プリンタやモニタのほかにも、スキャナ、ファクシミリ装置、その他のデバイスにも使用することができる。
【００３１】
プロファイル結合空間は、D50標準光源と、1931 CIE標準オブザーバと、0/45または45/0反射率測定ジオメトリとにより規定される。基準ビューイング条件は、D50アーツビューイング環境であるANSI PH2.30-1989である。
【００３２】
図4に一例を示すICCプロファイルは、ヘッダ39およびタグテーブル40という二つの基本要素を含む。ヘッダ39は、ICCプロファイルに従って入力画像データを処理するために、CMM 9により使用される情報を含む。ヘッダデータはビッグエンジアン(big-endian)表記でなければならない。以下で、図4を参照してさらに詳細に説明するタグテーブル40は、パブリックタグおよびプライベートタグを介して色変換演算およびその他の情報をアクセスするために、CMM 9により使用される。
【００３３】
ICCプロファイルには、CMMがプロファイル結合空間とデバイス従属色空間との間でカラー情報を変換するために必要な一連の情報を不足なく提供するように設計されたリカードパブリックタグ(required public tag)が含まれている。さらに、ICCプロファイルは、付加変換を行うために使用することができるオプションパブリックタグ(optional public tag)、および、個々の開発者がそのICCプロファイルに専用の値を追加するためにカスタマイズできるプライベートタグを含んでいてもよい。
【００３４】
色変換を行うために、CMM 9は、スキャナなどの入力デバイスに対して、プロファイルが下記のタグを有することを要求する。つまり、プロファイル記述タグ、デバイスメーカタグ、デバイスモデル名タグ、メディアXYZ白色点タグ(media XYZ white point tag)、UCCMSプライベート情報タグ、著作権タグ、赤チャネルの相対XYZ三刺激値を含む赤の色剤タグ(red colorant tag)、青チャネルの相対XYZ三刺激値を含む青の色剤タグ(blue colorant tag)、緑チャネルの相対XYZ三刺激値を含む緑の色剤タグ(red colorant tag)、赤チャネルの階調再現曲線タグ、緑チャネルの階調再現曲線タグおよび青チャネルの階調再現曲線タグである。オプションとして、プロファイルは8ビットまたは16ビットのLUTを定義するAtoBnタグを含むことができる。
【００３５】
色変換を行うために、CMM 9は、モニタなどの表示デバイスに対して、プロファイルが下記のタグを有することを要求する。つまり、プロファイル記述タグ、デバイスメーカタグ、デバイスモデル名タグ、メディアXYZ白色点タグ、著作権タグ、赤の蛍光体の相対値を含む赤の色剤タグ、青の蛍光体の相対値を含む青の色剤タグ、緑の蛍光体の相対値を含む青の色剤タグ、赤チャネル階調再現曲線タグ、緑チャネル階調再現曲線タグおよび青チャネル階調再現曲線タグである。オプションとして、プロファイルはUCCMSプライベート情報タグを含むことができる。
【００３６】
色変換を行うために、CMM 9は、プリンタなどの出力デバイスに対して、プロファイルが下記のタグを有することを要求する。つまり、プロファイル記述タグ、デバイスメーカタグ、デバイスモデル名タグ、AtoB0タグ、BtoA0タグ、ガミュートタグ(gamut tag)、AtoB1タグ、BtoA1タグ、AtoB2タグ、BtoA2タグ、UCCMSプライベート情報タグ、XYZメディア白色点タグ(XYZ media white point tag)、測定タグおよび著作権タグである。
【００３７】
上記のAtoBnタグはICC lut8Type またはICC lut16Type 構造の何れかを有する。ICC lut8Type またはICC lut16Type 構造の汎用モデルは次のとおりである。
マトリクス --> 一次元LUT --> 多次元LUT --> 一次元LUT
【００３８】
lut8Type タグの場合、入力LUT、出力LUTおよびカラーLUTは、8ビット符号なし値のアレイである。各入力テーブルは1バイト整数から構成される。また、入力テーブルのエントリはそれぞれ、0から255の範囲に適切に標準化されている。タグに格納される場合、一次元LUTは、ICC仕様に基づき、昇順に順次パックされるものと想定される。
【００３９】
AtoB0タグは、写真レンダリングに使用される。AtoB0タグは、3×3マトリクスを定義し、そのマトリクス要素はAtoB0タグのバイト12から45に格納され、C,M,Y入力の入力チャネルはバイト8に格納され、L,a,b出力の出力チャネルはバイト9に格納され、LUTグリッドポイント（例えば、33×33×33）はバイト10に格納され、パディング(padding)はバイト11に格納され、入力テーブル（一致）はバイト46以降に格納され、カラーLUTおよび出力テーブルも写真レンダリング用として格納されている。バイト0から3はタグを定義する。
【００４０】
BtoA0タグは、入力テーブルと出力テーブルが入れ替わり、カラーLUTがAtoB0タグの逆であることを除いて、AtoB0タグと同じフォーマットを有する。
【００４１】
ガミュートタグは、ガミュートタグが入力チャネルに対してL,a,b値を使用し、出力チャネルにビットマップを出力することを除いて、AtoB0タグと同じフォーマットを有する。
【００４２】
AtoB1タグは、色差最小レンダリング(relative colormetric rendering)に使用され、AtoB0タグに対応するフォーマットを有する。一方、BtoA1タグは、色差最小レンダリングに使用され、BtoA0タグに対応するフォーマットを有する。これらはともに lut16Type または lut8Type の何れかである。
【００４３】
AtoB2タグは、彩度優先レンダリング(saturation rendering)に使用され、AtoB0タグに対応するフォーマットを有する。一方、BtoA2タグは、彩度優先レンダリングに使用され、BtoA0タグに対応するフォーマットを有する。これらはともにlut16Typeまたはlut8Typeの何れかである。
【００４４】
CMM 9は、同様に、オプションのプレビュープロファイルのパブリックタグ(optional preview profile public tag)を支援する。このタグは、入力チャネルにL,a,bデータが入力されることを除いて、AtoB0タグと同一のフォーマットを有する。
【００４５】
以下で、さらに詳細に説明するが、本発明は、カスタマイズされたプライベートタグを使用して、所定のICCプロファイル内で実行される色変換演算を変更および操作する。
【００４６】
本発明において、CMM 9は、ICCプロファイル8、および/または、ICCプロファイル8に格納されている様々なパブリックタグおよびプライベートタグにアクセスして、プライベートタグ（および/またはデバイスプロファイル）を作成または変更するプロファイルマネジャルーチン12（例えば、Canon Information Systems, Inc. が製造している ColorGear(R)）を含む。
【００４７】
プライベートタグの作成または変更は、図5に示す、プライベートタグに情報を入力するためのプライベートタグ作成および変更アプリケーションプログラム10の動作を記述する流れ図に従って実行される。さらに詳しくは、このアプリケーションプログラム10を実行する場合、ステップS501で、プライベートタグを作成すべきか、変更すべきかを判定する。プライベートタグを作成すべきであれば、処理はステップS502へ進み、表示スクリーン2に表示することで、プライベートタグを作成するために必要な情報をユーザに催促する。ユーザが必要なすべての情報を入力しきれなかった場合は、プライベートタグは作成されない。ユーザに催促する画面の例を図6および図7に示す。図6および図7に示す画面43および44はそれぞれ、以下で、さらに詳しく説明する図8のプライベートタグに対応している。
【００４８】
これに対し、ステップS501で、プライベートタグを変更すべきである場合、処理はステップS506へ進み、ユーザは入力画面43（または入力画面44）の「Get」ボタン42をクリックする。これに応答してアプリケーションプログラム10は、画面の情報に基づき、プロファイルマネジャルーチン12にプライベートタグ情報を要求する。プロファイルマネジャルーチン12は、要求されたプライベートタグデータのメモリ領域をアクセスし、要求されたデータをアプリケーションプログラム10に供給する。
【００４９】
プライベートタグデータを受信すると、ステップS502において、アプリケーションプログラム10はユーザに対して情報を画面43および44に表示する。そこで、ユーザは、画面43および/または44で情報を入力し、「Set」ボタン46をクリックすることにより、希望のどおりにプライベートタグに情報を設定することができる。ユーザは、「Next」ボタン47および「Previous」ボタン48を使用して、図6および図7に示されるプライベートタグデータを見通すことができる。
【００５０】
ステップS503で情報が入力されると、処理はステップS504へ進み、ユーザは「Set」ボタン46をクリックすることによりプライベートタグデータを設定する。ユーザがプライベートタグデータを設定すると、プライベートタグデータはアプリケーションプログラム10からプロファイルマネジャルーチン12へ送られる。プライベートタグデータを受信すると、ステップS505で、プロファイルマネジャルーチン12は、プライベートタグの中で規定されるバイト割当てに従い、プライベートタグデータを記憶する。例えば、図8に示し、以下で、さらに詳しく説明するucmIプライベートタグの場合、バイト4から7に「キヤノンシグネチャ(Canon Signature)」を格納し、バイト112から175には「作成部門(Creator Division)」を格納する、などになっている。このように、ユーザはプライベートタグの中に格納されている情報を変更することができる。
【００５１】
先に説明したように、図4は、ヘッダ39およびタグテーブル40を含むICCプロファイル8の一例について、その画面表示のプリントアウトを示す。
【００５２】
ヘッダ39は、ICCプロファイル8に特有の一組のパラメータを提供し、プロファイルの先頭の128バイトに格納されているのが好ましい。ヘッダ39に含まれるパラメータを以下に記述する。
【００５３】
(1)サイズ(Size): ヘッダ39のバイト0から3に格納され、プロファイルのサイズを定義する。
【００５４】
(2)CMMタイプ(CMMType): ヘッダ39のバイト4から7に格納され、プロファイルが関連しているCMMを定義する。Canon(R)のデバイスの場合、この値は「UCCM」である。
【００５５】
(3)バージョン(Version): バイト8から11に格納され、プロファイルのバージョン番号を定義する。これはICCにより2000000Hからと定義されている。
【００５６】
(4)プロファイルクラス(ProfileClass): バイト12から15に格納され、プロファイルのクラスを定義し、「prtr」（プリンタ）、「mntr」（モニタ）、「scnr」（スキャナ）、「link」（リンクデバイス）、「spac」（色空間変換）および「abst」（アブストラクトプロファイル）の何れか一つであればよい。
【００５７】
(5)データ色空間(DataColorSpace): バイト16から19に格納され、プロファイルがカラー画像データを変換するときのカラーフォーマットを定義し、RGB、XYZ、GRAY（グレースケール）、CMY、Luv、HSV、CMYK、YCbr、HLS、LabおよびYxyの中の何れか一つであればよい。
【００５８】
(6)インタチェンジ空間(InterchangeSpace): バイト20から23に格納され、プロファイル結合空間を定義し、LabまたはXYZの何れかであればよい。
【００５９】
(7)作成日(CreationDate): バイト24から35に格納され、プロファイルが作成された日付および時間を定義する。
【００６０】
(8)CS2シグネチャ(CS2Signature): バイト36から39に格納され、プロファイルのファイルシグネチャを定義する。ファイルシグネチャは、そのプロファイルを使用するデバイスのオペレーティングシステムにより、アイコンを作成するために使用される。
【００６１】
(9)一次プラットフォーム(Prim.platform): バイト40から43に格納され、プロファイルが作成された一次プラットフォームまたはOSを定義し、その値は、「Appl」(Apple OS)、「MSFT」(MicrosoftのOS)、「SGI」(Silicon Graphics)、「SUNW」(Sun)および「TGNT」(Taligent)の何れか一つであればよい。
【００６２】
(10)フラグ(Flags): バイト44から47に格納され、分散処理およびキャッシングオプションなどのCMMに関する様々なヒントを定義する。このパラメータは、キヤノン(R)のデバイスでは使用されないので、0Hに設定される。
【００６３】
(11)デバイス製造者(deviceManufacturer): バイト48から51に格納され、プロファイルが使用されるべきデバイスの製造者のシグネチャである。キヤノン(R)のデバイスの場合、このパラメータは値「CANO」を有する。
【００６４】
(12)デバイスモデル(deviceModel): バイト52から55に格納され、プロファイルが使用されるべきデバイスのモデル番号または名を定義する。「デバイスモデル」の値は、ICC、AppleのColorSync(R)およびMicrosoftのICM(R)(Image Color Matching)により課されている規格に準拠していなければならない。とくに、モデル番号または名は、「A」から「Z」までの文字（大文字のみ、および、「0」から「9」の文字）を使用する4バイトのASCII文字列でなければならない。「デバイスモデル」のフォーマットは次のようにすべきである。
1バイト目: 部門ID(Division ID)
2-4バイト目: モデル番号および拡張(extension)
【００６５】
「部門ID」は、その製品を製造した会社または部門を識別する。理想的には、それぞれの会社または部門が独自の「部門ID」を有するべきである。キヤノンにおいては、部門は次のように定義されている。「B」はバブルジェットを、「C」は複写機を、「D」はディジタルカメラを、「F」はファクシミリを、「L」はレーザビームプリンタを、「M」はCanon(R)のモニタを、「S」はスキャナを、「V」はビデオカメラをそれぞれ表し、「Z」はサードパーティ、つまりキヤノン以外の製品ファイルを表す。これらの値は無作為に定められ、希望に応じて設定できる。好ましい実施形態においては、「デバイスモデル」のバイト2から4は、下記の二つのフォーマットのうち一方に従って符号化される。
【００６６】
(a)フォーマット1
1バイト: 部門バイト
2バイト: モデル名
1バイト: 拡張(extension)
【００６７】
前述したように、部門バイトは、プロファイルを使用するデバイスの部門を格納する。モデル名バイトは、デバイスのモデルを格納する。拡張バイトはデバイスの拡張を格納し、例えば、BJ-600eはBJ-600デバイスの拡張であると考えられるであろう。二つのデバイスが同じ「デバイスモデル」を有する事態を避けるため、次の規約を採用している。A-Iは九つの拡張を表す拡張標識として使用され、J-Rは、先頭の3バイトに衝突がある場合に、次の九つの拡張を表す標識として使用され、S-Zは次の八つの拡張を表す拡張標識として使用され、0-9は次の10の拡張を表す拡張標識として使用される。このシステムの一例を以下に示す。
BJC-4000  ---> B40A（BJC-4000の第一の拡張）、
BJC-4000E ---> B40B（BJC-4000の第二の拡張）、
BJC-400   ---> B40J（BJC-400の第一の拡張）、および
BJC-400X  ---> B40K（BJC-400の第二の拡張）
【００６８】
(b)フォーマット2
1バイト: 部門バイト
3バイト: モデルID + 拡張
【００６９】
このフォーマットでは、部門バイトは先に説明した部門バイトと同じであり、モデルIDおよび拡張番号は、二つの異なるデバイスが同じ「デバイスモデル」をもたないことを保証するように定められている。第二のフォーマットにおいては、数学アルゴリズムを使用して、実際のモデル番号、例えばBJC-600の「600」から独自のモデルID+拡張を計算する。ただし、デバイスごとに独自の「デバイスモデル」値を生成するのであれば、どのような方法を使用してもよい。
【００７０】
(13)デバイス属性(deviceAttributes): バイト56から63に格納され、特定のデバイスセットアップに独自の属性である。本発明においては、媒体タイプ、解像度、ハーフトーンを生成するインクタイプおよびクリエータ(halftoning ink type and creator)を指定しなければならない。「デバイス属性」の好ましいフォーマットは、バイト56から57をICC予約とし、バイト58を媒体タイプにし、バイト59を解像度にし、バイト60を階調処理(screening)にし、バイト61をインクタイプにし、バイト62から63を将来の用途に予約したものである。
【００７１】
好ましい実施形態においては、媒体タイプ、解像度、階調処理およびインクタイプは次のように定義された値を有する。
(a)媒体タイプ
0: 適用不可/ドントケア
1: 普通紙
2: コート紙
3: 光沢紙
4: OHP記録紙
5: 強光沢フィルム(High Glossy Film)
6: ファインコート紙
7: BPF記録紙
8: 織物記録紙(Textile Paper)
(b)解像度
0: 適用不可/ドントケア
1: 1インチ当り180×180ドット(180×180dpi)
2: 200×200dpi
3: 300×300dpi
4: 360×360dpi
5: 400×400dpi
6: 600×300dpi
7: 600×600dpi
8: 720×360dpi
9: 720×720dpi
10: 1200×600dpi
11: 1200×1200dpi
(c)階調処理
0: 適用不可/ドントケア
1: パターン1
2: パターン2
3: パターン3
4: 誤差拡散
5: 連続階調パターン1
6: 連続階調パターン2
7: 連続階調パターン3
(d)インクタイプ
0: 適用不可/ドントケア
1: 普通インク
2: インクタイプ1
【００７２】
希望に従い、上記の値を変更することができる。
【００７３】
(14)レンダリング特性(RenderingIntent): バイト64から67に格納され、プロファイル設計の趣旨(intent)（すなわち、色味重視(perceptual)、忠実再現(relative colormetric)、彩度重視(saturation)および絶対(absolute)）を定義する。本発明において、この値は0である。
【００７４】
(15)白色XYZ(WhiteXYZ): バイト68から79に格納され、プロファイル結合空間の照度値を定義する。本発明において、この値はD50に設定される。
【００７５】
(16)バイトは80から127は将来の使用に備えてICCにより予約されている。
【００７６】
ヘッダ39は、プロファイルヘッダに格納できるすべての情報を隈なく含むリストではなく、単に、プロファイルヘッダに格納できる情報の一例を示しているのに過ぎない。
【００７７】
以上説明した情報に加えて、必要に応じてまたは希望に従い、他の情報をヘッダに追加してもよい。この目的のために、先に示したように、将来の使用に備えて、ICCは48バイトを予約している。しかしながら、本発明を実現するためには、ヘッダ39に示すすべての情報が存在していなければならない。
【００７８】
タグテーブル40は、パブリックおよびプライベートともに、タグのリストと、それらのタグに関する情報とを含む。プロファイルの中で、タグテーブル40はバイト128（すなわち、ヘッダ39の後）から始まる。より詳しくは、タグテーブル40に示すように、「Ind」はタグテーブル40中のタグ番号を示し、「Signat」はタグシグネチャであって、CMMにより特定のタグの位置を確定するために使用され、「エレメントオフセット(elementOffset)」はタグが始まるメモリの位置を10進数と16進数の両方で示し、「サイズ(size)」はバイト単位でタグのサイズを定義する。
【００７９】
タグテーブル40中の個々のタグは、そのバイト0から3がタグシグネチャを定義し、バイト4から7がタグデータの開始を指示するオフセット値を定義し、バイト8から11はタグのバイト数を定義するような構造である。
【００８０】
先に述べたように、パブリックタグは、すべてのICCプロファイルで使用することができる普通の(stock)色変換演算を定義する。タグテーブル40で規定されるパブリックタグの一例は、3×3色変換マトリクス処理、三次元LUT、および、三つの一次元LUTからなる二組を含むA2B2である。パブリックタグの他の例は、ICCプロファイルフォーマット文書にさらに詳細に記述されている。
【００８１】
タグテーブル40において、0から16の「Ind」値を有するタグはパブリックタグを構成し、17と18の「Ind」値を有するタグはプライベートタグを構成する。この場合、プライベートタグは、キヤノン(R)登録のプライベートタグである。
【００８２】
本発明は、タグテーブル40にリストされているパブリックタグと関連させながら、上記の二つのプライベートタグに関連して説明される。ただし、本発明は、ICCプロファイルフォーマット文書に記載されたどのパブリックタグ、または、それにコンパチブルなどのようなタグと組合わせても使用することができる。
【００８３】
要するに、本発明は、入力画像データに色変換演算を施すシステムであり、このシステムは、プロファイルフォーマット中の一つのパブリックタグに格納された所定の一連の色変換演算を行う代わりに、第一のタグおよび第二のタグを使用して色変換演算を行う。このシステムは次のステップを含む。つまり、カラー画像データを入力する入力ステップと、所定の一連の色変換を無効にする(override)オーバライド情報を格納する第一のタグ、および、階層記憶構造を介してアクセス可能な色変換演算データを格納する第二のタグを格納する格納ステップと、第一のタグのオーバライド情報に基づき、第二のタグにアクセスするか否かを判定する判定ステップとである。このシステムには、さらに、次のステップが含まれている。つまり、判定ステップで第二のタグをアクセスすると判定した場合、第二のタグの階層記憶構造中の色変換演算データにアクセスするためのポインタに従い、第二のタグの色変換演算データを読取る読取ステップと、読取ステップで読取った色変換演算データに従い、入力画像データに色変換演算を施す処理ステップとである。
【００８４】
本発明は、色変換演算を格納し、階層構造中の他のパブリックおよびプライベートタグを呼出す。この階層構造を図9に示し、以下、図に示す各要素の詳細な説明と関連させながら、図9を詳細に論じる。
【００８５】
以下、そのシグネチャ「ucmI」および符号52によって示す値17の「Ind」を有するプライベートタグは、ICCプロファイル8のプライベートタグとICCプロファイル8のパブリックタグとの相互作用に関する情報を記憶している。さらに、ucmI 52は、プライベートタグを使用してカラーマッチングを行うCMM 9が要求する情報を記憶している。ucmI 52が欠落している場合、CMM 9はデフォルト設定を使用して、プロファイルを解釈する。図8に示すように、この情報はバイト順にucmI 52に格納される。
【００８６】
すなわち、ucmI 52の列53は、列56にデータを格納しているucmI 52のバイトを定義する。列54は列53のバイトに格納されたデータを記述し、列57は列53のバイトに記憶されたデータのフォーマットを定義する。なお、ここで、「uInt32」は32ビット符号なし整数を表し、「0x」の後に数字が続く表記はその数が16進数フォーマットであることを示す。
【００８７】
ucmI 52には次のデータを格納する。つまり、ucmI 52をアクセスする際にCMM 9が使用できるタグ特有の識別子である「uccmsプライベート情報タグシグネチャ(uccmsPrivateInformationTag Signature)」と、プライベートタグをキヤノン(R)のプライベートタグと識別するための二次識別子である「キヤノンシグネチャ(Canon Signature)」と、色変換演算で使用されるパラメータ（以下にさらに詳しく説明する）のパラメータデータサイズを定義する「パラメータバイトサイズ(Size of parameters in bytes)」と、プロファイルの読取りに要求される最小CMMバージョンを定義する「エンジンバージョン(Engine version)」と、プロファイルのバージョンを定義する「プロファイルフォーマット文書バージョン(Profile Format Document version)」と、その作成者によって割当てられたプロファイルバージョンを定義する「プロファイルバージョン(Profile version)」と、該当するプロファイルのビルド番号を定義する「プロファイルビルド番号(Profile Build number)」と、プロファイルにより使用されるべき線形補間の種類を定義する「補間フラグ(Interpolation flag)」と、バイト32から71に格納され（以下でさらに詳しく説明する）、A2B2のような特定のパブリックタを無効にする(override)ために要求されるシーケンスキヤノンID番号(Sequence Canon ID number)を格納するオーバライド要素と、バイト72から111に格納され、例えばドラフトモードのようなプリンティングモードタイプを示すCMM 9の最適化フラグを格納する最適化フラグ値と、プロファイルを作成したキヤノン(R)の部門を定義する「作成部門(Creator Division)」と、プロファイルをサポートするキヤノン(R)の部門を定義する「サポート部門(Support Division)」と、フォンクライス(Von Kries)色変換を使用するか否かを判定するVon Kriesフラグと、予約バイトとである。
【００８８】
図10Aおよび図10Bは流れ図であり、CMM 9によるICCプロファイル8、並びに、それと関連するパブリックおよびプライベートタグのナビゲート処理を示している。
【００８９】
詳細に説明すると、ステップS1001で、CMM 9はヘッダ39にあるプロファイル8のCMMタイプ(CMMType)を読取る。CMMタイプは、値が格納されているメモリの領域を示すポインタに相当する。
【００９０】
次に、図10AのステップS1002で、ヘッダ39のCMMタイプに基づき、CMM 9がプロファイル8は「UCCM」プロファイルであると判定した場合、処理はステップS1003へ進み、CMM 9は、パブリックタグではなくucmI 52に応じた色変換演算を行う。すなわち、図9に示すように、ucmI 52は記憶階層の最上位にある。
【００９１】
すなわち、CMM 9は、ucmI 52のバイト0から3に基づいてucmI 52のシグネチャを読取り、ucmI 52に対応するメモリの「エレメントオフセット(elementOffset)」領域、この場合、バイト25667810をアクセスする（図4を参照）。
【００９２】
その後、図10AのステップS1003で、CMM 9は、ucmI 52のバイト32から71のデータを読取り、それに基づき、プロファイル8のパブリックタグにより定義される演算の何れが無効にされる(override)かを判定する。ここで、ucmI 52のオーバライド領域に0Hがあれば、CMM 9は対応するパブリックタグに格納されたプロセスに従って色変換を実行する。ucmI 52のオーバライド領域に非ゼロ値がある場合、CMM 9は、ucmI 52に格納され、かつ、その非ゼロ値によって定義されるプロセスに従い、色変換を実行する。例えば、図8に示すように、AtoB0Tagオーバライド59は値「0x0」または0Hを有する。この情報に基づき、CMM 9は、AtoB0Tagパブリックタグに格納されている色変換プロセスに応じて、AtoB0Tag色変換処理を行う。従って、AtoB0Tag色変換処理の流れは図10Bの終わりに向かって進む。
【００９３】
ところが、図8にも示されているように、BtoA2Tagオーバライド60は、メモリの一つの領域を指示するポインタとして働く値「0x33」または33Hを有する。従って、BtoA2Tagの色変換演算について、処理は、BtoA2Tagパブリックタグではなく、ucmI 52に格納された情報に従って進む。
【００９４】
さらに詳しくは、図10Aに示すように、処理はステップS1005へ進み、以下ではそのシグネチャ「ucmP」と符号62によって示される「Ind」値18を有するプライベートタグが、CMMにより自動的に読取られる。
【００９５】
図11はucmP 62の一例を示す。図11に示すように、ucmP 62は、ucmI 52と同じフォーマットで、バイト順に情報を格納している。従って、簡潔にするため、この記憶フォーマットの詳細な説明を省略する。
【００９６】
ucmP 62は次の情報を格納する。つまり、CMM 9がucmP 62をアクセスするときに使用するタグ特定用の識別子である「uccmsプライベートシーケンスタグテーブルシグネチャ(uccmsPrivateSequencesTagTable Signature)」と、ucmI 52に関して上述した「キヤノンシグネチャ」と同一である「キヤノンシグネチャ」と、ucmP 62を介して実行されるべき色変換シーケンスの数を定義する「シーケンス数(number of Sequences)」と、特定の色変換シーケンスで実行されるべき一連の色変換演算を定義する「シーケンス構造体(Sequences structures)」と、色変換シーケンスを実行するCMM 9により要求されるその他の関連情報とである。なお、図11は四つのシーケンス構造体しか示していないが、任意数のシーケンス構造体をucmP 62に加えることができ、シーケンス構造体の数は本発明を実行するハードウェアによってのみ制限される。
【００９７】
色変換シーケンスのシーケンス構造体を図12に示す。なお、色変換シーケンスにおける特定の演算は、それに含まれる他のパラメータとともに変化することがあるが、そのシーケンス構造体は固定されている。
【００９８】
すなわち、すべての色変換シーケンスは、CMM9が特定のシーケンス構造体をアクセスする際に使用するシーケンスである「CanonID（キヤノンID）」を含む。この場合、「キヤノンID」は、図8のucmI 52のBtoA2Tagオーバライド60に相当する33Hである。この対応によって、CMM9は、ucmI 52に基づき、ucmP 62におけるどのカラーマッチングシーケンスにアクセスするかを決定することができる。
【００９９】
色変換シーケンス構造体は、さらに次を含む。つまり、00Hの値を維持する「reserved bytes（予約バイト）」と、以下でさらに詳細に論じるように、色変換シーケンスにおける演算の数を定義する「numOpers」と、該当するプロファイルがデータを変換するプロファイル結合空間を定義する「seqPCS」と、色変換シーケンスにより実行されるべき演算で使用されるパラメータのバイト長を定義する「length（長さ）」と、色変換シーケンスにより実行されるべき色変換演算のメモリにおける開始点を定義する「offset（オフセット）」とである。
【０１００】
図12に示すように、シーケンス構造体は、それに記憶されているデータのフォーマットをも定義する。この場合、図に示すように、フォーマットは「uInt32」であり、上述したように、32ビット符号なし整数に相当する。
【０１０１】
シーケンス構造体は、図11に示すように、ucmP 62の列65のバイト16から39に格納されるバイトストリングを含む。すなわち、図11および図12に示す例の場合、「CanonID」は33、「reserved」は00、「numOpers」は04、「seqPCS」はLAB、「length」は40、「offset」は5163である。これらの値は、シーケンス構造体1のバイト16から39にデータとして格納される。同様に、シーケンス構造体2から4にも、識別可能なシーケンス構造体を格納させることができる。しかしながら、簡潔にするため、本発明の説明を上述のシーケンス構造体についてのみ進めるものとする。従って、図9に示すように、ucmP 62は階層記憶構造の中でucmI 52の次に位置し、その後に様々な利用可能シーケンス構造体66から68が続いている。
【０１０２】
ここまでの説明を要約すると、ucmI 52のBtoA2Tagオーバライド60には33Hが存在し、かつ、シーケンス構造体1は33HのキヤノンIDを有するので、CMM 9はシーケンス構造体1を読取ることになる。
【０１０３】
先に説明したように、各シーケンス構造体は、「numOpers」値、「length」値および「offset」値を含む。CMM 9は、これらの値を使用して、シーケンス構造体に格納された色変換演算にアクセスする。さらに詳しくは、(1)それぞれの色変換演算は「length」により定義される固定長であり、(2)「numOpers」により定義される色変換演算の数がわかっていて、かつ、(3)色変換演算が順に格納されているメモリ領域もわかっているので、CMM9は、各色変換演算を分析し(parse)、シーケンス構造体に格納されている情報に基づき演算を実行することができる。このプロセスについては、以下で、さらに詳しく説明する。
【０１０４】
図13は色変換演算の構造体を示す。すなわち、色変換演算の構造体は次のように定義される。「oper」は実行されるべき色変換演算の種類を定義し、「subid（サブID）」は、以下で、さらに詳しく説明するように、特定の色変換演算に関する副識別番号を定義し、「length（長さ）」は色変換演算におけるパラメータリストの長さを定義し、「tagFlag（タグフラグ）」は、「tagFlag」が非ゼロ値を有する場合は別のパブリックまたはプライベートタグに対する呼出し(call)を定義し、「tagFlag」がゼロ値を有する場合はパラメータリストの中に記憶されている色変換演算に対する呼出し(call)を定義し、「parm」は色変換演算で使用されるパラメータリストを定義する。
【０１０５】
本発明を使用して、現在実行できる色変換演算は七種類ある。それら七つの色変換演算には、括弧中のUCCMS演算番号によりそれぞれ定義される次が含まれる。つまり、(1)N×Mマトリクス、(2)三つの一次元LUT、(3)三次元LUT、(4)色空間変換、(5)色相シフト(Shift Hues)（カラーワーピング(color warping)）、(6)ビジネスグラフィックス変換、(7)三線形(tri-linear)または角錐(pyramidal)の三次元LUTである。希望に応じて、このリストに対して、色変換演算を追加または削除することが可能である。
【０１０６】
上記の色変換演算のそれぞれは、入力カラー画像データに異なる演算を行う。例えば、N×Mマトリクスは、カラー画像データをXYZ色空間からRGB色空間へ変換するために使用される3×3マトリクスであってもよいだろう。シーケンス構造体からアクセスされる他の演算に従い、同様の色変換を行うことができるだろう。
【０１０７】
CMM9は、上記の七つの演算のリストを格納している。CMM9が、シーケンス構造体の「oper」値に基づき、カラー画像データに対してそれらの演算の一つを実行すべきであると判定すると、CMM9は、実行すべき演算に関するデータをその色変換演算を指定するプライベートタグから読取り、そのデータを使用してカラー画像に対し色変換演算を実行する。次に、指定されたプライベートタグから、実行すべき演算に関するデータへのアクセスについて説明する。
【０１０８】
すなわち、図10Bによれば、色変換演算それぞれの構造体をシーケンス構造体から読取り、それに基づいて、どの種類の色変換演算を実行すべきかを判定する。例えば、CMM9は、メモリ内の領域を指示するポインタとして働く「oper」値として、特定の色変換演算を表す「1」を読取った場合、「1」に相当する色変換演算、この場合はN×Mマトリクスをアクセスする。図9は、色変換演算と、シーケンス構造体66との関係をさらに示し、すなわち、色変換演算はシーケンス構造体66より階層が低くなっている。
【０１０９】
図14は、UCCMS演算1、つまりN×Mマトリクスを実行するために使用されるデータを含むN×Mタグ80の一例を示す。図14に示すように、N×Mマトリクスを実現するために使用されるプライベートタグのフォーマットは、ucmP62を実現するために使用されるプライベートタグのフォーマットに類似している。従って、簡潔にするため、ここではフォーマットの詳細な説明を省く。なお、色変換演算に使用されるプライベートタグそれぞれのフォーマットおよび構造は、N×Mタグ80と同じである。
【０１１０】
図14に示すN×Mタグ80は次を含む。つまり、前述したように、プライベートタグにより実行される色変換演算の種類を定義する「演算ID(Operation ID)」と、以下にさらに詳しく説明するが、この場合は使用されない「サブID(Sub ID)」と、後述するパラメータリストの長さを定義し、パラメータリストのアクセスに使用される「パラメータリストのバイト長(Length of Parameter List in bytes)」と、以下にさらに詳しく説明するが、この場合は使用されないタグフラグと、色変換演算で使用されるべきパラメータを定義する「パラメータデータ(Parameter Data)」とである。図14に示すように、この場合、NとMがともに3であるN×Mマトリクスにおいて使用されるパラメータは、マトリクスのN次元、マトリクスのM次元、および、各マトリクス要素である。
【０１１１】
従って、CMM9は、図10Bに示す流れ図のステップS1006に基づき、N×Mの色変換演算を実行すべきであると判定した場合、N×Mタグ80に格納されているパラメータデータを読取り、ステップS1007で、読取ったパラメータに従い「演算ID(Operation ID)」により定義される色変換演算を実行する。
【０１１２】
シーケンス構造体1で定義される色変換演算の「oper」値が2である場合、処理はステップS1008へ進んだ後、ステップS1009へ進む。ステップS1008およびS1009は、一次元LUTを含む色変換演算を定義する。図15Aおよび図15Bは、「oper」値が2である色変換演算2のためのLUTを作成するために使用できると考えられるプライベートタグの二例を示している。
【０１１３】
図15Aは色変換演算2のためのLUTを定義する一次元LUT(1DLUT)タグ81を示し、一次元LUT81からパブリックタグまたは別のプライベートタグを呼出す。さらに詳しくは、図15Aにおいて、「タグフラグ(Tag Flag)」値は「A2B2」である。「タグフラグ(Tag Flag)」は別のタグ、この場合は「AtoB2」パブリックタグの呼出しを定義する。すなわち、CMM9は、一次元LUT81を読取り、「タグフラグ(Tag Flag)」の値として「A2B2」を得ると、「AtoB2」パブリックタグをアクセスし、それに従って色変換演算を実行する。従って、この場合は、パブリックタグに格納されたデータに従い色変換演算を行うことになるので、「パラメータデータ(Parameter Data)」は不要である。そのため、「パレメータリストの長さ(Length of Parameter List)」もゼロ値を有する。
【０１１４】
本発明によれば、ユーザが「サブID(Sub ID)」値を設定することにより、「タグフラグ(Tag Flag)」により指定されたパブリックタグ中の特定の色変換演算を選択できるので有利である。すなわち、「AtoB2」のようなパブリックタグはそれぞれ、二つ以上の色変換演算を含んでいてもよい。本発明は、パブリックタグから一つの色変換演算を選択する。例えば、パブリックタグ「AtoB2」は3×3マトリクス並びに三つのLUT、つまり、lut8Type/lut16Typeからの入力LUT、lut8Type/lut16Typeからの出力LUTおよび曲線タイプ(curve-type)からのLUTを含む。一次元LUTタグ81において「サブID(Sub ID)」値を0、1または2に設定することにより、CMM9は、パブリックタグ「AtoB2」で規定されたカラーマッチング演算のうち一つだけを実行する。さらに、CMM9は、一次元LUTタグ81の「演算ID(Operation ID)」に基づき、LUT演算を実行すべきであることを知るので、パブリックタグ「AtoB2」に格納された一つのLUTを選択するだけであり、例えば3×3マトリクスを選択することはない。
【０１１５】
本発明の好ましい実施形態においては、「サブID(Sub ID)」の値「0」は、lut8Type/lut16Typeからの入力LUTを使用することをCMMに指示し、「サブID(Sub ID)」の値「1」は、lut8Type/lut16Typeからの出力LUTを使用することをCMM9に指示し、「サブID(Sub ID)」の値「2」は、曲線タイプ(curve-type)からのLUTを使用することをCMM9に指示するが、先に示したように、これらはすべてパブリックタグ「AtoB2」に格納されている。図4に示す各パブリックタグ、および、複数の色変換演算を含むと思われる他のパブリックタグについても、同様の指定を行うことができる。
【０１１６】
図15Bは、「タグフラグ(Tag Flag)」がゼロ、すなわち、パブリックタグの情報に従ってではなく、プライベートタグの情報に従って色変換演算が実行されるべき、色変換演算2のための一次元LUTタグ82の一例を示している。すなわち、一次元LUTタグ82においては、前述したように、一次元LUTタグ82の16バイト目以降に記憶されている「パラメータデータ(Parameter Data)」のバイト長を指示する「パラメータリストの長さ(Length of Parameter  List)」は77110である。一次元LUTタグ82で定義される「パラメータデータ(Parameter Data)」は、LUTを使用するガンマ補正のような色変換演算を実行するために必要なパラメータデータを含む。すなわち、図15Bに示すように、「パラメータデータ(Parameter Data)」は、LUTの次元、入出力データの入出力ビット数、および、LUTの値を含む。前述したように、パラメータの数、つまりLUTのサイズは、プライベートタグによって制限されない。これらの値は、本発明を実現するコンピュータ装置の能力によってのみ限定される。
【０１１７】
図10Bに戻り、シーケンス構造体1で定義される色変換演算の「oper」値が3である場合、処理はステップS1010へ進んだ後、ステップS1011へ進む。ステップS1010およびS1011は三次元LUTの色変換演算を定義する。図16は「oper」値が3である色変換演算3を実現するプライベートタグの一例を示す。図16の説明は、図15に関する先の説明と同様であるので、簡潔にするために図16の詳細な説明を省く。
【０１１８】
図10Bに戻り、シーケンス構造体1で定義される色変換演算の「oper」値が4である場合、処理はステップS1012へ進んだ後、ステップS1013へ進む。ステップS1012およびS1013は色空間変換演算を定義する。
【０１１９】
図17は「oper」値が4である色変換演算4を実現するプライベートタグ（色空間タグ84）の一例を示す。図17において、「演算ID(Operation ID)」は4、「パラメータリストの長さ(Length of Parameter List)」は0、「タグフラグ(Tag Flag)」は0Hである。この場合、これらの値は変化しない。この場合の「サブID(Sub ID)」は、色空間タグ84を介して実行されるべき色空間変換演算の種類を定義する。色空間タグ84を介して、1から9までの「サブID(Sub ID)」値により定義される次の色空間変換を実行できる。
0: RGB（赤、緑、青）--> HLS（色相、明度、彩度）
1: HLS --> RGB
2: CMY（シアン、マゼンタ、イエロー） --> HLS
3: HLS --> CMY
4: CIE XYZ --> CIE Lab
5: CIE Lab --> CIE XYZ
6: CIR xyY --> CIE XYZ
7: CIE XYZ --> CIE xyY
8: CIE XYZ --> CRGB（キヤノンRGB）
9: CRGB --> CIE XYZ
【０１２０】
なお、上記の色空間変換のリストをすべて網羅しているわけではない、また、希望に応じて、別の色空間変換演算を追加してもよい。
【０１２１】
シーケンス構造体1で定義される色変換演算の「oper」値が5である場合、図10Bの処理はステップS1014へ進んだ後、ステップS1015へ進む。ステップS1014およびS1015はカラーワーピング変換演算を定義する。簡単にいえば、カラーワーピング変換演算は、入力RGBの色相角を用いて、出力カラー画像データのCMYK誤差を修正するものである。
【０１２２】
図18は「oper」値が5である色変換演算5を実現するワーピングタグ88の一例を示す。図18において、「演算ID(Operation ID)」は5、「サブID(Sub ID)」は0、「タグフラグ(Tag Flag)」は0Hである。これらの値は変化しない。この場合、「パラメータデータ(Parameter Data)」は、カラーワーピング変換関数を実行するために必要な値、すなわち、RGB色相角を含む。
【０１２３】
シーケンス構造体1で定義される色変換演算の「oper」値が6である場合、図10Bの処理はステップS1016へ進んだ後、ステップS1017へ進む。ステップS1016およびS1017は、例えば、現在係属中である米国特許出願番号第08/496,100号、名称「Color Management System Having Business Graphics Rendering Mode」に記載されているような色変換演算を実行するときに有用であるビジネスグラフィクスLUTを定義する。なお、この米国出願の内容は、参考として、本出願に取り入れられている。図19Aおよび図19Bに示すビジネスタグ89および90は、図15Aおよび図15Bに示す一次元LUTタグ81および82にそれぞれ対応している。
【０１２４】
先の図15に示すプライベートタグに関する場合と同じで、図19に示すプライベートタグはucmP 62のシーケンス構造体1を介してCMM9によりアクセスされる。ところが、図11に示すプライベートタグに従って処理すべき入力データが同じ値を有する場合、CMM9は、図19に示すプライベートタグの何れかに従う色変換演算を実行せず、色変換演算は全く実行されない。これが、図19に示すプライベートタグに従って実行される色変換と、図15のそれとの唯一の相違点であるので、簡潔にするため、図19に示すプライベートタグにより定義される色変換演算の詳しい説明を省く。
【０１２５】
シーケンス構造体1で定義される色変換演算の「oper」値が7である場合、図10Bの処理はステップS1018へ進んだ後、ステップS1019へ進む。ステップS1018およびS1019は、三次元線形補間を実行する三線形(tri-linear)または角錐(pyramidal)補間プロセスを定義する。
【０１２６】
本発明の好ましい実施形態においては、三線形または角錐補間を実行するプライベートタグは、上述した他のプライベートタグに類似する構成を有する。図20は色変換演算7を実行するために使用されるプライベートタグ92の好ましい一実施形態を示す。図12に示すように、プライベートタグ92において「演算ID(Operation ID)」は7、「サブID(Sub ID)」は0、「タグフラグ(Tag Flag)」はゼロである。これらの値は変化しない。さらに、「パラメータリストの長さ(Length of Parameter List)」はパラメータを構成するバイト数に相当する値を有し、三線形または角錐補間を実行するためのデータを定義する「パラメータデータ(Parameter Data)」も含まれている。
【０１２７】
本発明に従って三線形または角錐補間を実行するために使用されるプライベートタグの別の実施形態を図21に示す。すなわち、図21に示すプライベートタグ39は、必要な色変換演算を実行するために使用するパラメータデータを含む代わりに、「テーブルID(Table ID)」を含む。「テーブルID(Table ID)」値は、三線形補間または角錐補間の何れを実行すべきかを判定するときに使用される別のプライベートタグを指す。この別のプライベートタグの一例を図22に示す。
【０１２８】
さらに詳しくは、図22は、図21に示すプライベートタグ93から呼出され、三線形または角錐補間を実行するために使用されるテーブルを定義するプライベートタグ94の一例を示している。
【０１２９】
すなわち、図22に示すように、以下でucmT 94で示されるプライベートタグ94は、本発明における他のプライベートタグと同様に構成され、以下の要素を含む。つまり、タグ特有の識別子であり、CMM9がこのプライベートタグをアクセスする際に使用できる「uccmsプライベート補間テーブルタグシグネチャ(uccmsPrivateInterpolation TableTag Signature)」と、図8に関して先に説明した「キヤノンシグネチャ(Canon Signature)」と、ucmT 94のLUTの数を定義する「テーブル数(Number of Tables)」と、CMM9が三線形または角錐補間を実行する際のLUTである「テーブル(Table)」N（N=1,2,…）とである。
【０１３０】
「テーブル(Table)」値は、図23に一例を示すテーブルヘッダ構造体を有する。図23に示すように、テーブルヘッダ構造体は次を含む。つまり、テーブル特有の識別子である「table（テーブルID）」と、指定されたテーブルの長さを定義する「length（長さ）」と、指定されたテーブルが始まるメモリの位置を定義する「offset（オフセット）」とである。この情報を使用して、メモリ内の異なるテーブルをアクセスすることができる。図9に示すように、これらのテーブルは色変換演算7からだけアクセスされる。
【０１３１】
ucmT 94によりアクセスされるLUTを定義するプライベートタグの一例を図24に示す。図24に示すLUTプライベートタグ96は、本発明で使用される他のプライベートタグと同一のフォーマットを有する。
【０１３２】
LUTプライベートタグ96は次の要素を含む。つまり、LUTにより実行される演算の種類、すなわち、その値が1ならば三線形補間、その値が0ならば角錐補間を定義する「テーブル種(tableKind)」、LUTの親タグを定義する「親タグ(parentTag)」と、入力チャネルの数を定義する「インチャネル(inChannels)」と、LUTをアドレスするために使用される入力ビットの数を定義する「インビット(inBits)」と、出力チャネルの数を定義する「アウトチャネル(outChannels)」と、出力に使用されるビットの数、通常、この数と「インビット(inBits)」はともに8である、を定義する「アウトビット(outBits)」と、LUTの格子点(grid points)の数を定義する「格子点三次元テーブル(gridPoints3DTable)」と、第四のチャネルに関する格子点の数を定義し、角錐補間のときにのみ使用される「格子点四次元テーブル(gridPoints4DTable)」とである。上述したように、上記の情報は、三線形または角錐補間を実行するためにカラーマッチング法によって使用される。
【０１３３】
「親タグ」が0x00000000であり、かつ、「テーブル種」が三線形であれば、ucmT 94によって完全補間カラーLUTが指される。「親タグ」が0x00000000であり、かつ、「テーブル種」が角錐であれば、カラーLUTの中の第一のデータセットが主格子点データとして定義され、これに副交点データが続く。「親タグ」がプロファイル8の三次元LUTのシグネチャであり、かつ、「テーブル種」が三線形であれば、三次元LUTを格子点として使用し、「入力チャネル」のような残りのフィールドは無視される。「親タグ」がプロファイル8の三次元LUTのシグネチャであり、かつ。「テーブル種」が角錐であれば、三次元LUTを主格子点として使用し、カラーLUTは副格子点のみを含む。
【０１３４】
図10Bに戻り、ステップS1006からS1018の動作がいずれも実行されない場合、処理は終了する。なお、加えて、「プライベートデータテーブルタグ(PrivateDataTableTag)」と呼ぶプライベートデータタグは、ユーザによりユーザのプライベートデータを含むように変更され、階層記憶構造の中のあるポイントに格納されることができる。
【０１３５】
次に、図25を参照して、本発明に従い、カラーモニタ2のRGB色空間からカラープリンタ16のCMY色空間へのカラー画像データの変換を簡単に説明する。なお、そのような色変換処理は、おそらく、現在利用できるパブリックタグを使用して実行可能であろうが、本発明を例示するために、以下の例ではユーザが作成したプライベートタグに関連して説明する。
【０１３６】
カラーモニタ2とカラープリンタ16の双方について、定義済みのICCプロファイルが存在すると仮定すると、ステップS2501で、ユーザはプライベートタグを作成および変更するための上述のアプリケーションプログラム10を実行する。このプログラムに従い、ユーザは、RGB色空間からカラーモニタ2用のプロファイル結合空間へ、カラー画像データを変換するためのプライベートタグ情報と、そのプロファイル結合空間からカラープリンタ16のCMY色空間へ、カラー画像データを変換するためのプライベートタグ情報とを入力する。
【０１３７】
ステップS2501でカラーモニタ2およびカラープリンタ16の双方についてプライベートタグを作成したならば、処理はステップS2502へ進む。ステップS2502で、CMM 9はカラーモニタ2のRGBカラー画像データを入力する。その後、ステップS2503で、CMM 9は、RGB色空間からプロファイル結合空間へカラー画像データを変換するためにICCプロファイルにアクセスする。
【０１３８】
CMM 9は、カラーモニタ2用のカラープロファイルにアクセスしたならば、プロファイルにリストされているタグの何れをアクセスするかを決定するために、プロファイルを読取る。この場合、CMM 9は、CMMタイプ(CMMType)の下で「UCCM」を読取るであろうが、これは処理を、標準のICC手続に従わずに、ucmIプライベートタグに従い進めることを示す。
【０１３９】
この例で使用されるICCプロファイルは、先に説明したのと同じ構造を有することに注意しなければならない。従って、ステップS2504で、CMM 9は、パブリックおよび/またはプライベートタグをRGBデータに作用させるべきかを決定するために、ucmIを読取る。この場合、ucmIのオーバライド領域に非ゼロ値があると仮定すると、CMM 9は、ucmPのシーケンス構造体領域の一つに同じ非ゼロ値がある場所をつきとめる。
【０１４０】
従って、上記のステップにより、CMM 9は、RGBカラー画像データに施すべき色変換演算のシーケンスを、すなわち、ucmIのオーバライド領域の非ゼロ値に対応するシーケンス構造体を介してアクセスされる色変換演算を決定する。
【０１４１】
CMM 9は、RGBカラー画像データに施されるべき色変換演算のシーケンスを決定すると、「oper」値に基づいて、各色変換演算のデータおよび各色変換演算のシーケンス構造体内の記憶位置データにアクセスする。このようにして、CMM 9は、N×Mマトリクスの要素のような色変換演算データを格納するプライベートタグにアクセスする。
【０１４２】
次に、ステップS2505で、CMM 9は、シーケンス構造体により参照されたプライベートタグからのパラメータを使用して、シーケンス構造体の「oper」値により示される色変換演算をRGBカラー画像データに施す。この場合、RGB色空間スペースからプロファイル結合空間へカラー画像データを変換するように、パラメータと色変換演算は設定されるであろう。
【０１４３】
プロファイル結合空間への変換に続き、処理はステップS2506へ進む。ステップS2506で、CMM 9はカラープリンタ16のICCプロファイルにアクセスする。なお、カラープリンタ16のICCプロファイルおよびカラーモニタ2のICCプロファイルを、ディスク7のような一つのメモリに格納させることも、別々のメモリに記憶させることも可能であるが、一つのメモリに記憶させるとCMM9によるアクセスが容易になる。
【０１４４】
CMM 9は、カラープリンタ16のカラープロファイルにアクセスすると、カラーモニタ2のICCプロファイルに関して先に説明した場合と同じように、そのプロファイル中にリストされたタグの何れにアクセスするか決定するために、そのプロファイルを読取る。この場合、CMMは、CMMタイプ(CMMType)の下で、標準のICC手続に従わずに、ucmIプライベートタグに従って処理を進めることを示す「UCCM」を読取るだろう。
【０１４５】
すなわち、前述したように、ステップS2506からS2508において、CMM 9は、プロファイル結合空間からカラープリンタ16のCMY色空間へカラー画像データを変換するために、カラープリンタ16用のICCプロファイルのucmIおよびucmPプライベートタグをアクセスするだろう。この処理の概要は、カラーモニタ2用のICCプロファイルに関して先に説明した処理と同じであるので、簡潔にするために、ここでは処理の詳細な説明を省く。
【０１４６】
ステップS2508に続き、処理はステップS2509へ進み、色変換したCMYカラー画像データをプリンタ16へ出力する。
【０１４７】
なお、ICCプロファイルフォーマットに関連して本発明を説明したが、色変換演算を格納できアクセスできるどのような種類のクロスプラットフォームデバイスのフォーマットと組み合わせても、本発明を使用することができる。
【０１４８】
同様に、カラーモニタおよびカラープリンタに関連して本発明を説明したが、カラースキャナまたはカラーファクシミリ装置などのような他のカラー画像処理デバイスと組み合わせても、本発明を利用することができる。
【０１４９】
特定の一実施形態に関連して本発明を説明した。本発明は、上述した実施形態には限定されず、当業者により特許請求の範囲の趣旨から逸脱することなく様々な変更および変形を実施し得る。
【０１５０】
【他の実施形態】
なお、本発明は、複数の機器（例えばホストコンピュータ，インタフェイス機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【０１５１】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，CD-ROM，CD-R，磁気テープ，不揮発性のメモリカード，ROMなどを用いることができる。
【０１５２】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１５３】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【図１】本発明の動作において使用されるコンピュータハードウェアの見通し図、
【図２】本発明のブロック図、
【図３】デバイス従属色空間とプロファイル結合空間との関係を示す図、
【図４】  ICCプロファイルを示す図、
【図５】プライベートタグの作成および変更を示す流れ図、
【図６】プライベートタグ情報を描写する画面を示す図、
【図７】プライベートタグ情報を描写する画面を示す図、
【図８】  ucmIプライベートタグを示す図、
【図９】本発明により作成されるプライベートタグの階層関係を示す図、
【図１０Ａ】本発明に従う色変換処理のセットアップを示す流れ図、
【図１０Ｂ】本発明に従う色変換処理のセットアップを示す流れ図、
【図１１】  ucmPプライベートタグを示す図、
【図１２】シーケンス構造体を示す図、
【図１３】色変換演算の構造体を示す図、
【図１４】  N×Mマトリクスのプライベートタグを示す図、
【図１５Ａ】三つの一次元ルックアップテーブルのプライベートタグ例を示す図、
【図１５Ｂ】三つの一次元ルックアップテーブルのプライベートタグ例を示す図、
【図１６】三次元ルックアップテーブルのプライベートタグを示す図、
【図１７】色空間のプライベートタグを示す図、
【図１８】カラーワーピングのプライベートタグを示す図、
【図１９Ａ】ビジネスグラフィクスルックアップテーブルのプライベートタグ例を示す図、
【図１９Ｂ】ビジネスグラフィクスルックアップテーブルのプライベートタグ例を示す図、
【図２０】三線形補間または角錐補間のプライベートタグの第一の実施形態を示す図、
【図２１】三線形補間または角錐補間のプライベートタグの第二の実施形態を示す図、
【図２２】  ucmTプライベートタグを示す図、
【図２３】テーブル構造体を示す図、
【図２４】テーブルのプライベートタグを示す図、
【図２５】本発明を使用して、ある色空間から別の色空間へ入力画像データを変換する処理ステップを示す流れ図である。
【図１】
0003902816.tif 000002
【図２】
0003902816.tif 000003
【図３】
0003902816.tif 000004
【図４】
0003902816.tif 000005
【図５】
0003902816.tif 000006
【図６】
0003902816.tif 000007
【図７】
0003902816.tif 000008
【図８】
0003902816.tif 000009
【図９】
0003902816.tif 000010
【図１０Ａ】
0003902816.tif 000011
【図１０Ｂ】
0003902816.tif 000012
【図１１】
0003902816.tif 000013
【図１２】
0003902816.tif 000014
【図１３】
0003902816.tif 000015
【図１４】
0003902816.tif 000016
【図１５Ａ】
0003902816.tif 000017
【図１５Ｂ】
0003902816.tif 000018
【図１６】
0003902816.tif 000019
【図１７】
0003902816.tif 000020
【図１８】
0003902816.tif 000021
【図１９Ａ】
0003902816.tif 000022
【図１９Ｂ】
0003902816.tif 000023
【図２０】
0003902816.tif 000024
【図２１】
0003902816.tif 000025
【図２２】
0003902816.tif 000026
【図２３】
0003902816.tif 000027
【図２４】
0003902816.tif 000028
【図２５】
0003902816.tif 000029