(57)【特許請求の範囲】
【請求項１】
ルックアップテーブルと、N（≧3の整数）次元の四面体補間または超四面体補間を用いて、画像を表すN次元のベクトル信号に対する出力信号を補間演算する色処理装置であって、
前記N次元のベクトル信号が有するN個の成分をそれぞれ上位ビットの信号と下位ビットの信号に分割する分割手段と、
前記ルックアップテーブルを構成する単位立体または単位超立体の頂点に対応する出力信号を、一つの単位立体または単位超立体の八頂点を単位として分割記憶するための複数のメモリと、
前記複数のメモリを制御して、前記N個の成分の上位ビットの信号の組み合せに対応する前記単位立体または単位超立体の頂点の出力信号を取得するメモリ制御手段と、
前記取得した出力信号と、前記N個の成分の下位ビットの信号に基づき、前記N次元のベクトル信号に対する出力信号を補間演算する演算手段とを有することを特徴とする色処理装置。
【請求項２】
前記メモリ制御手段は、任意にビット位置を設定する第一の設定手段と、
前記N個の成分の前記上位ビットの信号および前記下位ビットの信号から決まる、前記補間演算に必要な前記単位立体または単位超立体の頂点の座標を表すN個の成分から、任意に三つの成分を選択する選択手段と、
前記選択した三つの成分それぞれの前記ビット位置の1ビットを抽出し、前記抽出した3ビットを用いて前記八頂点単位の出力信号の格納位置を決定する決定手段とを有することを特徴とする請求項1に記載された色処理装置。
【請求項３】
前記メモリ制御手段は、さらに、前記選択した三つの成分以外の成分それぞれの前記ビット位置の1ビットを抽出し、前記抽出したN-3ビットを用いて前記八頂点単位の出力信号を格納するメモリを、前記複数のメモリから決定する手段を有することを特徴とする請求項2に記載された色処理装置。
【請求項４】
前記八頂点単位の出力信号のうち、前記補間演算に使用される出力信号は最大四つであることを特徴とする請求項1から請求項3の何れか一項に記載された色処理装置。
【請求項５】
前記メモリの1エントリは前記八頂点単位の出力信号で構成されることを特徴とする請求項1から請求項4の何れか一項に記載された色処理装置。
【請求項６】
前記メモリ制御手段は、前記複数のメモリの一つから、最大M個の出力信号を同時に取得可能であり、
前記複数のメモリそれぞれに記憶された出力信号は、前記単位立体または単位超立体の基準点からの距離がMの区間に分布した複数の頂点に対応する出力信号を含むことを特徴とする請求項1から請求項5の何れか一項に記載された色処理装置。
【請求項７】
Nは4以上の整数であることを特徴とする請求項1から請求項6の何れか一項に記載された色処理装置。
【請求項８】
前記ルックアップテーブルを構成する単位超立体の頂点のうち、前記単位超立体の基準点に対応する出力信号と、前記基準点から最遠の前記単位超立体の対角点に対応する出力信号は異なるメモリに記憶されることを特徴とする請求項7に記載された色処理装置。
【請求項９】
前記メモリ制御手段は、前記複数のメモリのうち、2N-3個のメモリを使用することを特徴とする請求項1から請求項8の何れか一項に記載された色処理装置。
【請求項１０】
N=6であることを特徴とする請求項1から請求項9の何れか一項に記載された色処理装置。
【請求項１１】
前記複数のメモリは、八個のメモリから構成されることを特徴とする請求項1から請求項9の何れか一項に記載された色処理装置。
【請求項１２】
さらに、前記複数のメモリに記憶させる頂点データを設定する第二の設定手段を有し、
前記第二の設定手段は、N=3の場合、前記八個のメモリのうち一個のメモリに三次元の単位立体の八頂点に対応する出力信号を記憶させ、N=4の場合、前記八個のメモリのうち二個のメモリに四次元の単位超立体の16頂点に対応する出力信号を二分割記憶させ、N=5の場合、前記八個のメモリのうち四個のメモリに五次元の単位超立体の32頂点に対応する出力信号を四分割記憶させ、N=6の場合、前記八個のメモリに六次元の単位超立体の64頂点に対応する出力信号を八分割記憶させる設定を行うことを特徴とする請求項11に記載された色処理装置。
【請求項１３】
さらに、前記下位ビットの信号の大小関係を判定した結果を示す順序信号を出力する判定手段と、
前記順序信号に従い、前記補間演算に必要な出力信号を読み出す座標を決定し、前記決定した座標値を示す参照座標信号を出力する参照座標選択手段とを有し、
前記メモリ制御手段は、前記参照座標信号に基づいて前記出力信号を取得することを特徴とする請求項1から請求項12の何れか一項に記載された色処理装置。
【請求項１４】
分割手段、メモリ制御手段、演算手段を有する色処理装置が、ルックアップテーブルと、N（≧3の整数）次元の四面体補間または超四面体補間を用いて、画像を表すN次元のベクトル信号に対する出力信号を補間演算する色処理方法であって、
前記分割手段が、前記N次元のベクトル信号が有するN個の成分をそれぞれ上位ビットの信号と下位ビットの信号に分割し、
前記メモリ制御手段が、前記ルックアップテーブルを構成する単位立体または単位超立体の頂点に対応する出力信号を、一つの単位立体または単位超立体の八頂点を単位として分割記憶するための複数のメモリを制御して、前記複数のメモリから前記N個の成分の上位ビットの信号の組み合せに対応する前記単位立体または単位超立体の頂点の出力信号を取得し、
前記演算手段が、前記取得した出力信号と、前記N個の成分の下位ビットの信号に基づき、前記N次元のベクトル信号に対する出力信号を補間演算することを特徴とする色処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分光的色再現技術に関する。
【背景技術】
【０００２】
ディジタルカメラで撮影した被写体の撮影画像をプリンタで印刷する場合、ディジタルカメラとプリンタはそれぞれ固有の色空間を有する。それ故、撮像画像を補正せずにプリンタに転送し印刷すると、印刷画像の色と、撮影画像の色または被写体の色が一致しないことが多い。
【０００３】
このようなデバイス間の色再現性の問題を解決するために、入力機器の色空間を出力機器の色空間に変換する処理（以下、色変換と呼ぶ）が必要になる。一般に、ディジタルカメラ、ビデオカムコーダ、スキャナなどの入力機器や、インクジェット、昇華型、電子写真などの方式を用いる各種プリンタなどの出力機器は、色再現性能を高めるために色変換機能を搭載する（特許文献1参照）。なお、それら色変換は、測色的色再現技術に含まれる。
【０００４】
しかし、従来の色変換は、照明光源の影響により、ある照明光源下において被写体の色と再現色が一致するとしても、照明光源が異なれば被写体の色と再現色が一致しないことが多い。
【０００５】
近年、カラーマネージメント分野において、照明光源などの環境光の影響を最小限に止め、より忠実な色を再現する技術として、分光的色再現技術が検討されている。分光的色再現技術は、色情報として照明光源に依存しない物体の分光反射率を扱い、たとえ環境光が変化しても、被写体の色と再現色を一致させることができる。
【０００６】
分光的色再現技術の一つに「マルチバンド入出力技術」がある（特許文献2参照）。この技術は、RGBやCMYなどの三原色に基づく色再現を行うのではなく、物体の四原色以上の色情報を取得して物体の分光反射率を取得する。分光反射率を得る際に、例えば可視光域を10nmごとにサンプリングすると、分光反射率は一波長（一色）に付き36次元のデータになり、その結果得られる分光画像のデータ量は膨大である。そこで、より少ないデータ量で分光画像を取得する方法が提案されている。
【０００７】
まず、分光画像に対して主成分分析を行い、分光反射率データの主成分ベクトルを算出する。そして、主成分ベクトルと主成分係数を用いて分光反射率を表し、主成分係数の値に応じた出力信号を求めて、主成分係数と出力信号を対応付けるルックアップテーブル(LUT)を作成する。このような工夫により、入力分光画像から求めた主成分係数をLUTに入力し、対応する出力信号値を算出する。
【０００８】
特許文献2は、前述した36次元の分光反射率データを、最終的に、六次元の主成分係数のデータに削減することができるとする。そして、六次元の超四面体補間を用いて、六次元LUT(6DLUT)から所望する出力信号を導き出す。
【０００９】
将来的に、ディジタルカメラや各種プリンタなどに組み込まれた機器も分光的色再現技術を搭載すると考えられる。特許文献2の発明はデータ量の削減に寄与する。しかし、特許文献2には、分光的色再現技術を組込機器に搭載する観点の検討がない。組込機器に、特許文献2が開示する六次元の超四面体補間を搭載する場合、以下の問題がある。
【００１０】
組込機器に搭載されたマイクロプロセッサ(CPU)は、ハイエンドのパーソナルコンピュータ(PC)やスーパコンピュータのような演算力を有するわけではない。従って、組込機器のCPUに六次元の超四面体補間を実行させれば、分光画像に応じた出力信号値の算出に多大の時間を要する。言い替えれば、ソフトウェア処理による六次元の超四面体補間の実現は、CPUの処理速度を考慮すると現実的ではない。
【００１１】
一方、六次元の超四面体補間をハードウェアで実現する場合、別の問題が存在する。例えば、六次元の各軸を八分割したテーブル値を6DLUTに保持すると、テーブル値の総数は86=262,144になる。また、各軸を16分割したテーブル値を保持すれば、テーブル値の総数は166=16,777,216になる。これら大量のテーブル値を、組込機器が搭載するメモリにどのように格納すべきか改めて検討が必要になる。また、この6DLUTの単位超立方体は26=64のテーブル値で構成され、それらテーブル値から六次元の超四面体補間に使用する七点のテーブル値を選択する。ただし、七点のテーブル値の組み合せは720通り存在し、組込機器に搭載するハードウェアで実現するには、それなりの工夫が必要になる。
【００１２】
他方、現在の組込機器には、測色的色再現技術としての色変換（三次元の四面体補間や四次元の超四面体補間）が搭載されている。新たに、六次元の超四面体補間を、なるべく小さなハードウェア資源で搭載することを考えると、既搭載の低次元の四面体補間用のハードウェア資源を共有することが望ましい。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開2006-157252号公報
【特許文献２】特開2009-038591号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
本発明は、高次元の超四面体補間を、できるだけ小さな回路規模で実行することを目的とする。
【００１５】
また、高次元の超四面体補間の実行と低次元の四面体補間の実行において資源を共有することを他の目的とする。
【課題を解決するための手段】
【００１６】
本発明にかかる色処理は、ルックアップテーブルと、N（≧3の整数）次元の四面体補間または超四面体補間を用いて、画像を表すN次元のベクトル信号に対する出力信号を補間演算する色処理であって、前記N次元のベクトル信号が有するN個の成分をそれぞれ上位ビットの信号と下位ビットの信号に分割し、前記ルックアップテーブルを構成する単位立体または単位超立体の頂点に対応する出力信号を、一つの単位立体または単位超立体の八頂点を単位として分割記憶するための複数のメモリを制御して、前記複数のメモリから前記N個の成分の上位ビットの信号の組み合せに対応する前記単位立体または単位超立体の頂点の出力信号を取得し、前記取得した出力信号と、前記N個の成分の下位ビットの信号に基づき、前記N次元のベクトル信号に対する出力信号を補間演算することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、高次元の超四面体補間を、できるだけ小さな回路規模で実行することができる。
【００１８】
また、高次元の超四面体補間の実行と低次元の四面体補間の実行において資源を共有することができる。
【図面の簡単な説明】
【００１９】
【図１】三原色の入力ディジタル信号に対する、3DLUTと三次元の補間演算を用いるデータ変換を説明するブロック図。
【図２】3DLUTを用いる四面体補間を説明する図。
【図３】六次元空間を例として六次元の超四面体補間における稜線の選択方法を説明する図。
【図４】実施例の画像処理装置の構成例を説明するブロック図。
【図５】四面体補間部の構成例を説明するブロック図。
【図６】多次元LUT部の構成例を説明するブロック図。
【図７】多次元LUTの頂点データを重複することなく均等に八分割して記憶する方法を説明する図。
【図８】本実施例の八分割法による、六次元の超四面体補間を行うハードウェアを実現するための頂点データの形式を説明する図。
【図９】リードアドレス信号の生成方法を説明する図。
【図１０】頂点データ読出部によるリードアドレス信号を生成する手順を説明するフローチャート。
【図１１】低次元の四面体補間において、多次元LUTの頂点データを重複することなく均等に分割記憶する方法を説明する図。
【図１２】低次元の四面体補間におけるリードアドレス信号の生成方法を説明する図。
【発明を実施するための形態】
【００２０】
以下、本発明にかかる実施例の色処理を図面を参照して詳細に説明する。
【００２１】
［概要］
まず、分光的色再現技術を実現する方法として、出力機器の色空間へのデータ変換結果をルックアップテーブル(LUT)としてメモリに予め記憶する。そして、入力されるディジタル信号に対して、LUTを用いたデータ変換（色変換）を行い、変換結果のデータを出力する方法を説明する。LUTを用いたデータ変換においては、LUTを記憶するメモリ量を削減するために補間演算を併用する。三原色の入力ディジタル信号（三次元ベクトル信号）に対しては、三次元の補間演算を用いてデータ変換が実現される。四次元の入力ディジタル信号（四次元ベクトル信号）に対しては、四次元の補間演算を用いてデータ変換が実現される。六次元の主成分係数で表現されたディジタル信号（六次元ベクトル信号）に対しては、六次元の補間演算を用いてデータ変換が実現される。つまり、N（≧3の整数）次元のディジタル信号（N次元のベクトル信号）に対しては、N次元の補間演算を用いてデータ変換が実現される。
【００２２】
［三次元のデータ変換］
図1のブロック図により三原色の入力ディジタル信号に対する、三次元LUT(3DLUT)と三次元の補間演算を用いるデータ変換を説明する。
【００２３】
データ分割部710は、入力ディジタル信号RGBを上位ビットのRHGHBHと下位ビットのRLGLBLに分離する。3DLUT720は、上位ビットRHGHBHに対応する、補間演算に必要な単位立体の複数の頂点の出力信号（以下、頂点データまたは参照値）を出力する。補間演算部730は、頂点データと下位ビットRLGLBLを入力して、下位ビットを重み係数Wとして、重み係数Wと頂点データを積和演算して補間値Xを計算する。
【００２４】
図2により3DLUTを用いる四面体補間を説明する。図2(a)に示す3DLUTは、三次元の色空間（RGB空間）の各軸を所定数で分割した単位立体740によって構成され、単位立体740の頂点における色変換後の色データ（出力信号）を頂点データとして記憶する。つまり、ディジタル信号RGBの上位ビットRHGHBHを色空間の座標として補間演算に使用する単位立体740を選択し、選択した単位立体740の頂点データを補間演算に使用する。
【００２５】
図2(b)は単位立体740から切り出し可能な四面体を示し、六つの四面体が切り出し可能である。以下、六つの四面体をそれぞれType 0からType 5と称する。P0(RH, GH, BH)の単位立体が選択され、下位ビットRLGLBLが表す座標が単位立体内のどの四面体に属するかにより、以下の式を用いて補間演算を行う。
if (RL＞GL＞BL)
Type 0；
X = P0 + (P1-P0)×RL + (P3-P0)×GL + (P7-P0)×BL；      …(1)
if (RL＞BL＞GL)
Type 1；
X = P0 + (P1-P0)×RL + (P7-P0)×GL + (P5-P0)×BL；      …(2)
if (GL＞RL＞BL)
Type 2；
X = P0 + (P3-P0)×RL + (P2-P0)×GL + (P7-P0)×BL；      …(3)
if (GL＞BL＞RL)
Type 3；
X = P0 + (P7-P0)×RL + (P2-P0)×GL + (P6-P0)×BL；      …(4)
if (BL＞RL＞GL)
Type 4；
X = P0 + (P5-P0)×RL + (P7-P0)×GL + (P4-P0)×BL；      …(5)
if (BL＞GL＞RL)
Type 5；
X = P0 + (P7-P0)×RL + (P6-P0)×GL + (P4-P0)×BL；      …(6)
ここで、P0〜P7は図2(b)に示す単位立体の頂点データ。
【００２６】
［多次元の超四面体補間法］
以下では、三次元の四面体補間を多次元へ拡張した多次元の超四面体補間を説明する。
【００２７】
三次元空間を拡張してN次元空間にする場合、図2(a)(b)に示す単位立体は、多次元の単位超立体（N次元超立体もしくは超六面体）に多次元化され、三次元の四面体補間で使用する四面体は超四面体と呼ばれる(N+1)面体に多次元化される。
【００２８】
超四面体は、単位超立体の基準点と対角点とを結ぶ線分と、超立体の互いに直交し、かつ、連結しているN本の稜線によって形成される。そして、一つの単位超立体をN!個の超四面体に分割することができる。単位超立体から超四面体を切り出す過程で選択したN本の稜線は、互いに垂直であり、かつ、N次元直交座標の各軸にそれぞれ平行する。このため、各軸方向の出力変移量の線形和を基準点出力値に加算した値が多次元の補間演算の出力である。従って、選択された稜線の両端点における頂点データの差分値に、各稜線上の基準点から各軸に対応する成分の値まで距離の比を乗算して、乗算結果を基準点の頂点データに加算することで補間演算を行うことができる。
【００２９】
図3により六次元空間(X0, X1, X2, X3, X4, X5)を例として六次元の超四面体補間における稜線の選択方法を説明する。図3(a)は座標系を示し、図3(b)〜(g)は以下の条件における稜線の選択方法を示す。
条件
入力座標：(X0i+ΔX0, X1j+ΔX1, X2k+ΔX2, X3l+ΔX3, X4m+ΔX4, X5n+ΔX5)
基準座標：(X0i, X1j, X2k, X3l, X4m, X5n)
入力座標と基準座標の差分：(ΔX0, ΔX1, ΔX2, ΔX3, ΔX4, ΔX5)
差分の大小関係：ΔX0＞ΔX1＞ΔX2＞ΔX3＞ΔX4＞ΔX5
【００３０】
まず、図3(b)に示すように、入力座標と基準座標の差分が最大のΔX0に対応するX0軸と平行、かつ、基準点を始点にもつ稜線、つまり以下の始点と終点をもつ稜線を選択する。
始点：(X0i, X1j, X2k, X3l, X4m, X5n)
終点：(X0i+1, X1j, X2k, X3l, X4m, X5n)
【００３１】
次に、図3(c)に示すように、入力座標と基準点座標の差分が二番目に大きいΔX1に対応するX1軸と平行、かつ、図3(b)に示す稜線の終点を始点にもつ稜線、つまり以下の始点と終点をもつ稜線を選択する。
始点：(X0i+1, X1j, X2k, X3l, X4m, X5n)
終点：(X0i+1, X1j+1, X2k, X3l, X4m, X5n)
【００３２】
同様に、図3(d)に示すように、入力座標と基準点座標の差分が三番目に大きいΔX2に対応するX2軸と平行な、以下の始点と終点をもつ稜線を選択する。
始点：(X0i+1, X1j+1, X2k, X3l, X4m, X5n)
終点：(X0i+1, X1j+1, X2k+1, X3l, X4m, X5n)
【００３３】
同様に、図3(e)に示すように、入力座標と基準点座標の差分が四番目に大きいΔX3に対応するX3軸と平行な、以下の始点と終点をもつ稜線を選択する。
始点：(X0i+1, X1j+1, X2k+1, X3l, X4m, X5n)
終点：(X0i+1, X1j+1, X2k+1, X3l+1, X4m, X5n)
【００３４】
同様に、図3(f)に示すように、入力座標と基準点座標の差分が五番目に大きいΔX4に対応するX4軸と平行な、以下の始点と終点をもつ稜線を選択する。
始点：(X0i+1, X1j+1, X2k+1, X3l+1, X4m, X5n)
終点：(X0i+1, X1j+1, X2k+1, X3l+1, X4m+1, X5n)
【００３５】
最後に、図3(g)に示すように、入力座標と基準点座標の差分が最小のΔX5に対応するX5軸と平行な、以下の始点と終点をもつ稜線を選択する。
始点：(X0i+1, X1j+1, X2k+1, X3l+1, X4m+1, X5n)
終点：(X0i+1, X1j+1, X2k+1, X3l+1, X4m+1, X5n+1)
【００３６】
最終的に、以下の七頂点が選択されて、超四面体（七面体）が決定される。
基準点(X0i, X1j, X2k, X3l, X4m, X5n)
(X0i+1, X1j, X2k, X3l, X4m, X5n)
(X0i+1, X1j+1, X2k, X3l, X4m, X5n)
(X0i+1, X1j+1, X2k+1, X3l, X4m, X5n)
(X0i+1, X1j+1, X2k+1, X3l+1, X4m, X5n)
(X0i+1, X1j+1, X2k+1, X3l+1, X4m+1, X5n)
対角点(X0i+1, X1j+1, X2k+1, X3l+1, X4m+1, X5n+1)
【００３７】
このとき、基準点から最遠の点を対角点と呼び、基準点と対角点を結ぶ線分を対角軸と呼ぶことにする。
【００３８】
多次元の超四面体補間は、基準点と対角点が、入力座標と基準点座標の差分(ΔX0, ΔX1, ΔX2, ΔX3, ΔX4, ΔX5)の大小関係にかかわらず、必ず、超四面体の頂点として選択されるという特徴をもつ。そこで、単位超立体から入力座標に対応する超四面体を選択する工程は、基準点をスタート、対角点をゴール、各稜線をスタートからゴールまでの経路と見立てれば、基準点から対角点までの経路を選択する経路選択問題と考えることができる。
【００３９】
この場合、経路の採り得る「場合の数」は6!=720通りになり、六次元の補間演算においては単位超立体を720個の超四面体に分割することができる。同様に、N次元の補間演算の場合、単位超立体をN!個の超四面体に分割することができる。
【００４０】
次に、N次元の補間演算を説明する。N次元の直交座標に固定された空間(X0, X1, …, Xn-2, Xn-1)上の座標(X0i, X1j, …, Xn-2a, Xn-1b)の頂点データをP＜i, j, …, a, b＞とする。また、ある入力座標によって選択された超立体の基準点の座標を(X0i, X1j, …, Xn-2a, Xn-1b)とし、入力座標と基準点座標の差を(ΔX0, ΔX1, …, ΔXn-2, ΔXn-1)とする。そして、ΔX0＞ΔX1＞ … ＞ΔXn-2＞ΔXn-1の関係が成り立つ場合、下式を用いて補間値Xを求めることができる。
X = P＜i, j, …, a, b＞
+ (P＜i+1, j, …, a, b＞ - P＜i, j, …, a, b＞)×ΔX0
+ (P＜i+1, j+1, …, a, b＞ - P＜i+1, j, …, a, b＞)×ΔX1
+ …
+ (P＜i+1, j+1, …, a+1, b＞ - P＜i+1, j+1, …, a, b＞)×ΔXn-2
+ (P＜i+1, j+1, …, a+1, b+1＞ - P＜i+1, j+1, …, a+1, b＞)×ΔXn-1      …(7)
【００４１】
［装置の構成］
図4のブロック図により実施例の画像処理装置の構成例を説明する。
【００４２】
制御部100は、CPU102のほかに、固定データやプログラムを格納するROM104、CPU102がワークメモリに使用するRAM106、ハードディスクドライブなどの記憶部108などを備える。CPU102は、ROM104や記憶部108に格納されたプログラムを実行して、制御バス103を介して後述する各構成を制御する。また、記憶部108は、色処理装置が使用するパラメータ、プログラム、補正データなどを記憶するハードディスクドライブなどの記憶媒体である。
【００４３】
画像入力部110は、図示しないレンズ、イメージセンサおよびアナログ-ディジタル変換部などを有するディジタルカメラやスキャナなどの受光部である。画像入力部110は、レンズを介しイメージセンサに結像された画像情報をRGBアナログ電気信号に変換し、RGBの色ごとに補正を施した後、アナログ電気信号をアナログ-ディジタル変換してRGBディジタル画像信号を出力する。なお、一組のディジタル画像信号は画像の一画素を表現する。
【００４４】
制御部100のCPU102は、書込用のDMAC (direct memory access controller)であるWDMAC112を制御して、画像入力部110が出力する画像データを、システムバス190とDRAMコントローラ192を介してDRAM195に格納する。なお、DRAM195に格納済みの画像データを一画素ずつ演算処理して、前述した主成分ベクトルや主成分係数などの別のデータに変換し、再び、画像データとしてDRAM195に格納し直してもよい。
【００４５】
次に、CPU102は、読出用のRDMAC120を制御して、DRAM195に格納された画像データを読み出して画像処理部130に入力する。画像処理部130は、入力された画像データに、画像処理器(1)132や画像処理器(P)134などの画像処理器により各種画像処理を施す。四面体補間器150も、これらの複数の画像処理器の一つである。そして、CPU102は、WDMAC128を制御して、複数の画像処理器によって画像処理された画像データを、再び、DRAM195に格納する。
【００４６】
次に、CPU102は、RDMAC142を制御して、DRAM195に格納された画像処理済みの画像データを読み出して画像印刷部140へ出力する。画像印刷部140は、例えば、インクジェットヘッドやサーマルヘッドなどを使用したラスタプロッタなどの印刷出力部を備え、記録紙上に入力された画像データに基づく画像を記録する。
【００４７】
なお、WDMAC112、128は書込用のDMAC (direct memory access controller)であり、RDMAC120、142は読出用のDMACである。また、画像入力部110と画像印刷部140は、色処理装置の外部に存在してもよい。その場合、色処理装置と画像入力部110、色処理装置と画像印刷部140はUSBやIEEE1394などのシリアルバスインタフェイスを介して通信を行い画像データの入出力を行う。
【００４８】
四面体補間器150は、大きく分けて、演算処理を行う四面体補間部152と多次元LUT部154から構成される。多次元LUT部154は、八基のキャッシュ部[0]〜[7]を含み、システムバス190との接点156を介してDRAMコントローラ192とDRAM195に接続される。キャッシュ部[0]〜[7]は、DRAM195からデータを直接読み出して、多次元LUTの頂点データの設定/更新などを行う。
【００４９】
●四面体補間部
図5のブロック図により四面体補間部152の構成例を説明する。
【００５０】
四面体補間部152は、六つの成分を有する画像データdata_in[0]〜[5]を入力する。データ分割部210は、画像データをそれぞれ上位ビット信号intg[0]〜[5]と下位ビット信号frac[0]〜[5]に分割する。一般に、上位ビット信号intg[0]〜[5]は、補間演算に使用する単位超立体の数に応じてそのビット深さを決定する。例えば、六次元空間のある軸について単位超立体が(2gr-1)個ある場合、その軸に対応する上位ビット信号intg[0]〜[5]のビット深さはgrビットである。また、下位ビット信号frac[0]〜[5]は、画像データdata_in[0]〜[5]のビット深さから上位ビット信号intg[0]〜[5]のビット深さ差し引いた、残りのビット深さで表現される。
【００５１】
順序判定部230は、入力された下位ビット信号frac[0]〜[5]の大小関係を判定し、判定結果を示す順序信号order[0]〜[5]を出力する。順序信号order[0]〜[5]は、単位超立体から補間演算に使用する超四面体（七面体）の稜線を選択する手順に従い予め定められた6!通りの稜線選択パターンを示す。
【００５２】
参照座標選択部220は、順序信号order[0]〜[5]に従い、補間演算に必要な七つの頂点データを多次元LUT部154から読み出す座標を決定し、決定した座標値を七つの参照座標信号coord[0]〜[6]として出力する。
【００５３】
重み係数算出部240は、下位ビット信号frac[0]〜[5]を基に、補間演算用の七つの重み係数信号weight[0]〜[6]を出力する。なお、重み係数信号weight[0]〜[6]は、例えば、予めROM104に格納された対応表（テーブル）から、下位ビット信号frac[0]〜[5]に対応する信号を読み出せばよい。また、予め定められた計算式により、下位ビット信号frac[0]〜[5]から重み係数信号weight[0]〜[6]を算出してもよい。
【００５４】
頂点データ読出部250は、参照座標信号coord[0]〜[6]に基づき多次元LUT部154をメモリ制御して、多次元LUT部154から七つの頂点データを読み出す。そして、読み出した頂点データを頂点データ信号lut_val[0]〜[6]として出力する。
【００５５】
頂点データ読出部250は、多次元LUT部154に八つのリードアドレス信号read-addr[0]〜[7]を送信して、多次元LUT部154から八つのリードデータ信号read_data[0]〜[7]を受信する。これらリードアドレス信号read_addr[0]〜[7]とリードデータ信号read_data[0]〜[7]のうち最大七組が六次元の超四面体補間に必要な頂点データである。つまり、最低一組は不要であり、頂点データ読出部250は、リードデータ信号read_data[0]〜[7]を受信した後、不要な頂点データを破棄してもよい。また、リードアドレス信号read_addr[0]〜[7]に有効/無効を表す1ビットのフラグを設け、リードアドレス信号read_addr[0]〜[7]のうち必要なものを有効化し、残りを無効化して不要な頂点データの読み出しを除いてもよい。例えば、入力座標と基準点座標の差分(ΔX0, ΔX1, …, ΔXn-2, ΔXn-1)の何れかが「0」の場合、差分0に対応する頂点データは補間結果Xに影響しないため、当該頂点データを読み出す必要はない。
【００５６】
補間演算部270は、頂点データ信号lut_val[0]〜[6]と重み係数信号weight[0]〜[6]を入力して、式(7)により補間演算を行い、出力信号data_out[0]〜[5]を出力する。なお、式(1)の括弧を展開して、頂点データPごとに演算を括れば、その係数は七つになり、それらを重み係数信号weight[0]〜[6]としている。
【００５７】
また、頂点データの一つ（例えばlut_val[0]）が、後述するように、複数成分（複数色）の頂点データで構成される場合、補間演算結果はその成分数（色数）だけ生成される。つまり、成分数（色数）分の出力信号data_outが出力される。なお、図5に示す構成は、頂点データが六成分（六色）で構成される場合に対応し、六成分の画像データが出力されるが、成分数（色数）は「6」に制限されるわけではない。つまり、三色以上であれば、四色、八色、12色など、N個の成分を有する画像データに対応可能である。
【００５８】
●多次元LUT部
図6のブロック図により多次元LUT部154の構成例を説明する。
【００５９】
多次元LUT部154は、八基のキャッシュ部300〜307で構成される。キャッシュ部300〜307は、同一の構成を有するので、キャッシュ部300の詳細な構成例を示し、他は省略する。四面体補間に使用する多次元LUTは本来一つであるが、補間に必要な頂点データをLUTから並列に読み出す必要があるため、多次元LUTの頂点データを複数のメモリに分割して記憶する。このとき、複数のメモリそれぞれを「サブメモリ」と呼ぶが、一つの「サブメモリ」が一つのキャッシュ部に相当する。勿論、サブメモリは、キャッシュではなく、SRAMなどのメモリ素子で実現することも可能である。多次元LUTを構成する頂点データを複数のサブメモリに分割して格納する方法は後述するが、例えば、多次元LUTの頂点データをサブメモリに均等分割して格納し、かつ、サブメモリ数をできるだけ少なくするような構成にする。
【００６０】
四面体補間部152は、キャッシュ部300〜307を介してDRAM195からデータを読み出す場合、DRAM195上のデータの格納先をリードアドレス信号read_addr[0]〜[7]としてキャッシュ判定部320に入力する。リードアドレス信号は、以下の信号で構成される。
フラグ、
アドレス信号、
インデックス信号、
転送量信号。
【００６１】
前述したように、フラグが無効を示す場合は、当該リードアドレス信号を破棄して構わない。また、インデックス信号は、詳細は後述するが、頂点データの格納位置を示す信号である。キャッシュ判定部320は、アドレス信号に基づきキャッシュのヒットまたはミスヒットを判定し、以下の判定結果を追加したリードアドレス信号をアクセス調停部330に出力する。
キャッシュデータの格納先であるタグID信号、
キャッシュ判定結果であるミスヒットフラグ信号。
【００６２】
アクセス調停部330は、ミスヒットフラグ信号がミスヒットを表す場合、送信FIFO350を介して、リフィルアドレス信号をシステムバス190へ出力する。リフィルアドレス信号352は「アドレス信号」と「転送量信号」で構成される。そして「インデックス信号」「タグID信号」「ミスヒットフラグ信号」を待ち合せFIFO340へ書き込む。また、アクセス調停部330は、ミスヒットフラグ信号がヒットを表す場合はリフィルアドレス信号352を出力しない。
【００６３】
ミスヒットフラグ信号がミスヒットを表す場合、リフィルアドレス信号に従い、転送量信号に応じたキャッシュデータがDRAM195から読み出され、リフィルデータ信号として受信FIFO370に格納される。
【００６４】
キャッシュメモリ調停部380は、受信FIFO370、待ち合せFIFO340の格納領域にデータがあるか否かを評価し、待ち合せFIFO340にデータがある場合は待ち合せFIFO340から処理すべきデータを取り出す。
【００６５】
キャッシュメモリ調停部380は、取り出したデータのミスヒットフラグ信号がミスヒットを表す場合は受信FIFO370からリフィルデータ信号を取り出す。そして、取り出したデータのタグID信号が示すキャッシュメモリ390の格納先に、取り出したデータの転送量信号が示すデータを書き込む。なお、受信FIFO370が空の場合、キャッシュメモリ調停部380は待機する。そして、リフィルデータ信号のうち、インデックス信号が指す頂点データのみを取り出して、当該頂点データをリードデータ信号read_data[0]〜[7]として四面体補間部152に出力する。
【００６６】
また、キャッシュメモリ調停部380は、取り出したデータのミスヒットフラグ信号がヒットを表す場合は、既にキャッシュメモリ390に頂点データが存在する。そこで、取り出したデータのタグID信号が示す格納先にあるキャッシュデータのうち、取り出したデータのインデックス信号が指す頂点データのみをキャッシュメモリ390から読み出す。そして、当該頂点データをリードデータ信号read_data[0]〜[7]として四面体補間部152に出力する。
【００６７】
●頂点データの分割記憶方法
図7により多次元LUTの頂点データを重複することなく均等に八分割して記憶する方法を説明する。
【００６８】
前述したように、図3(b)〜(g)は、六次元の超四面体の稜線と頂点の選択の一例を示し、基準点から対角点までの単位超立体の各頂点を、基準点座標との差分(ΔX0, ΔX1, …, ΔXn-2, ΔXn-1)が大きい順に選択する。図7は、基準点から選択された各頂点までの経路の距離（以下、六次元マンハッタン距離）Dmで単位超立体を構成する26点の頂点を分類した結果を示す。
【００６９】
六次元マンハッタン距離Dmは0から6の整数になり、Dm=0に位置する頂点データは、基準点の1パターンのみである。順に、Dm=1の頂点データは6パターン、Dm=2の頂点データは15パターン、Dm=3の頂点データは20パターン、Dm=4の頂点データは15パターン、Dm=5の頂点データは6パターンになる。最後に、Dm=6に位置する頂点データは、対角点の1パターンのみになる。すべてのパターンを合算すると当然、26パターンになり、単位超立体の頂点の総数に一致する。
【００７０】
本実施例においては、図7にMem[0]〜[7]によって示す八群の頂点データ組を形成する。Mem[0]〜[7]の頂点データ組はそれぞれ八頂点単位の頂点データで構成される。そして、どの頂点データ組の八頂点単位の頂点データも、マンハッタン距離が4の区間に分布する。例えばMem[0]の頂点データ組はDm=0〜3の区間にあり、Mem[1]の頂点データ組はDm=1〜4の区間にある。
【００７１】
単位超立体から補間演算に使用する超四面体を選択する手順は、前述したように、基準点からどの頂点を通って対角点に到達するかという経路選択問題と考えられるため、マンハッタン距離Dmが同一の頂点データ群からは常に一つの頂点データが選択される。各頂点データ組は、常に、マンハッタン距離が4の区間に「一個→三個→三個→一個」の分布を示す。それ故、一つのキャッシュ部から最大四つ頂点データが同時に参照されることになるが、どのような頂点データの組み合せになろうとも、最大で四つと規定することができる。従って、キャッシュ部のキャッシュメモリ390の1エントリ（キャッシュライン）には各頂点データ群の八つの頂点データを格納する。そして、インデックス信号に応じて最大四つの頂点データを選択して、リードデータ信号read-data[0]〜[7]の一つにすればよい。
【００７２】
つまり、本実施例のように八分割法を用いることにより、多次元LUTのキャッシュ部それぞれは、常に、タグID信号によって選択された八つの頂点データから、インデックス信号に応じて零から四つの頂点データを抽出可能な構成であればよい。このようにして、必要なハードウェア資源を限定して、六次元の超四面体補間のハードウェア化が可能になる。
【００７３】
●頂点データの形式
図8により本実施例の八分割法による、六次元の超四面体補間を行うハードウェアを実現するための頂点データの形式を説明する。
【００７４】
図8(a)は、一つの頂点データに付き六成分（六色）のデータを含む形式を示す。各成分が10ビットのデータであれば、一つの頂点データは余剰ビットを含んで64ビット長になる。そして、八頂点分のデータが一回のリフィルデータになる。リフィルデータは、システムバス190を介して転送する場合、システムバス190のバス幅に応じて分割され転送される。例えば、バス幅が64ビットの場合、リフィルデータ信号は64ビット×8に分割される。そして、リフィルデータ信号をキャッシュメモリ390に格納する際に、1エントリ長である512ビット長に連結する。なお、図8(a)は一例で、八頂点データずつ一組のリフィルデータにすればよく、一つの頂点データの成分数（色数）やビット長は任意でよい。例えば、図8(b)は一つの頂点データが四成分（四色）、64ビット長の例を示し、図8(c)は一つの頂点データが三成分（三色）、32ビット長の例を示している。
【００７５】
●リードアドレス信号の生成
図9によりリードアドレス信号の生成方法を説明する。
【００７６】
頂点データ読出部250は、参照座標選択部220が出力する参照座標信号coord[0]〜[6]に基づきリードアドレス信号read_addr[0]〜[7]を生成する。参照座標信号coord[0]〜[6]はそれぞれは、参照すべき頂点データの多次元LUTの座標を示す。つまり、参照座標信号coord[0]〜[6]はそれぞれ六次元の座標信号(coord_x0, coord_x1, coord_x2, coord_x3, coord_x4, coord_x5)である。
【００７７】
図9(a)は、多次元LUTが各軸16点の頂点データをもち、六次元の座標信号の各成分coord_x0〜coord_x5が4ビット長の例を示している。なお、多次元LUTの頂点データの総数は166になる。頂点データ読出部250は、アドレス信号address、キャッシュ部の番号を示すバンク信号bank、キャッシュデータの1エントリの頂点データの番号を示すインデックス信号indexで構成されるリードアドレス信号を生成する。
【００７８】
図10のフローチャートにより頂点データ読出部250によるリードアドレス信号を生成する手順を説明する。
【００７９】
頂点データ読出部250は、六次元の座標信号の各成分に対し、任意にビット位置を設定する（ビット位置の設定、S101）。続いて、六次元の座標信号の各成分から、任意に三つ成分を選択する（成分の選択、S102）。そして、選択した三つの成分から、設定したビット位置の1ビットを抽出し（ビットの抽出、S103）、それらビットを連結して3ビットのインデックス信号を生成する（インデックス信号の生成、S104）。
【００８０】
次に、頂点データ読出部250は、六次元の座標信号の各成分の、ステップS102で選択した三つの成分以外の成分から、設定したビット位置の1ビットを抽出する（ビットの抽出、S105）。そして、それらビットを連結して3ビットのバンク信号を生成する（バンク信号の生成、S106）。
【００８１】
次に、頂点データ読出部250は、六次元の座標信号の各成分から上記のビット抽出後の残るビットを所定順に一つに連結してアドレス信号を生成する（アドレス信号の生成、S107）。
【００８２】
この手順により、参照座標信号coord[0]〜[6]に対応する七組のリードアドレス信号（インデックス信号、バンク信号、アドレス信号を含む）が得られる。頂点データの分割記憶方法において説明したように、リードデータ信号の一つには最大四つの頂点データが存在し得る。そこで、頂点データ読出部250は、生成した七組のリードアドレス信号のうち、バンク信号が同一（アドレス信号も同一）のインデックス信号を最大四つ集めて一つのリードデータ信号を生成する(S108)。そして、バンク信号に対応するキャッシュ部に、アドレス信号と、このインデックス信号をリードデータ信号read_addr[0]〜[7]として出力する。
【００８３】
図9(b)は、多次元LUTの各軸が64、4、8、16、16、32点の頂点データをもつケースを示している。この場合、六次元の座標信号の各成分は6ビット、2ビット、3ビット、16ビット、16ビット、5ビット長になる。なお、多次元LUTの頂点データの総数は64×4×8×16×16×32点になる。このような場合も、リードアドレス信号（アドレス信号、バンク信号、インデックス信号を含む）の生成手順は、多次元LUTが各軸16点の頂点データをもつ場合と同じである。
【００８４】
このように、六次元の超四面体補間において、六次元LUTを重複することなく八つのキャッシュに均等に分割記憶することができ、補間演算に必要な七つの頂点データの取得を比較的小さな回路規模のハードウェア資源で行うことが可能になる。そこ結果、補間演算を比較的小さな回路規模のハードウェア資源で高速に行うことができる。
【００８５】
［低次元の四面体補間］
以下では、上述した構成を使用して、三次元や四次元など低次元の四面体補間が可能であることを説明する。
【００８６】
●四面体補間部
前述したように、三次元の四面体補間は多次元に拡張可能である。逆に、六次元の超四面体補間用の装置を低次元の補間装置に縮退可能と言える。例えば、四次元の補間装置に縮退する場合、図5に示す構成において、入力信号としてdata_in[0]〜[3]を使用し、data_in[4][5]は常に「0」とする。また、intg[4][5]、frac[4][5]、order[4][5]、weight[5][6]、coord[5][6]は「0」として使用しない信号にする。
【００８７】
同様に、三次元の補間装置に縮退するには、図5に示す構成において、入力信号としてdata_in[0]〜[2]を使用し、data_in[3]〜[5]は常に「0」とする。また、intg[3]〜[5]、frac[3]〜[5]、order[3]〜[5]、weight[4]〜[6]、coord[4]〜[6]は「0」として使用しない信号にする。
【００８８】
●多次元LUT部
前述したように、多次元LUT部154は八基のキャッシュ部から構成されている。低次元に縮退するには、これらキャッシュ部の一部を使用し、残りを使用しなければよい。後述する頂点データの分割記憶方法により、四次元の超四面体補間を実現するには八基のキャッシュ部のうち任意の二基を使用し、残りは使用しない。また、三次元の四面体補間を実現するには八基のキャッシュ部のうち任意の一基を使用し、残りは使用しない。このように、使用するキャッシュ部の数を変更することで、容易に、低次元の補間装置を実現することができる。勿論、必要最低限のキャッシュ部を機能させ、残りのキャッシュ部を停止することで装置全体の消費電力を低減することができる。
【００８９】
●頂点データの分割記憶方法
図11により多次元LUTの頂点データを重複することなく均等に分割記憶する方法を説明する。
【００９０】
図11(b)は、四次元の超四面体補間用に多次元LUTの頂点データを分割記憶する方法を示し、Mem[0]とMem[1]に分割記憶する。なお、図11(b)が示す分割記憶は二つのキャッシュ部を使用すればよいことを示し、キャッシュ部の組み合せはMem[0]とMem[1]に限らず、例えばMem[4]とMem[7]でもよい。図11(c)は、三次元の四面体補間用の場合を示し、この場合、一つのキャッシュ部（例えばMem[0]）だけを使用すればよく、言い換えれば、多次元LUTの頂点データの分割記憶は不要である。
【００９１】
●リードアドレス信号の生成
図12によりリードアドレス信号の生成方法を説明する。
【００９２】
図12(a)は四次元の超四面体補間用のリードアドレス信号の生成方法を示し、図12(b)は三次元の四面体補間用のリードアドレス信号の生成方法を示す。リードアドレス信号は、六次元の超四面体補間の場合と基本的に同様の手順で生成するが、使用する座標信号の成分数は六次元の場合が六つに対し、四次元の場合は四つ、三次元の場合は三つで異なる。低次元の四面体補間を実現するに当り、キャッシュ部の機能を同一にするため、バンク信号の算出よりもインデックス信号の算出を優先する。つまり、インデックス信号は常に3ビット長であるが、バンク信号は四面体補間の次元数に応じたN-3ビットに決まり、低次元では短く、高次元では長くなる。
【００９３】
このように、六次元の超四面体補間用の装置の一部を使用して、三次元や四次元などの低次元の四面体補間用の装置を実現することができる。その場合、必要最低限の機能を使用することで、次元数に応じて四面体補間用の装置の消費電力を低減することができる。
【００９４】
［変形例］
図9(c)は五次元の四面体補間用のリードアドレス信号の生成方法を示し、図11(a)は五次元の超四面体補間用に多次元LUTの頂点データを分割記憶する方法を示す。つまり、五次元の四面体補間についても、同様に、最大八基のキャッシュ部に対応した、アドレス、インデックスの組み合せで頂点データを分割記憶することができる。なお、八基のキャッシュ部のうち任意の四基を使用すればよい。
【００９５】
このように、上述した色処理装置は、多次元LUT部154の構成を変更することなく、三次元から六次元の四面体補間に対応することができる。また、搭載するキャッシュ部を増加することでスケーラブルに多次元の四面体補間に対応することができる。つまり、N（≧3の整数）次元の四面体補間用の装置において、2N-3個のキャッシュ部に頂点データを分割記憶し、一個のキャッシュ部から最大四つの頂点データを並列に取得して、補間演算を行うことができる。
【００９６】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
0005620734.tif 000002
【図２】
0005620734.tif 000003
【図３】
0005620734.tif 000004
【図４】
0005620734.tif 000005
【図５】
0005620734.tif 000006
【図６】
0005620734.tif 000007
【図７】
0005620734.tif 000008
【図８】
0005620734.tif 000009
【図９】
0005620734.tif 000010
【図１０】
0005620734.tif 000011
【図１１】
0005620734.tif 000012
【図１２】
0005620734.tif 000013