(57)【要約】  【課題】  処理の速度や精度を低下させることなく、高画質化の要求にかなう色変換を行えるようにする。  【解決手段】  入力画素値を受け付ける画素入力部１０と、入力画素値をインデックス信号に変換するインデックス変換部２０と、入力画素値をデルタ信号に変換するデルタ変換部３０と、インデックス信号及びデルタ信号を記憶する入力バッファ４０と、入力色空間の格子点に補間係数を対応付けた第１変換テーブルを保持する第１変換テーブル保持部５０と、第１変換テーブルをキャッシュする一時記憶部６０と、第１変換テーブルの情報量を削減して得られた第２変換テーブルを記憶する第２変換テーブル保持部６１と、インデックス信号に基づく判定により第１又は第２変換テーブルを取得する制御部７０と、第１又は第２変換テーブルに記憶された補間係数とデルタ信号とから出力画素値を求める補間処理部８０と、出力画素値を出力する画素出力部９０とを備える。  【選択図】  図１
2006203532.tif 000002
【特許請求の範囲】
【請求項１】
第１の色空間で表現された画素値から第２の色空間で表現された画素値への変換を行う色変換装置であって、
前記変換の際に参照される第１の情報の情報量を削減して得られた第２の情報を記憶する記憶手段と、
前記第１の色空間で表現された第１の画素値を変換するために前記第１の情報を参照すべきか前記第２の情報を参照すべきかを、当該第１の画素値に基づいて決定する処理手段と
を備えたことを特徴とする色変換装置。
【請求項２】
前記第１の情報は、前記第１の色空間で表現された画素値と前記第２の色空間で表現された画素値との所定数の対応関係を示す第１の変換テーブルであり、
前記第２の情報は、前記第１の色空間で表現された画素値と前記第２の色空間で表現された画素値との前記所定数よりも少ない数の対応関係を示す第２の変換テーブルであることを特徴とする請求項１記載の色変換装置。
【請求項３】
前記処理手段は、前記第１の画素値の前記第１の色空間内の位置に基づいて、前記第１の情報を参照すべきか前記第２の情報を参照すべきかを決定することを特徴とする請求項１記載の色変換装置。
【請求項４】
前記処理手段は、前記第１の画素値の変化に対する前記第２の色空間内の対応する画素値の変化の傾向が非線形の場合に、前記第１の情報を参照するよう決定し、当該傾向が線形の場合に、前記第２の情報を参照するよう決定することを特徴とする請求項１記載の色変換装置。
【請求項５】
前記処理手段は、所定の画像における特定の画素の画素値を前記第２の情報を参照して変換するに当たり、当該第２の情報のうち、当該画像上で当該特定の画素の近傍に位置する他の画素の画素値の変換に必要な部分を、優先的に参照することを特徴とする請求項１記載の色変換装置。
【請求項６】
第１の色空間で表現された画素値から第２の色空間で表現された画素値への変換を行う色変換方法であって、
前記第１の色空間で表現された第１の画素値を受け付けるステップと、
受け付けた前記第１の画素値が所定の基準を満たさない場合には、第１の情報を用いて得られた前記第２の色空間内の画素値を出力し、当該第１の画素値が当該基準を満たす場合には、当該第１の情報の情報量を削減して得られた第２の情報を用いて得られた前記第２の色空間内の画素値を出力するステップと
を含むことを特徴とする色変換方法。
【請求項７】
前記出力するステップでは、前記第１の画素値の変化に対する前記第２の色空間内の対応する画素値の変化の傾向が非線形の場合に、前記第１の情報を用いて得られた画素値を出力し、当該傾向が線形の場合に、前記第２の情報を用いて得られた画素値を出力することを特徴とする請求項６記載の色変換方法。
【請求項８】
コンピュータに、
第１の色空間で表現された第１の画素値を受け付ける機能と、
受け付けた前記第１の画素値が所定の基準を満たさない場合には、第１の情報を用いて得られた前記第２の色空間内の画素値を出力し、当該第１の画素値が当該基準を満たす場合には、当該第１の情報の情報量を削減して得られた第２の情報を用いて得られた前記第２の色空間内の画素値を出力する機能と
を実現させるためのプログラム。
【請求項９】
前記出力する機能では、前記第１の画素値の変化に対する前記第２の色空間内の対応する画素値の変化の傾向が非線形の場合に、前記第１の情報を用いて得られた画素値を出力させ、当該傾向が線形の場合に、前記第２の情報を用いて得られた画素値を出力させることを特徴とする請求項８記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定の色空間で表現された画素値を異なる色空間で表現された画素値に変換する色変換装置等に関する。
【背景技術】
【０００２】
ディスプレイやプリンタ等の色再現デバイスは、その種類によって異なる色再現の原理を有する。従って、デバイスの種類が異なれば、色を表現するための色空間も異なる。これにより、あるデバイスで再現された色を別のデバイスで再現するには、一方のデバイスの色空間で表現された画素値をもう一方のデバイスの色空間で表現された画素値に変換する必要が出て来る。
ところが、例えば、ディスプレイ等のＲＧＢで表現される色空間(ＲＧＢ色空間)からプリンタのＹＭＣＫで表現される色空間(ＹＭＣＫ色空間)への変換のように、非線形性が強い変換については、特定の変換式を用いた演算により行うことは困難である。従って、このような色変換は、通常、一方の色空間における各格子点に他方の色空間における画素値を対応付けた変換テーブルを参照することによって行われている。
【０００３】
一方、近年、高画質な画像への要求が高まっており、入力データの階調(データ量)も増加してきている。従って、より高精度な色再現を実現するため、色変換に用いる変換テーブルとしても、大容量のものが必要とされるようになっている。
しかしながら、このような色変換の処理を、例えば、処理速度向上のため、ＡＳＩＣ(Application Specific Integrated Circuit)で実現しようとすると、ＡＳＩＣ内部に大容量のメモリを持つことになり、コスト的にも速度的にも多大な影響を受けることになってしまう。
こうした背景から、従来、ルックアップテーブル(ＬＵＴ)と補間演算手段を用いてデータ変換処理を行うデータ変換処理において、線形補間演算と非線形補間演算を切り替えることにより、演算精度を高める技術が提案されている(例えば、特許文献１参照)。この方法では、システムの動作周波数が遅い場合のモードを２次補間演算モードと称し、線形補間演算部における演算結果に、非線形補間演算部における演算結果を加算して出力としている。一方、システムの動作周波数が早い場合のモードを線形補間演算モードと称し、線形補間演算部における演算結果をそのまま出力としている。
【０００４】
【特許文献１】特開平８−１３７４５１号公報(第４頁、第３図)
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の発明では、システムの動作周波数に応じて２次補間演算モードと線形補間演算モードとを切り替えているに過ぎないので、２次補間演算モードにおいては、演算負荷による処理速度の低下が発生する虞があるという問題点があった。
また、線形補間演算モードにおいては、特許文献１における処理結果の高精度化という課題は依然として解決されないという問題点もあった。
【０００６】
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、処理の速度や精度を低下させることなく、高画質化の要求にかなう色変換を行えるようにすることにある。
【課題を解決するための手段】
【０００７】
かかる目的のもと、本発明では、所定の色空間で表現された画素値を異なる色空間で表現された画素値に変換する際、格子点が密に配置された変換テーブルと疎に配置された変換テーブルとを切り替えて用いるようにした。即ち、本発明の色変換装置は、第１の色空間で表現された画素値から第２の色空間で表現された画素値への変換を行う装置であり、その変換の際に参照される第１の情報の情報量を削減して得られた第２の情報を記憶する記憶手段と、第１の色空間で表現された第１の画素値を変換するために第１の情報を参照すべきか第２の情報を参照すべきかを、その第１の画素値に基づいて決定する処理手段とを備えている。
ここで、第１の情報とは、例えば、第１の色空間で表現された画素値と第２の色空間で表現された画素値との所定数の対応関係を示す第１の変換テーブルであり、第２の情報とは、第１の色空間で表現された画素値と第２の色空間で表現された画素値とのその所定数よりも少ない数の対応関係を示す第２の変換テーブルである。
【０００８】
また、本発明は、所定の色空間で表現された画素値を異なる色空間で表現された画素値に変換する際、格子点が密に配置された変換テーブルと疎に配置された変換テーブルとを切り替えて用いる方法として捉えることもできる。その場合、本発明の色変換方法は、第１の色空間で表現された画素値から第２の色空間で表現された画素値への変換を行う方法であり、第１の色空間で表現された第１の画素値を受け付けるステップと、受け付けた第１の画素値が所定の基準を満たさない場合には、第１の情報を用いて得られた第２の色空間内の画素値を出力し、その第１の画素値がその基準を満たす場合には、その第１の情報の情報量を削減して得られた第２の情報を用いて得られた第２の色空間内の画素値を出力するステップとを含んでいる。
【０００９】
一方、本発明は、所定の機能をコンピュータに実現させるためのプログラムとして捉えることもできる。その場合、本発明のプログラムは、コンピュータに、第１の色空間で表現された第１の画素値を受け付ける機能と、受け付けた第１の画素値が所定の基準を満たさない場合には、第１の情報を用いて得られた第２の色空間内の画素値を出力し、その第１の画素値がその基準を満たす場合には、その第１の情報の情報量を削減して得られた第２の情報を用いて得られた第２の色空間内の画素値を出力する機能とを実現させるためのものである。
【発明の効果】
【００１０】
本発明によれば、処理の速度や精度を低下させることなく、高画質化の要求にかなう色変換を行えるようになる。
【発明を実施するための最良の形態】
【００１１】
以下、添付図面を参照して、本発明を実施するための最良の形態(以下、「実施の形態」という)について詳細に説明する。尚、本実施の形態では、色変換装置に入力する画素(入力画素)を表現するための色空間を「入力色空間」と呼び、色変換装置から出力される画素(出力画素)を表現するための色空間を「出力色空間」と呼ぶこととする。
(第１の実施の形態)
図１は、本発明の第１の実施の形態における色変換装置の構成を示した図である。
図示するように、本実施の形態の色変換装置は、画素入力部１０と、インデックス変換部２０と、デルタ変換部３０と、入力バッファ４０と、第１変換テーブル保持部５０と、一時記憶部６０と、第２変換テーブル保持部６１と、制御部７０と、補間処理部８０と、画素出力部９０とを備える。
【００１２】
画素入力部１０は、入力色空間における入力画素の値(入力画素値)を受け付ける。インデックス変換部２０は、入力画素値を取得し、入力色空間内の部分空間のうち入力画素値が属する部分空間を示すインデックス信号を出力し、デルタ変換部３０は、入力画素値を取得し、その部分空間内の入力画素値の位置を示すデルタ信号を出力する。入力バッファ４０は、インデックス信号とデルタ信号を読み込んで記憶するバッファである。
第１変換テーブル保持部５０は、入力色空間の部分空間の境界に位置する各格子点に対し、出力色空間における対応する出力画素の値(以下、「補間係数」という)を格納する変換テーブル(以下、「第１変換テーブル」という)を保持する。本実施の形態では、第１変換テーブルとして、入力画素値が１０ｂｉｔ/ｐｉｘの場合に対応可能な変換テーブルを保持するものとする。
一時記憶部６０は、第１変換テーブルを分割することによって得られたテーブル(以下、「第１ブロックテーブル」という)と、そのブロックテーブルに対するインデックスとして機能するテーブル(以下、「第１インデックステーブル」という)とを記憶する。
【００１３】
第２変換テーブル保持部６１は、入力色空間の特定のブロックについて、そのブロックの中の部分空間の境界に位置する各格子点に対し、出力色空間における補間係数を格納するテーブル(以下、「第２ブロックテーブル」という)と、その第２ブロックテーブルに対するインデックスとして機能するテーブル(以下、「第２インデックステーブル」という)とからなる第２変換テーブルを記憶する記憶手段である。ここで、第２変換テーブルは、第１変換テーブルよりも格子点を疎に配置して管理する変換テーブルである。本実施の形態では、第２ブロックテーブルとして、入力画素値が８ｂｉｔ/ｐｉｘの場合に対応可能な変換テーブルを保持するものとする(上位４ｂｉｔでインデックスを表し、下位４ｂｉｔで補間を行うことを前提とする)。
【００１４】
制御部７０は、入力バッファ４０に記憶されたインデックス信号に基づいて第２変換テーブルを参照すべきと判定されれば、第２変換テーブル保持部６１から第２ブロックテーブルを取得する。一方、入力バッファ４０に記憶されたインデックス信号に基づいて第１変換テーブルを参照すべきと判定されれば、一時記憶部６０又は第１変換テーブル保持部５０から第１ブロックテーブルを取得する。このような処理を行う制御部７０は、処理手段として把握することができる。また、補間処理部８０は、第１又は第２のブロックテーブルから取得した補間係数と、入力バッファ４０に記憶されたデルタ信号とに基づいて、出力すべき出力画素の値(出力画素値)を求める。画素出力部９０は、この出力画素値を出力する。
【００１５】
尚、本実施の形態では、これらの機能のうち、インデックス変換部２０と、デルタ変換部３０と、入力バッファ４０と、一時記憶部６０と、第２変換テーブル保持部６１と、制御部７０と、補間処理部８０とからなる部分は、ＬＳＩ(Large Scale Integration)によって実現するものとする。一方、第１変換テーブル保持部５０については、メインメモリによって実現する。
【００１６】
このような構成を有する色変換装置は、次のように動作する。尚、以下の動作説明は、ＲＧＢ色空間からＹＭＣＫ色空間への色変換を例にとって行う。
まず、画素入力部１０が、入力画素値(ＲＩ，ＧＩ，ＢＩ)を受け付ける。そして、インデックス変換部２０が、入力画素値からインデックス信号(ＲＨ，ＧＨ，ＢＨ)を求め、デルタ変換部３０が、入力画素値からデルタ信号(ＲＬ，ＧＬ，ＢＬ)を求める。尚、上述したように、インデックス信号は、入力色空間内の部分空間のうち入力画素値が属する部分空間を示す信号であり、デルタ信号は、その部分空間内の入力画素値の位置を示す信号であるので、ＲＩ＝ＲＨ＋ＲＬ，ＧＩ＝ＧＨ＋ＧＬ，ＢＩ＝ＢＨ＋ＢＬの関係が成り立つ。
このようなインデックス変換部２０、デルタ変換部３０による信号出力は、入力画素値に対し順次行われ、入力バッファ４０は、サイズの許す限り、インデックス信号とデルタ信号のペアを先読みして記憶する。第１変換テーブル保持部５０から一時記憶部６０及び補間処理部８０への読出しは低速であることが想定されるからである。
【００１７】
次に、本実施の形態における色変換処理の中核である制御部７０及び補間処理部８０の動作について説明するが、その前に、そこで参照される第１変換テーブル保持部５０、一時記憶部６０、第２変換テーブル保持部６１の記憶内容について説明しておく。尚、本明細書で参照する図面においては、横方向にＲ軸、縦方向にＧ軸、奥へ向かう方向にＢ軸を設定してＲＧＢ色空間を示す。また、ＲＧＢ空間内の各点の座標は、(Ｒ値，Ｇ値，Ｂ値)と表記することとする。
図２は、ＲＧＢ色空間の全体を示した図である。この図では、Ｒ軸、Ｇ軸、Ｂ軸のそれぞれにｎ個の格子点を設けている。従って、このＲＧＢ色空間は、(０，０，０)、(ｎ−１，０，０)、(ｎ−１，０，ｎ−１)、(０，０，ｎ−１)、(０，ｎ−１，０)、(ｎ−１，ｎ−１，０)、(ｎ−１，ｎ−１，ｎ−１)、(０，ｎ−１，ｎ−１)を頂点とする立方体と捉えることができる。
そして、第１変換テーブル保持部５０に保持される第１変換テーブルは、このようなＲＧＢ色空間における各格子点に補間係数を対応付けたものである。
【００１８】
ところで、本実施の形態では、このＲＧＢ色空間をブロックに分割し、各ブロックに対応する第１ブロックテーブルを一時記憶部６０に格納する構成としている。
ＲＧＢ色空間のブロックへの分割は、例えば、図３(ａ)に示すように行われる。即ち、図３(ａ)に太線で示すように、格子点に囲まれた部分空間を複数個集めて１つのブロックを形成する。
図３(ｂ)に、１つのブロックの拡大図を示す。各ブロックの８つの頂点のうち、ＲＧＢ座標系の原点に最も近い頂点をブロックインデックスと定義し、(ＲＢ，ＧＢ，ＢＢ)で表すものとする。また、本実施の形態では、各ブロックにおいて、各軸にｍ個の格子点を設けている(ｍはｎの約数)。従って、各ブロックは、(ＲＢ，ＧＢ，ＢＢ)、(ＲＢ＋ｍ−１，ＧＢ，ＢＢ)、(ＲＢ＋ｍ−１，ＧＢ，ＢＢ＋ｍ−１)、(ＲＢ，ＧＢ，ＢＢ＋ｍ−１)、(ＲＢ，ＧＢ＋ｍ−１，ＢＢ)、(ＲＢ＋ｍ−１，ＧＢ＋ｍ−１，ＢＢ)、(ＲＢ＋ｍ−１，ＧＢ＋ｍ−１，ＢＢ＋ｍ−１)、(ＲＢ，ＧＢ＋ｍ−１，ＢＢ＋ｍ−１)を頂点とする立方体と捉えることができる。
【００１９】
図３(ｂ)において、点Ｐが入力画素値であるとする。この場合、点Ｐが属する部分空間の８つの頂点のうち、ＲＧＢ座標系の原点に最も近い頂点の座標を(ＲＨ，ＧＨ，ＢＨ)とすると、この部分空間を示すインデックス信号は(ＲＨ，ＧＨ，ＢＨ)となる。また、点ＰのＲＧＢ空間における座標を(ＲＨ＋ＲＬ，ＧＨ＋ＧＬ，ＢＨ＋ＢＬ)とすると、その部分空間内での点Ｐの位置を示すデルタ信号は(ＲＬ，ＧＬ，ＢＬ)となる。図３(ｂ)に示すように、１つのブロックは、このような部分空間を複数集めたものである。
そして、一時記憶部６０に記憶される第１ブロックテーブルは、このようなブロックにおける各格子点に補間係数を対応付けたものである。
【００２０】
また、本実施の形態では、図２のＲＧＢ色空間の特定のブロックについて、図２よりも格子点を疎に配置し、そのようなブロックに対応する第２ブロックテーブルを第２変換テーブル保持部６１に格納する構成としている。
例えば、ＲＧＢ色空間からＹＭＣＫ色空間への色変換は、非線形性が高い。具体的には、ＲＧＢ色空間における一定間隔の格子点に対する補間係数が、ＹＭＣＫ色空間において、殆ど変化しない場合、同じように変化する場合、極端に変化する場合がある。殆ど変化しない部分空間や極端に変化する部分空間では、線形補間を行う割合が高くなればなるほど正確な色変換からは遠ざかってしまう。一方、同じように変化する部分空間では、ＲＧＢ色空間での格子点の間隔にもよるが、線形補間を行ってもある程度精度の高い画素値が得られる。従って、このような部分空間では、線形補間に依存する度合いを大きくしても、ある程度正確な変換を行うことが可能である。従って、本実施の形態では、第１変換テーブルのうち、線形補間を行ってもある程度精度の高い画素値が得られる部分について、格子点の間隔を疎にした第２変換テーブルを設けている。
【００２１】
そして、本実施の形態では、ＲＧＢ色空間からＹＭＣＫ色空間への色変換における上記性質を利用し、同じように変化する部分空間では、たとえ１０ｂｉｔ/ｐｉｘで画素値が入力されたとしても、第２変換テーブルを用いて色変換を行うようにする。具体的には、１０ｂｉｔ/ｐｉｘのうち、下位２ｂｉｔを無視し８ｂｉｔ/ｐｉｘとして認識したり、下位６ｂｉｔで補間を行ったりする。同じように変化する部分空間では、このような処理を行っても、大きな誤差とはならないからである。
一方、殆ど変化しない部分空間又は極端に変化する部分空間について正確な色変換を行うためには、第２変換テーブルを使用することはできない。従って、第１変換テーブルを使用して色変換を行う。
【００２２】
図４に、格子点の配置を疎にしたブロックを示す。ブロックの８つの頂点のうち、ＲＧＢ座標系の原点に最も近い頂点をブロックインデックスと定義し、(ＲＢ，ＧＢ，ＢＢ)で表すものとする。また、本実施の形態では、図２のＲＧＢ色空間のｋ(ｋ＞１)個の格子点に対し１つの格子点を設けることで、格子点の配置を疎にしている。尚、１つのブロックにおける各軸には、ｔ個の格子点を設けている。従って、各ブロックは、(ＲＢ，ＧＢ，ＢＢ)、(ＲＢ＋(ｔ−１)ｋ，ＧＢ，ＢＢ)、(ＲＢ＋(ｔ−１)ｋ，ＧＢ，ＢＢ＋(ｔ−１)ｋ)、(ＲＢ，ＧＢ，ＢＢ＋(ｔ−１)ｋ)、(ＲＢ，ＧＢ＋(ｔ−１)ｋ，ＢＢ)、(ＲＢ＋(ｔ−１)ｋ，ＧＢ＋(ｔ−１)ｋ，ＢＢ)、(ＲＢ＋(ｔ−１)ｋ，ＧＢ＋(ｔ−１)ｋ，ＢＢ＋(ｔ−１)ｋ)、(ＲＢ，ＧＢ＋(ｔ−１)ｋ，ＢＢ＋(ｔ−１)ｋ)を頂点とする立方体と捉えることができる。
【００２３】
図４において、点Ｐが入力画素値であるとする。この場合、点Ｐが属する部分空間の８つの頂点のうち、ＲＧＢ座標系の原点に最も近い頂点の座標を(ＲＨ，ＧＨ，ＢＨ)とすると、この部分空間を示すインデックス信号は(ＲＨ，ＧＨ，ＢＨ)となる。また、点ＰのＲＧＢ空間における座標を(ＲＨ＋ＲＬ，ＧＨ＋ＧＬ，ＢＨ＋ＢＬ)とすると、その部分空間内での点Ｐの位置を示すデルタ信号は(ＲＬ，ＧＬ，ＢＬ)となる。図４に示すように、１つのブロックは、このような部分空間を複数集めたものである。
そして、第２変換テーブル保持部６１に記憶される第２ブロックテーブルは、このようなブロックにおける各格子点に補間係数を対応付けたものである。
【００２４】
次に、図５及び６を参照して、第１変換テーブル保持部５０に保持される第１変換テーブルの一例について説明する。
図５は、ＲＧＢ色空間における格子点を一次元に配置するための順番付けの例を示したものである。このように、隣接する格子点については、変換テーブル上でなるべくアドレスが連続するように配置する。これにより、バースト転送等メモリの特性を生かすことができ、読出し速度を向上することができる。
図５の順番付けについてより詳細に説明する。まず、図５の最も手前の面(平面Ｂ＝０)上の格子点は、(０，０，０)，(１，０，０)，…，(ｎ−１，０，０)，(０，１，０)，(１，１，０)，…，(ｎ−１，１，０)，…，(０，ｎ−１，０)，(１，ｎ−１，０)，…，(ｎ−１，ｎ−１，０)の順番に並べる。次に、１つ奥の面(平面Ｂ＝１)上の格子点も、同様に、(０，０，１)，…，(ｎ−１，ｎ−１，１)の順番に並べる。これを最も奥の面(平面Ｂ＝ｎ−１)上の格子点まで行い、三次元に配置されていたｎ３個の格子点を一次元に並べる。
【００２５】
そして、この一次元に並べたＲＧＢ色空間における各格子点を、図６に示すようにメモリ上のアドレスにマップする。ここでは、簡単のため、先頭アドレスを「０」とし、次の格子点は、１だけカウントアップされたアドレスにマップするものとする。
尚、ＲＧＢ色空間の各格子点をこのように連続的に拾ってマップした場合、一般に、アドレスＡは、
Ａ＝αＲ＋βＧ＋γＢ＋δ
と表すことができる。図６は、α＝１、β＝ｎ、γ＝ｎ２、δ＝０とした場合の例である。
【００２６】
また、図７及び８を参照して、一時記憶部６０に記憶される第１インデックステーブル及び第１ブロックテーブルの一例について説明する。
図７は、ＲＧＢ色空間から切り出されたブロックにおける格子点を一次元に配置するための順番付けの例を示したものである。まず、図７の最も手前の面(平面Ｂ＝ＢＢ)上の格子点は、(ＲＢ，ＧＢ，ＢＢ)，(ＲＢ＋１，ＧＢ，ＢＢ)，…，(ＲＢ＋ｍ−１，ＧＢ，ＢＢ)，(ＲＢ，ＧＢ＋１，ＢＢ)，(ＲＢ＋１，ＧＢ＋１，ＢＢ)，…，(ＲＢ＋ｍ−１，ＧＢ＋１，ＢＢ)，…，(ＲＢ，ＧＢ＋ｍ−１，ＢＢ)，(ＲＢ＋１，ＧＢ＋ｍ−１，ＢＢ)，…，(ＲＢ＋ｍ−１，ＧＢ＋ｍ−１，ＢＢ)の順番に並べる。次に、１つ奥の面(平面Ｂ＝ＢＢ＋１)上の格子点も、同様に、(ＲＢ，ＧＢ，ＢＢ＋１)，…，(ＲＢ＋ｍ−１，ＧＢ＋ｍ−１，ＢＢ＋１)の順番に並べる。これを最も奥の面(平面Ｂ＝ＢＢ＋ｍ−１)上の格子点まで行い、三次元に配置されていたｍ３個の格子点を一次元に並べる。
そして、この一次元に並べたブロックにおける各格子点を、メモリ上のアドレスにマップする。
【００２７】
尚、一時記憶部６０には必ずしも１つのブロックテーブルのみが格納されるとは限らない。従って、どのブロックテーブルがどのアドレスから格納されているかを示す第１インデックステーブルを設けることとする。
図８(ａ)は、第１インデックステーブルの一例を示したものである。第１インデックステーブルは、各ブロックの位置を示すブロックインデックスと、各ブロックに対応する第１ブロックテーブルのアドレスと、各ブロックに対応する第１ブロックテーブルの参照回数(ヒット回数)とを対応付けたものである。例えば、ブロックインデックス(Ｒ０，Ｇ０，Ｂ０)に対しては、アドレス「ａ０」、ヒット回数「Ｎ０」が、ブロックインデックス(Ｒ１，Ｇ１，Ｂ１)に対しては、アドレス「ａ１」、ヒット回数「Ｎ１」が記憶されている。
【００２８】
また、図７で一次元に並べたブロックにおける各格子点は、図８(ｂ)に示すようにメモリ上のアドレスにマップされる。ブロック内でのマッピング方法は、図６と同様である。但し、各ブロックインデックスに対応する第１ブロックテーブルの先頭アドレスは、第１インデックステーブルにおいてそのブロックインデックスに対応付けられたアドレスとする。具体的には、ブロックインデックス(Ｒ０，Ｇ０，Ｂ０)に対応する第１ブロックテーブルの先頭アドレスは「ａ０」であり、ブロックインデックス(Ｒ１，Ｇ１，Ｂ１)に対応する第１ブロックテーブルの先頭アドレスは「ａ１」である。また、次の格子点は、図６と同様、１だけカウントアップされたアドレスにマップするものとする。
【００２９】
尚、ブロック内の各格子点をこのように連続的に拾ってマップした場合、一般に、アドレスＡは、
Ａ＝αＲ＋βＧ＋γＢ＋δ
と表すことができる。図８(ｂ)のブロックインデックス(Ｒ０，Ｇ０，Ｂ０)に対する第１ブロックテーブルにおいては、α＝１、β＝ｍ、γ＝ｍ２、δ＝ａ０−Ｒ０−ｍＧ０−ｍ２Ｂ０である。また、ブロックインデックス(Ｒ１，Ｇ１，Ｂ１)に対する第１ブロックテーブルにおいては、α＝１、β＝ｍ、γ＝ｍ２、δ＝ａ１−Ｒ１−ｍＧ１−ｍ２Ｂ１である。
ここで、図８(ｂ)の第１ブロックテーブルの数は、一時記憶部６０の容量に応じて決められる。そして、図８(ａ)の第１インデックステーブルには、第１ブロックテーブルの数だけのエントリが設けられる。
【００３０】
更に、図９及び１０を参照して、第２変換テーブル保持部６１に記憶される第２インデックステーブル及び第２ブロックテーブルの一例について説明する。
図９は、ＲＧＢ色空間内の特定のブロックにおける格子点を一次元に配置するための順番付けの例を示したものである。まず、図９の最も手前の面(平面Ｂ＝ＢＢ)上の格子点は、(ＲＢ，ＧＢ，ＢＢ)，(ＲＢ＋ｋ，ＧＢ，ＢＢ)，…，(ＲＢ＋(ｔ−１)ｋ，ＧＢ，ＢＢ)，(ＲＢ，ＧＢ＋ｋ，ＢＢ)，(ＲＢ＋ｋ，ＧＢ＋ｋ，ＢＢ)，…，(ＲＢ＋(ｔ−１)ｋ，ＧＢ＋ｋ，ＢＢ)，…，(ＲＢ，ＧＢ＋(ｔ−１)ｋ，ＢＢ)，(ＲＢ＋ｋ，ＧＢ＋(ｔ−１)ｋ，ＢＢ)，…，(ＲＢ＋(ｔ−１)ｋ，ＧＢ＋(ｔ−１)ｋ，ＢＢ)の順番に並べる。次に、１つ奥の面(平面Ｂ＝ＢＢ＋ｋ)上の格子点も、同様に、(ＲＢ，ＧＢ，ＢＢ＋ｋ)，…，(ＲＢ＋(ｔ−１)ｋ，ＧＢ＋(ｔ−１)ｋ，ＢＢ＋ｋ)の順番に並べる。これを最も奥の面(平面Ｂ＝ＢＢ＋(ｔ−１)ｋ)上の格子点まで行い、三次元に配置されていたｔ３個の格子点を一次元に並べる。
そして、この一次元に並べたブロックにおける各格子点を、メモリ上のアドレスにマップする。
【００３１】
尚、第２変換テーブル保持部６１には必ずしも１つのブロックテーブルのみが格納されるとは限らない。従って、どのブロックテーブルがどのアドレスから格納されているかを示す第２インデックステーブルを設けることとする。
図１０(ａ)は、第２インデックステーブルの一例を示したものである。第２インデックステーブルは、各ブロックの位置を示すブロックインデックスと、各ブロックの１つの軸に設けられた格子点の数ｔと、各ブロックに対応する第２ブロックテーブルのアドレスとを対応付けたものである。例えば、ブロックインデックス(Ｒ’０，Ｇ’０，Ｂ’０)に対しては、格子点の数「ｔ０」、アドレス「ａ’０」が、ブロックインデックス(Ｒ’１，Ｇ’１，Ｂ’１)に対しては、格子点の数「ｔ１」、アドレス「ａ’１」が記憶されている。
【００３２】
また、図９で一次元に並べたブロックにおける各格子点は、図１０(ｂ)に示すようにメモリ上のアドレスにマップされる。ブロック内でのマッピング方法は、図６と同様である。但し、各ブロックインデックスに対応する第２ブロックテーブルの先頭アドレスは、第２インデックステーブルにおいてそのブロックインデックスに対応付けられたアドレスとする。具体的には、ブロックインデックス(Ｒ’０，Ｇ’０，Ｂ’０)に対応する第２ブロックテーブルの先頭アドレスは「ａ’０」であり、ブロックインデックス(Ｒ’１，Ｇ’１，Ｂ’１)に対応する第２ブロックテーブルの先頭アドレスは「ａ’１」である。また、次の格子点は、図６と同様、１だけカウントアップされたアドレスにマップするものとする。
【００３３】
尚、ブロック内の各格子点をこのように連続的に拾ってマップした場合、一般に、アドレスＡは、
Ａ＝αＲ＋βＧ＋γＢ＋δ
と表すことができる。図１０(ｂ)のブロックインデックス(Ｒ’０，Ｇ’０，Ｂ’０)に対する第２ブロックテーブルにおいては、α＝１/ｋ、β＝ｔ０/ｋ、γ＝(ｔ０/ｋ)２、δ＝ａ’０−(１/ｋ)Ｒ’０−(ｔ０/ｋ)Ｇ’０−(ｔ０/ｋ)２Ｂ’０である。また、ブロックインデックス(Ｒ’１，Ｇ’１，Ｂ’１)に対する第２ブロックテーブルにおいては、α＝１/ｋ、β＝ｔ１/ｋ、γ＝(ｔ１/ｋ)２、δ＝ａ’１−(１/ｋ)Ｒ’１−(ｔ１/ｋ)Ｇ’１−(ｔ１/ｋ)２Ｂ’１である。
ここで、図１０(ｂ)の第２ブロックテーブルの数は、第２変換テーブル保持部６１の容量に応じて決められる。そして、図１０(ａ)の第２インデックステーブルには、第２ブロックテーブルの数だけのエントリが設けられる。
【００３４】
このように第１変換テーブル保持部５０、一時記憶部６０、第２変換テーブル保持部６１に情報が記憶された状態で、制御部７０の動作が開始する。
図１１は、制御部７０の動作を示したフローチャートである。
まず、制御部７０は、入力バッファ４０からインデックス信号(ＲＨ、ＧＨ、ＢＨ)を取り出す(ステップ１０１)。
そして、ＲＧＢ色空間内でそのインデックス信号に対応する格子点を含むブロックの情報が第２変換テーブルに存在するかどうかを判定する(ステップ１０２)。尚、この場合のブロックとは、ＲＧＢ色空間内の特定のブロックであり、第１変換テーブル保持部５０で管理される格子点間隔をより疎に配置することによって得られたブロックである。
具体的には、第２インデックステーブルを参照し、
Ｒ’ｊ≦ＲＨ＜Ｒ’ｊ＋ｔｊｋ
Ｇ’ｊ≦ＧＨ＜Ｇ’ｊ＋ｔｊｋ
Ｂ’ｊ≦ＢＨ＜Ｂ’ｊ＋ｔｊｋ
(ｊ＝０，１，２，…)
を満たすｊが存在するかどうかを判定する。
【００３５】
その結果、そのようなブロックの情報が第２変換テーブルに存在すると判定された場合は、そのブロックのブロックインデックスを第２インデックステーブルから取り出す(ステップ１０３)。そして、そのブロックインデックスに対応する第２ブロックテーブルのアドレスを求める(ステップ１０４)。
【００３６】
一方、そのようなブロックの情報が第２変換テーブルに存在しないと判定された場合は、ＲＧＢ空間内でそのインデックス信号に対応する格子点を含むブロックのブロックインデックスを求める(ステップ１０５)。尚、この場合のブロックとは、ＲＧＢ色空間を分割することによって得られたブロックである。
具体的には、
ＲＢ≦ＲＨ＜ＲＢ＋ｍ  (ＲＢ＝０，ｍ，２ｍ，…，ｎ−ｍ)
ＧＢ≦ＧＨ＜ＧＢ＋ｍ  (ＧＢ＝０，ｍ，２ｍ，…，ｎ−ｍ)
ＢＢ≦ＢＨ＜ＢＢ＋ｍ  (ＢＢ＝０，ｍ，２ｍ，…，ｎ−ｍ)
を満たす格子点(ＲＢ，ＧＢ，ＢＢ)を求める。
【００３７】
次に、制御部７０は、ブロックインデックス(ＲＢ，ＧＢ，ＢＢ)が一時記憶部６０の第１インデックステーブルに存在するかどうかを判定する(ステップ１０６)。
その結果、ブロックインデックスが第１インデックステーブルに存在すると判定された場合は、そのブロックインデックスに対応するヒット回数に１を加算する(ステップ１０７)。そして、そのブロックインデックスに対応する第１ブロックテーブルのアドレスを求める(ステップ１０８)。
【００３８】
一方、ブロックインデックスが第１インデックステーブルに存在しないと判定された場合は、第１変換テーブル保持部５０からブロックテーブルを読み込む動作に移る。但し、その際、一時記憶部６０に新たにブロックテーブルを追加する容量がない場合も考えられる。そこで、まず、一時記憶部６０にブロックテーブルを書き込む余裕(空き領域)があるかどうかを判定する(ステップ１０９)。
その結果、書き込む余裕がないと判定された場合は、第１インデックステーブルに記憶されたブロックごとのヒット回数を参照し、ヒット回数が最も少ないブロックの第１ブロックテーブルを一時記憶部６０から削除し(ステップ１１０)、ステップ１１１へ進む。一方、書き込む余裕があると判定された場合は、そのままステップ１１１へ進む。
【００３９】
そして、制御部７０は、ステップ１０５で求めたブロックインデックスに対応するブロックテーブルを第１変換テーブルから切り出して一時記憶部６０に書き込む(ステップ１１１)。また、書き込んだブロックテーブルの先頭アドレスを取得し、ブロックインデックスとそのアドレスとを第１インデックステーブルに書き込む(ステップ１１２)。尚、その際、ヒット回数は「０」としておく。
そして、最後に、制御部７０は、第１ブロックテーブル又は第２ブロックテーブル(以下では、単に「ブロックテーブル」という)のアドレスとブロックインデックスとを補間処理部８０に出力する(ステップ１１３)。
【００４０】
これにより、補間処理部８０の動作が開始する。
図１２は、補間処理部８０の動作を示したフローチャートである。
まず、補間処理部８０は、インデックス信号、デルタ信号を入力バッファ４０から取得し、ブロックテーブルのアドレス、ブロックインデックスを制御部７０から取得する(ステップ２０１)。尚、インデックス信号は、制御部７０から取得するようにしてもよい。
【００４１】
次に、補間処理部８０は、入力画素値に対する補間係数を求め、補間処理を行う。尚、ここでは、補間方法の一例として、入力画素を含む四面体の４つの頂点に対する補間係数を用いて補間を行う４点補間を採用する。勿論、他の公知の補間方法を採用しても構わない。
まず、補間処理部８０は、入力画素値(ＲＩ，ＧＩ，ＢＩ)を含む四面体を求める(ステップ２０２)。具体的には、図１３に示すような立方体において、入力画素値が、四面体ＡＢＣＧ、四面体ＡＢＦＧ、四面体ＡＣＤＧ、四面体ＡＤＧＨ、四面体ＡＥＦＧ、四面体ＡＥＧＨのいずれに含まれるかを判定する。これは、デルタ信号(ＲＬ，ＧＬ，ＢＬ)におけるＲＬ，ＧＬ，ＢＬの大小関係に基づいて、容易に判定することができる。
【００４２】
その後、補間処理部８０は、ここで求めた四面体の４つの頂点に対する補間係数が格納されたアドレスＡ０、Ａ１、Ａ２、Ａ３を求める(ステップ２０３)。
具体的には、次のようにして求める。まず、図１３の各頂点に対応するアドレスを求めておく。頂点Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈに対する補間係数が格納されたアドレスを、それぞれ、ＡＡ、ＡＢ、ＡＣ、ＡＤ、ＡＥ、ＡＦ、ＡＧ、ＡＨとすると、次のようになる。但し、ここでは、制御部７０が求めたブロックテーブルのアドレスを「ａ」とする。
ＡＡ＝ａ＋(ＲＨ−ＲＢ)＋ｍ(ＧＨ−ＧＢ)＋ｍ２(ＢＨ−ＢＢ)
ＡＢ＝ａ＋(ＲＨ＋１−ＲＢ)＋ｍ(ＧＨ−ＧＢ)＋ｍ２(ＢＨ−ＢＢ)
ＡＣ＝ａ＋(ＲＨ＋１−ＲＢ)＋ｍ(ＧＨ−ＧＢ)＋ｍ２(ＢＨ＋１−ＢＢ)
ＡＤ＝ａ＋(ＲＨ−ＲＢ)＋ｍ(ＧＨ−ＧＢ)＋ｍ２(ＢＨ＋１−ＢＢ)
ＡＥ＝ａ＋(ＲＨ−ＲＢ)＋ｍ(ＧＨ＋１−ＧＢ)＋ｍ２(ＢＨ−ＢＢ)
ＡＦ＝ａ＋(ＲＨ＋１−ＲＢ)＋ｍ(ＧＨ＋１−ＧＢ)＋ｍ２(ＢＨ−ＢＢ)
ＡＧ＝ａ＋(ＲＨ＋１−ＲＢ)＋ｍ(ＧＨ＋１−ＧＢ)＋ｍ２(ＢＨ＋１−ＢＢ)
ＡＨ＝ａ＋(ＲＨ−ＲＢ)＋ｍ(ＧＨ＋１−ＧＢ)＋ｍ２(ＢＨ＋１−ＢＢ)
【００４３】
そして、入力画素値が含まれる四面体と、アドレスＡ０、Ａ１、Ａ２、Ａ３との関係は、次のようになる。
四面体ＡＢＣＧの場合、Ａ０＝ＡＡ，Ａ１＝ＡＢ，Ａ２＝ＡＣ，Ａ３＝ＡＧ
四面体ＡＢＦＧの場合、Ａ０＝ＡＡ，Ａ１＝ＡＢ，Ａ２＝ＡＦ，Ａ３＝ＡＧ
四面体ＡＣＤＧの場合、Ａ０＝ＡＡ，Ａ１＝ＡＣ，Ａ２＝ＡＤ，Ａ３＝ＡＧ
四面体ＡＤＧＨの場合、Ａ０＝ＡＡ，Ａ１＝ＡＤ，Ａ２＝ＡＧ，Ａ３＝ＡＨ
四面体ＡＥＦＧの場合、Ａ０＝ＡＡ，Ａ１＝ＡＥ，Ａ２＝ＡＦ，Ａ３＝ＡＧ
四面体ＡＥＧＨの場合、Ａ０＝ＡＡ，Ａ１＝ＡＥ，Ａ２＝ＡＧ，Ａ３＝ＡＨ
【００４４】
次に、補間処理部８０は、ブロックテーブルを参照し、アドレスＡ０から補間係数Ｙ０、Ｍ０、Ｃ０、Ｋ０を、アドレスＡ１から補間係数Ｙ１、Ｍ１、Ｃ１、Ｋ１を、アドレスＡ２から補間係数Ｙ２、Ｍ２、Ｃ２、Ｋ２を、アドレスＡ３から補間係数Ｙ３、Ｍ３、Ｃ３、Ｋ３をそれぞれ取り出す(ステップ２０４)。
【００４５】
また、補間処理部８０は、補間係数Ｙ０、Ｍ０、Ｃ０、Ｋ０に対する乗算係数Ｗｙ０、Ｗｍ０、Ｗｃ０、Ｗｋ０、補間係数Ｙ１、Ｍ１、Ｃ１、Ｋ１に対する乗算係数Ｗｙ１、Ｗｍ１、Ｗｃ１、Ｗｋ１、補間係数Ｙ２、Ｍ２、Ｃ２、Ｋ２に対する乗算係数Ｗｙ２、Ｗｍ２、Ｗｃ２、Ｗｋ２、補間係数Ｙ３、Ｍ３、Ｃ３、Ｋ３に対する乗算係数Ｗｙ３、Ｗｍ３、Ｗｃ３、Ｗｋ３をそれぞれ求める(ステップ２０５)。
【００４６】
これらの乗算係数は、例えば、次のようにして求められる。即ち、まず、点Ｐを入力画素値とし、点Ｐを含む四面体の頂点のうち、補間係数Ｙ０、Ｍ０、Ｃ０、Ｋ０に対応する頂点をＰ０、補間係数Ｙ１、Ｍ１、Ｃ１、Ｋ１に対応する頂点をＰ１、補間係数Ｙ２、Ｍ２、Ｃ２、Ｋ２に対応する頂点をＰ２、補間係数Ｙ３、Ｍ３、Ｃ３、Ｋ３に対応する頂点をＰ３とする。そして、Ｐ０とＰとを結ぶ直線がＰ０に対向する面と交わる点をＰ０’、Ｐ１とＰとを結ぶ直線がＰ１に対向する面と交わる点をＰ１’、Ｐ２とＰとを結ぶ直線がＰ２に対向する面と交わる点をＰ２’、Ｐ３とＰとを結ぶ直線がＰ３に対向する面と交わる点をＰ３’として、次のような計算を行う。
【００４７】
【数１】
2006203532.tif 000003
【００４８】
そして、補間処理部８０は、補間係数Ｙ０、Ｙ１、Ｙ２、Ｙ３と乗算係数Ｗｙ０、Ｗｙ１、Ｗｙ２、Ｗｙ３とからＹを、補間係数Ｍ０、Ｍ１、Ｍ２、Ｍ３と乗算係数Ｗｍ０、Ｗｍ１、Ｗｍ２、Ｗｍ３とからＭを、補間係数Ｃ０、Ｃ１、Ｃ２、Ｃ３と乗算係数Ｗｃ０、Ｗｃ１、Ｗｃ２、Ｗｃ３とからＣを、補間係数Ｋ０、Ｋ１、Ｋ２、Ｋ３と乗算係数Ｗｋ０、Ｗｋ１、Ｗｋ２、Ｗｋ３とからＫを、それぞれ次のようにして求める。
【００４９】
【数２】
2006203532.tif 000004
【００５０】
最後に、補間処理部８０は、この求めたＹ、Ｍ、Ｃ、Ｋを、画素出力部９０に出力する(ステップ２０７)。
これにより、画素出力部９０が実際の出力画素を出力する。
以上により、第１の実施の形態の動作が終了する。
【００５１】
このように、本実施の形態では、所定の色空間から異なる色空間への色変換を行うための第１変換テーブルの特定の部分を、格子点を疎に配置して第２変換テーブルとして記憶するようにした。これにより、処理の速度や精度を低下させることなく、高画質化の要求に応じた色変換を行えるようになる。特に、第２変換テーブル保持部６１をＡＳＩＣ内部に設け、第１変換テーブル保持部５０をＡＳＩＣ外部のメインメモリ等で実現すれば、コスト及び速度の面で多大な効果を得ることができる。
【００５２】
(第２の実施の形態)
本発明の第２の実施の形態における色変換装置の構成は、図１に示した第１の実施の形態における構成と略同様である。第２変換テーブル保持部６１に記憶された第２インデックステーブルの内容と、それに応じた制御部７０の動作が異なるのみである。
図１４は、本実施の形態における第２インデックステーブルの一例を示したものである。本実施の形態における第２インデックステーブルでは、第１の実施の形態における第２インデックステーブルにおける情報に加え、入力画像上の入力画素の位置情報が、その入力画素の画素値の変換に際して参照した第２ブロックテーブルのブロックインデックスに対し記憶される。
【００５３】
例えば、入力画像上の画素は、各ライン内では左から右への方向(主走査方向)で、ラインについては上から下への方向(副走査方向)で入力されるものとする。この場合、あるラインの入力画素の画素値と、その１つ上のラインの同じ主走査位置の画素の画素値とは、近似する可能性が高い。本実施の形態では、この傾向を利用して、第２変換テーブル保持部６１の第２インデックステーブルに主走査位置Ｘの情報を加え、第２変換テーブル保持部６１を参照する際の処理を効率化している。
【００５４】
具体的には、図１１のステップ１０２において、制御部７０は次のような処理を行う。
即ち、まず、変換対象の入力画素値の元となる入力画素の主走査位置Ｘを取得する。これは、入力画素値と共に画素入力部１０等を介して制御部７０に渡されているものとする。そして、図１４に示した第２インデックステーブルのエントリの中で、取得した主走査位置Ｘに最も近い主走査位置が記憶されたエントリを優先的に参照する。
【００５５】
ところで、図１４では、第２インデックステーブルの主走査位置が１つのエントリに複数個格納されている。勿論、主走査位置が１個だけの場合も考えられるが、通常は、同じブロックテーブルを参照することになる色は同じ画像中に何回も現れることが多いと考えられるからである。ところで、このように複数の主走査位置が格納されている場合の優先するエントリの決め方としては、取得した主走査位置Ｘと、第２インデックステーブルに格納された主走査位置(例えば、Ｘ００，Ｘ０１，…)のそれぞれとの差の平均値を算出し、その平均値が最も小さいエントリを優先的に参照する等の方法が考えられる。
【００５６】
このように、本実施の形態では、第１変換テーブルの特定の部分の格子点を疎に配置して得られた第２変換テーブルにおいて、入力画像上の画素の位置も管理するようにした。これにより、第１変換テーブルを用いるべきか第２変換テーブルを用いるべきかの判断を効率良く行うことができる。
【００５７】
尚、これまで述べた第１及び第２の実施の形態では、第１変換テーブル保持部５０に保持された第１変換テーブルの特定の部分について、格子点を疎に配置したものを第２変換テーブルとして第２変換テーブル保持部６１に保持していた。しかしながら、第２変換テーブル保持部６１の容量が許すならば、第１変換テーブルの全体について、格子点を疎に配置したものを第２変換テーブルとして保持するようにしてもよい。
また、第１変換テーブル保持部５０には、所定の色空間全体の情報を保持するのではなく、第２変換テーブルで対応できない部分の情報のみを保持するようにしてもよい。
また、以上の説明では、第１変換テーブルにおいて格子点を疎に配置したものを第２変換テーブルとしたが、種々の方法により第１変換テーブルの情報量を削減したものを第２変換テーブルとして捉えることもできる。
【００５８】
ところで、第１及び第２の実施の形態では、第２変換テーブル保持部６１に第２変換テーブルの一部として記憶された第２インデックステーブルを参照して、第１変換テーブルを用いるべきか第２変換テーブルを用いるべきかを判断するようにしたが、この判断方法としては、他にも種々のものが考えられる。
例えば、この第２インデックステーブルに相当する情報を制御部７０が保持し、それに基づいて判断するようにしてもよい。また、第１変換テーブルを参照するか第２変換テーブルを参照するかを外部から入力し、例えば、レジスタに記憶し、これに基づいて判断してもよい。或いは、入力画素値に基づいて、その画素値が線形の傾向を有する部分空間に存在するか非線形の傾向を有する部分空間に存在するかを計算によって求め、その結果により判断することも可能である。更には、入力画素値にタグを使用して「０」なら第１変換テーブルを、「１」なら第２変換テーブルを参照するように決定するといった方法も考えられる。
結局、第１変換テーブルを用いるか第２変換テーブルを用いるかは、第１変換テーブル保持部５０(大容量、低速動作、低コスト)と第２変換テーブル保持部６１(小容量、高速動作、高コスト)の性質のトレードオフであり、任意に決定するようにしてよい。
【００５９】
尚、本実施の形態では、一時記憶部６０は、第１変換テーブルの一度参照した情報をキャッシュするために設けたが、その一部を、第２変換テーブルの一度参照した情報をキャッシュするために割り当ててもよい。
また、第１変換テーブル保持部５０からの情報の読み込み速度が問題にならないのであれば、一時記憶部６０を設けない構成としてもよい。
【００６０】
更に、以上の説明では、色変換を行う際に参照する情報として、テーブル形式のものを想定したが、例えば、ニューラルネットワーク等、その他のいかなる情報に基づく色変換に対しても本発明は適用可能である。
更にまた、上記では、本実施の形態の中核部分をＬＳＩで実現することとしたが、同じ機能をコンピュータプログラムで実現することも可能である。即ち、コンピュータの図示しないＣＰＵが、インデックス変換部２０、デルタ変換部３０、制御部７０、補間処理部８０等の機能を実現するプログラムを、図示しない磁気ディスク装置からメインメモリに読み込むことによって各機能を実現するようにしてもよい。
【図面の簡単な説明】
【００６１】
【図１】本発明の実施の形態における色変換装置の構成を示したブロック図である。
【図２】本発明の実施の形態における色空間の分割について説明するための図である。
【図３】本発明の実施の形態における色空間の分割について説明するための図である。
【図４】本発明の実施の形態における色空間の分割について説明するための図である。
【図５】本発明の実施の形態におけるＲＧＢ色空間の各格子点を一次元に並べる方法の一例を示した図である。
【図６】本発明の実施の形態における第１変換テーブルの内容及びＲＧＢ色空間における格子点との対応の一例を示した図である。
【図７】本発明の実施の形態におけるＲＧＢ色空間から切り出されたブロックの各格子点を一次元に並べる方法の一例を示した図である。
【図８】本発明の実施の形態における第１インデックステーブルの内容の一例と、第１ブロックテーブルの内容及びＲＧＢ色空間における格子点との対応の一例とを示した図である。
【図９】本発明の実施の形態におけるＲＧＢ色空間内の特定のブロックの各格子点を一次元に並べる方法の一例を示した図である。
【図１０】本発明の実施の形態における第２インデックステーブルの内容の一例と、第２ブロックテーブルの内容及びＲＧＢ色空間における格子点との対応の一例とを示した図である。
【図１１】本発明の実施の形態における制御部の動作を示したフローチャートである。
【図１２】本発明の実施の形態における補間処理部の動作を示したフローチャートである。
【図１３】本発明の実施の形態における補間処理を具体的に説明するための図である。
【図１４】本発明の第２の実施の形態における第２インデックステーブルの内容の一例を示した図である。
【符号の説明】
【００６２】
１０…画素入力部、２０…インデックス変換部、３０…デルタ変換部、４０…入力バッファ、５０…第１変換テーブル保持部、６０…一時記憶部、６１…第２変換テーブル保持部、７０…制御部、８０…補間処理部、９０…画素出力部
【図１】
2006203532.tif 000005
【図２】
2006203532.tif 000006
【図３】
2006203532.tif 000007
【図４】
2006203532.tif 000008
【図５】
2006203532.tif 000009
【図６】
2006203532.tif 000010
【図７】
2006203532.tif 000011
【図８】
2006203532.tif 000012
【図９】
2006203532.tif 000013
【図１０】
2006203532.tif 000014
【図１１】
2006203532.tif 000015
【図１２】
2006203532.tif 000016
【図１３】
2006203532.tif 000017
【図１４】
2006203532.tif 000018