(57)【要約】【課題】入力画像データの値域に基づいてＮ次元ルックアップテーブルの入力値域を設定とし、メモリサイズを増加することなく高精度な変換を実現可能なＮ次元ルックアップテーブルを提供可能にする。【解決手段】入力画像データの変換処理に用いられるＮ次元ルックアップテーブルを生成するにおいて、Ｎ次元ルックアップテーブルの各次元に対応したチャンネル毎に、入力画像データの値域を取得し、取得された値域に基づいて、Ｎ次元ルックアップテーブルの各次元の入力値範囲を決定する。そして、Ｎ次元ルックアップテーブルの各次元について、決定された入力値範囲に予め決められた数の格子点を配置し、目的とする画像変換処理に基づいて配置された各格子点の出力値を設定する。【選択図】  図７
2007241660.tif 000002
【特許請求の範囲】
【請求項１】
入力画像データの変換処理に用いられるＮ次元ルックアップテーブルを生成するための情報処理方法であって、
前記Ｎ次元ルックアップテーブルの各次元に対応したチャンネル毎に、前記入力画像データの値域を取得する取得工程と、
前記取得工程で取得された値域に基づいて、前記Ｎ次元ルックアップテーブルの各次元の入力値範囲を決定する決定工程と、
前記Ｎ次元ルックアップテーブルの各次元について、前記決定工程で決定された入力値範囲に、予め決められた数の格子点を配置する配置工程と、
前記配置工程で配置された各格子点の出力値を実行すべき画像処理に基づいて設定する設定工程とを備えることを特徴とする情報処理方法。
【請求項２】
前記取得工程は、前記値域として、前記入力画像データの各次元に対応したチャンネル毎の最大値と最小値を取得し、
前記決定工程は、各次元毎に、前記取得工程で取得された最大値と最小値を前記入力値範囲の最大値と最小値に決定することを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記決定工程は、各次元毎に、前記入力値範囲に前記予め決められた数の格子点を等間隔に配置できるように前記取得工程で取得された値域を拡張して前記入力値範囲の最大値と最小値を決定することを特徴とする請求項１に記載の情報処理方法。
【請求項４】
前記取得工程は、前記Ｎ次元ルックアップテーブルの各次元に対応したチャンネル毎に、前記入力画像データの最大値を前記値域として取得し、
前記決定工程は、前記Ｎ次元ルックアップテーブルの各次元毎に、前記取得工程で取得した最大値を表現可能な最小ビット数のデータで表現可能なデータ範囲を前記入力値範囲として決定することを特徴とする請求項１に記載の情報処理方法。
【請求項５】
請求項１乃至４のいずれかに記載の情報処理方法によりＮ次元ルックアップテーブルを生成する工程と、
前記入力画像データを前記設定工程で出力値が設定された前記Ｎ次元ルックアップテーブルにより変換し出力画像データを得るテーブル参照工程とを備えることを特徴とする画像処理方法。
【請求項６】
入力画像データの変換処理に用いられるＮ次元ルックアップテーブルを生成するための情報処理装置であって、
前記Ｎ次元ルックアップテーブルの各次元に対応したチャンネル毎に、前記入力画像データの値域を取得する取得手段と、
前記取得手段で取得された値域に基づいて、前記Ｎ次元ルックアップテーブルの各次元の入力値範囲を決定する決定手段と、
前記Ｎ次元ルックアップテーブルの各次元について、前記決定手段で決定された入力値範囲に、予め決められた数の格子点を配置する配置手段と、
前記配置手段で配置された各格子点の出力値を実行すべき画像処理に基づいて設定する設定手段とを備えることを特徴とする情報処理装置。
【請求項７】
前記取得手段は、前記値域として、前記入力画像データの各次元に対応したチャンネル毎の最大値と最小値を取得し、
前記決定手段は、各次元毎に、前記取得手段で取得された最大値と最小値を前記入力値範囲の最大値と最小値に決定することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記決定手段は、各次元毎に、前記入力値範囲に前記予め決められた数の格子点を等間隔に配置できるように前記取得手段で取得された値域を拡張して前記入力値範囲の最大値と最小値を決定することを特徴とする請求項６に記載の情報処理装置。
【請求項９】
前記取得手段は、前記Ｎ次元ルックアップテーブルの各次元に対応したチャンネル毎に、前記入力画像データの最大値を前記値域として取得し、
前記決定手段は、前記Ｎ次元ルックアップテーブルの各次元毎に、前記取得手段で取得した最大値を表現可能な最小ビット数のデータで表現可能なデータ範囲を前記入力値範囲として決定することを特徴とする請求項６に記載の情報処理装置。
【請求項１０】
請求項１乃至４のいずれかに記載の情報処理方法を実行してＮ次元ルックアップテーブルを生成する手段と、
前記入力画像データを前記設定手段で出力値が設定された前記Ｎ次元ルックアップテーブルにより変換し出力画像データを得るテーブル参照手段とを備えることを特徴とする画像処理装置。
【請求項１１】
請求項１乃至４のいずれかに記載の方法をコンピュータに実行させるための制御プログラム。
【請求項１２】
請求項１１に記載の制御プログラムを格納したことを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ルックアップテーブルを利用した画像処理に関する。
【背景技術】
【０００２】
デジタルスチルカメラなどの撮像装置は、ＣＭＯＳ，ＣＣＤ等の撮像素子により被写体光学像を光電変換して得られた撮影画像の電気信号を、デジタルデータに変換してメモリカードなどの記憶媒体に記録する。記録されたデジタルデータはコンピュータ等により読み取られ、モニタ等の出力機器により出力され得る。
【０００３】
デジタルスチルカメラにより撮影されたデジタル画像は、トーンカーブや色合い、色の濃さなどのパラメータ調整量をユーザが指定し、コンピュータにより画像処理を施すことによってユーザの好みの色味をもつ画像に容易に加工することができる。これらの画像処理を行う際に、入力されたデジタル画像の各画素値に対して、順次トーンカーブや色合い、色の濃さ等を調整する処理が施され、目的の出力画像を得るのが一般的である。
【０００４】
このような、パラメータ調整量の決定から画像出力までの処理を対話的に行うようなシステムにおいては、処理の高速化を達成するために、３次元ルックアップテーブル（以下、３Ｄ−ＬＵＴ）が用いられる。即ち、トーンカーブ補正、色合い、色の濃さ等の調整に加え、カラーマッチングまでを含めた画像処理を１つの３Ｄ−ＬＵＴに畳み込み、入力されたデジタル画像データの各画素値で３Ｄ−ＬＵＴを参照することにより目的の出力画像を得るという方法がとられる。
【０００５】
ここで、画像処理を３Ｄ−ＬＵＴに畳み込む処理とは、
（１）３Ｄ−ＬＵＴの出力値として入力値をそのまま出力するように初期化された３Ｄ−ＬＵＴを準備し、
（２）その初期化された３Ｄ−ＬＵＴの各格子点の出力値に対して複数の画像処理を順次施し、各格子点の出力値を修正する処理である。これにより、画像処理を行う前の値を入力値、複数の画像処理を行った後の値を出力値とする色変換の３Ｄ−ＬＵＴを作成することができる。
【０００６】
以上のような３Ｄ−ＬＵＴにおいて、格子点数を画像データのビット数と同一にすと、格子点数が膨大な数（例えば、８ビットのＲＧＢ画像であれば“２５６3”）となる。このため、３Ｄ−ＬＵＴを生成するための演算に長時間が必要となり、３Ｄ−ＬＵＴを用いるメリットがなくなってしまう。一方、３Ｄ−ＬＵＴの格子点数を少なくしすぎると、画像データの変換時における格子点間の補間演算精度が落ちてしまうおそれがある。そこで、３Ｄ−ＬＵＴの格子点の設定には様々な工夫がなされている。特許文献１は、入力画像データのビット数に応じて上記のような格子点数を設定する構成を提案している。特許文献１によれば、例えば、入力画像がｎビットの場合、各色“（２n／８）＋１”個の格子点からなる３Ｄ−ＬＵＴが生成される。
【特許文献１】特開２００２−０１５３１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記の方法では、入力画像データが実際に値を持っている範囲、つまり値域に関わらず常に８ビット或は１６ビットといった画像のデータ範囲全体を入力値として持つような３Ｄ−ＬＵＴが生成される。そのため、その入力画像データの値域をはみ出すような３Ｄ−ＬＵＴ上の格子点は無駄になるとともに、出力画像データの画質劣化につながるという問題があった。例えば暗い画像のように、そのビット数で表現できるデータ範囲をまんべんなく使っていない画像データに対しては、入力画像データの値域をはみ出すような３Ｄ−ＬＵＴ上の格子点は無駄となり、補間処理による画質劣化も生じやすくなる。
【０００８】
本発明は上記課題に鑑みてなされたものであり、入力画像データの値域に基づいてＮ次元ルックアップテーブルの入力値域を設定とし、メモリサイズを増加することなく高精度な変換を実現可能なＮ次元ルックアップテーブルを提供可能にすることを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するための本発明による情報処理方法は、
入力画像データの変換処理に用いられるＮ次元ルックアップテーブルを生成するための情報処理方法であって、
前記Ｎ次元ルックアップテーブルの各次元に対応したチャンネルにおいて、前記入力画像データの値域を取得する取得工程と、
前記取得工程で取得された値域に基づいて、前記Ｎ次元ルックアップテーブルの各次元の入力値範囲を決定する決定工程と、
前記Ｎ次元ルックアップテーブルの各次元について、前記決定工程で設定された入力値範囲に、予め決められた数の格子点を配置する配置工程と、
前記配置工程で配置された各格子点の出力値を設定する設定工程とを備える。
【発明の効果】
【００１０】
本発明によれば、入力画像データの値域に基づいてＮ次元ルックアップテーブルの入力値域を設定するので、メモリサイズを増加することなく、より高精度な変換を実現可能なＮ次元ルックアップテーブルを提供できる。
【発明を実施するための最良の形態】
【００１１】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１２】
＜第１実施形態＞
［システムの説明］
図１は、本実施形態によるＮ次元ルックアップテーブルを提供可能なコンピュータシステムの構成を示すブロック図である。図１において、ＣＰＵ１０１はシステム全体の制御を行っている。キーボード１０２は、ポインティングデバイス１０２ａとともにシステムにユーザの指示等を入力するために使用される。表示装置１０３は、ＣＲＴや液晶等で構成されており、ＣＰＵ１０１の制御下で各種表示を行う。ＲＯＭ１０４、ＲＡＭ１０５は、当該システムにおける記憶装置を構成し、システムが実行するプログラムやシステムが利用するデータ等を記憶する。ハードディスク装置１０６、フロッピー（登録商標）ディスク装置１０７は、システムのファイルシステムに使用される外部記憶装置を構成している。尚、本実施形態のコンピュータシステムにはプリンタ１０８が接続されている。以下、Ｎ次元ルックアップテーブルの一例として、ＲＧＢ色空間に対応した３次元ルックアップテーブル（３Ｄ−ＬＵＴ）を用いて、本実施形態の構成、処理を説明する。
【００１３】
図２は、実施形態のコンピュータシステムによる画像処理の機能構成を説明するブロック図である。本実施形態のコンピュータシステムでは、３Ｄ−ＬＵＴを用いた画像処理が実行される。尚、以下の画像処理はＣＰＵ１０１がＲＯＭ１０４に記憶された制御プログラム或はＲＡＭ１０５にロードされた制御プログラムを実行することにより実現される。但し、画像処理の一部の機能を専用のハードウエアにより実現するようにしてもよい。
【００１４】
画像入力部２１は、ＨＤＤ１０６に格納された画像データ（以下、入力画像データとする）を公知の方法によりデコードし、ビットマップをＲＡＭ１０５に格納する。３Ｄ−ＬＵＴ初期化部２２は、後述する３Ｄ−ＬＵＴ初期化処理により３Ｄ−ＬＵＴを初期化し、初期３Ｄ−ＬＵＴを作成する。３Ｄ−ＬＵＴ作成部２３は、目的の出力画像を得るために行う１つあるいは複数の画像処理（色変換処理）を３Ｄ−ＬＵＴ初期化部２２によって作成された初期３Ｄ−ＬＵＴに畳み込み、目的の色変換を行うための色変換３Ｄ−ＬＵＴ２６を作成する。ここで、画像処理を３Ｄ−ＬＵＴに畳み込む処理とは、初期３Ｄ−ＬＵＴの各格子点の出力値に対して複数の画像処理を順次施し、各格子点の出力値を修正する処理のことである。これにより、画像処理を行う前の値を入力値、複数の画像処理を行った後の値を出力値とする色変換３Ｄ−ＬＵＴ２６を作成することができる。
【００１５】
画像変換部２４は、３Ｄ−ＬＵＴ作成部２３によって作成された色変換３Ｄ−ＬＵＴ２６を入力画像データでルックアップすることで、目的の色変換の施された出力画像データを作成する。色変換３Ｄ−ＬＵＴ２６のルックアップにおいては、入力画像データの上位ビットで３Ｄ−ＬＵＴの対応する近傍８点の格子点を検出し、入力画像データの下位ビットを用いた立方体補間により出力値を求める方法などの公知の方法を用いる。画像出力部２５は、画像変換部２４によって作成された出力画像データを表示部１０３に表示する。
【００１６】
［３Ｄ−ＬＵＴ初期化処理の説明］
図３に示すフローチャートを用いて、３Ｄ−ＬＵＴ初期化部２２による３Ｄ−ＬＵＴ初期化処理を詳細に説明する。
【００１７】
まず、ステップＳ３０１において、３Ｄ−ＬＵＴのＲＧＢ夫々のチャネルにおける格子点数Ｎを設定する。格子点数Ｎの設定には、特許文献１に記載されているような公知の方法を用いることができる。即ち、３Ｄ−ＬＵＴを生成するための演算時間と画像データの変換時における格子点間の補間演算精度を考慮して、９点、１７点、或は３３点のように設定する。
【００１８】
次に、ステップＳ３０２において、後述する「値域取得処理」により、入力画像データの値域を取得する。ステップＳ３０３において、後述する「テーブル入力値域設定処理」に従って３Ｄ−ＬＵＴの入力値域を設定する。そして、ステップＳ３０４では、後述する「格子点初期化処理」により、ステップＳ３０３のテーブル入力値域設定処理によって設定された３Ｄ−ＬＵＴの入力値域内のデータで各格子点の出力値を初期化して初期３Ｄ−ＬＵＴを作成する。
【００１９】
以上の処理により、入力画像データの値域内の値のみを入力値として受け付けるような３Ｄ−ＬＵＴを作成できる。つまり、無駄な格子点を設定することなく、対象とする入力画像データに対して高精度な変換を実現できる３Ｄ−ＬＵＴを作成できる。以下、「値域取得処理」「テーブル入力値域設定処理」「格子点初期化処理」を順次説明する。
【００２０】
〈値域取得処理の説明〉
図４は本実施形態による値域取得処理を説明するフローチャートである。まず、ステップＳ４０１において、画像入力部２１から入力された入力画像データの濃度ヒストグラムをＲＧＢ夫々のチャネルに対して取得する。そして、ステップＳ４０２において、ＲＧＢ夫々の濃度ヒストグラムからＲＧＢ夫々の最大値と最小値（Max_R，Min_R，Max_G，Min_G，Max_B，Min_B）を取得する。
【００２１】
以上の処理により、入力画像データの値域（Max_R，Min_R，Max_G，Min_G，Max_B，Min_B）を取得することができる。尚、ここでは、入力画像データのＲＧＢ夫々のヒストグラムからMax_R，Min_R，Max_G，Min_G，Max_B，Min_Bを取得する方法を示したが、これに限られるものではない。入力画像データのMax_R，Min_R，Max_G，Min_G，Max_B，Min_Bが取得できれば他の方法を用いてもよいことは言うまでも無い。
【００２２】
〈テーブル入力値域設定処理の説明〉
次に、図５に示すフローチャートを用いて、ステップＳ３０３のテーブル入力値域設定処理を詳細に説明する。尚、以下では、３Ｄ−ＬＵＴの各次元（本実施形態ではＲＧＢ）夫々のチャネルにおける入力値域の上限と下限を夫々Max_R'，Min_R'，Max_G'，Min_G'，Max_B'，Min_B'と表記する。また、Max_R，Min_R，Max_G，Min_G，Max_B，Min_Bは、上記値域取得処理によって得られた入力画像データのＲＧＢ夫々のチャネルの最大値と最小値を表している。
【００２３】
第１実施形態のテーブル入力値域設定処理は、ステップＳ５０１においてMax_R'にMax_Rを、ステップＳ５０２においてMin_R'にMin_Rを代入する。同様に、テーブル入力値域設定処理はステップＳ５０３においてMax_G'にMax_Gが、ステップＳ５０４においてMin_G'にMin_Gが代入される。更に、ステップＳ５０５においてMax_B'にMax_Bが、ステップＳ５０６においてMin_B'にMin_Bが代入される。
【００２４】
以上の処理により、３Ｄ−ＬＵＴの入力値域を上記値域取得処理によって得られた入力画像の値域に等しくすることができる。つまり、３Ｄ−ＬＵＴの入力値域を入力画像データの値域に限定することができる。
【００２５】
〈格子点初期化処理の説明〉
次に、図６に示すフローチャートを用いて、ステップＳ３０４の格子点初期化処理を詳細に説明する。尚、ＲＧＢ夫々のチャネルにおける格子点数をＮ、３Ｄ−ＬＵＴの各格子点をLUT[i][j][k]、各格子点の初期値であるＲＧＢ値を夫々LUT[i][j][k]_R，LUT[i][j][k]_G，LUT[i][j][k]_Bと表記する。ここで、ｉ，ｊ，ｋはＲＧＢ夫々のチャネルの格子点のインデックスを表しており、０〜Ｎ−１の値をとる。また、Max_R'，Min_R'，Max_G'，Min_G'，Max_B'，Min_B'は、上述のテーブル入力値域設定処理によって設定された３Ｄ−ＬＵＴのＲＧＢ夫々のチャネルの入力値域の上限と下限を表している。
【００２６】
ステップＳ６０１において変数ｉを値０で初期化する。ステップＳ６０２では、変数ｊ値０で初期化する。ステップＳ６０３では、変数ｋを値０で初期化する。ステップＳ６０４において、３Ｄ−ＬＵＴの格子点の初期値を次式に従い計算する。
LUT[i][j][k]_R＝{(Max_R'−Min_R')/(N-1)}×i＋Min_R'
LUT[i][j][k]_G＝{(Max_G'−Min_G')/(N-1)}×j＋Min_G'
LUT[i][j][k]_B＝{(Max_B'−Min_B')/(N-1)}×k＋Min_B'
【００２７】
ステップＳ６０５において、変数ｋを値１だけインクリメントする。ステップＳ４０６では、ｋとＮを比較し、等しければステップＳ６０７へ進む。そうでなければステップＳ６０４へ戻る。ステップＳ６０７では、変数ｊを値１だけインクリメントする。ステップＳ６０８において、ｊとＮを比較し、等しければステップＳ６０９へ進む。そうでなければステップＳ６０３へ戻る。ステップＳ６０９では、変数ｉを値１だけインクリメントする。ステップＳ６１０で、ｉとＮを比較し、等しければ本処理を完了する。そうでなければステップＳ６０２へ戻る。
【００２８】
以上の処理により、３Ｄ−ＬＵＴの各格子点における出力値を３Ｄ−ＬＵＴの入力値域内の入力値で初期化できる。ｉ，ｊ，ｋが０〜Ｎ−１の範囲における、Ｎ3個の全てのLUT[i][j][k]について、ステップＳ６０４で算出された初期値が設定される。こうして、３Ｄ−ＬＵＴ初期化部２２は、初期３Ｄ−ＬＵＴを生成し、３Ｄ−ＬＵＴ作成部２３に供給する。
【００２９】
図７は、第１実施形態による初期３Ｄ−ＬＵＴの格子点配置を説明する模式図である。図７は３Ｄ−ＬＵＴの１つの次元Ｘ（例えば、ＲＧＢの３Ｄ−ＬＵＴであれば、Ｒ，Ｇ，Ｂのいずれか１つ）における格子点の配置を示している。１次元あたりｍビットで表された色空間において、一般的な手法で９つの格子点が設定されると、図７の７０１のようになる。これに対して、次元Ｘにおける入力画像データの値域７０２がMin_X〜Max_Xとして取得されると（ステップＳ４０２）、次元Ｘにおける格子点の最小値Min_X'及び最大値Max_X'が夫々Min_X及びMax_Xに決定される（図５）。そして、図７の７０３に示すように、９つの格子点を値域７０２の範囲で極力等間隔になるように配置して（図６）、初期３Ｄ−ＬＵＴが生成される。
【００３０】
以上のように、第１実施形態によれば、入力画像の値域に応じて３Ｄ−ＬＵＴの格子点が存在する入力値範囲が設定され、３Ｄ−ＬＵＴが生成される。このため、メモリサイズを増加することなく高精度な変換を実現可能な３次元ルックアップテーブルが提供される。
【００３１】
３Ｄ−ＬＵＴ作成部２３は、以上のようにして作成された初期３Ｄ−ＬＵＴに、目的の出力画像を得るために行う１つあるいは複数の画像処理（色変換処理）を畳み込み、目的の色変換を行うための色変換３Ｄ−ＬＵＴ２６を作成する。こうして、入力画像データの値域に応じた格子点を持つ３Ｄ−ＬＵＴが生成されることになる。
【００３２】
＜第２実施形態＞
第１実施形態では、初期３Ｄ−ＬＵＴの夫々のチャンネルの入力画像データの値域の範囲に格子点を配置し設定した。しかしながら、このような格子点の設定方法では、値域の大きさが格子点間隔の倍数になっていないと全ての格子点間隔を均等にすることはできない。そこで、第２実施形態では、「テーブル入力値域設定処理」で設定された３Ｄ−ＬＵＴの夫々のチャネルの値域の上限と下限（Max_R'，Min_R'，Max_G'，Min_G'，Max_B'，Min_B'）に対して、後述する入力値域拡張処理を行うことで、格子点間隔を均等にする。
【００３３】
［入力値域拡張処理の説明］
図８に示すフローチャートを用いて、第２実施形態による入力値域拡張処理を詳細に説明する。尚、以下では、ＲＧＢ夫々のチャネルにおける格子点数をＮ、３Ｄ−ＬＵＴのＲＧＢ夫々のチャネルの値域の上限と下限を夫々Max_R'，Min_R'，Max_G'，Min_G'，Max_B'，Min_B'と表記する。
【００３４】
ステップＳ８０１において、(Max_R'-Min_R')を(N-1)で割った余りが０になるかを判定する。(Max_R'-Min_R')を(N-1)で割った余りが０の場合はステップＳ８０３へ進み、０以外の場合はステップＳ８０２へ進む。ステップＳ８０２では、Max_R'或はMin_R'のどちらか一方を次式に従って変更し、Ｒチャネルの入力値域拡張処理を行う。
Max_R' ← Max_R'+(N-1)-{(Max_R'-Min_R')mod(N-1)}
或は
Min_R' ← Min_R'-(N-1)-{(Max_R'-Min_R')mod(N-1)}
【００３５】
次に、ステップＳ８０３において、(Max_G'-Min_G')を(N-1)で割った余りが０になるかを判定する。(Max_G'-Min_G')を(N-1)で割った余りが０になる場合はステップＳ８０５へ進み、０以外の場合はステップＳ８０４へ進む。ステップＳ８０４では、Max_G'或はMin_G'のどちらか一方を次式に従って変更し、Ｇチャネルの入力値域拡張処理を行う。
Max_G' ← Max_G'+(N-1)-{(Max_G'-Min_G')mod(N-1)}
或は
Min_G' ← Min_G'-(N-1)-{(Max_G'-Min_G')mod(N-1)}
【００３６】
次に、ステップＳ８０５において、(Max_B'-Min_B')を(N-1)で割った余りが０になるかを判定する。(Max_B'-Min_B')を(N-1)で割った余りが０になる場合は本処理を終了し、０以外の場合はステップＳ８０６へ進む。ステップＳ８０６では、Max_B'或はMin_B'のどちらか一方を次式に従って変更し、Ｂチャネルの入力値域拡張処理を行う。そして、処理を完了する。
Max_B' ← Max_B'+(N-1)-{(Max_B'-Min_B')mod(N-1)}
或は
Min_B' ← Min_B'-(N-1)-{(Max_B'-Min_B')mod(N-1)}
【００３７】
以上の入力値域拡張処理は、図７により説明すれば、データの値域７０２に対して、格子点を等間隔に配置できるように、Min_Xを小さく或はMin_Xを大きくするものである。このような第２実施形態によれば、３Ｄ−ＬＵＴのＲＧＢ夫々のチャネルの入力値域が拡張され、第１実施形態に比べて、Ｎ個の格子点を等間隔に設定する際や３Ｄ−ＬＵＴをルックアップする際の計算上の丸め誤差が小さくなる。また、ここでは、最大値あるいは最小値のどちらか一方を修正し、入力値域を拡張する処理について示したが、もちろん最大値と最小値の両方を修正し、入力値域を拡張するような処理を行ってもよい。
【００３８】
＜第３実施形態＞
第１及び第２実施形態では、テーブル入力値域設定処理（図５）によって、入力画像データの値域を３Ｄ−ＬＵＴの入力値域としている。第３実施形態では、入力画像データの最大値（Max_R，Max_G，Max_B）を表現できる最小のビット数（m_R，m_G，m_B）を取得し、最小ビット数（m_R，m_G，m_B）で表現できるデータ範囲を３Ｄ−ＬＵＴの入力値域として設定する。
【００３９】
［テーブル入力値域設定処理（図９）の説明］
図９に示すフローチャートを用いて、第３実施形態によるテーブル入力値域設定処理を詳細に説明する。尚、入力画像データのＲＧＢ夫々のチャネルの最大値をMax_R，Max_G，Max_B、３Ｄ−ＬＵＴのＲＧＢ夫々のチャネルの値域の上限と下限を夫々Max_R'，Min_R'，Max_G'，Min_G'，Max_B'，Min_B'と表記する。
【００４０】
ステップＳ９０１において、Max_Rを表現できる最小ビット数m_Rを計算する。ステップＳ９０２において、Max_Gを表現できる最小ビット数m_Gを計算する。ステップＳ９０３において、Max_Bを表現できる最小ビット数m_Bを計算する。こうして、入力画像データの最大値（Max_R，Max_G，Max_B）を表現できる最小のビット数（m_R，m_G，m_B）が取得される。
【００４１】
続いて、ステップＳ９０４において、３Ｄ−ＬＵＴ初期化部２２は、Max_R'に２m_Rを代入し、Min_R'に値０を代入する。同様に、３Ｄ−ＬＵＴ初期化部２２は、ステップ９０５において、Max_G'に２m_Gを、Min_G'に値０を代入し、ステップＳ９０６において、Max_B'に２m_Bを、Min_B'に値０を代入する。
【００４２】
以上の処理によれば、入力画像データのＲＧＢ夫々のチャネルにおける最大値（Max_R，Max_G，Max_B）から、その最大値を表現できる最小ビット数（m_R，m_G，m_B）が計算される。そして、３Ｄ−ＬＵＴの入力値域を、Ｒ、Ｇ、Ｂの各チャネルについて、下限には０が、上限には２m_R、２m_G、２m_Bが設定される。
【００４３】
図１０は第３実施形態による初期３Ｄ−ＬＵＴの格子点配置を説明する模式図である。図１０は３Ｄ−ＬＵＴの１つの次元Ｘ（例えば、ＲＧＢの３Ｄ−ＬＵＴであれば、Ｒ，Ｇ，Ｂのいずれか１つ）における格子点の配置を示している。１次元あたり１６ビットで表された色空間において、一般的な手法で９つの格子点が設定されると、図１０の１００１のようになる。これに対して、次元Ｘにおける入力画像データの値域の最大値がMax_Xとして取得されると（ステップＳ４０２）、これを表現できる最小ビット数m_Xが計算される（ステップＳ９０１〜Ｓ９０３）。そして、次元Ｘにおける格子点の最小値が０に、最大値が２m_Xに決定される（ステップＳ９０４〜Ｓ９０６）。そして、図１０の１００２に示すように、９つの格子点を値域０〜２m_Xの範囲で極力等間隔になるように配置して、初期３Ｄ−ＬＵＴが生成される。
【００４４】
以上のような第３実施形態の３Ｄ−ＬＵＴによれば、画像変換部２４において、入力画像データから３Ｄ−ＬＵＴの格子点を検出する際の演算過程でビットシフト演算を用いることができるようになる。このため、第１実施形態の効果に加えて、処理の高速化を図ることができる。
【００４５】
以上のように、第１乃至第３実施形態によれば、入力画像データの値域を取得し、３Ｄ−ＬＵＴの格子点の設定範囲を入力画像データの値域内に限定して格子点を初期化する。このため、従来と同じメモリサイズであっても、より高精度な変換を実現できる３Ｄ−ＬＵＴを作成することができる。
【００４６】
尚、上記各実施形態では、Ｒ，Ｇ，Ｂに対応した３次元ルックアップテーブルについて説明したが、次元数はこれに限られるものではない。例えば、ＣＭＹＧのような４次元の色空間に対応するなど、本実施形態の手順で生成されるルックアップテーブルをＮ次元のルックアップテーブルに拡張できることは明らかである。
【００４７】
＜他の実施形態＞
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【００４８】
尚、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したプログラムである。
【００４９】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【００５０】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【００５１】
プログラムを供給するための記録媒体としては以下が挙げられる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などである。
【００５２】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【００５３】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
【００５４】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどとの協働で実施形態の機能が実現されてもよい。この場合、ＯＳなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【００５５】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行なう。
【図面の簡単な説明】
【００５６】
【図１】第１実施形態によるコンピュータシステムの構成を示すブロック図である。
【図２】コンピュータシステムによる画像処理の機能構成例を示すブロック図である。
【図３】第１実施形態による、３Ｄ−ＬＵＴ初期化処理を説明するフローチャートである。
【図４】第１実施形態による値域取得処理を説明するフローチャートである。
【図５】第１実施形態によるテーブル入力値域設定処理を説明するフローチャートである。
【図６】第１実施形態による格子点初期化処理を説明するフローチャートである。
【図７】第１実施形態による初期３Ｄ−ＬＵＴの格子点配置を説明する模式図である。
【図８】第２実施形態による入力値域拡張処理を説明するフローチャートである。
【図９】第３実施形態によるテーブル入力値域設定処理を説明するフローチャートである。
【図１０】第３実施形態による初期３Ｄ−ＬＵＴの格子点配置を説明する模式図である。
【図１】
2007241660.tif 000003
【図２】
2007241660.tif 000004
【図３】
2007241660.tif 000005
【図４】
2007241660.tif 000006
【図５】
2007241660.tif 000007
【図６】
2007241660.tif 000008
【図７】
2007241660.tif 000009
【図８】
2007241660.tif 000010
【図９】
2007241660.tif 000011
【図１０】
2007241660.tif 000012