(57)【要約】    【課題】  ３次元ルックアップテーブルである誤差値格納手段の実使用時に必要なメモリ容量を節約することが可能を可能とした色変換装置を提供する。    【解決手段】  係数値ＬＵＴ参照部６０３により係数値ＬＵＴを参照して、入力値９０１〜９０３に対して、入力値９０１〜９０３の属する領域に対応した係数値を選択し、該選択した係数値と入力値９０１〜９０３に対する近似関数値を関数値演算部６０２で計算し、該算出した近似関数値と、誤差値ＬＵＴ参照部６０５により誤差値ＬＵＴ６０７を参照して得た入力値９０１〜９０３に対応する誤差値とを加算部６０４で加算することにより、３次元ＬＵＴ６０７の出力値を得る。【選択図】      図６
2006246236.tif 000002
【特許請求の範囲】
【請求項１】
多次元入力値に対して選択された係数値を用いて関数値を計算する関数値演算手段と、
前記多次元入力値の値域を複数の領域に分割して得た各領域に対応して前記関数値演算手段で使用する係数値を格納する係数値格納手段と、
前記入力値が前記複数の領域のどの領域に属しているかによって前記係数値格納手段から対応する係数値を選択して前記関数値演算手段に渡す係数値参照手段と、
前記関数値演算手段が算出した関数値と本来出力すべき値との差分を誤差値として前記多次元入力値のそれぞれに対応して格納する誤差値格納手段と、
前記誤差値格納手段から前記入力値に対応する前記誤差値を獲得する誤差値獲得手段と、
前記関数値演算手段が算出した関数値に対して前記誤差値獲得手段が獲得した誤差値を加算する加算手段と
を有することを特徴とする色変換装置。
【請求項２】
前記関数値演算手段が算出した関数値を複数のビット精度から選択して出力する関数値出力精度選択手段を有することを特徴とする請求項１に記載の色変換装置。
【請求項３】
前記誤差値獲得手段が獲得した誤差値を複数のビット位置から選択して桁合わせした上で前記加算手段に対して出力する加算位置選択手段を有することを特徴とする請求項１または２に記載の色変換装置。
【請求項４】
多次元入力値に対して選択された係数値を用いて関数値を計算する関数値演算ステップと、
前記多次元入力値の値域を複数の領域に分割して得た各領域に対応して前記関数値演算ステップで使用する係数値を係数値格納手段に格納する係数値格納ステップと、
前記入力値が前記複数の領域のどの領域に属しているかによって前記係数値格納手段から対応する係数値を獲得して前記関数値演算ステップに渡す係数値獲得ステップと、
前記関数値演算ステップで算出した関数値と本来出力すべき値との差分を誤差値として前記多次元入力値のそれぞれに対応して誤差値格納手段に格納する誤差値格納ステップと、
前記誤差値格納手段から前記入力値に対応する前記誤差値を獲得する誤差値獲得ステップと、
前記関数値演算ステップで算出した関数値に対して前記誤差値獲得ステップで獲得した誤差値を加算する加算ステップと
を有することを特徴とする色変換装置の制御方法。
【請求項５】
前記関数値演算ステップで算出した関数値を複数のビット精度から選択して出力する関数値出力精度選択ステップを有することを特徴とする請求項４に記載の色変換装置の制御方法。
【請求項６】
前記誤差値獲得ステップで獲得した誤差値を複数のビット位置から選択して桁合わせした上で前記加算ステップに対して出力する加算位置選択ステップを有することを特徴とする請求項４または５に記載の色変換装置の制御方法。
【請求項７】
請求項４乃至６のいずれかに記載の色変換装置の制御方法を実現するためのコンピュータ読み取り可能なプログラムコードを有することを特徴とするプログラム。
【請求項８】
請求項７に記載のプログラムを格納したことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの色変換装置及びその装置を制御する制御方法及びプログラム並びにそのプログラムを格納した記憶媒体に関する。
【背景技術】
【０００２】
プリンタによる画像出力等、画像を扱う様々なシステムにおいて、画像に対する色変換処理が必要となる。色変換処理に対する入力と出力が比較的単純な関係にある場合、マトリクス演算を用いたマスキング処理によって色変換処理を行うことも可能であるが、一般的には、色変換の入力と出力との関係を単純なマトリクス演算で精度良く近似できるとは限らない。
【０００３】
このような場合、３次元ルックアップテーブル(以下、省略する場合は、３次元ＬＵＴと記述する。)と補間演算（例えば、四面体補間演算等の多面体補間演算）とを用いた色変換方式を採用することが多い。
【０００４】
図９は、このような３次元ＬＵＴと補間演算とを用いた従来の色変換装置の構成を示すブロック図であり、同図に示す色変換装置は、３次元の入力値９０１,９０２,９０３を、格子点に対する３次元ＬＵＴと補間演算とを用いることにより、出力値９１３に変換する。
【０００５】
具体的には、まず、入力値９０１,９０２,９０３について、その上位ビットが取り出され、３次元ＬＵＴにおいて対応する格子点番号が、格子点番号計算部９０４,９０５,９０６において計算される。格子点番号計算部９０４,９０５,９０６における計算により得られた３つの格子点番号は、従来技術の３次元ＬＵＴ参照部（３Ｄ  ＬＵＴ参照部）９１４に与えられる。３次元ＬＵＴ参照部９１４では、格子点番号を３次元ＬＵＴ９１５上の対応するアドレスに変換し、３次元ＬＵＴ９１５から、そのアドレスのデータを読み出すことにより、格子点出力値を得る。そして、次の補間演算部９１２で必要なだけ格子点出力値９０７，９０８，９０９，９１０を得るため、３次元ＬＵＴ９１５を繰り返して参照した後、得られた出力値は補間演算部９１２により補間され、最終的な出力値９１３となる。補間演算部９１２で使用する補間係数値は、入力値から補間係数値計算部９１１によって計算されて、補間演算部９１２に渡される。
【０００６】
図９に示すような３次元ＬＵＴ９１５と補間演算とを用いた色変換方式は、マトリクス演算方式と比較して精度の高い色変換が可能であるが、高い色変換精度を得るためには、３次元ＬＵＴ９１５のサイズをある程度大きく設定する必要があり、従って、ルックアップテーブルのサイズが増大して、コストアップ或いは色変換処理速度の低下を招く虞がある。
【０００７】
そこで、従来、ルックアップテーブルにデータを出力色毎に圧縮して保持することで、ルックアップテーブルにデータを保持するためのメモリ容量を節約するようにした色変換装置が知られている（例えば、特許文献１参照）。
【特許文献１】特開２０００−２２９７４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記特許文献１に開示された従来技術では、３次元ルックアップテーブルにデータを保持するためのメモリ容量は節約できるものの、実際にルックアップテーブルを参照する時点では、ルックアップテーブルに保持してあるデータを展開して本来のサイズで使用するため、その時にデータを保持するためのメモリ容量を節約することはできない。
【０００９】
また、特に、処理速度が低速であるが大きなメモリ容量の記憶媒体を持つシステムと処理速度が高速であるが小さなメモリ容量の記憶媒体を持つシステムとを考慮した場合、データを展開済みのルックアップテーブルでは、処理速度が高速で小さなメモリ容量の記憶媒体上にデータが収納しきれないために、処理速度が低速で大きなメモリ容量の記憶媒体を配置する結果となり、そのために処理速度の低下を招いてしまう。
【００１０】
また、３次元ルックアップテーブルから出力するデータのビット精度が、例えば、８ビットから１０ビットに増えたとすると、ビット精度が増加した分だけルックアップテーブルのサイズを大きくしなければならず、そのためにメモリ容量が増加してしまう。
【００１１】
更に、ルックアップテーブル参照時のアドレス計算も８ビット精度時と１０ビット精度時とでは異なり、両方の精度に対応しようとすると、前記アドレス計算処理が複雑化する。
【００１２】
なお、ルックアップテーブルの実使用時のメモリ容量を減らすためには、３次元ルックアップテーブルに対して圧縮処理を施したままの状態でデータを格納して使用することも考えられるが、圧縮状態のデータに対して、ルックアップテーブルを参照するには、ルックアップテーブル参照時にデータの圧縮・展開処理が必要となるために、処理操作が複雑化するという問題があった。
【００１３】
本発明は、これら従来技術の有する問題点を解消するためになされたもので、その目的は、３次元ルックアップテーブルである格納手段の実使用時に必要なメモリ容量を節約することが可能な色変換装置及びその制御方法及びプログラム並びに記憶媒体を提供することである。
【課題を解決するための手段】
【００１４】
上記目的を達成するため本発明の色変換装置は、多次元入力値に対して選択された係数値を用いて関数値を計算する関数値演算手段と、前記多次元入力値の値域を複数の領域に分割して得た各領域に対応して前記関数値演算手段で使用する係数値を格納する係数値格納手段と、前記入力値が前記複数の領域のどの領域に属しているかによって前記係数値格納手段から対応する係数値を選択して前記関数値演算手段に渡す係数値参照手段と、前記関数値演算手段が算出した関数値と本来出力すべき値との差分を誤差値として前記多次元入力値のそれぞれに対応して格納する誤差値格納手段と、前記誤差値格納手段から前記入力値に対応する前記誤差値を獲得する誤差値獲得手段と、前記関数値演算手段が算出した関数値に対して前記誤差値獲得手段が獲得した誤差値を加算する加算手段とを有することを特徴とする。
【００１５】
また、上記目的を達成するため本発明の色変換装置の制御方法は、多次元入力値に対して選択された係数値を用いて関数値を計算する関数値演算ステップと、前記多次元入力値の値域を複数の領域に分割して得た各領域に対応して前記関数値演算ステップで使用する係数値を係数値格納手段に格納する係数値格納ステップと、前記入力値が前記複数の領域のどの領域に属しているかによって前記係数値格納手段から対応する係数値を獲得して前記関数値演算ステップに渡す係数値獲得ステップと、前記関数値演算ステップで算出した関数値と本来出力すべき値との差分を誤差値として前記多次元入力値のそれぞれに対応して誤差値格納手段に格納する誤差値格納ステップと、前記誤差値格納手段から前記入力値に対応する前記誤差値を獲得する誤差値獲得ステップと、前記関数値演算ステップで算出した関数値に対して前記誤差値獲得ステップで獲得した誤差値を加算する加算ステップとを有することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、３次元ルックアップテーブルである誤差値格納手段の実使用時に必要なメモリ容量を節約することが可能である。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１８】
（第１の実施の形態）
まず、本発明の第１の実施の形態を、図１〜図６に基づき説明する。
【００１９】
先に、本発明の原理について、１次元ＬＵＴの例を用いて説明する。
【００２０】
図１は、１次元ＬＵＴに対して本発明を適用した場合の原理を説明する図であり、同図において、縦軸は出力値を、横軸は入力値をそれぞれ示しており、実線Ｌ１はＬＵＴの出力値を示している。
【００２１】
通常のＬＵＴの構成では、各入力値に対して、実線Ｌ１に相当する出力値を格納するルックアップテーブルを用いるため、ルックアップテーブルのサイズとしては、入力の取り得る値の数×出力値の値域を格納するために必要なビット数が必要である。
【００２２】
本発明は、この出力値の値域を格納するために必要なビット数を減らすものであり、これは、次のように近似関数値を用いることで実現される。
【００２３】
図１中、複数の破線Ｌ２は、ＬＵＴの出力値（実線Ｌ１）の近似関数値の出力値となっており、入力値が図１中、２点鎖線Ｌ３で示した近似関数値分割位置で分割された領域のどの部分に入るかによって、異なる近似関数値が用いられる。ここで、入力値を複数の領域に分割して、それぞれに対して異なる近似関数値を用いる理由は、ＬＵＴの出力値（実線Ｌ１）と近似関数値の出力値（破線Ｌ２）との誤差をできるだけ小さくするためである。
【００２４】
図１において、実線Ｌ１で示されるＬＵＴの出力値と破線Ｌ２で示される近似関数値の出力値との誤差（差分）を見ると、元々のＬＵＴの出力値の値域と比較して狭くなっており、誤差値については、ＬＵＴの出力値よりも少ないビット数で表現できる。
【００２５】
次に、図１の説明を基に１次元ＬＵＴに対する本実施の形態に係る色変換装置の動作を、図２及び図３を用いて説明する。
【００２６】
図２は、本実施の形態に係る色変換装置における近似関数値の説明図であり、同図において、縦軸は関数値の出力値を、横軸は入力値をそれぞれ示す。
【００２７】
また、図３は、本実施の形態に係る色変換装置における誤差値格納テーブルの説明図であり、同図において、縦軸は誤差値を、横軸は入力値をそれぞれ示す。
【００２８】
１次元ＬＵＴの入力値が与えられると、まず、図２に示す近似関数値の計算が行われ、近似関数値が出力される。近似関数値は、図２では、複数の１次関数値であり、図２において破線Ｌ４により４つに区切られた入力値の各値域に対して、異なる係数値を使用する。１次関数値の場合、計算に必要な係数値は２個であるから、全体としては、２ｘ４＝８個の係数値が必要となる。
【００２９】
また、１次元ＬＵＴの入力値を使用して、図３に示す誤差値格納テーブルを参照する。この誤差値格納テーブルは、図１のＬＵＴの出力値と近似関数値の出力値との差分を各入力値に対して格納したテーブルであって、値域が狭いため、ＬＵＴの出力値より少ないビット数のテーブルを使用できる。
【００３０】
最後に、図２で計算された近似関数値の出力値と、図３で参照された誤差値格納テーブルの出力値（誤差値）とが加算され、図１の実線Ｌ１に相当するＬＵＴの出力値が得られる。
【００３１】
近似関数値の計算に必要な係数値の個数が少なければ、誤差値格納テーブルのサイズと係数値の格納領域のサイズとを加えても、なお、元々の１次元ＬＵＴのサイズより小さくできるため、ＬＵＴを使用する際のメモリ容量を節約することができる。
【００３２】
色変換装置の場合、通常、３次元の入力値を扱うため、次に、３次元ＬＵＴについて、図４を用いて説明する。
【００３３】
図４は、本実施の形態に係る色変換装置における３次元ＬＵＴの説明図であり、同図における３つの軸Ｌ５，Ｌ６，Ｌ７は、入力の３つの次元を示している。
【００３４】
色変換に使用する３次元ＬＵＴでは、入力値を適切な間隔で格子状に分割することで得られる各格子点に対し、対応する出力値を格納する。
【００３５】
図４においては、分割によって得られる立方体或いは直方体の各頂点について、対応する出力値を格納することで、３次元ＬＵＴが構成される。
【００３６】
３次元の場合、格子分割数が増加すると、１次元の場合と比べて急激に格子点数が増加するため、３次元ＬＵＴのテーブルサイズを減らす要求は、より高まることになる。
【００３７】
３次元ＬＵＴに対して本発明を適用する場合も、原理は上述した１次元ＬＵＴの場合と全く同じであり、まず、近似関数値を計算し、次に、誤差値格納テーブルを参照して、近似関数値と誤差値とを加算することで、最終的なＬＵＴの出力値を得る。
【００３８】
３次元ＬＵＴに対して近似関数値を求める際にも、入力値の値域を複数領域に分割し、それぞれの領域で異なる係数値を適用するが、その領域分割の一例を図５に示す。
【００３９】
図５において、３つの軸Ｌ８，Ｌ９，Ｌ１０が入力の３つの次元を示しており、ここでは各次元について２分割しているため、全体としては２ｘ２ｘ２＝８個の領域からなる。
【００４０】
近似関数値として１次関数値を用いたとすると、入力値(x, y, z)に対する出力値oは、４つの係数値a, b, c, dを用いて、
o = a * x + b * y + c * z + d
と計算できるため、全体として必要な係数値の個数は、４ｘ８＝３２個となる。
【００４１】
また、誤差値格納テーブルについては、ルックアップテーブルの次元数が３次元になること以外は、１次元の場合と同様であるが、３次元では１次元の場合に比べて扱うべき入力点数が増えてくるため、１つ１つのルックアップテーブルのデータのビット数が減る効果は、より大きくなる。
【００４２】
以下、上述した１次元ＬＵＴ及び３次元ＬＵＴについて説明した原理を基に、本発明の第１の実施の形態に係る色変換装置について、図６を用いて説明する。
【００４３】
図６は、本実施の形態に係る色変換装置の構成を示すブロック図であり、同図において、図９と同一部分には同一符号が付してある。
【００４４】
図６において図９と異なる点は、３次元ＬＵＴ参照部の構成と、図９の構成に係数値ルックアップテーブル（係数値ＬＵＴ）６０６を付加したことと、図９の出力値を保持した３次元ＬＵＴ（３Ｄ  ＬＵＴ）９１５に代えて誤差値を保持した３次元ＬＵＴ（３Ｄ  ＬＵＴ）６０７を設けたことである。
【００４５】
そして、この色変換装置は、３次元の入力値９０１,９０２,９０３を３次元ＬＵＴ参照部と補間演算部９１２とによって、出力値９１３に変換するものである。
【００４６】
色変換装置の出力値９１３は、一般的に多次元であることが多いが、ここでは出力１次元分のみについて示しており、多次元の場合は、図６と同様の構成を複数並列に持つか、或いは、処理を複数回適用することで、必要な次元分の出力値が得られる。
【００４７】
本実施の形態に係る色変換装置における３次元ＬＵＴ参照部６０１は、関数近似部６０１ａと、誤差値補正部６０１ｂとから成る。
【００４８】
関数近似部６０１ａは、関数値演算部６０２と係数値ＬＵＴ参照部６０３とから成り、係数値ＬＵＴ参照部６０３は、係数値ＬＵＴ６０６に接続されている。関数値演算部６０２は、多次元入力値を用いて選択された係数値を用いて関数値を計算するものである。係数値ＬＵＴ参照部６０３は、入力値が前記複数の領域（多次元入力値の値域を複数の領域に分割して得られた領域）のどの領域に属しているかによって係数値ＬＵＴ６０６から対応する係数値を選択して関数値演算部６０２に渡すものである。
【００４９】
また、誤差値補正部６０１ｂは、加算部６０４と誤差値ＬＵＴ参照部６０５とから成り、誤差値ＬＵＴ参照部６０５は、３Ｄ  ＬＵＴ６０７に接続されている。加算部６０４は、関数値演算部６０２によって計算された関数値に対して誤差値を加算して出力するものである。誤差値ＬＵＴ参照部６０５は、入力値に対応する誤差値を、３Ｄ  ＬＵＴ６０７を参照して獲得し、加算部６０４に渡すものである。
【００５０】
係数値ＬＵＴ６０６は、係数値を保持したルックアップテーブル（係数値格納手段）である。３Ｄ  ＬＵＴ６０７は、誤差値を各多次元入力値に対応して保持したルックアップテーブル（誤差値格納手段）であり、以降、必要に応じて誤差値ＬＵＴと記述する。
【００５１】
ここで、誤差値とは、関数値演算部６０２によって計算された関数値と本来出力すべき値との差分である。
【００５２】
図６において、まず、入力値９０１〜９０３は、図９に示した従来技術の構成と同様に、格子点番号計算部９０４〜９０６によって、格子点番号に変換され、３次元ＬＵＴ参照部６０１に入力される。次に、３次元ＬＵＴ参照部６０１の出力する格子点出力値９０７〜９１０を用いて補間演算部９１２で補間演算が行われ、最終的な出力値９１３が得られるのは、図４と同様である。
【００５３】
上述したように３次元ＬＵＴ参照部６０１は、関数値演算部６０２と係数値ＬＵＴ参照部６０３とから成る関数近似部６０１ａと、加算部６０４と誤差値ＬＵＴ参照部６０５とから成る誤差値補正部６０１ｂの２つの部分から成っており、それぞれ、前記原理の近似関数値の計算と、誤差値ＬＵＴ６０７の参照に対応している。更に、関数近似部６０１ａには、入力値の値域で複数に分割された各領域に対応する近似関数の係数値を格納するための係数値ＬＵＴ６０６が接続され、誤差値補正部６０１ｂには、誤差値ＬＵＴ６０７が接続されている。
【００５４】
まず、関数近似部６０１ａの動作を説明する。
【００５５】
入力された３次元の格子点番号は、係数値ＬＵＴ参照部６０３で図５に示したように入力値を分割したどの領域に属するかが判定され、その領域に応じた係数値ＬＵＴ６０２上のアドレスが計算される。このアドレスを用いて、係数値ＬＵＴ参照部６０３は係数値ＬＵＴ６０６を参照し、近似関数の計算に必要な係数値を得て、関数値演算部６０２に渡す。関数値演算部６０２は、入力された３次元の格子点番号と係数値とを使用して近似関数値を計算し、その出力値を誤差値補正部６０１ｂの加算部６０４に渡す。
【００５６】
次に、誤差値補正部６０１ｂの動作を説明する。
【００５７】
誤差値ＬＵＴ参照部６０５は、入力された３次元の格子点番号を、３次元ＬＵＴ６０７上の対応するアドレスに変換し、このアドレスを用いて３次元ＬＵＴ６０７を参照し、入力値に対応する誤差値を得て、その誤差値を加算部６０４に渡す。加算部６０４では、関数値演算部６０２から得られた関数値と、誤差値ＬＵＴ参照部６０５から得られた誤差値とを加算し、３次元ＬＵＴ参照部６０１の出力値として出力する。
【００５８】
図６のような構成をとり、３次元ＬＵＴ６０７の保持内容を出力値ではなく、値域の狭い誤差値で持つことによって、３次元ＬＵＴ６０７の実使用時におけるメモリ容量を節約することができる。
【００５９】
なお、以上の説明では、近似関数として１次関数を用いたが、回路規模の許す範囲でより複雑な関数、例えば、２次関数や他の算術関数・論理関数を用いることも可能である。
【００６０】
また、図５において、入力値の値域を各次元均等に２分割したが、各次元の分割数は係数値ＬＵＴ６０６のメモリ容量が大きくなり過ぎない範囲で任意であり、或いは、必ずしも均等分割である必要はない。
【００６１】
以上、説明したように、本実施の形態に係る色変換装置によれば、係数値ＬＵＴ参照部６０３により係数値ＬＵＴ６０６を参照して、入力値９０１〜９０３に対して、入力値９０１〜９０３の属する領域に対応した係数値を選択し、該選択した係数値と入力値９０１〜９０３に対する近似関数値を関数値演算部６０２で計算し、該算出した近似関数値と、誤差値ＬＵＴ参照部６０５により誤差値ＬＵＴ６０７を参照して得た入力値９０１〜９０３に対応する誤差値とを加算部６０４で加算することにより、３次元ＬＵＴ６０７の出力値を得るようにしたから、３次元ＬＵＴ６０７のメモリ容量を節約することができる。
【００６２】
（第２の実施の形態）
次に、本発明の第２の実施の形態を、図７に基づき説明する。
【００６３】
本実施の形態は、上述した発明が解決しようとする課題のうち、特に、ビット精度が上がった場合のメモリ容量の増大及び複数のビット精度への対応を解決するものである。
【００６４】
図７は、本実施の形態に係る色変換装置の主要部の構成を示すブロック図であり、同図においては、図６における３次元ＬＵＴ参照部６０１、係数値ＬＵＴ６０６、３次元ＬＵＴ６０７にそれぞれ相当する３次元ＬＵＴ参照部７０１、係数値ＬＵＴ７０５、３次元ＬＵＴ７０９を示しており、その他の入力値、格子点番号計算部、格子点出力値、補間係数値計算部、補間演算部、及び出力値等は省略してある。
【００６５】
３次元ＬＵＴ参照部７０１は、関数近似部７０１ａと誤差値補正部７０１ｂの２つに分かれている。
【００６６】
関数近似部７０１ａは、関数値演算部７０２と係数値ＬＵＴ参照部７０３と関数出力精度選択部７０４とから成り、係数値ＬＵＴ参照部７０３は、係数値ＬＵＴ７０５に接続されている。関数値演算部７０２は、多次元入力値を用いて選択された係数値を用いて関数値を計算するものである。係数値ＬＵＴ参照部７０３は、入力値が前記複数の領域（多次元入力値の値域を複数の領域に分割して得られた領域）のどの領域に属しているかによって係数値ＬＵＴ７０５から対応する係数値を選択して関数値演算部７０２に渡すものである。関数出力精度選択部７０４は、関数値演算部７０２の出力値を複数ビット精度から選択して出力するものである。
【００６７】
誤差値補正部７０１ｂは、加算部７０６と加算位置選択部７０７と誤差値ＬＵＴ参照部７０８とから成り、誤差値ＬＵＴ参照部７０８は、３次元ＬＵＴ（３Ｄ  ＬＵＴ）７０９に接続されている。加算部７０６は、関数値演算部７０２によって計算された関数値に対して誤差値を加算して出力するものである。加算位置選択部７０７は、誤差値ＬＵＴ参照部７０８の出力値を複数のビット位置から選択して桁合わせした上で加算部７０６に対して出力するものである。誤差値ＬＵＴ参照部７０８は、入力値に対応する誤差値を、３次元ＬＵＴ７０９を参照して獲得し、加算部７０６に渡すものである。
【００６８】
係数値ＬＵＴ７０５は、係数値を保持したルックアップテーブル（係数値格納手段）である。３次元ＬＵＴ７０９は、誤差値を各多次元入力値に対応して保持したルックアップテーブル（誤差値格納手段）で、以降必要に応じて誤差値ＬＵＴと記述する。
【００６９】
説明の都合上、もともと図６において対応していた格子点出力値のビット精度を８ビットとし、図７において対応する格子点出力値のビット精度を８ビット及び１０ビットとする。
【００７０】
まず、３次元ＬＵＴ参照部７０１の関数近似部７０１ａについて説明する。
【００７１】
係数値ＬＵＴ参照部７０３は、入力された３次元の格子点番号値を用いて係数値ＬＵＴ７０５を参照し、近似関数で使用する係数値を関数値演算部７０２に渡すまでの処理は、上述した第１の実施の形態と全く同じである。
【００７２】
関数値演算部７０２では、入力値と係数値とを使用して近似関数の出力値を計算するが、その出力値のビット精度は、対応する出力値のビット精度の中で最も高い精度以上、ここでは１０ビット以上とする。関数値演算部７０２の演算途中結果は、通常、出力値のビット精度より多くのビット精度を持つため、関数値演算部７０２の出力するビット数を増やすだけで、これは実現できる。
【００７３】
次に、関数値演算部７０２の出力値は、関数出力精度選択部７０４に入力され、ここで、格子点出力値のビット精度と同じになるようビット精度が選択される。例えば、格子点出力値のビット精度として８ビットが選択された場合には、入力された１０ビット以上の値が８ビットになるように切り捨て、或いは丸め（単に切り捨てるのではなく、所定値になるように圧縮する技術）が行われて出力される。また、例えば、格子点出力値のビット精度として１０ビットが選択された場合には、入力された１０ビット以上の値が１０ビットになるように切り捨て、或いは丸めが行われて出力される。どのビット精度で出力を行うかについては、３次元ＬＵＴ参照部７０１を使用する前に設定されているものとする。関数出力精度選択部７０４によって、格子点出力値のビット精度になった近似関数出力値は、誤差値補正部７０１ｂの加算部７０６に送られる。
【００７４】
次に、３次元ＬＵＴ参照部７０１の誤差値補正部７０１ｂについて説明する。
【００７５】
誤差値ＬＵＴ参照部７０８が、３次元の格子点番号値を用いて、誤差値を保持した３次元ＬＵＴ（３Ｄ  ＬＵＴ）７０９を参照するところまでの処理は、上述した第１の実施の形態と同じであるが、３次元ＬＵＴ７０９を参照して得られた誤差値は、加算部７０６に入力される前に、加算位置選択部７０７によって変換される。加算位置選択部７０７は、使用前に予め設定されたビット数だけ、入力された誤差値を桁合わせして出力する機能を持ち、例えば、１／２n倍、１倍、２n倍のスケーリング係数値を設定できる。加算部７０６は、対応する出力ビット精度のうち最も高いもの、この例では、１０ビットに対応した加算部であり、関数近似部７０１から出力された８ビット、或いは１０ビットの関数値に対して、加算位置選択部７０７から出力された桁合わせ後の誤差値を加算することで、最終的な格子点出力値を得る。
【００７６】
以上、説明したように、本実施の形態に係る色変換装置によれば、関数値演算部７０２の出力ビット精度と加算部７０６の演算ビット精度とを増やし、関数出力精度選択部７０４を設けることで、より高い出力ビット精度に対応し且つ複数のビット精度の切り換えに容易に対応することができる。
【００７７】
更に、誤差値ＬＵＴ参照部７０８により誤差値ＬＵＴ７０９を参照することによって得られる誤差値については、加算位置選択部７０７によって、ビット位置の桁合わせが可能であるため、誤差値ＬＵＴ７０９に保持されるデータのビット数が一定であっても、桁合わせ後の誤差値の値域を制御することができる。また、誤差値ＬＵＴ７０９に保持されるデータのビット数が一定であるということは、ビット精度が変わっても誤差値ＬＵＴ参照部７０８でアドレスを計算する論理が変わらないということを意味しており、複数のビット精度の切り換えに一層容易に対応することができる。
【００７８】
尚、以上の説明では、説明の都合上、８ビットと１０ビットの２つのビット精度を例に挙げたが、対応するビット精度は２つに限定される必要はなく、また、ビット数も８ビットと１０ビットに制限されるものではない。
【００７９】
また、図７においては、関数出力精度選択部７０４と加算位置選択部７０７の両方を用いた例を示したが、どちらか一方のみを用いる構成でも、同様に実施可能である。
【００８０】
（第３の実施の形態）
次に、本発明の第３の実施の形態を、図８に基づき説明する。
【００８１】
本実施の形態は、上述した第１の実施の形態で説明した原理と同じ原理を用いて、色変換を行うものである。
【００８２】
尚、本実施の形態に係る色変換装置の基本的な構成は、上述した第２の実施の形態における図７に示す構成と同一であるから、同図を必要に応じて流用して説明する。
【００８３】
以下、本実施の形態に係る色変換装置の動作を、図８のフローチャートを用いて説明する。
【００８４】
本実施の形態に係る色変換装置の処理ステップは、大別して、関数近似部７０１ａの処理である関数近似ステップＳ８０１と、誤差値補正部７０１ｂの処理である誤差値補正ステップＳ８０２とから成り、それぞれのステップＳ８０１，Ｓ８０２は、以下のステップから成る。
【００８５】
関数近似ステップＳ８０１においては、まず、最初に格子点番号の上位ビットから係数値ＬＵＴ７０５の参照アドレスを計算する参照アドレス計算ステップＳ８０３が実行され、入力された３次元の格子点番号が入力値の値域を複数領域に分割したときのどの領域に属するかによって、係数値ＬＵＴ７０５の参照アドレスが求められる。次に、係数値ＬＵＴ参照部７０３により係数値ＬＵＴ７０５を参照する係数値ＬＵＴ参照ステップＳ８０４が実行され、係数値ＬＵＴ７０５から近似計算に使用する係数値が得られる。次に、関数値演算部７０２により、格子点番号と係数値とにより関数値演算を行う関数値演算ステップＳ８０５が実行され、近似関数の出力値が計算される。このステップＳ８０５の出力値のビット精度は、この色変換方法の対応する出力ビット精度のうち最も高いものと同じか、それ以上とする。次に、関数出力値を選択されたビット精度に丸める（単に切り捨てるのではなく、所定値になるように圧縮する技術）ステップＳ８０６が実行され、予め選択されたビット精度に関数出力値を丸めて（単に切り捨てるのではなく、所定値になるように圧縮する技術）出力する。
【００８６】
一方、誤差値補正ステップＳ８０２においては、まず、格子点番号から誤差値ＬＵＴ７０９の参照アドレスを計算するステップＳ８０７により、入力された３次元の格子点番号から誤差値ＬＵＴ７０９におけるアドレスを計算する。次に、誤差値ＬＵＴ参照部７０８により誤差値ＬＵＴ７０９を参照する誤差値ＬＵＴ参照ステップＳ８０８が実行され、誤差値を得る。次に、加算位置選択部７０７により、誤差値ＬＵＴ７０９の出力値を選択された加算位置に桁合わせする加算位置選択ステップＳ８０９が実行され、誤差値を予め選択されたスケーリング係数値(１／２n倍、１倍、２n倍等)により桁合わせする。
【００８７】
最後に、加算部７０６により、関数出力値と誤差出力値とを加算して出力する加算出力ステップＳ８１０が実行され、上述した関数近似ステップ８０１によって得られた近似関数出力値と、加算位置選択ステップＳ８０９によって得られた桁合わせ後の誤差値とを、加算部７０６により加算することで最終的な格子点出力値が得られる。
【００８８】
本実施の形態に係る色変換装置によれば、以上示したステップＳ８０１〜Ｓ８１０を持つことによって、上述した第１及び第２の実施の形態と同様に、３次元ＬＵＴ７０９のメモリ容量を節約でき、より高い出力ビット精度への対応や、複数の出力ビット精度への対応が容易に行なえる。
【００８９】
なお、本発明は、本実施の形態に限られるものではなく、本発明の主題に基づき、どのようなものであっても適用可能である。
【００９０】
また、本発明の目的は、上述した実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム又は装置に供給し、そのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出して実行することによっても達成されることは言うまでもない。
【００９１】
この場合、記憶媒体から読出されたプログラムコード自体が上述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００９２】
また、コンピュータが読み出したプログラムコードを実行することにより、上述した実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(ＯＳ)等が実際の処理の一部又は全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００９３】
また、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００９４】
また、上記プログラムは、上述した実施の形態の機能をコンピュータで実現することができれば良く、その形態は、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給されるスクリプトデータ等の形態を有するものでも良い。
【００９５】
また、プログラムを供給する記録媒体としては、例えば、ＲＡＭ、ＮＶ−ＲＡＭ、フロッピー（登録商標）ディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ（ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ）、磁気テープ、不揮発性のメモリカード、他のＲＯＭ等の上記プログラムを記憶できるものであれば良い。
【００９６】
更に、上記プログラムは、インターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続される不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。
【図面の簡単な説明】
【００９７】
【図１】本発明の１次元ＬＵＴによる原理説明図である。
【図２】本発明の原理を説明するための近似関数説明図である。
【図３】本発明の原理を説明するための誤差値テーブル説明図である。
【図４】本発明の３次元ＬＵＴによる原理説明図である。
【図５】本発明の原理を説明するための３次元入力時の入力値域分割の一例を示す図である。
【図６】本発明の第１の実施の形態に係る色変換装置の構成を示すブロック図である。
【図７】本発明の第２の実施の形態に係る色変換装置の要部構成を示すブロック図である。
【図８】本発明の第３の実施の形態に係る色変換装置の動作を示すフローチャートである。
【図９】従来の色変換装置の構成を示すブロック図である。
【符号の説明】
【００９８】
６０１      ３次元ＬＵＴ参照部
６０１ａ    関数近似部
６０１ｂ    誤差値補正部
６０２      関数値演算部
６０３      係数値ＬＵＴ参照部
６０４      加算部
６０５      誤差値ＬＵＴ参照部
６０６      係数値ＬＵＴ
６０７      ３次元ＬＵＴ（３Ｄ  ＬＵＴ：誤差値ＬＵＴ）
７０１      ３次元ＬＵＴ参照部
７０１ａ    関数近似部
７０１ｂ    誤差値補正部
７０２      関数値演算部
７０３      係数値ＬＵＴ参照部
７０４      関数出力精度選択部
７０５      係数値ＬＵＴ
７０６      加算部
７０７      換算位置選択部
７０８      誤差値ＬＵＴ参照部
７０９      ３次元ＬＵＴ（３Ｄ  ＬＵＴ：誤差値ＬＵＴ）
【図１】
2006246236.tif 000003
【図２】
2006246236.tif 000004
【図３】
2006246236.tif 000005
【図４】
2006246236.tif 000006
【図５】
2006246236.tif 000007
【図６】
2006246236.tif 000008
【図７】
2006246236.tif 000009
【図８】
2006246236.tif 000010
【図９】
2006246236.tif 000011