(57)【要約】【課題】  小さな回路規模で高精度な補間を行う。【解決手段】  ｎビットの各要素の入力値をn+1ビット以上の０から２のｎ乗までの値域をもつ整数または固定小数点値に変換する入力値変換手段と、入力値変換手段によって変換された値の下位ビットを用いて補間演算で使用する補間頂点を選択する補間頂点選択手段と、入力値変換手段によって変換された値の上位ビットと前記補間頂点選択手段によって選択された補間頂点の情報をもとに多次元ルックアップテーブルの参照を行うルックアップテーブル参照手段と、補間頂点選択手段によって得られた選択情報と前記入力値変換手段によって変換された値の下位ビットを用いて補間係数を計算する補間係数計算手段とを有する。【選択図】  図１
2006173829.tif 000002
【特許請求の範囲】
【請求項１】
各要素ｎビットで０から２のｎ乗−１までの値域をもつ多次元入力値に対し、ｎビットの各要素の入力値をn+1ビット以上の０から２のｎ乗までの値域をもつ整数または固定小数点値に変換する入力値変換手段と、前記入力値変換手段によって変換された値の下位ビットを用いて補間演算で使用する補間頂点を選択する補間頂点選択手段と、前記入力値変換手段によって変換された値の上位ビットと前記補間頂点選択手段によって選択された補間頂点の情報をもとに多次元ルックアップテーブルの参照を行うルックアップテーブル参照手段と、前記補間頂点選択手段によって得られた選択情報と前記入力値変換手段によって変換された値の下位ビットを用いて補間係数を計算する補間係数計算手段と、前記ルックアップテーブル参照手段によって得られた補間頂点に対応する出力値と前記補間係数計算手段によって得られた補間係数によって補間演算を実行する補間演算手段とを有することを特徴とする色変換装置。
【請求項２】
前記入力値変換手段は、入力値の下位に、入力値の上位ビットから必要なビット数分だけ結合するビット結合手段と、前記ビット結合手段の出力値に対して１を加算してから最下位ビットを除いて出力する加算手段とを有することを特徴とする請求項1記載の色変換装置。
【請求項３】
前記入力値変換手段は、1次元のテーブル参照手段とを有することを特徴とする請求項1記載の色変換装置。
【請求項４】
前記1次元のテーブル参照手段で使用するテーブル値は、ガンマ変換と、０から２のｎ乗−１までの値域から０から２のｎ乗までの値域への変換を合成したものであることを特徴とする請求項３記載の色変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの色変換装置に関するものである。
【背景技術】
【０００２】
プリンタによる画像出力等、画像を扱う様々なシステムにおいて、画像に対する色変換処理が必要となる。色変換処理に対する入力と出力が比較的単純な関係にある場合、マトリクス演算を用いたマスキング処理によって色変換を行うことも可能であるが、一般的には、色変換の入力と出力の関係を単純なマトリクス演算で精度良く近似できるとは限らない。このような場合、3次元ルックアップテーブル(以下、略す場合はLUTと示す)と補間演算（例えば、四面体補間等の多面体補間演算）を用いた色変換方式が用いられることが多い。
【０００３】
ここで、3次元LUTと補間演算を用いた色変換方式の概念について、図３、図４、図５を用いて説明する。
【０００４】
図３は、3次元の入力値の値域を格子状に分割した状態を示す図であり、分割された立方体（あるいは直方体）の各頂点に対応する出力値が、3次元ＬＵＴに格納されている。ある3次元の入力値が与えられた場合、まず、その入力値を含む立方体（あるいは直方体）が選択される。
【０００５】
図４は、その選択された立方体（あるいは直方体）と、入力値に対応する点Pを示した図であり、説明上、各頂点の名前をP000〜P111とする。また、Ｐの座標値（＝入力値）を(x, y, z)、原点に最も近い頂点P000の座標値を(x0,y0,z0)、原点から最も遠い頂点P111の座標値を(x1,y1,z1)とし、入力値Pの原点に最も近い頂点P000からの変位を(Δx,Δy,Δz)とし、各次元における辺の長さに対する前記変位の比率を(Rx, Ry, Rz)とすると、次の式が成り立つ。
【０００６】
Δx = x − x0、Rx = Δx / (x1 − x0) = (x − x0) / (x1 − x0) ... (1)
Δy = y − y0、Ry = Δy / (y1 − y0) = (y − y0) / (y1 − y0) ... (2)
Δz = z − z0、Rx = Δx / (z1 − z0) = (z − z0) / (z1 − z0) ... (3)
点Ｐに対応する出力値は、3次元ＬＵＴを参照して得られる各頂点に対応する出力値と前記座標値によって計算される係数値から、補間演算によって計算される。ここで、補間演算の方式によって、補間に使用される頂点の個数や頂点の選択方法、係数の計算方法は異なっている。
【０００７】
図５は、四面体補間を用いた場合の補間演算を説明する図である。四面体補間は、P000〜P111の中から選択された４つの頂点に対応する出力値を用いて、入力に対する出力値を補間する方式であり、図5では、Rx ＞ Ry ＞ Rｚのときに使用される４つの頂点P000,P100,P110, P111を黒丸で示し、これら４つの頂点を結んでできる四面体を実線で示している。入力値Pは、この四面体の中に含まれており、これも黒丸で示されている。
【０００８】
Ｐに対応する出力値をＶ，頂点P000〜P111に対応する出力値をＶ000〜Ｖ111とすると、この場合のVは次式で計算される。
【０００９】
Ｖ＝(1 − Rx)・V000 + (Rx − Ry)・V100 + (Ry − Rz)・V110 + Rz・V111...(4)
図５には1通りしか示していないが、Rx, Ry, Rzの値の大小関係によって、6通りの四面体の選び方が存在し、Rx ＞ Ry ＞ Rｚのとき以外については、次の式で計算を行う。
【００１０】
Rx ＞ Rz ≧ Ryのとき：
Ｖ＝(1 − Rx)・V000 + (Rx − Rz)・V100 + (Rz − Ry)・V101 + Ry・V111...(5)
Rz ≧ Rx ＞ Ryのとき：
Ｖ＝(1 − Rz)・V000 + (Rz − Rx)・V001 + (Rx − Ry)・V101 + Ry・V111...(6)
Rz ≧ Ry ≧ Rxのとき：
Ｖ＝(1 − Rz)・V000 + (Rz − Ry)・V001 + (Ry − Rx)・V011 + Rx・V111...(7)
Ry ＞ Rz ≧ Rxのとき：
Ｖ＝(1 − Ry)・V000 + (Ry − Rz)・V010 + (Rz − Rx)・V011 + Rx・V111...(8)
Ry ≧ Rx ＞ Rzのとき：
Ｖ＝(1 − Ry)・V000 + (Ry − Rx)・V010 + (Rx − Rz)・V110 + Rz・V111...(9)
次に、3次元ＬＵＴと補間演算を用いた色変換装置の構成例について、図２を用いて説明する。図２は、8ビット3次元の入力値に対して、各次元を16分割して得られる17x17x17要素の3次元ＬＵＴを用いて、出力値を求めるための構成例であり、まず、入力値101, 102, 103は、上位4ビットと下位4ビットに分割される。上位4ビットは、入力の値域を16の倍数を区切りに16分割したときに入力値がどの領域に含まれるかを示しており、下位4ビットは、入力値の含まれる領域において原点に近い頂点からの変位(Δx, Δy, Δz)を示している。ここで、16の倍数を区切りに格子分割がなされているため、Rx, Ry, Rzは次の式で計算できる。
【００１１】
Rx = Δx / 16 = xの下位4ビット / 16 ... (10)
Ry = Δy / 16 = yの下位4ビット / 16 ... (11)
Rz = Δz / 16 = zの下位4ビット / 16 ... (12)
3次元入力値の下位4ビットは補間頂点選択回路111に入力され、下位4ビットの値の大小関係（Rx,Ry,Rzの大小関係と等しい）から、補間に使用する４頂点を選択し、3次元ＬＵＴ参照回路110に指示するとともに、6通りの頂点の選択肢からどの場合が選択されたかを示す情報と、Rx,Ry,Rzの値を補間係数計算回路114に対して出力する。
【００１２】
3次元ＬＵＴ参照回路110は、入力値の上位4ビットから、入力値がどの立方体に含まれるか、すなわち頂点P000の位置を知り、さらに補間頂点選択回路111からどの頂点を補間に使用するかを指示されて、補間に使用する4頂点に対応するテーブルアドレスを生成して、3次元ＬＵＴを参照する。格子点出力値112は、3次元ＬＵＴ参照回路110によって得られた、4頂点に対応する出力値である。
【００１３】
補間係数計算回路114は、補間頂点選択回路111から出力された情報をもとに、式(4)〜(9)のいずれの補間計算式を用いるかを判断し、各頂点の値Ｖ000〜Ｖ111に掛ける係数値を計算して、補間演算回路113に出力する。
【００１４】
補間演算回路113は、4頂点に対応する格子点出力値112各々に対し、補間係数計算回路114によって計算された各係数をそれぞれ掛けた上で加算し、出力のビット精度に合わせて丸め、あるいは切捨てを行って、最終的に、入力値Pに対応する出力値115を出力する。
【００１５】
なお、図２において、出力値については1次元分しか示していないが、複数次元の出力値が必要な場合は、図２の構成を複数並列に用いるか、あるいは、複数回繰り返しで用いることで複数次元の出力値が得られる。
【００１６】
以上の図２の説明では、処理を簡単にするため、入力値の値域を分割して得られる立方体の各辺の長さが全て16であるものとしているが、実際には、入力値の値域0〜255を16の倍数を区切りに分割していくと、図６に示すように、最後の分割領域だけは、立方体（あるいは直方体）の辺の長さが15になってしまう。従って、入力の全ての値に対して、式(10)〜(12)が成り立つわけではなく、入力の値に応じて、次に示すように2通りの計算式を使い分ける必要があり、入力の下位4ビットに対し、1/16を計算するだけで済んでいた前記場合よりも演算量や回路規模が増えてしまう。
【００１７】
Rx = Δx / 16 あるいは Δx / 15 ... (13)
Ry = Δy / 16 あるいは Δy / 15 ... (14)
Rz = Δz / 16 あるいは Δz / 15 ... (15)
そこで、特許文献１に提示された従来の技術では、入力値に対して式(13)〜(15)の値を保持したテーブルを予め作成しておき、実際の色変換処理時には、このテーブルを参照して、補間頂点の選択や補間係数の計算を行うことで、演算量を減らしている。
【特許文献１】特開2000-22973号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
まず、図２の説明のように、式(10)〜(12)を使って計算を行う従来技術では、1辺の長さが15となる最後の分割領域(入力値＝240〜255)において、誤差が発生し、補間精度が落ちてしまう。特に、入力値の色空間がRGBの場合、R=G=B=255は白色を意味しており、画像処理上、白色は必ず白色として出力したい場合が多いため、3次元とも最後の分割領域となる立方体のV111の値は、白色相当の値に設定されることが多い。ところが、式(10)〜(12)を用いた計算方法では、x=y=z=255に対して、Rx=Ry=Rz=15/16となり、出力値は、次の式のように、V000 ,V111という複数の値に依存するようになり、単純にV111の値が白色相当の値になるように設定することができなくなってしまう。
【００１９】
Ｖ＝1/16・V000 + 15/16・V111 ... (16)
式(16)の値が白色相当となり、かつ、周辺のその他の入力値に対する出力値の補間誤差が小さくなるよう、3次元ＬＵＴの値を調整することは容易ではなく、この問題を避けるためには、例えば、x=y=z=255の場合だけ特別扱いするような追加回路が必要となる。
【００２０】
次に、式(13)〜(15)の通り計算を行う従来技術では、補間精度の問題は無いが、15による除算が行われるため、除算器が必要で回路規模が大きくなってしまう。
【００２１】
また、特開2000-22973に提示された従来の技術では、予め除算を行った結果をテーブルに格納しておくため、除算器は不要であるが、入力値の値域に対応するだけのテーブルが必要であるため、ハードウェア実装時には使用するメモリが増えてしまう。
【００２２】
本発明は、これらの課題、すなわち、回路規模は小さいが補間精度が落ちる、あるいは補間精度は良いが回路規模が大きくなる、という課題を解決するためのものである。
【課題を解決するための手段】
【００２３】
上記課題を解決するために、本発明の色変換装置は、各要素ｎビットで０から２のｎ乗−１までの値域をもつ多次元入力値に対し、ｎビットの各要素の入力値をn+1ビット以上の０から２のｎ乗までの値域をもつ値に変換する入力値変換手段と、前記入力値変換手段によって変換された値の下位ビットを用いて補間演算で使用する補間頂点を選択する補間頂点選択手段と、前記入力値変換手段によって変換された値の上位ビットと前記補間頂点選択手段によって選択された補間頂点の情報をもとに多次元ルックアップテーブルの参照を行うルックアップテーブル参照手段と、前記補間頂点選択手段によって得られた選択情報と前記入力値変換手段によって変換された値の下位ビットを用いて補間係数を計算する補間係数計算手段と、前記ルックアップテーブル参照手段によって得られた補間頂点に対応する出力値と前記補間係数計算手段によって得られた補間係数によって補間演算を実行する補間演算手段によって、色変換を行うことを特徴とする。
【発明の効果】
【００２４】
本発明によれば、3次元LUTと補間演算を用いた色変換装置において、小さな回路規模で、かつ、格子分割の最終分割位置における補間精度を落とすことなく色変換を行うことができる。
【発明を実施するための最良の形態】
【００２５】
（第1の実施の形態）
まず、原理について、図７を用いて説明する。
【００２６】
なお、説明の都合上、入力値は各要素8ビット（値域０〜２５５）の3次元とし、格子分割は１６の倍数を区切りになされているものとする。従って、3次元ルックアップテーブルは１７ｘ１７ｘ１７の要素からなっている。
【００２７】
図７において、上の図は、8ビットの入力値を16の倍数区切りで区切った場合の図で、図６と同じく、最後の区間だけが狭くなっている。これを全て等間隔にするため、入力の値域0〜255を、256 / 255倍でスケーリングした結果が、図７の下の図である。この変換の結果、入力値0は0へ、255は256へ変換され、これを16の倍数区切りで区切ったときに、全ての区間の長さが16となって、式(13)〜(15)によらず、式 (10)〜(12)によって、補間頂点の選択、補間係数の計算を行うことができ、補間精度を保ったまま、補間回路の簡略化が可能となる。但し、256 / 255倍をそのまま計算すると、その部分の回路規模が大きくなってしまうため、回路規模の小さな変換回路の実装は、後に説明する。
【００２８】
また、図７の点線からわかるように、元々の入力値において16の倍数であった値が、変換後に16の倍数になるとは限らないため、元々の入力値における格子分割位置と変換後の値における格子分割位置とは一致しない。これは、3次元ルックアップテーブルに格納されるべき値の計算に影響するが、色変換装置の回路としては、単純にテーブルに格納される値が変わるだけなので、回路規模には影響しない。
【００２９】
第1の実施の形態の色変換装置について、図１を用いて説明する。
【００３０】
図１において、8ビットの入力値101〜103は、10ビット変換回路104〜106によって変換され、10ビットの固定小数点入力値（整数部9ビット、小数部1ビット）107〜109として出力される。入力値101〜103の値域は0〜255であり、変換後の入力値107〜109の値域は、0.0〜256.0である。
【００３１】
10ビット変換回路104〜106は、256 / 255倍に相当する演算を行うが、これをそのまま実行すると回路規模が大きくなってしまうため、次の近似・式変形により、処理を簡略化する。
【００３２】
y = (256 / 255)・x ≒ (257 / 256) ・x = (1 + 1 / 256) ・x = x + x / 256
= x + (xの8ビット右シフト) ... (17)
式(17)において、入力xは8ビットなので、第1項と第2項の有効ビット範囲は重ならず、単に、第1項と第2項のビットを結合するだけで加算を行う必要は無い。
【００３３】
式(17)のままでは、ビット精度が大きくなりすぎるため、出力ビット数10ビットに合わせるため、次式の計算を行う。
【００３４】
y = [x + (xの8ビット右シフト) + (出力ビットのLSB/2)] ... (18)
式(18)において、出力ビットのLSB/2は、出力となる10ビットの固定小数点値の最下位ビットの1/2の値を意味し、この例では、1/4である。また、[]は、10ビットへの切り捨てを意味する。
【００３５】
10ビット変換回路104〜106によって変換された後の10ビット入力値107〜109は、上位5ビット（値域０〜１７）が入力値を格子分割したときのどの領域に含まれるかを示すため、上位ビットは3次元ＬＵＴ参照回路110に送られる。下位5ビット（値域0.0〜15.5）はΔx, Δy, Δzに相当する値を示すため、下位ビットは補間頂点選択回路111に送られる。
【００３６】
補間頂点選択回路111、3次元ＬＵＴ参照回路110および、補間係数計算回路114、補間演算回路113については、Δx, Δy, Δzのビット精度が多い（小数点以下1ビット分追加）ことを除いて、図2の説明と全く同じ動作であるため、ここでは説明を省略する。
【００３７】
次に、式(18)を実際に計算する10ビット変換回路の例を図８に示す。
【００３８】
10ビット変換回路801は、8ビット入力値802を式(18)により変換して、10ビットの固定小数点値808（値域0.0〜256.0）を出力する。式(18)中の第1項xは、図中803、第2項xの8ビット右シフトは、図中804に相当し、これらはビット結合部805によって結合されて、図中806で示される11ビットの値となる。ここで、最終的な出力は10ビットしか無いため、ビット結合部805において8ビットの入力値を２つ結合して16ビット精度で出力する必要はなく、下位側の入力値については、上位3ビットだけを使って結合を行い、結果として11ビットの値806を得る。この値は、次に、LSB/2加算部807において、小数点を考慮せずに1だけ加算され、その後、下位1ビットを捨てて、10ビット出力値808として出力される。LSB/2加算部807において加算される1は、小数点を考慮すると、1/4に相当する値である。ビット結合部805については、回路としては配線だけあり、LSB/2加算部807は、インクリメンタとして小さな回路で実現できるため、図８に示す10ビット変換回路801の回路規模は小さく抑えられている。
【００３９】
以上、図１、図８を使って説明した第1の実施の形態により、式(13)〜(15)を計算するために除算器を使う従来技術やテーブルを使う従来技術のように回路規模を大きく増やすことなく、また、単純に式(10)〜(12)を使用する従来技術のように補間精度を落とすことなく、精度の維持と小さな回路規模を両立できる。
【００４０】
なお、ここでは、説明の都合上、特定のビット精度や格子分割方法をあげて説明したが、次の制約条件を満たす限り、任意のビット精度や任意の格子分割方法に対して、本発明を適用可能であり、さらには、入力の各次元毎に異なるビット精度や格子分割方法をとることが可能である。
【００４１】
本発明のビット精度上の制約条件は、入力値がnビットのときに変換回路の出力値がn+1ビット以上で無くてはならないことである。これは、値域が0〜2ｎ−１から0〜2ｎ−１に広がるためである。前記説明では、8ビットを10ビット固定小数点値に変換する例をあげたが、例えば、8ビットを9ビット整数値に変換する場合に本発明を適用することは可能である。
【００４２】
本発明の格子分割上の制約条件は、各次元の格子分割が必ずある２のべき乗の数間隔での等分割でなくてはならないことである。これは、変換後の値の上位ビットが、分割されたどの領域にあるかを直接示し、下位ビットが、Δx, Δy, Δzの値を直接示すことで補間回路の簡略化を図っているために必要な条件である。
【００４３】
また、説明上、四面体補間をとりあげて説明したが、Δx, Δy, Δzの値、あるいはRx, Ry, Rzの値をもとに補間を行う方式であれば、他の補間方式を使用する場合にも本発明を適用できる。
【００４４】
（第2の実施の形態）
第2の実施の形態について、図９を用いて説明する。
【００４５】
図９においては、図１における10ビット変換回路104〜106が1次元ＬＵＴ参照回路901〜903で置き換わっており、それ以外は全て図1と共通である。すなわち、図９においては、8ビットから10ビットへの変換動作は、入力値に対する変換後の値を格納した1次元テーブルを用意し、これに対する参照を1次元ＬＵＴ参照回路901〜903で行うことで実現される。この場合、機能としては、図１の場合と等価であり、回路規模としては、1次元ＬＵＴを用いる分、図1の場合よりも不利となる。しかし、色変換装置の入力に対して、1次元ＬＵＴによる補正処理、例えば、ガンマ変換処理を行う場合もあり、そのような場合には、ガンマ変換処理と、本発明の変換処理を合成して得られる値を1次元ＬＵＴのテーブル値として設定することで、1次元ＬＵＴの共用が可能であり、元々ガンマ変換用に1次元ＬＵＴをもっていた場合に対して、回路規模を増やすことなく、本発明の適用ができる。
【図面の簡単な説明】
【００４６】
【図１】第1の実施例の構成図。
【図２】従来技術の構成図。
【図３】3次元LUTの説明図。
【図４】入力値と入力値を含む立方体（あるいは直方体）の説明図。
【図５】四面体補間の説明図。
【図６】16の倍数を区切りとした格子分割の説明図。
【図７】入力変換処理の説明図。
【図８】10ビット変換回路の構成図。
【図９】第２の実施例の構成図。
【図１】
2006173829.tif 000003
【図２】
2006173829.tif 000004
【図３】
2006173829.tif 000005
【図４】
2006173829.tif 000006
【図５】
2006173829.tif 000007
【図６】
2006173829.tif 000008
【図７】
2006173829.tif 000009
【図８】
2006173829.tif 000010
【図９】
2006173829.tif 000011