JP4288865B2 - Color interpolation method and color interpolation apparatus - Google Patents
Color interpolation method and color interpolation apparatus Download PDFInfo
- Publication number
- JP4288865B2 JP4288865B2 JP2001146327A JP2001146327A JP4288865B2 JP 4288865 B2 JP4288865 B2 JP 4288865B2 JP 2001146327 A JP2001146327 A JP 2001146327A JP 2001146327 A JP2001146327 A JP 2001146327A JP 4288865 B2 JP4288865 B2 JP 4288865B2
- Authority
- JP
- Japan
- Prior art keywords
- color
- output
- data
- color conversion
- interpolation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Color, Gradation (AREA)
- Image Processing (AREA)
- Facsimile Image Signal Circuits (AREA)
- Color Image Communication Systems (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は色補間方法及び色補間装置に関し、更に詳しくは高速化した色補間方法及び色補間装置に関する。色変換方法として、多次元のLUTと補間演算器による演算が知られている。米国特許第4837722号では、高速演算のために補間演算器をパラレルに並べて計算する方法が提案されている。
【0002】
【従来の技術】
カラープリンタ、カラースキャナ、カラー複写機等では、光電走査によって得た色分解ディジタル画像データの色修正を行なうことが多い。上記のようなディジタル画像データの色修正は演算により行なわれる場合もあるが、予め色分解画像データの組み合わせ(例えば赤R,緑G,青Bの3原色画像データの組み合わせ)に対応する修正済み画像データの組み合わせ(例えばイエローY,マゼンタM,シアンC,ブラックKのインキ量)を変換テーブルとして記憶させておき、修正前のデータの組み合わせをアドレス指定信号として、修正済みのデータの組み合わせ(変換出力データ)を読み出すように構成される場合もある。
【0003】
前述のような変換テーブルを用いたデータ変換では、入力データの組み合わせ全てに対応する修正データの組み合わせを記憶するようにすると、膨大な記憶容量が必要となって、変換テーブルとして用いるメモリのコストアップになるので、変換出力データを適宜間引いて記憶させ、間引いた部分に相当する入力データの組み合わせに対応する修正データについては補間演算により求めることが一般に行われている。
【0004】
上記のように、変換テーブルを用いたデータ変換を、補間演算を伴って行わせる技術としては、従来、特公昭58−16180号公報及び特開昭63−162248号公報等に開示されるようなものがある。特公昭58−16180号公報では、3次元の入力ディジタルデータが構成する3次元の空間を複数の単位立方体で分割し、該複数の立方体の頂点それぞれに対応させて変換出力データを記憶させて変換テーブルを構成する。
【0005】
そして、前記単位立方体を、該単位立方体の8頂点の中の4頂点からなる複数(5又は6個)の4面体に分割し、3次元の入力データに対応する点を含む4面体の4頂点それぞれにおける変換出力データを読み出し、該4個の変換出力データを補間演算することで、3次元入力データに対する最終的な変換出力データを出力するようにしている。
【0006】
また、特開昭63−162248号公報には、前記立方体をそのまま用い、3次元の入力データに対応する点を含む立方体の8頂点に対応して読み出される8個の変換出力データから補間演算により最終的な変換出力データを出力するようにしている。上記の特公昭58−16180号公報及び特開昭63−162248号公報等に開示されるデータ変換では、補間演算を用いることで変換テーブルに記憶させる変換出力データの数を少なくしてメモリ容量を小さく抑えると共に、非線形の変換も小さいな誤差で行なえるものであり、またハードウェアも比較的小規模ですみ、比較的高速な回路が実現できる。
【0007】
【発明が解決しようとする課題】
パラレルに演算を行なう場合、全体として設計しなくてはならないため、回路が複雑になるという問題がある。また、一つのユニットを繰り返し利用できず、例えば乗算器と足し算器を別々に用いることになる。また、補間演算点数はハードウェアで固定的である。しかしながら、例えば入力データがL*a*b*では8点補間が最適であり、入力データがR,G,BやY,M,Cの場合には4点補間が最適であることが知られている。この場合、それぞれに最適な補間演算が行われないことになる。
【0008】
本発明はこのような課題に鑑みてなされたものであって、高速演算が可能な色補間方法及び色補間装置を提供することを目的としている。即ち、第1にメモリの総量を最小限にして、かつ最大の計算能力を実現し、第2に同じ形式のユニットを並べることで、部品及びタイミング設計を容易にし、第3に容易に補間に必要な格子点数を変更できる仕組みを提案する。
【0009】
【課題を解決するための手段】
(1)請求項1記載の発明は、全体の色変換テーブルのテーブル値を格子の一つおきに取り出した複数の色変換テーブルを持ち、前記複数の色変換テーブルのそれぞれを用いた演算結果を逐次累積する演算を用いて色補間を行なうことを特徴とする。
【0010】
このように構成すれば、演算回路をシリアルに並べることで、同じユニットが利用でき、かつパイプライン化できるので、処理を高速化することができる。
(2)請求項2記載の発明は、前記全体の色変換テーブルは、n色の入力データが入力される時に2のn乗個に分割されていることを特徴とする。
【0011】
このように構成すれば、補間演算の点数を自由に設定することができる。
(3)請求項3記載の発明は、前記分割された複数の色変換テーブルが同時に使われない組み合わせについては、パラレルに並べることを特徴とする。
【0012】
このように構成すれば、遅延を少なくすることができる。
(4)請求項4記載の発明は、n色の入力データの入力に対して、2のn乗より少ない数で補間する場合、前記複数の色変換テーブルのそれぞれを用いた演算を行なう際に、当該色変換テーブルを使用しない演算は、0と乗算することを特徴とする。
【0013】
このように構成すれば、簡単な構成でバイパスするのと同等の効果が得られる。
(5)請求項5記載の発明は、入力データの種類に応じて補間演算点数を可変に選択することを特徴とする。
【0014】
このように構成すれば、入力データに応じて最適な補間演算手段が選択できる。
(6)請求項6記載の発明は、全体の色変換テーブルのテーブル値を格子の一つおきに取り出した複数の色変換テーブルを持ち、前記複数の色変換テーブルのそれぞれを用いた演算結果を逐次累積する演算を用いて計算する演算部を有することを特徴とする。
【0015】
このように構成すれば、演算回路をシリアルに並べることで、同じユニットが利用でき、かつパイプライン化できるので高速化することができる。
【0016】
【発明の実施の形態】
以下に、図面を参照して本発明の実施の形態例を詳細に説明する。
図1は本発明の一実施の形態例を示すブロック図で、3次元入力の場合を例にとっている。図において、1は入力データ24ビットを受けて、ビットを振り分けるビット振り分け器である。入力24ビットデータは、例えばRが8ビット、Gが8ビット、Bが8ビットである。2はビット振り分け器1からの出力信号を受けて重みとアドレスを出力する係数発生器である。該係数発生器2は、#0〜#7までの8個存在する。そして、これら係数発生器2は#0が#1に入り、#1が#2に入るという具合に直列に接続されている。
【0017】
10は副LUTと乗算累積器を8個用いた演算部である。3が副LUTと乗算累積器(以下単に演算器と略す)であり、図に示すように#0〜#7まで8個直列に接続されている。#0の演算器には入力としてゼロデータが入力されている。該#0の演算器の出力は#1の演算器に入り、#1の演算器の出力は#2の演算器に入る。以下、同様に接続され、演算出力が累積されていくようになっている。演算部10において、4は最終段の演算器の出力を受けて重みの総和で割算して出力(8ビット)を得る割算器である。
【0018】
図に示す演算部10は、Y,M,C毎に設けられている。即ち、10はY系の演算部であり、20はM系の演算部であり、30はC系の演算部である。そして、それぞれの演算部からは、8ビットの演算出力が得られるようになっている。Kや特色出力があれば、このユニットが増える。色変換LUT値は、それぞれの演算部に共通に入力されている。この色変換LUT値は、それぞれの演算器3毎に分割されて与えられている。また、各係数発生器2からは、対応する演算器3に重みとアドレスが与えられている。図に示す回路は、図示しないタイミングクロックにより同期して動作するようになっている。このように構成された回路の動作を説明すれば、以下の通りである。
【0019】
図1に示す実施の形態例は、三角錐を用いた4点補間法を実現する回路である。図2は三角錐を用いた4点補間の説明図である。立方体を三角錐で分割すると、6個の三角錐に分割される。そして、それぞれの条件毎に補間式を求める。例えばx≧y≧zの場合、当該三角錐内の任意の点Pの補間値pxyzは次式で表される。
【0020】
pxyz=pa(1−x)+pb(x−y)+pc(y−z)+pgz (1)
但し、この式では格子間隔が1の場合を示している。ここで、pa〜pgは三角錐の各頂点の値を示す。図1に示す回路は、ハードウェア的に(1)式を実現するものである。
【0021】
本来の3次元補間用LUTをN×N×N(Nは偶数)としたとき、8つに分割して、それぞれのブロックに転送する。この分割方法は、図3に示すように、一つおきに並べたデータを8つの(N/2)×(N/2)×(N/2)のLUTに分割するものである。図3において、(a)に示すLUT全体を○、□、△、×の点を一つおきにとっていき、各々の点で構成されるデータで分割すると、図3の(b)〜(e)に示すように分割される。図は2次元の場合を示す。3次元の場合には8個に分割される。
【0022】
このように分割されたLUTを副LUTnと呼ぶことにする。ここで、nは0から7までの数字である。この副LUTは、nを0から((N/2)−1)とし、その2進数をi,j,kとしたとき、
LUTn[I][J][K]=LUT[2・I+i][2・J+j][2・K+k] (2)
により設定されるサイズ1/8のLUTである。ここで、I,J,Kは0〜7のR,G,Bのアドレス、i,j,kは0か1の値である。(2)式は、副LUTが右辺で表される元のLUTの(2)式に示すアドレスと対応していることを示す。つまり、左辺の副LUTは右辺に示すLUTのアドレスで表される場所からとってくるものであることを示す。このように、本発明によれば、色変換テーブルをn色入力の時に2のn乗個に分割することで、補間演算の点数を自由に設定することができる。
【0023】
ここで、N=16として説明する。図1において、入力されたR,G,B値は、ビット振り分け器1で、各色上位値と下位値、及び上下判定値に分けられる。図4はビット振り分け器1の一実施の形態例を示すブロック図である。入力値は、R,G,B毎に8ビットの合計24ビットである。RはRチャネル40に入り、GはGチャネル41に入り、BはBチャネル42に入る。
【0024】
例えば、Rチャネル40において、50は8ビットのRデータを受ける上位/下位ビット振り分け器、51は該上位/下位ビット振り分け器50の出力を受ける上半位/下半位振り分け器である。上位/下位ビット振り分け器50からは3ビットの上位値(0〜7)が出力され、上半位/下半位振り分け器51からは1ビットの上下判別値と5ビットの下位値(0〜16)が出力される。以上の構成は、他のGチャネル、Bチャネルについても同様である。Rチャネル、Gチャネル、Bチャネルから出力される5ビットの下位値は三角錐コード発生器43に入り、該三角錐コード発生器43からは、3ビットの三角錐コード(0〜5)が出力される。三角錐コードは、図2に示す三角錐に0〜5までのコードを振り、各三角錐を識別するものである。三角錐発生コードの組み合わせは、図5に示す通りである。例えば、B≧R≧Gの場合の三角錐コードは“4”である。
【0025】
ここで、図4において示す計算式で上位値、上下判別値、下位値が計算される。例えば、上位値は入力値/34で表され、1次下位値は入力値を34で割った余り(%34)で表され、上下判別値は入力値/17で表され、更に、最終の下位値は入力値%17で表される。そして、3色の最終の下位値を用いて補間演算に使用される三角錐(4点の組み合わせ)の位置を決定するコードを三角錐コード発生器43から出力する。ここで出力されたデータは、各演算と同期して次の係数発生器2(#0)に転送される。
【0026】
図6は係数発生器の一実施の形態例を示すブロック図である。係数発生器2は副LUTnに対するアドレスと補間演算用重み係数を出力して副LUTnと乗算器のブロック(演算器)3に送る。ビット振り分け器1からのR,G,B毎の上位値(0〜7)は加算器61に入り、下位値(0〜16)と、上下判別ビット(0〜1)はアドレス発生/重み発生器60に入る。アドレス発生/重み発生器60には、LUT ID[0〜7]も入っている。このLUT IDは図1に示す位置データと同じものである。
【0027】
アドレス発生/重み発生器60からは、R,G,B毎の増分アドレスと重み係数が発生される。ここで、増分アドレスは、LUTのアドレスを指定する時に、最も小さい値を基底にして必要な軸に+1するものである。例えば、2次元で示すと(3,4)が基底アドレスだとすると、(4,4)、(4,5)のように、+0又は+1を行なう。これにより、三角錐の位置を決めるものである。ここで、三角錐の位置を決めるとは、LUTの格子のいずれを用いるか(格子のいずれかの点で構成される三角錐を用いるか)を決定することである。
【0028】
R,G,B毎の上位値(0〜7)と増分アドレス(0〜1)は加算器61に入り、該加算器61からはRアドレス(0〜7)が発生される。この構成は、残りのGチャネル、Bチャネルについても同様である。Rチャネル、Gチャネル、Bチャネルからは、それぞれのアドレスが発生して演算器3に入り、また重み係数(0〜17)が発生して演算器3に入る。一方、上位値、下位値、上下判別ビット、三角錐コードは、次の係数発生器2に入る。
【0029】
図7は係数発生器中のアドレス/重み発生器60の一実施の形態例を示すブロック図である。R,G,B毎の下位値(0〜16)は、差分計算部70に入る。該差分計算部70は、R,G,B各下位値と差分計算指示器71からの4ビット出力を受けて、重み係数(0〜17)を発生する。差分計算指示器71は、図8に示すようなテーブルを持っている。そして、LUTコード毎に三角錐コードに対応した重みが割り振られている。
【0030】
LUTコードは、000、001、010、011、100、101、110、111に区分され、それぞれの三角錐毎に重みが与えられている。各三角錐毎に、重みは4個与えられている。例えば、三角錐コード“3”の場合は、LUTコード000が2、010が7、110が8、111が12である。そして、各三角錐毎に4個の重みが与えられている。各三角錐毎に4個の重みがあり、残りが0であるのは、(1)式が4個の乗算項からなっているのと対応している。つまり、図1の演算器3は8個存在するが、実際に演算を行なっているのは4個であることを示している。このように、本発明によれば、全体の色変換テーブルを複数の色変換テーブルに分割して持ち、2のn乗より少ない数で補間する場合、当該色変換テーブルを使用しない部分に0の重みを加えることで、簡単な構成でバイパスするのと同等の効果が得られる。
【0031】
図7において、72は排他的論理和回路であり、LUTID[0〜7]とR,G,Bそれぞれの上下判別ビットを受けて3ビットのLUTコードを出力し、差分計算指示器71に与える。差分計算指示器71は、3ビットのLUTコードと三角錐コードを受けて、図8に示す4ビットの重みデータを出力し、差分計算部70に与える。
【0032】
該差分計算部70は、R,G,B毎の下位値と、差分計算指示器71からの4ビットの重みデータを受けて、図9に示すような差分計算を行ない、重み係数(0〜17)を出力する。アンド(AND)回路73は、R,G,B毎の上下判別ビットと、排他的論理和回路72からの3ビット出力を受けて、R,G,B毎の増分アドレス(0〜1)を出力する。
【0033】
上述したように、係数発生器2は、図6に示したように、副LUTnに対するアドレスと補間演算用重み係数を出力して、副LUTnと乗算累積器のブロック(演算器)3に送る。アドレス発生/重み発生器60は、ビット操作及び図8、図9に示す処理を行なう。これにより、重み係数及び副LUTnに対する増分アドレスを計算する。
【0034】
本発明では、元のLUTを複数の副LUTに分割しているため、例えば上下判定値が0の方向では増分は発生せず、上下判定値が1の場合、選択するLUTの種類が変更され、更に増分アドレスが1となる。各色増分アドレスは、各色上位値と加算される。ただし、上限の制限がついている。この場合、副LUTの最大アドレスの7を超えないようにする(図6参照)。
【0035】
副LUTnと乗算累積器(演算器)3では、前段のデータを受け取り、副LUTnに対するアドレスにより出力されたLUTデータと重みを乗算した上、累積して次段に送り出す。この場合、初段の演算器3には、0データが与えられる。当該副LUTnに対して重みが発生しない場合(使用しない場合)は、重み0が与えられる。この場合、0との乗算を行なう代わりにセレクタを用いて当該段はバイパスするようにしてもよい。
【0036】
図10は副LUTnと乗算器(演算器)3の一実施の形態例を示すブロック図である。図において、80はアドレス(3×3ビット)て色変換LUT値を受けて入力アドレスに対応するデータを出力する副LUTnである。該副LUTnは8ビットのデータを出力する。81は、係数発生器2からの重み係数(5ビット)と副LUTn80からの出力データを受けて乗算を行なう乗算器である。該乗算器81からは、13ビットのデータが出力される。82は、前段の演算器3からのデータ(8+5ビット)と乗算器81の出力(13ビット)とを加算する加算器である。該加算器82の出力(13ビット)が当該段の演算器3の出力となる。ここで、副LUTnの出力と、乗算器81の出力と、加算器82の出力はラッチ構成となっており、同期クロックでデータが左から右にシフトするようになっており、高速動作が可能となっていれる。このように構成された回路の動作を説明すれば、以下の通りである。
【0037】
係数発生器2から重み係数(5ビット)とアドレス(3×3)ビットが演算器3に入力される。この内、アドレスは副LUTnに入って、該副LUTnからは8ビットの変換データが出力される。乗算器81は、この副LUTnの出力と重み係数(5ビット)を乗算する。この乗算結果は、続く加算器82で前段からのデータと加算され、その出力(8+5ビット)は後段の演算器3に入るようになっている。
【0038】
この演算処理を8段行なうことで、重み係数の総和と最終的な値との乗算値が算出される。この乗算値は、割算器4(図1参照)で重み係数の総和で割り算されて最終的な出力となる。割算器4は、ロジックで作成しても、LUT化してもよい。16×16×16の格子点で4点補間の場合、重みの総和は17になる。このように、本発明によれば、演算回路をシリアルに並べることで、同じユニットが利用でき、かつパイプライン化できるので高速化することができる。
【0039】
上述したような処理を行なう時に、各ブロック、更には各ブロックの内部を数段に分割してパイプライン化することにより、高速なスループットが実現できる。例えば、図10に示すようにラッチを設けてパイプラインの幅を狭くすることにより高速化される。但し、この場合は最初の計算値の出力まで遅延が発生する。各ブロック毎にパイプライン化した場合、少なくとも8クロック、内部を更に数段に分割した場合は、その段数を乗算したクロック数だけ遅延する。何れの場合も、最初にデータが出力されるまでの遅延時間は、段数により変化するが、一旦出力された後は、連続して出力されるので、スループットには差は生じない。
【0040】
上述の実施の形態例では、補間演算点数を8個設けた場合を示したが、本発明はこれに限るものではなく、補間演算点数を可変することができる。これにより、入力データに応じて最適な補間演算手段が選択できる。
【0041】
図11は本発明の他の実施の形態例を示すブロック図である。図1と同一のものは、同一の符号を付して示す。図において、1は入力データ(R,G,B各8ビットで合計24ビット)を受けてビット振り分けを行なうビット振り分け器、2は入力データを受けて重みとアドレスを発生する係数発生器で、#0〜#7まで8個存在する。#0の係数発生器2には位置データ(0)とビット振り分け器1の出力が入り、#1の係数発生器2には、位置データ(1)と#0の係数発生器2の出力が入り、#2の係数発生器2には、位置データ(2)と#0の係数発生器2の出力が入り、#3の係数発生器2には、位置データ(4)と#0の係数発生器2の出力が入り、#4の係数発生器2には、位置データ(3)と#3の係数発生器2の出力が入り、#5の係数発生器2には、位置データ(5)と#3の係数発生器2の出力が入り、#6の係数発生器2には、位置データ(6)と#2の係数発生器2の出力が入り、#7の係数発生器2には位置データ(7)と#6の係数発生器2の出力が入っている。
【0042】
101は副LUTと乗算累積器(演算器)で、#0と#1の2個存在する。#0の演算器101は副LUT0と乗算累積器で構成され、#1の演算器101は副LUT7と乗算累積器で構成される。そして、#0の演算器101には#0の係数発生器2からの重み係数とアドレスが入力され、ゼロデータが入力される。#1の演算器101には、#7の係数発生器2からの重み係数とアドレスが入力され、#1の加算器103の出力が入力される。
【0043】
102は副LUTと乗算器とで構成される演算器であり、#0〜#5まで6個存在する。#0の演算器102は副LUT1と乗算器とで構成され、#1の演算器102は副LUT2と乗算器とで構成され、#2の演算器102は副LUT4と乗算器とで構成され、#3の演算器102は副LUT3と乗算器とで構成され、#4の演算器102は副LUT5と乗算器とで構成され、#5の演算器102は副LUT6と乗算器とで構成される。
【0044】
103は加算器であり、#0と#1の2個存在する。#0の加算器103には#0の演算器101の出力と、#0の演算器102の出力と、#1の演算器の出力と、#2の乗算器102の出力が入っている。#1の加算器103には、#0の加算器103の出力と、#3の演算器102の出力と、#4の演算器102の出力と、#5の演算器102の出力が入っている。そして、#1の加算器103の出力は、#1の演算器101に入り、該#1の演算器101の出力は割算器4に入っている。そして、該割算器4で、累積値が重み係数の総和で割り算され、8ビットのデータとして出力される。これら演算器と加算器と割算器とで演算部100を構成している。このような構成の演算部は、色毎にn個存在する。
【0045】
図1に示す演算器の並べ方では、最低8個のパイプライン分だけ遅延するが、図11のような演算器の配列にすると、遅延を半分にすることができる。図1に示す各ブロックの副LUTnで、同時に発生しない組み合わせがあるため、それらをパラレルにまとめる。副LUT0と副LUT7はどの三角錐の場合にも用いられるが、副LUT1,2,4及び副LUT3,5,6の組み合わせ内では同時に使用されることがない。
【0046】
このようなグループでは、図11に示すように各ブロック内の累積器を省略して、図のように4入力の加算器103を用いることができる。この場合、3種類の入力は全て加算される。この計算は、加算器ではなくオア(OR)をとっても構わない。値を発生するのは1つだけであるためである。その他には、セレクタを用いることも可能である。
【0047】
この実施の形態例によれば、遅延を少なくすることができる。
図1に示す実施の形態例では、8種類の色変換LUTに対してアクセスするりことができるため、この重みをコントロールすることで、補間方法を容易に変更することができる。これを用いて、第1の実施の形態例の4点補間と8点補間を切り替え可能にすることができる。
【0048】
8点で補間する方法としては、特開平8−114870号公報(多次元補間方法及び装置)があるが、その手法を用いると重み係数が単純化され、好都合である。但し、重みの総和が4倍になるので、計算のビット幅はこれに合わせて増やす必要がある。更に、最終段での割算器の分母パラメータも可変にする。後述のビットシフトを用いる場合には、ビットシフト量を変更する。入力がR,G,B又はY,M,Cの場合には、4点補間を用いてL*a*b*では、8点補間を用いるとよい。このようにすることで、入力のグレー付近が正確に補間される。
【0049】
ここで、テーブル出力を、予め(2のn乗÷データ格子間隔)倍することで、補間値をビットシフトにより得るようにすることができる。例えば、出力を9ビットにして、最大値を480(255×32/17倍)にすると、5ビットシフトすればよく、大規模になりがちな割算器を省略することができる。但し、LUTの容量が増える。また、最大値を240(255×16/17倍)にした場合、4ビットシフトになるが、計算精度が若干低下する。
【0050】
この方法をソフトウェアでも実現することができる。一つのMPUでは効果がないが、複数のMPUがある場合、それ毎に各ステップの計算を行なうようにすることで、この構成の色補間演算を効果的に行なうことができる。例えば、ネットワーク上に接続されたコンピュータでリレーしながら計算することもできる。4次元の場合には、16個の演算器を並べることで、同様の処理が可能で、N次元の場合には、2のN乗のユニットを並べることで実現することができる。
【0051】
【発明の効果】
以上、詳細に説明したように、本発明によれば、以下のような効果が生じる。(1)請求項1記載の発明によれば、演算回路をシリアルに並べることで、同じユニットが利用でき、かつパイプライン化できるので高速化することができる。
【0052】
(2)請求項2記載の発明によれば、前記色変換テーブルは、n色入力の時に2のn乗個に分割することにより、補間演算の点数を自由に設定することができる。
【0053】
(3)請求項3記載の発明によれば、前記分割された色変換テーブルが同時に使われない組み合わせについては、パラレルに並べることで、遅延を少なくすることができる。
【0054】
(4)請求項4記載の発明によれば、全体の色変換テーブルを複数の色変換テーブルに分割して持ち、2のn乗より少ない数で補間する場合、当該色変換テーブルを使用しない部分に0の重みを加えることで、簡単な構成でバイパスするのと同等の効果が得られる。
【0055】
(5)請求項5記載の発明によれば、前記補間演算点数を可変することで、入力データに応じて最適な補間演算手段が選択できる。
(6)請求項6記載の発明によれば、演算回路をシリアルに並べることで、同じユニットが利用でき、かつパイプライン化できるので高速化することができる。
【0056】
このように、本発明によれば、高速演算が可能な色補間方法及び色補間装置を提供することができる。即ち、第1にメモリの総量を最小限にして、かつ最大の計算能力を実現し、第2に同じ形式のユニットを並べることで、部品及びタイミング設計を容易にし、第3に容易に補間に必要な格子点数を変更することができる。
【図面の簡単な説明】
【図1】本発明の一実施の形態例を示すブロック図である。
【図2】三角錐を用いた4点補間の説明図である。
【図3】LUTの分割の説明図である。
【図4】ビット振り分け器の一実施の形態例を示すブロック図である。
【図5】三角錐コードの説明図である。
【図6】係数発生器の一実施の形態例を示すブロック図である。
【図7】アドレス/重み発生器の一実施の形態例を示すブロック図である。
【図8】差分計算指示器の内容を示す図である。
【図9】差分計算指示器の内容を示す図である。
【図10】副LUTと乗算器の一実施の形態例を示すブロック図である。
【図11】本発明の他の実施の形態例を示すブロック図である。
【符号の説明】
1 ビット振り分け器
2 係数発生器
3 副LUTと乗算累積器
4 割算器
10、20、30 演算部[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a color interpolation method and a color interpolation device, and more particularly to a color interpolation method and a color interpolation device which are speeded up. As a color conversion method, calculation using a multidimensional LUT and an interpolation calculator is known. U.S. Pat. No. 4,837,722 proposes a method of calculating by interpolating interpolation calculators in parallel for high-speed calculation.
[0002]
[Prior art]
Color printers, color scanners, color copiers, and the like often perform color correction on color separation digital image data obtained by photoelectric scanning. The color correction of the digital image data as described above may be performed by calculation, but has already been corrected corresponding to a combination of color separation image data (for example, a combination of three primary color image data of red R, green G, and blue B). A combination of image data (for example, ink amounts of yellow Y, magenta M, cyan C, and black K) is stored as a conversion table, and a combination of data that has been corrected (conversion) using the combination of the data before correction as an addressing signal. (Output data) may be configured to be read out.
[0003]
In the data conversion using the conversion table as described above, if a combination of correction data corresponding to all combinations of input data is stored, an enormous storage capacity is required, which increases the cost of the memory used as the conversion table. Therefore, it is generally performed that the conversion output data is appropriately thinned and stored, and the correction data corresponding to the combination of input data corresponding to the thinned portion is obtained by interpolation calculation.
[0004]
As described above, as a technique for performing data conversion using a conversion table with interpolation calculation, as disclosed in Japanese Patent Publication No. 58-16180 and Japanese Patent Publication No. 63-162248, etc. There is something. In Japanese Examined Patent Publication No. 58-16180, a three-dimensional space formed by three-dimensional input digital data is divided into a plurality of unit cubes, and converted output data is stored in correspondence with the vertices of the plurality of cubes. Configure the table.
[0005]
Then, the unit cube is divided into a plurality of (5 or 6) tetrahedrons composed of four vertices among the eight vertices of the unit cube, and four vertices of a tetrahedron including points corresponding to three-dimensional input data. The conversion output data in each is read, and the four conversion output data are interpolated to output final conversion output data for the three-dimensional input data.
[0006]
In Japanese Patent Laid-Open No. 63-162248, the cube is used as it is by interpolation from eight converted output data read corresponding to eight vertices of a cube including points corresponding to three-dimensional input data. The final converted output data is output. In the data conversion disclosed in the above Japanese Patent Publication No. 58-16180 and Japanese Patent Laid-Open No. 63-162248, the number of conversion output data to be stored in the conversion table can be reduced by using an interpolation operation to increase the memory capacity. In addition to keeping it small, non-linear conversion can be performed with a small error, and the hardware is relatively small, and a relatively high-speed circuit can be realized.
[0007]
[Problems to be solved by the invention]
When performing operations in parallel, there is a problem that the circuit becomes complicated because it must be designed as a whole. Further, one unit cannot be used repeatedly, and for example, a multiplier and an adder are used separately. Also, the number of interpolation calculation points is fixed by hardware. However, for example, the input data is L * a * b * It is known that 8-point interpolation is optimal, and 4-point interpolation is optimal when the input data is R, G, B, Y, M, or C. In this case, the optimum interpolation calculation is not performed for each.
[0008]
The present invention has been made in view of such problems, and an object of the present invention is to provide a color interpolation method and a color interpolation apparatus capable of high-speed calculation. That is, the first is to minimize the total amount of memory and achieve the maximum computing capacity, and the second is to arrange the same type of units, facilitating parts and timing design, and third, to easily interpolate. We propose a mechanism that can change the required number of grid points.
[0009]
[Means for Solving the Problems]
(1) The invention according to
[0010]
By configuring in this way, the same unit can be used and pipelined by arranging the arithmetic circuits serially, Processing The speed can be increased.
(2) The invention according to
[0011]
If comprised in this way, the number | score of interpolation calculation can be set freely.
(3) The invention according to
[0012]
With this configuration, the delay can be reduced.
(4) The invention described in
[0013]
If comprised in this way, the effect equivalent to bypassing with a simple structure will be acquired.
(5) The invention according to
[0014]
If comprised in this way, the optimal interpolation calculating means can be selected according to input data.
(6) The invention according to
[0015]
With this configuration, the same units can be used and the pipelines can be speeded up by arranging the arithmetic circuits serially.
[0016]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of the present invention will be described below in detail with reference to the drawings.
FIG. 1 is a block diagram showing an embodiment of the present invention, taking the case of three-dimensional input as an example. In the figure,
[0017]
[0018]
The
[0019]
The embodiment shown in FIG. 1 is a circuit that realizes a four-point interpolation method using a triangular pyramid. FIG. 2 is an explanatory diagram of four-point interpolation using a triangular pyramid. When a cube is divided by triangular pyramids, it is divided into six triangular pyramids. Then, an interpolation formula is obtained for each condition. For example, when x ≧ y ≧ z, the interpolation value p of an arbitrary point P in the triangular pyramid xyz Is expressed by the following equation.
[0020]
p xyz = P a (1-x) + p b (Xy) + p c (Yz) + p g z (1)
However, this equation shows the case where the lattice spacing is 1. Here, pa to pg indicate the values of the vertices of the triangular pyramid. The circuit shown in FIG. 1 implements the expression (1) in hardware.
[0021]
When the original LUT for three-dimensional interpolation is N × N × N (N is an even number), it is divided into eight and transferred to each block. In this dividing method, as shown in FIG. 3, every other data arranged is divided into eight (N / 2) × (N / 2) × (N / 2) LUTs. In FIG. 3, when the entire LUT shown in FIG. 3A is made up of every other point of .largecircle., .Quadrature., .DELTA., And x, and divided by the data constituted by each point, (b) to (e) of FIG. Is divided as shown in FIG. The figure shows a two-dimensional case. In the case of three dimensions, it is divided into eight.
[0022]
The LUT divided in this way will be referred to as a secondary LUTn. Here, n is a number from 0 to 7. In this sub-LUT, when n is changed from 0 to ((N / 2) -1) and its binary number is i, j, k,
LUTn [I] [J] [K] = LUT [2 · I + i] [2 · J + j] [2 · K + k] (2)
Is an LUT having a size of 1/8. Here, I, J, and K are R, G, and B addresses of 0 to 7, and i, j, and k are values of 0 or 1. Expression (2) indicates that the secondary LUT corresponds to the address indicated in Expression (2) of the original LUT represented by the right side. That is, the sub-LUT on the left side is taken from the location represented by the address of the LUT shown on the right side. As described above, according to the present invention, the number of interpolation calculations can be freely set by dividing the color conversion table into 2 n powers when n colors are input.
[0023]
Here, the description will be made assuming that N = 16. In FIG. 1, input R, G, B values are divided by the
[0024]
For example, in the
[0025]
Here, the upper value, the upper / lower discriminant value, and the lower value are calculated by the calculation formula shown in FIG. For example, the upper value is represented by an input value / 34, the primary lower value is represented by a remainder (% 34) obtained by dividing the input value by 34, the up / down discrimination value is represented by an input value / 17, and the final value The lower value is represented by the
[0026]
FIG. 6 is a block diagram showing an embodiment of the coefficient generator. The
[0027]
The address generator /
[0028]
The upper value (0 to 7) and increment address (0 to 1) for each of R, G, and B enter the
[0029]
FIG. 7 is a block diagram illustrating one embodiment of an address /
[0030]
The LUT code is divided into 000, 001, 010, 011, 100, 101, 110, and 111, and a weight is given to each triangular pyramid. Four weights are given for each triangular pyramid. For example, in the case of the triangular pyramid code “3”, the
[0031]
In FIG. 7,
[0032]
The
[0033]
As described above, as shown in FIG. 6, the
[0034]
In the present invention, since the original LUT is divided into a plurality of sub-LUTs, for example, when the up / down judgment value is 0, no increment occurs. When the up / down judgment value is 1, the type of LUT to be selected is changed. In addition, the incremental address becomes 1. Each color increment address is added to each color upper value. However, there is an upper limit. In this case, the
[0035]
The secondary LUTn and multiplication accumulator (arithmetic unit) 3 receives the data of the previous stage, multiplies the LUT data output by the address for the secondary LUTn and the weight, accumulates it, and sends it to the next stage. In this case, 0 data is given to the
[0036]
FIG. 10 is a block diagram showing an embodiment of the sub-LUTn and the multiplier (arithmetic unit) 3. In the figure,
[0037]
A weight coefficient (5 bits) and an address (3 × 3) bits are input from the
[0038]
By performing this calculation process in eight stages, a product of the sum of the weighting coefficients and the final value is calculated. This multiplication value is divided by the sum of the weighting coefficients by the divider 4 (see FIG. 1) and becomes the final output. The
[0039]
When the processing as described above is performed, each block, and further, the inside of each block is divided into several stages and pipelined to realize a high-speed throughput. For example, as shown in FIG. 10, the speed is increased by providing a latch to narrow the pipeline width. However, in this case, a delay occurs until the first calculated value is output. When each block is pipelined, it is delayed by at least 8 clocks, and when the inside is further divided into several stages, it is delayed by the number of clocks multiplied by the number of stages. In either case, the delay time until data is first output varies depending on the number of stages, but since it is output once after it is output, there is no difference in throughput.
[0040]
In the above-described embodiment, the case where eight interpolation calculation points are provided is shown, but the present invention is not limited to this, and the number of interpolation calculation points can be varied. Thereby, an optimal interpolation calculation means can be selected according to the input data.
[0041]
FIG. 11 is a block diagram showing another embodiment of the present invention. The same components as those in FIG. 1 are denoted by the same reference numerals. In the figure, 1 is a bit distributor that receives input data (R, G, B, 8 bits in total, 24 bits) and performs bit distribution, and 2 is a coefficient generator that receives input data and generates weights and addresses. There are 8 from # 0 to # 7. The # 0
[0042]
101 is a sub-LUT and multiplication accumulator (calculator), and there are two, # 0 and # 1. The # 0
[0043]
[0044]
[0045]
In the arrangement of the arithmetic units shown in FIG. 1, the delay is performed by at least eight pipelines. However, when the arithmetic units are arranged as shown in FIG. 11, the delay can be halved. Since there are combinations that do not occur simultaneously in the sub-LUTs of each block shown in FIG. 1, they are grouped in parallel. The sub-LUT 0 and the
[0046]
In such a group, an accumulator in each block can be omitted as shown in FIG. 11, and a 4-
[0047]
According to this embodiment, the delay can be reduced.
In the embodiment shown in FIG. 1, since eight types of color conversion LUTs can be accessed, the interpolation method can be easily changed by controlling the weights. By using this, it is possible to switch between the 4-point interpolation and the 8-point interpolation of the first embodiment.
[0048]
As a method of interpolating with 8 points, there is Japanese Patent Laid-Open No. 8-114870 (multi-dimensional interpolation method and apparatus), but using this method is advantageous because the weighting factor is simplified. However, since the total sum of the weights is quadrupled, the calculation bit width needs to be increased accordingly. Furthermore, the denominator parameter of the divider at the final stage is also made variable. When the bit shift described later is used, the bit shift amount is changed. If the input is R, G, B or Y, M, C, then L using 4-point interpolation * a * b * Then, 8-point interpolation may be used. In this way, the vicinity of the input gray is accurately interpolated.
[0049]
Here, it is possible to obtain the interpolation value by bit shift by multiplying the table output in advance (2 to the power of n ÷ data grid interval). For example, if the output is 9 bits and the maximum value is 480 (255 × 32/17 times), it is sufficient to shift by 5 bits, and a divider that tends to be large can be omitted. However, the LUT capacity increases. If the maximum value is 240 (255 × 16/17 times), a 4-bit shift occurs, but the calculation accuracy slightly decreases.
[0050]
This method can also be realized by software. Although there is no effect with one MPU, when there are a plurality of MPUs, the color interpolation operation of this configuration can be effectively performed by calculating each step for each. For example, the calculation can be performed while relaying with a computer connected to the network. In the case of 4 dimensions, the same processing can be performed by arranging 16 arithmetic units, and in the case of N dimensions, it can be realized by arranging 2 N units.
[0051]
【The invention's effect】
As described above in detail, according to the present invention, the following effects are produced. (1) According to the invention described in
[0052]
(2) According to the second aspect of the present invention, the color conversion table is divided into 2 to the nth power when n colors are input, so that the number of interpolation calculations can be set freely.
[0053]
(3) According to the invention described in
[0054]
(4) According to the invention described in
[0055]
(5) According to the invention described in
(6) According to the invention described in
[0056]
Thus, according to the present invention, it is possible to provide a color interpolation method and a color interpolation apparatus capable of high-speed calculation. That is, the first is to minimize the total amount of memory and achieve the maximum computing capacity, and the second is to arrange the same type of units, facilitating parts and timing design, and third, to easily interpolate. The required number of grid points can be changed.
[Brief description of the drawings]
FIG. 1 is a block diagram showing an embodiment of the present invention.
FIG. 2 is an explanatory diagram of four-point interpolation using a triangular pyramid.
FIG. 3 is an explanatory diagram of division of an LUT.
FIG. 4 is a block diagram illustrating an embodiment of a bit distributor.
FIG. 5 is an explanatory diagram of a triangular pyramid cord.
FIG. 6 is a block diagram illustrating an example embodiment of a coefficient generator.
FIG. 7 is a block diagram illustrating an example embodiment of an address / weight generator.
FIG. 8 is a diagram showing the contents of a difference calculation indicator.
FIG. 9 is a diagram showing the contents of a difference calculation indicator.
FIG. 10 is a block diagram illustrating an embodiment of a sub-LUT and a multiplier.
FIG. 11 is a block diagram showing another embodiment of the present invention.
[Explanation of symbols]
1-bit sorter
2 Coefficient generator
3 Sub LUT and Multiplication Accumulator
4 Divider
10, 20, 30 arithmetic unit
Claims (6)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001146327A JP4288865B2 (en) | 2001-05-16 | 2001-05-16 | Color interpolation method and color interpolation apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001146327A JP4288865B2 (en) | 2001-05-16 | 2001-05-16 | Color interpolation method and color interpolation apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002344757A JP2002344757A (en) | 2002-11-29 |
JP4288865B2 true JP4288865B2 (en) | 2009-07-01 |
Family
ID=18991998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001146327A Expired - Fee Related JP4288865B2 (en) | 2001-05-16 | 2001-05-16 | Color interpolation method and color interpolation apparatus |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4288865B2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4165537B2 (en) | 2005-06-29 | 2008-10-15 | ブラザー工業株式会社 | Color conversion apparatus and color conversion program |
JP5327355B2 (en) * | 2012-05-07 | 2013-10-30 | コニカミノルタ株式会社 | Color adjustment method and color adjustment apparatus |
JP5942934B2 (en) | 2013-07-09 | 2016-06-29 | 富士ゼロックス株式会社 | Image processing apparatus and program |
-
2001
- 2001-05-16 JP JP2001146327A patent/JP4288865B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002344757A (en) | 2002-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5475510A (en) | Method for transforming color signals and apparatus for the method | |
JP4288865B2 (en) | Color interpolation method and color interpolation apparatus | |
GB2332329A (en) | Pruned and non-pruned tetrahedral interpolation for colour space conversion | |
CN109379191B (en) | Dot multiplication operation circuit and method based on elliptic curve base point | |
JP4429626B2 (en) | Method and system for calculating function value of input node based on function value of known node | |
US5999962A (en) | Divider which iteratively multiplies divisor and dividend by multipliers generated from the divisors to compute the intermediate divisors and quotients | |
JPH11238126A (en) | Common interpolating circuit for radial interpolation with asymmetrical pruning and tetrahedral interpolation with asymmetrical pruning | |
JP6448410B2 (en) | Data conversion apparatus, control method therefor, and program | |
JP3446497B2 (en) | Color conversion method | |
JP5164215B2 (en) | Data converter | |
GB2332328A (en) | Pruned and non-pruned radial interpolation for colour space conversion | |
JPH11238127A (en) | Common interpolating circuit for pruning radial interpolation and pruning tetrahedral interpolation | |
JPH09153130A (en) | Method and device for converting color | |
JP5987650B2 (en) | Color conversion device | |
JPH09172554A (en) | Color look up table | |
JP3871027B2 (en) | Color data converter | |
JP4402523B2 (en) | DATA CONVERSION METHOD, DATA CONVERSION DEVICE, PROGRAM, AND STORAGE MEDIUM | |
JP3548250B2 (en) | Data conversion device and data conversion method | |
Vondran | Radial and Pruned Tetrahedral Interpolation Techniques | |
JP2007174392A (en) | Data converting apparatus, control method and program for the data converting apparatus | |
JP5757108B2 (en) | Image processing apparatus and program | |
EP1098507A2 (en) | Image processing apparatus | |
JP2001036755A (en) | Color conversion circuit | |
JP2002027267A (en) | Color signal converter | |
JPH08321956A (en) | Data converter and signal processing method for data converter |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070123 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080307 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080325 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20081202 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090204 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20090210 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090310 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090323 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120410 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130410 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140410 Year of fee payment: 5 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |