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