JP3927715B2 - Color conversion method and color conversion apparatus - Google Patents
Color conversion method and color conversion apparatus Download PDFInfo
- Publication number
- JP3927715B2 JP3927715B2 JP37428198A JP37428198A JP3927715B2 JP 3927715 B2 JP3927715 B2 JP 3927715B2 JP 37428198 A JP37428198 A JP 37428198A JP 37428198 A JP37428198 A JP 37428198A JP 3927715 B2 JP3927715 B2 JP 3927715B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- data
- storing
- block
- blocks
- 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
- Image Processing (AREA)
- Facsimile Image Signal Circuits (AREA)
- Color Image Communication Systems (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、ルックアップテーブル(以下、「LUT」ともいう)に補間演算処理を併用して複数(多次元)の色信号を別の色信号に変換する色変換方法および色変換装置に関する。
【0002】
【従来の技術】
ディジタル化された画像信号のガンマ変換やlog変換といった非線形変換は、LUTを用いて行なわれることが多い。これは、上述のような非線形変換を演算回路で求めようとすると、その演算が比較的複雑なものになり、また、処理時間も長くなるからである。また、このようなLUTは、例えば、8ビットのビデオ信号に何らかの非線形変換を行なう場合、256バイトの容量のメモリがあれば実現することが出来る。因に、この8ビットビデオ信号に対する変換は1つの画像信号を別の性質のもう1つの画像信号に変換するものであるため、そこで使用されるLUTは1次元LUTと呼ばれる。
【0003】
ところで、最近のデスクトップパブリッシング(以下、「DTP」と略す)環境の著しい進歩に伴い、誰もが容易にカラー画像をあつかうことが出来るようになりつつある。DTPにおけるカラー画像の入力機器は、スキャナ、ビデオカメラ等が主であり、出力機器はインクジェット、染料熱昇華型あるいは電子写真等のそれぞれの方式による各種カラープリンタ等である。これらのカラー入,出力機器は、それぞれ固有の色空間を有しており、例えばあるスキャナで得たカラー画像データを、そのまま別のカラープリンタに転送して、画像を出力した場合、その画像の色がスキャナによって読取られたオリジナルの画像の色と一致することはほとんどない。両者の色を一致させるには、いわゆる入力デバイス(入力機器)の色空間を、出力デバイス(出力機器)の色空間に変換するといった処理が必要になる(以下では、この処理を「色変換処理」と称す)。
【0004】
この色変換処理は、具体的には、入力γ補正,輝度濃度変換,マスキング,黒生成,UCR,出力γ補正等の一連の画像処理の全体、もしくはその中の一定の処理をいうが、入力デバイスの3色(一般的には、Red,Blue,Greenの3色、以下、それぞれ「R」,「G」,「B」と略す)の画像信号を同時に参照して、出力デバイス側の3色(例えば、シアン,マゼンタ,イエロー)あるいは4色(例えば、シアン,マゼンタ,イエロー,ブラック)の画像信号に変換するものである。
【0005】
この入力デバイスの3色の画像信号を、出力デバイスの複数色中の1色に変換する処理を、LUTだけを用いて行なうとすると、画像信号1色が8ビットで表わされる場合、入力24ビット、出力8ビットのLUTとなり16M(メガ)バイトの容量のメモリが必要になる。その上、出力デバイスの色数分だけ上述のメモリが必要になるため、実際のメモリ容量は、48〜64Mバイトといった大容量になり、コスト的にも実用的ではない。
【0006】
そこで、LUTを用いた色変換処理では、補間処理を併用してするのが一般的であり、これにより、LUTのためのメモリ容量の大幅な削減を実現している。
【0007】
LUTを用いた入,出力の対応付けに補間演算を用いた色変換処理の一従来例を以下に説明する。
【0008】
まず、入力色データとして、例えばR,G,Bの3つの色信号(各色n+mビット)をそれぞれXi=Xh・2m +Xf、Yi=Yh・2m +Yf、Zi=Zh・2m +Zfと表わす。ここで、Xh,Yh,ZhはXi,Yi,Ziデータの各々の上位nビット信号を表わし、Xf,Yf,ZfはXi,Yi,Ziデータ各々の下位mビット信号を表わす。
【0009】
LUTには、Xh=0,1,2,・・・,2n −1、Yh=0,1,2,・・・,2n −1、Zh=0,1,2,・・・,2n −1の全ての組み合わせ(23n通り)のそれぞれに対して、変換後の色データが格子点データとして格納されており、この格子点データはXh,Yh,Zhを連結した3nビットのアドレス信号によって読みだされる。
【0010】
入力色信号データ(Xi,Yi,Zi)各々の下位mビット、即ちXf,Yf,Zfが、全て“0”の場合は、上記のアドレス信号によってLUTから読みだされる格子点データが、そのまま変換後の色データとなる。そうでない場合には、Xf,Yf,Zfの値に応じて補間処理が行なわれる。
【0011】
この補間演算処理は、格子点データをいくつ用いるか、又、どのような関係の格子点データを用いるかによって、いくつかの方法がある。一般的に、格子点データを多く用いると補間精度は向上するが補間演算処理が複雑になり、処理時間が長くなる。補間精度をそれほど低下させずに比較的簡易な演算処理が可能な補間方法としては、4点補間と称されるものが従来より知られている。これは4つの格子点データを用いて補間処理を行なうものであり、例えば特公昭58−16180号公報において開示されている。以下にその概略を説明する。
【0012】
下位ビット信号Xf,Yf,Zfが3つとも0でない場合、すなわち、Xf≠0、Yf≠0、Zf≠0の場合、変換前の色データは、図1に示すように、8つの格子点で形成される立方体の中に位置する。この立方体は、上位ビット信号(Xh,Yh,Zh)で指定される部分補間空間をなすものであり、また、格子点の間隔は2m であって、下位ビット信号Xf,Yf,Zfによって、この立方体の各格子点間を2m 個に分割した点の1つが規定される。
【0013】
図1に示す立方体を3つの平面(Xf=Yfで規定される平面、Yf=Zfで規定される平面、およびZf=Xfで規定される平面)で分割すると、6つの4面体が定義され、各4面体は、例えば図2に示すように、4つの格子点を有する。変換される入力色データにより定義される上述の部分補間空間上の点(Xi,Yi,Zi)はこの6つの4面体のどれか1つに含まれることになる(境界面はその境界を共有する4面体のいずれかに含まれるものとする)。入力色データ(Xi,Yi,Zi)がいずれの4面体に属するかは、Xf,Yf,Zfの大小関係で定まる。例えば入力色データにXf>Yf>Zfの関係がある場合、入力色データは図2に示す4面体内に位置し、補間処理に用いられる格子点の座標は(Xh,Yh,Zh)、(Xh+1,Yh,Zh)、(Xh+1,Yh+1,Zh)、(Xh+1,Yh+1,Zh+1)の4点となる。各々の格子点座標についてLUTにより対応付けられるデータ、すなわち格子点データをdd(X座標,Y座標,Z座標)と表わし、入力色データ(Xi,Yi,Zi)に対してLUTを用いた補間後のデータをP(Xi,Yi,Zi)と表わすとき、この補間後のデータPは、
となる。上記補間式は、前述した6つの4面体毎に異なることは勿論である。
【0014】
以上のように、補間演算処理は、(1)式に示すように、各々の4面体に対応する4つの格子点データと入力色データの下位ビット信号から生成される係数データとの積ならびに4つの項の加算処理からなる。
【0015】
【発明が解決しようとする課題】
しかしながら、上記(1)式からも明らかなように、補間演算処理には、(Xh,Yh,Zh),……,(Xh+1,Yh+1,Zh+1)等、LUTから格子点データを読み出す際に必要なアドレスを演算したり、Xf,Yf,Zfの大小関係を判定したりする比較処理が必要である。この大小関係により、用いる格子点データや処理内容が異なり、このため、例えば複数画素について補間演算を並列に行うことが困難であるという問題がある。
【0016】
すなわち、上記(1)式の演算精度は16ビットもあれば十分である。具体的には、格子点データのビット数は8〜10ビット、入力下位ビットデータXf,Yf,Zfのビット数は3〜5ビットである。また、一般的なその他の画像処理についてもほとんどの場合、演算精度は16ビットもあれば、十分であり、場合によっては、8ビットの演算精度があればよいこともある。
【0017】
これに対して、最近のCPUの性能向上には著しいものがあり、その汎用レジスタが32ビットあるいは64ビットの長さを有したものであることが通常となりつつある。このようなレジスタ長は上記補間に係る画像処理においては、オーバースペックであり、CPUの性能を有効に活用していないことにもなる。
【0018】
一方で、情報処理に関してやりとりされる情報は、以前のテキストベースから、画像ベースへ変わりつつある。このような環境では、JPEGやMPEGといった画像圧縮伸張処理といったものがより重要になると共に、処理の高速性も要求されることになる。こうしたニーズに応えるため、マルチメディアに対応した機能を有するCPUが提供されている。すなわち、これらのCPUでは、64ビットのレジスタを、32ビット×2、16ビット×4あるいは8ビット×8という構成で使用することにより、精度の低い演算を一度に複数個並列処理したり、一度に積和演算を行なうことができる。
【0019】
例えば、上述のJPEGやMPEG等の処理に、上述のマルチメディア対応機能を有効に活用した例は、よく知られたところである。また、画像中の各画素に同じような演算処理を行なうフィルタリング等は、並列処理化が容易で、上記マルチメディア対応機能を有効に活用することもできる。
【0020】
しかしながら、下位ビットデータの大小関係のような条件分岐処理を伴う上述の補間演算は、上記マルチメディア対応機能を有効に活用することができず、処理の高速化を図ることが比較的難しいという問題があった。
【0021】
本発明は、このような問題を解消するためになされたものであり、その目的とするところは、例えばマルチメディア対応機能を有するCPU性能を十分に活用して補間演算の並列処理を実現することが可能な色変換方法および色変換装置を提供することにある。
【0022】
【課題を解決するための手段】
そのために本発明では、ルックアップテーブルに補間演算を併用することによって色変換を行う色変換方法であって、入力色データのうち、当該入力色データの補間空間における位置をその大小関係によって示すデータと、入力色データのうち、ルックアップテーブルのアドレスを示すデータおよび前記位置を大小関係によって示すデータに基づいてルックアップテーブルから読出される格子点データを、前記大小関係に応じて予じめ定められた複数のレジスタに格納し、該複数のレジスタ間において予じめ定められた補間演算式に従い当該レジスタが格納するデータを用いて補間演算を行う、ステップを有したことを特徴とする。
【0023】
また、ルックアップテーブルに補間演算を併用することによって色変換を行う色変換装置であって、入力色データのうち、当該入力色データの補間空間における位置をその大小関係によって示すデータと、入力色データのうち、ルックアップテーブルのアドレスを示すデータおよび前記位置を大小関係によって示すデータに基づいてルックアップテーブルから読出される格子点データを、前記大小関係に応じて予じめ定められた複数のレジスタに格納する格納手段と、該複数のレジスタ間において予じめ定められた補間演算式に従い当該レジスタが格納するデータを用いて補間演算を行う演算手段と、を有したことを特徴とする。
【0024】
以上の構成によれば、入力色データのうちその補間空間における位置を大小関係によって示す、例えば下位ビットデータと、この大小関係に応じてルックアップテーブルから読出される格子点データとが、上記大小関係に応じて予じめ定められた複数のレジスタに格納され、これらのレジスタ間で予じめ定められた補間演算式に従い、それらのレジスタに格納されるデータを用いて補間演算を行うので、本来、上記大小関係に応じて異なる補間演算式もしくはこの式の各項の演算は、各レジスタ間の演算関係を規定する一つの式に統一でき、これにより、例えば複数画素間の補間演算や演算式の各項の計算を並列に行うことができる。
【0025】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を詳細に説明する。
【0026】
図3は、本発明の一実施形態として以下で示す実施形態1〜4の色変換処理で行われる処理やハードウェア構成の概略を示すブロック図である。
【0027】
同図に示すように、本発明の一実施形態による色変換処理は、後述のように補間演算に用いられるレジスタ群301と格子点データを格納したイエロー(Y),マゼンタ(M),シアン(C),ブラック(K)のそれぞれに対応したルックアップテーブル(以下、「LUT」という)302Y,302M,302C,302Kを用いて行われる。
【0028】
大小判別部303では、例えば、R,G,B各色毎の8ビットの入力色データXi,Yi,Ziのうち、mビットの下位ビットデータXf,Yf,Zfに基づいて、それらの大小関係が判別される。また、アドレス生成部304では、入力色データのうちnビットの上位ビットデータに基づき、上記大小関係情報を参照して4点補間に係る格子点データをLUTから読出すためのアドレスが生成される。なお、この大小判別部303およびアドレス生成部304は、CPUの実行によるソフトウェアとして構成されてもよく、あるいは、ハードウェアとして構成されてもよい。
【0029】
アドレス生成部304によって生成された各4つのアドレスに基づき、それぞれの色のLUT302Y,302M,302C,302Kからはそれぞれ4つの格子点データが読出されて、後述のようにレジスタ群301の所定のレジスタに格納される。また、レジスタ群301には、下位ビットデータXf,Yf,Zfも、後述のように大小関係に応じて入力し所定のレジスタに格納される。
【0030】
レジスタ群301では、以下の各実施形態で詳述されるように、CPUの制御の下、レジスタ間での減算、積和演算、シフト等が行われることによって補間演算が行われ、最終的に変換色データPを得ることができる。
【0031】
ここで、以下で説明する各実施形態で用いる補間演算式について説明する。まず、補間演算式を簡潔に表現するため、着目する補間立方体の頂点に位置する格子点データを図1のように、A,B,C,D,E,F,G,Hと表わす。そして、この補間演算式は、3つの入力色データXi,Yi,Zi各々に下位mビットデータXf,Yf,Zf間の大小関係によって、すなわち、図2に示すような図面体のうち入力色データXi,Yi,Ziがいずれの4面体に属するかによって、次の異なる6つの補間式のいずれかによって表わされる。
【0032】
また、上記6つの補間式は、それらを単に変形することによって以下の様に表わすこともできる。
【0033】
同様に、さらなる変形によって以下の様に表わすこともできる。
【0034】
(c−1)〜(c−6)は、(b−1)〜(b−6)における第2〜4項を、単にXf,Yf,Zfの順に並び替えたものである。
【0035】
並列処理を実現するための方法は、(a−1)〜(a−6)、(b−1)〜(b−6)、(c−1)〜(c−6)のどの式に基づくかによって、その実現方法は異なるが、以下の第1、第2の実施形態では、(b−1)〜(b−6)式に基づき、第3実施形態では、(a−1)〜(a−6)式に基づき、そして、第4実施形態では、(c−1)〜(c−6)式に基づき、それぞれレジスタを利用して補間演算を行う方法について説明する。
【0036】
(第1の実施形態)
上述したように、本実施形態では、(b−1)〜(b−6)式に基づき、並列処理を実現する方法について説明する。本実施形態の並列処理の概要は次の通りである。
【0037】
(d−1)図3にて上述したCPUの並列演算可能な演算レジスタを用い、そのレジスタ長を64ビットとし、これを、16ビット×4個のレジスタとして使用する。
【0038】
(d−2)色変換される入力色データは、3色(Xi,Yi,Zi)とする。
【0039】
(d−3)処理に係る画像の連続する4画素の色変換処理について並列に処理する。
【0040】
なお、以下の説明では、上記4画素を区別するため、連続する4画素のいずれに係るデータかを添字1,2,3および4で示す。例えば図1に示す格子点データAは、A1,A2,A3,A4と表記する。
【0041】
本実施形態の色変換処理は、以下の手順を行なわれる。図4(a)〜(j)は、それぞれこの手順で用いられるレジスタおよびその内容を示す図である。
【0042】
(1)4つの各画素ごとに、入力色データXi,Yi,Ziの上位ビットデータから部分補間空間(立方体、図1参照)を定め、各立方体中のAに位置する格子点データdd(Xh,Yh,Zh)を、図3に示すLUTから読出し、図4(a)に示すように、各々16ビットデータとして、A1,A2,A3,A4の順に連結し、上述したようにCPUの並列演算可能なレジスタ401に格納する。
【0043】
(2)次に、各画素ごとに入力色データの下位ビットデータの最大値を求め、図4(b)に示すように、それを4つ連結し、レジスタ402に格納する。図4(b)は、1画素目の最大値がYf、2画素目の最大値がXf、3画素目の最大値がZf、4画素目の最大値がXfである例を示している。
【0044】
(3)さらに、各画素毎の上記最大値に応じて、最大値がXfの場合は、(1)の処理で定めた部分補間空間の格子点データB=dd(Xh+1,Yh,Zh)を、最大値がYfの場合は格子点データC=dd(Xh,Yh+1,Zh)を、最大値がZfの場合は格子点データE=dd(Xh,Yh,Zh+1)を、それぞれ選択してLUTから読出し、図4(c)に示すように、それらを4つ連結し、レジスタ403に格納する。図4(c)に示す例では、図4(b)に示す画素毎の最大値となる下位ビットデータに対応して、C1,B2,E3,B4がレジスタ403に格納される。
【0045】
(4)同様に各画素ごとに入力色データの下位ビットデータの中央値を求め、図4(d)に示すようにそれらを4つ連結し、レジスタ404に格納する。図4(d)に示す例は、1画素目の中央値がZf、2画素目の中央値がYf、3画素目の中央値がXf、4画素目の中央値がZfである場合を示している。
【0046】
(5)次に、最大値と中央値が、Xf,Yf,Zfのいずれの組合せになるかに基づいて、格子点データD=dd(Xh+1,Yh+1,Zh),F=dd(Xh+1,Yh,Zh+1),G=dd(Xh,Yh+1,Zh+1)のいずれかを各画素ごとに選択し、LUTから読出し、図4(e)に示すように、それらを4つ連結し、レジスタ405に格納する。例えば図4(e)に示す1画素目の内容は、図4(b),(d)に示すYfとZfの組合せに対応してGが選択される。同様に、2画素目から4画素目については、D2,F3,F4がレジスタ405に格納される。
【0047】
(6)同様に各画素ごとに入力色データの下位ビットデータの最小値を求め、図4(f)に示すように、それらを4つ連結しレジスタ406に格納する。図4(f)に示す例は、1画素目の最小値がXf、2画素目の最小値がZf、3画素目の最小値がYf、4画素目の最小値がYfである場合を示している。
【0048】
(7)最後に、各画素毎に、部分補間空間の格子点データH=dd(Xh+1,Yh+1,Zh+1)を、図4(g)に示すように、4つ連結したH1,H2,H3,H4をレジスタに格納する。
【0049】
以上説明した(1)〜(7)の処理は、その説明からも明らかなように、入力色データで定まる部分補間空間の中から、入力色データの下位ビットデータの大小関係に基づいて補間演算に用いる、4面体を定める処理、もしくはその4面体の格子点データを用意する処理である。本実施形態では、このような処理を所定のレジスタに格納する処理によって置き換えたものともいえる。
【0050】
(8)以上の格納処理の後、各対応する画素のレジスタ毎に、まず、図4(c)に示すレジスタ403の値から、図4(a)に示すレジスタ401の値を引き、次に図4(b)に示すレジスタ402の値を掛け、これをレジスタ408に保持する(図4(h))。
【0051】
(9)同様に、図4(e)に示すレジスタ405の値から、図4(c)に示すレジスタ403の値を引き、次に、図4(d)に示すレジスタ404の値を掛け、これをレジスタ409に保持する(図4(i))。
【0052】
(10)さらに、図4(g)に示すレジスタ407の値から、図4(e)に示すレジスタ405の値を引き、図4(f)に示すレジスタ406の値を掛け、これをレジスタ410に保持する(図4(j))。
【0053】
以上の(8)〜(10)の処理によって、各レジスタ間の差を演算し、その後、レジスタ間の積を演算する処理によって、上記(b−1)〜(b−6)式におけるかっこ内の第2〜4項がそれぞれ求められたことになる。
【0054】
(11)次に、図4(a)に示すレジスタの値を、それぞれ16ビットの中でmビット左へシフトして、上記(b−1)〜(b−6)式のかっこ内第1項、すなわち2m Aが形成され上記で求めた図4(h)、(i)および(j)でそれぞれ示すレジスタ408,409および409の値を加算する。さらに、この結果について、mビット右へシフトする。これによって、4画素分の補間演算が並列に処理されることにより4画素分同時に変換後の例えばシアンについての色データPを得ることができる。
【0055】
以上説明したように、本実施形態では、入力色データの下位ビットデータの大小関係(最大値,中央値,最小値)に応じて、格子点データおよびその大小関係に係る数である下位ビットデータを格納するレジスタを定めていることにより、これら所定のレジスタに上記大小関係に応じてそれぞれのデータを格納する処理((1)〜(7)の処理)を行うだけで、その後の補間演算((8)〜(11)の処理)自体には、上記大小関係もしくはその判別処理が現われないようにすることができる。このことは、本実施形態の上記(8)〜(11)で行われる補間処理が、上記大小関係に応じて異なる6つの(b−1)〜(b−6)式を、1つの統一的な補間式として扱かい、これに従い演算を行うことと等価であることを意味する。この結果、画素毎に入力色データ、従って、その下位ビットデータで定まる大小関係が異なるにもかかわらず、1つの上記統一的な補間式に従い4画素分の補間演算を並列に行うことを可能としている。
【0056】
なお、以上の説明からも明らかなように、並列に処理される画素数は、レジスタのレジスタ長によって制約を受けて定まるものであり、本発明の本質をなすものではない。従って、レジスタ長が許せば、4画素以上の並列処理に可能であり、また、レジスタ長に応じて4画素より少ない画素数での並列処理も本発明の適用範囲である。
【0057】
以上のようにして得る、色変換データが、1画素4色(シアン(c)、マゼンタ(m)、イエロー(y)、ブラック(k))の場合は、上記処理がさらに3色分実行される。例えば、以上説明した処理がシアンに相当し、次の色がマゼンタの場合、図4(a)のレジスタ401にはマゼンタに相当する格子点データ(Am1Am2Am3Am4)がロードされ、図4(c)レジスタ403には(Cm1Bm2Em3Bm4)が、図4(e)のレジスタ405には(Gm1Dm2Fm3Fm4)が、そして、図4(g)のレジスタ407には、(Hm1Hm2Hm3Hm4)データがロードされ、また、その他のレジスタに対応する下位ビットデータがロードされる。その後は、上記(8)〜(11)と同様な並列演算がなされてマゼンタ色の補間演算が実行される。次に、イエロー、ブラック色の補間処理が同様になされる。以下、次4画素(1画素4色)毎に並列処理がなされ、色変換が行われていく。
【0058】
以上の本実施形態の並列処理によって、従来のシーケンシャルな処理に比べて単純計算で4倍の高速化を計ることができる。
【0059】
(第2実施形態)
本発明の第2の実施形態は、上述した第1実施形態のように4つの画素に対してこれらの色変換処理を並列に行なうのではなく、1画素づつ色変換処理を行なうものであるが、前述したCPUの並列演算機能を有効に活用し、補間演算処理を高速に行なう方法に関するものである。
【0060】
本実施形態では、前述の(b−1)〜(b−6)式に基づいて補間演算処理を行ない、その場合の1画素毎に行なう処理は、以下のようになる。
【0061】
(1)4つの格子点データをアクセスするためのアドレスを計算する。
【0062】
(2)格子点データの差分値に掛ける係数を大きい順に並べレジスタに格納する。
【0063】
(3)上記アドレスに基づいて4つの格子点データを読み出しレジスタに格納する。
【0064】
(4)並列演算機能を用いて補間演算処理を行ない、変換色データを求める。
【0065】
上記(1)および(2)の処理は、Xf,Yf,Zfの大小関係に基づいて条件分岐して行なう処理であり、(3)および(4)の処理は、大小関係に基づく条件分岐を必要としないで行なう処理である。すなわち、下位ビットデータの大小関係による条件分岐が現われる処理は、上述の第1実施形態と同様、それぞれの所定のレジスタへ格子点データ等を格納する処理によって置き換えるものである。
【0066】
上述(1)および(2)の処理を示すフローチャートを図5に示す。
【0067】
同図に示すように、まずステップS501では、格子点データAを読み出すためのアドレス情報Adr Aを生成する。すなわち、入力色データXi,Yi,Ziの各上位nビットデータXh,Yh,Zhを連結して得た3nビットの値をAdr Aとする。次に、ステップS503では、格子点データHを読み出すためのアドレス情報Adr Hを生成する。この処理は、上記Adr Aに(22n+2n +1)を加算してAdr Hとする。
【0068】
次に、ステップS505〜513では、下位ビットデータXf,Yf,Zfの大小関係を判別する処理を行う。すなわち、ステップS505は、Xf≧Yfが成り立つか否かを判定する比較処理、ステップS507は、Yf≧Zfが成り立つか否かを判定する比較処理、ステップS509は、Xf≧Zfが成り立つか否かを判定する比較処理、ステップS511は、Zf≧Yfが成り立つか否かを判定する比較処理、ステップS513は、Xf≧Zfが成り立つか否かを判定する比較処理である。
【0069】
以上の各判定に基づき、それぞれステップS521では、ステップS505とステップS507が成り立つ(肯定判断)時に行なう処理、ステップS522では、ステップS505が成り立ち、ステップS507が成り立たたず、ステップS509が成り立つ時に行なう処理、ステップS523では、ステップS505が成り立ち判定507と判定509が成り立たたない時に行なう処理、ステップS524では、ステップS505が成り立たたず、ステップS511が成り立つ時に行なう処理、ステップS525では、ステップS505とステップS501が成り立たたず、ステップS513が成り立つ時に行なう処理、ステップS526では、ステップS505とステップS507とステップS509が全て成り立たない時に行なう処理を行う。
【0070】
すなわち、Xf,Yf,Zfの大小関係が、Xf≧Yf≧Zfの時はステップS521で上記大小関係に応じた四面体の残りの2つの格子点アドレスが生成されるとともに下位ビットデータの大小関係に応じたレジスタへの格納が行われる。同様に、Xf≧Zf>Yfの時はステップS522の処理、Zf>Xf≧Yfの時はステップS523の処理、Zf≧Yf>Xfの時はステップS524の処理、Yf>Xf≧Zfの時はステップS525の処理、Yf>Zf>Xfの時はステップS526の処理がそれぞれ行われる。
【0071】
図6は本実施形態におけるレジスタの構成を示す図である。以上のステップS521〜S526の処理で求められた下位ビットデータ等は、同図に示すレジスタR0に格納される。すなわち、レジスタR0(64ビット)の値は、ステップS521では、2m,Xf,Yf,Zfの値(各16ビット)を連結した値、ステップS522では、2m,Xf,Zf,Yfの値を連結した値、ステップS523では、2m,Zf,Xf,Yfの値を連結した値、ステップS524では、2m,Zf,Yf,Xfの値を連結した値、ステップS525では、2m,Yf,Xf,Zfの値を連結した値、ステップS526では、2m,Yf,Zf,Xfの値を連結した値となる。
【0072】
また、上記(1)に述べたアドレスの計算結果は、格子点Aに隣接する格子点データを読み出すアドレスをAdr next A、格子点Hに隣接する格子点データを読み出すアドレスをAdr before Hとすると、ステップS521では、Adr next A=Adr A+22n,Adr before H=Adr next A+2n ,ステップS522では、Adr next A=Adr A+22n,Adr before H=Adr next A+1,ステップS523では、Adr next A=Adr A+1,Adr before H=Adr next A+22n,ステップS524では、Adr next A=Adr A+1,Adr before H=Adr next A+2n ,ステップS525では、Adr next A=Adr A+2n ,Adr before H=Adr next A+22n,ステップS526では、Adr next A=Adr A+2n ,Adr before H=Adr next A+1となる。
【0073】
以上のステップS521〜526の処理のいずれかが下位ビットデータの大小関係に応じて行われた後は、上述の(3)の処理を行なう。すなわち、ステップS527において、以上の処理で選択された4面体の4つの格子点データを読み出しこれらをレジスタに格納する処理を行う。
【0074】
この処理では、途中結果と最終読み出し結果の2つの値を図6に示すレジスタR1,R2にそれぞれ格納する。すなわち、アドレス値Adr Aで読み出される格子点データを[Adr A]とすると、レジスタR1には、0,[Adr A][Adr next A][Adr before H](各16ビット)を連結した値、レジスタR2には、[Adr A][Adr next A],[Adr before H],[Adr H]を連結した値をそれぞれ格納する。ここで、レジスタR1の内容を16ビット左へシフトした後に、Adr Hから読み出した格子点データHを挿入したものがレジスタR2の内容である。
【0075】
最後にステップS528において、上記(4)に述べた補間演算処理を行なう。図6に示すように、まず、R3=R2−R1の処理を16ビット単位で行なう。これによって前述の(b−1)〜(b−6)式におけるかっこ内の各項がレジスタR3に格納されたことになる。これにより、下位ビットデータの大小関係に基づく異なる6つの補間式にかかわらず、補間演算自体を1つの統一的な処理によって行うことが可能となる。
【0076】
次に、上記のレジスタR3とレジスタR0との間でそれぞれの内容の積和演算を行ない、その結果をレジスタR4に格納する。これにより、レジスタR4の上位32ビットには、対応する2つの16ビットデータの積和演算結果が格納され、下位32ビットにも、対応する2つの16ビットデータの積和演算結果が格納される。そして、この2つの積和を加算し、mビット左へシフトすることによって、変換された色データPを得ることができる。
【0077】
以上説明した1つの入力データ(Xi,Yi,Zi)に対する色変換処理は、変換によって生成される。例えば黄色、シアン、マゼンタ、黒の4色について点順次で行うが、この場合、前述の(1)および(2)の処理は、4色共通で1回のみ行なえば済む。これは、LUTから格子点データを読出すためのアドレスは、入力色データ(例えばR,G,Bの各値)がこれら4色の変換データを得る間変化しないためである。一方、前述の(3)および(4)の処理は変換して得られる色毎にLUTの内容(格子点データ)が異なることから、これらの処理を4色分繰り返すことで、4色分の変換色データを求めることができる。
【0078】
この場合に、上記繰り返し処理を図7に示すように、ループ制御によるものとすると、条件判定(ステップS707)が存在するので処理時間が増す。これに対し、本実施形態では、図8のように、格子点データを読み出して各色毎の図6に示すレジスタへ格納する処理を4色分まとめて行ない(ステップS801〜S807)、その後補間演算処理を4色分まとめて行なうようにすればよい。
【0079】
これにより、1画素4色の補間演算を、従来方式に比べ大幅な高速化を図ることができる。
【0080】
(第3の実施形態)
本発明の第3の実施形態は、前述の(a−1)〜(a−6)式に基づいて補間演算処理を行なうものである。
【0081】
図9は、下位ビットデータの大小関係の判別がなされた後の本実施形態の補間演算処理のうち、Yf≧Zf≧Xfの場合の処理をレジスタ構成によって説明する図である。
【0082】
レジスタR10には、大きさの順に、下位ビットデータ等2m ,Yf,Zf,Xfがロードされる。そしてレジスタR11は、レジスタR10の内容を16ビット左にシフトして、Yf,Zf,Xf,0を格納したものである。次に、レジスタR10−レジスタR11をその内容について実行し、その結果をレジスタR12に格納する。次に、式(a−5)に示されている格子点データA,C,G,HがレジスタR3に格納される。そして、以上のレジスタ間で積和演算(2m −Yf)・A+(Yf−Zf)・Cおよび(Zf−Xf)・C+Xf・Hがなされ、その結果がレジスタR14に格納される。さらに、レジスタR14の上位32ビットの値と下位32ビットの値の加算演算がなされた後、mビット右シフト演算されて、変換色データが得られる。
【0083】
なお、上記演算においては、減算演算結果と積和演算結果は、説明を分かり易くするために各々レジスタR12,R14に格納されるが、演算結果の格納レジスタは、R12,R14に限られたことではなく、空いているレジスタならばどこでも良い。
【0084】
以上の演算についてシアン,マゼンタ,イエロー,ブラックの各色について行う場合、各色のA,C,G,Hに相当すめ格子点データがロードされる点や下位ビットデータが大小関係に応じて格納される処理は、上述の第2実施形態と同様である。これにより、1画素4色の補間演算について、従来方式に比べ大幅な高速化を図ることができる。
【0085】
(第4の実施形態)
本発明の第4の実施形態は、前述の(c−1)〜(c−6)式に基づいて補間演算処理を行なうものである。
【0086】
図10は、下位ビットデータがYf≧Zf≧Xfの場合について本実施形態の補間演算をレジスタ構成によって示す図である。
【0087】
前述の(c−1)〜(c−6)式に示されているように、レジスタR100には、格子点データA,H,C,Gが、またレジスタR101には、格子点データ0,G,A,Cが格納される。そして、その内容についてレジスタR0−レジスタR1が演算され、その結果が、レジストR102に書き込まれる。
【0088】
また、レジストR3には、2m ,Xf,Yf,Zfが格納される。そして、積和演算A+Xf(H−G)およびYf(C−A)+Zf(G−C)が並列に実行される。さらに、それらの結果の加算演算およびmビット右シフト演算がなされて、変換色データが得られる。
【0089】
なお、上記演算において、減算演算結果と積和演算結果は、説明を分かり易くするために各々レジストR102,R104に格納されるが、演算結果の格納レジストは、R102,R104に限られたことではなく、空いているレジスタならばどこでも良い。
【0090】
以上の演算について、シアン,マゼンタ,イエロー,ブラックの各色について行う場合、各色毎の格子点データおよび下位ビットデータの格納処理は、上述した第2実施形態と同様になされる。これにより、1画素4色の補間演算を従来方式に比べ大幅に高速化することができる。
【0091】
<他の実施形態>
本発明は上述のように、複数の機器(たとえばホストコンピュータ、インタフェース機器、リーダ、プリンタ等)から構成されるシステムに適用しても一つの機器(たとえば複写機、ファクシミリ装置)からなる装置に適用してもよい。
【0092】
また、前述した実施形態の機能を実現するように各種のデバイスを動作させるように該各種デバイスと接続された装置あるいはシステム内のコンピュータに、前記実施形態機能を実現するためのソフトウェアのプログラムコードを供給し、そのシステムあるいは装置のコンピュータ(CPUあるいはMPU)を格納されたプログラムに従って前記各種デバイスを動作させることによって実施したものも本発明の範疇に含まれる。
【0093】
またこの場合、前記ソフトウェアのプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、およびそのプログラムコードをコンピュータに供給するための手段、例えばかかるプログラムコードを格納した記憶媒体は本発明を構成する。
【0094】
かかるプログラムコードを格納する記憶媒体としては例えばフロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
【0095】
またコンピュータが供給されたプログラムコードを実行することにより、前述の実施形態の機能が実現されるだけではなく、そのプログラムコードがコンピュータにおいて稼働しているOS(オペレーティングシステム)、あるいは他のアプリケーションソフト等と共同して前述の実施形態の機能が実現される場合にもかかるプログラムコードは本発明の実施形態に含まれることは言うまでもない。
【0096】
さらに供給されたプログラムコードが、コンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後そのプログラムコードの指示に基づいてその機能拡張ボードや機能格納ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も本発明に含まれることは言うまでもない。
【0097】
【発明の効果】
以上説明したように、本発明によれば、入力色データのうちその補間空間における位置を大小関係によって示す、例えば下位ビットデータと、この大小関係に応じてルックアップテーブルから読出される格子点データとが、上記大小関係に応じて予じめ定められた複数のレジスタに格納され、これらのレジスタ間で予じめ定められた補間演算式に従い、それらのレジスタに格納されるデータを用いて補間演算を行うので、本来、上記大小関係に応じて異なる補間演算式もしくはこの式の各項の演算は、各レジスタ間の演算関係や規定する一つの式に統一でき、これにより、例えば複数画素間の補間演算が演算式の各項の計算を並列に行うことができる。
【0098】
この結果、マルチメディア対応機能を有するCPUの並列処理機能を有効に活用することが可能となり、シーケンシャルに色変換処理する場合に比べ処理速度を大幅に高速化できる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る、色変換処理で用いるLUTにおける入力色データと格子点データとの関係を示す模式図である。
【図2】上記LUTのうち補間演算に用いる4面体(4つの格子点)の一例を示す模式図である。
【図3】本発明の一実施形態に係る色変換処理の概略構成を示すブロック図である。
【図4】(a)〜(j)は、本発明の第1の実施形態に係り、4画素分の入力色データから4画素分の変換色データを並列に補間演算処理して求める処理をレジスタの構成によって示す図である。
【図5】本発明の第2の実施形態に係り、4つの格子点データをアクセスするためのアドレスを計算する処理と、格子点データの差分値に掛ける係数を大きい順に並べレジストに格納する処理を示すフローチャートである。
【図6】上記第2実施形態の色変換処理における補間演算処理をレジスタ構成によって説明する図である。
【図7】上記第2実施形態との比較例を示し、ループ処理を用いて1画素の入力色データを4色の色データに変換する処理を示すフローチャートである。
【図8】上記第2実施形態に係り、図7に示すループ処理を用いないで1画素の色データを4色の色データに変換する処理を示すフローチャートである。
【図9】本発明の第3実施形態に係る補間演算処理をレジスタ構成によって示す図である。
【図10】本発明の第4実施形態に係る補間演算処理のレジスタ構成によって示す図である。
【符号の説明】
301 レジスタ群
302Y,302M,302C,302K LUT(ルックアップテーブル)303 大小判別部
304 アドレス生成部
401,402,403,404,405,406,407,408,409,410,R0,R1,R2,R3,R4,R10,R11,R12,R13,R14,R100,R101,R102,R103,R104 レジスタ[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a color conversion method and a color conversion apparatus for converting a plurality of (multi-dimensional) color signals into different color signals by using a lookup table (hereinafter also referred to as “LUT”) together with an interpolation calculation process.
[0002]
[Prior art]
Nonlinear conversion such as gamma conversion and log conversion of a digitized image signal is often performed using an LUT. This is because if the non-linear transformation as described above is obtained by an arithmetic circuit, the calculation becomes relatively complicated, and the processing time becomes long. Such an LUT can be realized, for example, if there is a memory having a capacity of 256 bytes in the case of performing some nonlinear conversion on an 8-bit video signal. Incidentally, since the conversion to the 8-bit video signal is to convert one image signal into another image signal having a different property, the LUT used there is called a one-dimensional LUT.
[0003]
By the way, with recent remarkable progress in desktop publishing (hereinafter abbreviated as “DTP”) environment, anyone can easily handle color images. Color image input devices in DTP are mainly scanners, video cameras, and the like, and output devices are various color printers and the like based on respective methods such as ink jet, dye thermal sublimation, or electrophotography. Each of these color input / output devices has a unique color space. For example, when color image data obtained by a scanner is transferred to another color printer as it is and an image is output, The color rarely matches the color of the original image read by the scanner. In order to match the colors of both, it is necessary to perform processing such as converting the color space of the so-called input device (input device) into the color space of the output device (output device). ").
[0004]
Specifically, this color conversion processing refers to the entire series of image processing such as input γ correction, luminance density conversion, masking, black generation, UCR, output γ correction, etc., or a certain process within it. By simultaneously referring to image signals of three colors of devices (generally, three colors of Red, Blue, and Green, hereinafter abbreviated as “R”, “G”, and “B”, respectively), 3 on the output device side The image signal is converted into image signals of colors (for example, cyan, magenta, yellow) or four colors (for example, cyan, magenta, yellow, black).
[0005]
If the process of converting the image signals of the three colors of the input device into one of a plurality of colors of the output device is performed using only the LUT, when one color of the image signal is represented by 8 bits, the input is 24 bits. The output is an 8-bit LUT, and a memory with a capacity of 16 M (mega) bytes is required. In addition, since the above-described memories are required for the number of colors of the output device, the actual memory capacity is as large as 48 to 64 Mbytes, which is not practical in terms of cost.
[0006]
Therefore, in color conversion processing using an LUT, it is common to use interpolation processing together, thereby realizing a significant reduction in memory capacity for the LUT.
[0007]
A conventional example of color conversion processing using interpolation calculation for input / output correspondence using an LUT will be described below.
[0008]
First, as input color data, for example, three color signals of R, G, and B (each color n + m bits) are respectively Xi = Xh · 2m+ Xf, Yi = Yh · 2m+ Yf, Zi = Zh · 2mExpressed as + Zf. Here, Xh, Yh and Zh represent upper n-bit signals of Xi, Yi and Zi data, and Xf, Yf and Zf represent lower m-bit signals of Xi, Yi and Zi data.
[0009]
In the LUT, Xh = 0, 1, 2,.n−1, Yh = 0, 1, 2,..., 2n−1, Zh = 0, 1, 2,..., 2n-1 all combinations (23nThe color data after conversion is stored as grid point data, and the grid point data is read by a 3n-bit address signal obtained by connecting Xh, Yh, and Zh.
[0010]
When the lower m bits of each of the input color signal data (Xi, Yi, Zi), that is, Xf, Yf, Zf are all “0”, the lattice point data read from the LUT by the above address signal is used as it is. Color data after conversion. Otherwise, interpolation processing is performed according to the values of Xf, Yf, and Zf.
[0011]
This interpolation calculation process has several methods depending on how many grid point data are used and what kind of grid point data is used. In general, when a large amount of grid point data is used, the interpolation accuracy is improved, but the interpolation calculation processing becomes complicated and the processing time becomes longer. As an interpolation method capable of relatively simple calculation processing without significantly reducing the interpolation accuracy, a so-called four-point interpolation is conventionally known. This is an interpolation process using four grid point data, and is disclosed in, for example, Japanese Patent Publication No. 58-16180. The outline will be described below.
[0012]
When all of the low-order bit signals Xf, Yf, and Zf are not 0, that is, when Xf ≠ 0, Yf ≠ 0, and Zf ≠ 0, the color data before conversion has eight lattice points as shown in FIG. Located in the cube formed by This cube forms a partial interpolation space specified by the high-order bit signals (Xh, Yh, Zh), and the interval between the lattice points is 2mAnd the interval between the lattice points of this cube is 2 by the lower bit signals Xf, Yf, Zf.mOne of the divided points is defined.
[0013]
When the cube shown in FIG. 1 is divided into three planes (a plane defined by Xf = Yf, a plane defined by Yf = Zf, and a plane defined by Zf = Xf), six tetrahedrons are defined, Each tetrahedron has four lattice points, for example, as shown in FIG. The point (Xi, Yi, Zi) on the partial interpolation space defined by the input color data to be converted is included in one of these six tetrahedrons (the boundary surface shares its boundary) To be included in one of the tetrahedrons). Which tetrahedron the input color data (Xi, Yi, Zi) belongs to is determined by the magnitude relationship of Xf, Yf, Zf. For example, when the input color data has a relationship of Xf> Yf> Zf, the input color data is located in the tetrahedron shown in FIG. 2, and the coordinates of the grid points used for the interpolation processing are (Xh, Yh, Zh), ( Xh + 1, Yh, Zh), (Xh + 1, Yh + 1, Zh), and (Xh + 1, Yh + 1, Zh + 1). Data associated with each grid point coordinate by the LUT, that is, the grid point data is represented as dd (X coordinate, Y coordinate, Z coordinate), and interpolation using the LUT for the input color data (Xi, Yi, Zi). When the subsequent data is represented as P (Xi, Yi, Zi), the interpolated data P is
It becomes. Of course, the interpolation formula is different for each of the six tetrahedrons described above.
[0014]
As described above, as shown in the equation (1), the interpolation calculation processing includes the product of the four grid point data corresponding to each tetrahedron and the coefficient data generated from the lower bit signal of the input color data, and 4 It consists of the addition of two terms.
[0015]
[Problems to be solved by the invention]
However, as is clear from the above equation (1), the interpolation calculation process is necessary when reading lattice point data from the LUT, such as (Xh, Yh, Zh),..., (Xh + 1, Yh + 1, Zh + 1). A comparison process is required to calculate a simple address and to determine the magnitude relationship between Xf, Yf, and Zf. Due to this magnitude relationship, the grid point data to be used and the processing contents are different, and for this reason, it is difficult to perform, for example, parallel interpolation operations for a plurality of pixels.
[0016]
That is, the calculation accuracy of the above equation (1) is sufficient if it is 16 bits. Specifically, the number of bits of the grid point data is 8 to 10 bits, and the number of bits of the input lower bit data Xf, Yf, Zf is 3 to 5 bits. In most other image processing, the calculation accuracy of 16 bits is sufficient in most cases, and in some cases, the calculation accuracy of 8 bits may be sufficient.
[0017]
On the other hand, there is a remarkable improvement in the performance of recent CPUs, and it is becoming normal for the general purpose registers to have a length of 32 bits or 64 bits. Such a register length is an overspec in the image processing related to the interpolation, and the performance of the CPU is not effectively utilized.
[0018]
On the other hand, information exchanged regarding information processing is changing from the previous text base to the image base. In such an environment, image compression / decompression processing such as JPEG or MPEG becomes more important, and high-speed processing is also required. In order to meet such needs, a CPU having a function corresponding to multimedia is provided. That is, in these CPUs, by using a 64-bit register in a configuration of 32 bits × 2, 16 bits × 4, or 8 bits × 8, a plurality of low-precision operations can be processed in parallel at one time. Multiply-and-accumulate operations can be performed.
[0019]
For example, an example in which the above-described multimedia compatible function is effectively used for the above-described processing such as JPEG or MPEG is well known. Also, filtering or the like for performing similar arithmetic processing on each pixel in an image can be easily performed in parallel, and the multimedia-compatible function can be effectively utilized.
[0020]
However, the above-described interpolation operation involving conditional branch processing such as the magnitude relationship of lower-order bit data cannot effectively utilize the multimedia-compatible function, and it is relatively difficult to increase the processing speed. was there.
[0021]
The present invention has been made to solve such a problem, and an object of the present invention is to realize parallel processing of interpolation operations by fully utilizing, for example, CPU performance having a multimedia support function. It is an object of the present invention to provide a color conversion method and a color conversion apparatus capable of performing the above.
[0022]
[Means for Solving the Problems]
Therefore, in the present invention, a color conversion method for performing color conversion by using an interpolation operation together with a lookup table, and among the input color data, data indicating the position of the input color data in the interpolation space by its magnitude relationship In addition, the grid point data read from the lookup table is preliminarily determined in accordance with the magnitude relationship based on the input color data indicating the address of the lookup table and the data indicating the position by the magnitude relationship. Stored in a plurality of registers, and performing an interpolation operation using data stored in the registers in accordance with a predetermined interpolation operation expression between the plurality of registers.
[0023]
Further, the color conversion device performs color conversion by using an interpolation operation together with a lookup table, and among the input color data, the data indicating the position of the input color data in the interpolation space by the magnitude relationship, and the input color Among the data, grid point data read from the lookup table based on the data indicating the address of the lookup table and the data indicating the position by the magnitude relationship, a plurality of points determined in advance according to the magnitude relationship It has storage means for storing in a register, and arithmetic means for performing interpolation calculation using data stored in the register according to an interpolation calculation formula predetermined between the plurality of registers.
[0024]
According to the configuration described above, the position of the input color data in the interpolation space is indicated by the magnitude relationship, for example, the lower bit data, and the grid point data read from the lookup table according to the magnitude relationship are the above magnitude magnitudes. Since it is stored in a plurality of registers that are predetermined according to the relationship, and according to the interpolation operation formula that is predetermined between these registers, the interpolation operation is performed using the data stored in those registers. Originally, the interpolation formulas that differ depending on the magnitude relationship or the computation of each term in this formula can be unified into one formula that defines the computation relationship between each register. Calculation of each term in the equation can be performed in parallel.
[0025]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
[0026]
FIG. 3 is a block diagram showing an outline of processing and hardware configuration performed in the color conversion processing of the first to fourth embodiments described below as an embodiment of the present invention.
[0027]
As shown in the figure, the color conversion processing according to the embodiment of the present invention is performed by using a
[0028]
In the
[0029]
Based on the four addresses generated by the
[0030]
In the
[0031]
Here, an interpolation calculation expression used in each embodiment described below will be described. First, in order to express the interpolation calculation formula concisely, the lattice point data located at the vertex of the interpolation cube of interest is represented as A, B, C, D, E, F, G, and H as shown in FIG. And this interpolation calculation formula is based on the magnitude relationship between the lower m-bit data Xf, Yf, Zf for each of the three input color data Xi, Yi, Zi, that is, the input color data in the drawing as shown in FIG. Depending on which tetrahedron Xi, Yi, and Zi belong to, it is represented by one of the following six different interpolation equations.
[0032]
The above six interpolation equations can be expressed as follows by simply modifying them.
[0033]
Similarly, it can also be expressed as follows with further modifications.
[0034]
(C-1) to (c-6) are obtained by rearranging the second to fourth terms in (b-1) to (b-6) in the order of Xf, Yf, and Zf.
[0035]
The method for realizing the parallel processing is based on any expression of (a-1) to (a-6), (b-1) to (b-6), and (c-1) to (c-6). Depending on the method, the realization method differs, but in the following first and second embodiments, based on the equations (b-1) to (b-6), in the third embodiment, (a-1) to (a Based on the equation a-6), and in the fourth embodiment, a method of performing an interpolation operation using the respective registers based on the equations (c-1) to (c-6) will be described.
[0036]
(First embodiment)
As described above, in the present embodiment, a method for realizing parallel processing will be described based on equations (b-1) to (b-6). The outline of the parallel processing of this embodiment is as follows.
[0037]
(D-1) An arithmetic register capable of parallel operation of the CPU described above with reference to FIG. 3 is used, the register length is 64 bits, and this is used as 16 bits × 4 registers.
[0038]
(D-2) The input color data subjected to color conversion is assumed to be three colors (Xi, Yi, Zi).
[0039]
(D-3) The color conversion process for four consecutive pixels of the image according to the process is performed in parallel.
[0040]
In the following description, in order to distinguish the four pixels,
[0041]
In the color conversion process of the present embodiment, the following procedure is performed. 4A to 4J are diagrams showing registers used in this procedure and their contents.
[0042]
(1) For each of the four pixels, a partial interpolation space (cube, see FIG. 1) is determined from the upper bit data of the input color data Xi, Yi, Zi, and lattice point data dd (Xh) located at A in each cube , Yh, Zh) are read from the LUT shown in FIG. 3 and are connected in the order of A1, A2, A3, A4 as 16-bit data as shown in FIG. It is stored in a
[0043]
(2) Next, the maximum value of the lower-order bit data of the input color data is obtained for each pixel, and four of them are concatenated and stored in the
[0044]
(3) Further, according to the maximum value for each pixel, when the maximum value is Xf, the lattice point data B = dd (Xh + 1, Yh, Zh) of the partial interpolation space determined in the processing of (1) is used. When the maximum value is Yf, the grid point data C = dd (Xh, Yh + 1, Zh) is selected, and when the maximum value is Zf, the grid point data E = dd (Xh, Yh, Zh + 1) is selected to select the LUT. 4 are concatenated and stored in the
[0045]
(4) Similarly, the median value of the lower-order bit data of the input color data is obtained for each pixel, and four of them are concatenated and stored in the
[0046]
(5) Next, based on which combination of Xf, Yf, and Zf the maximum value and the median value are, lattice point data D = dd (Xh + 1, Yh + 1, Zh), F = dd (Xh + 1, Yh) , Zh + 1) and G = dd (Xh, Yh + 1, Zh + 1) are selected for each pixel, read out from the LUT, and four of them are concatenated and stored in the
[0047]
(6) Similarly, the minimum value of the lower-order bit data of the input color data is obtained for each pixel, and four of them are concatenated and stored in the
[0048]
(7) Finally, for each pixel, grid point data H = dd (Xh + 1, Yh + 1, Zh + 1) in the partial interpolation space is connected to four as shown in FIG. H4 is stored in the register.
[0049]
As is clear from the above description, the processes (1) to (7) described above are interpolated based on the magnitude relationship of the lower bit data of the input color data from the partial interpolation space determined by the input color data. The process for determining the tetrahedron or the process for preparing the lattice point data of the tetrahedron. In this embodiment, it can be said that such a process is replaced by a process of storing in a predetermined register.
[0050]
(8) After the above storage processing, for each register of each corresponding pixel, first, the value of the
[0051]
(9) Similarly, the value of the
[0052]
(10) Further, the value of the
[0053]
By calculating the difference between the registers by the processes (8) to (10) and then calculating the product between the registers, the parentheses in the expressions (b-1) to (b-6) are calculated. The 2nd to 4th terms are obtained respectively.
[0054]
(11) Next, the value of the register shown in FIG. 4A is shifted to the left by m bits in each of 16 bits, and the first in parentheses in the above expressions (b-1) to (b-6) Term, ie 2mA is formed, and the values of the
[0055]
As described above, in the present embodiment, the lower-order bit data that is the number of grid point data and the magnitude relationship according to the magnitude relationship (maximum value, median value, minimum value) of the lower-order bit data of the input color data. By defining the registers for storing the data, it is necessary to perform the subsequent interpolation operation (the processing of (1) to (7)) only by storing the respective data in the predetermined registers according to the above-described magnitude relationship (the processing of (1) to (7)). In the processes (8) to (11)) itself, it is possible to prevent the above-described magnitude relationship or its discrimination process from appearing. This is because the interpolation processing performed in the above (8) to (11) of the present embodiment is different from the six (b-1) to (b-6) expressions that are different depending on the above magnitude relationship. This means that it is equivalent to performing a calculation according to this. As a result, it is possible to perform interpolation calculation for four pixels in parallel according to one unified interpolation formula, although the magnitude relationship determined by the input color data for each pixel, and hence its lower bit data, is different. Yes.
[0056]
As is clear from the above description, the number of pixels processed in parallel is determined by the restriction of the register length of the register, and does not form the essence of the present invention. Therefore, if the register length permits, parallel processing with four or more pixels is possible, and parallel processing with fewer pixels than four pixels according to the register length is also within the scope of the present invention.
[0057]
When the color conversion data obtained as described above is 4 colors per pixel (cyan (c), magenta (m), yellow (y), black (k)), the above processing is further performed for three colors. The For example, when the processing described above corresponds to cyan and the next color is magenta, grid point data (Am1Am2Am3Am4) corresponding to magenta is loaded into the
[0058]
By the parallel processing of the present embodiment as described above, it is possible to achieve a speed increase of 4 times by simple calculation as compared with the conventional sequential processing.
[0059]
(Second Embodiment)
In the second embodiment of the present invention, the color conversion processing is not performed on four pixels in parallel as in the first embodiment described above, but the color conversion processing is performed on a pixel-by-pixel basis. The present invention relates to a method for performing interpolation calculation processing at high speed by effectively utilizing the parallel calculation function of the CPU described above.
[0060]
In the present embodiment, interpolation calculation processing is performed based on the above-described equations (b-1) to (b-6), and processing performed for each pixel in that case is as follows.
[0061]
(1) An address for accessing four grid point data is calculated.
[0062]
(2) The coefficients to be multiplied by the difference value of the grid point data are arranged in the descending order and stored in the register.
[0063]
(3) Based on the address, four grid point data are read and stored in the register.
[0064]
(4) Interpolation calculation processing is performed using a parallel calculation function to obtain converted color data.
[0065]
The processes (1) and (2) are processes performed by conditional branching based on the magnitude relation of Xf, Yf, Zf, and the processes (3) and (4) are conditional branches based on the magnitude relation. This is a process performed without need. That is, the process in which the conditional branch due to the magnitude relationship of the lower bit data appears is replaced by a process of storing lattice point data or the like in each predetermined register, as in the first embodiment.
[0066]
FIG. 5 is a flowchart showing the processes (1) and (2) described above.
[0067]
As shown in the figure, first, in step S501, address information Adr for reading grid point data A is read. A is generated. That is, a 3n-bit value obtained by concatenating the upper n-bit data Xh, Yh, Zh of the input color data Xi, Yi, Zi is represented by Adr. A. Next, in step S503, address information Adr for reading the lattice point data H is read. H is generated. This process is performed by the above Adr. A to (22n+2n+1) is added and Adr Let H be.
[0068]
Next, in steps S505 to 513, processing for determining the magnitude relationship between the lower-order bit data Xf, Yf, and Zf is performed. That is, step S505 is a comparison process for determining whether Xf ≧ Yf is satisfied, step S507 is a comparison process for determining whether Yf ≧ Zf is satisfied, and step S509 is whether Xf ≧ Zf is satisfied. Step S511 is comparison processing for determining whether or not Zf ≧ Yf is satisfied, and step S513 is comparison processing for determining whether or not Xf ≧ Zf is satisfied.
[0069]
Based on the above determinations, in step S521, processing performed when step S505 and step S507 are satisfied (affirmative determination), and in step S522, step S505 is satisfied, step S507 is not satisfied, and processing performed when step S509 is satisfied. In step S523, a process performed when step S505 is satisfied and
[0070]
That is, when the magnitude relationship of Xf, Yf, Zf is Xf ≧ Yf ≧ Zf, the remaining two lattice point addresses of the tetrahedron corresponding to the magnitude relationship are generated in step S521 and the magnitude relationship of the lower bit data The data is stored in a register according to the above. Similarly, when Xf ≧ Zf> Yf, the process of step S522, when Zf> Xf ≧ Yf, the process of step S523, when Zf ≧ Yf> Xf, the process of step S524, and when Yf> Xf ≧ Zf, In step S525, and when Yf> Zf> Xf, step S526 is performed.
[0071]
FIG. 6 is a diagram showing the configuration of the register in this embodiment. The lower-order bit data and the like obtained in the above steps S521 to S526 are stored in the register R0 shown in FIG. That is, the value of the register R0 (64 bits) is the value obtained by concatenating the values of 2m, Xf, Yf, Zf (16 bits each) in step S521, and the value of 2m, Xf, Zf, Yf is concatenated in step S522. In step S523, a value obtained by concatenating the
[0072]
In addition, the calculation result of the address described in the above (1) indicates that the address for reading the grid point data adjacent to the grid point A is Adr. next A, the address for reading the grid point data adjacent to grid point H is Adr before If H, in step S521, Adr next A = Adr A + 22n, Adr before H = Adr next A + 2nIn step S522, Adr next A = Adr A + 22n, Adr before H = Adr next A + 1, Adr in step S523 next A = Adr A + 1, Adr before H = Adr next A + 22nIn step S524, Adr next A = Adr A + 1, Adr before H = Adr next A + 2nIn step S525, Adr next A = Adr A + 2n, Adr before H = Adr next A + 22nIn step S526, Adr next A = Adr A + 2n, Adr before H = Adr next A + 1.
[0073]
After any of the processes in steps S521 to S526 described above is performed according to the magnitude relationship of the lower-order bit data, the process (3) described above is performed. That is, in step S527, four lattice point data of the tetrahedron selected by the above processing are read out and stored in a register.
[0074]
In this process, two values, the intermediate result and the final read result, are stored in the registers R1 and R2 shown in FIG. That is, the address value Adr The grid point data read out in A is [Adr A], the register R1 has 0, [Adr A] [Adr next A] [Adr before H] (16 bits each), the register R2 contains [Adr A] [Adr next A], [Adr before H], [Adr H] are concatenated. Here, after shifting the contents of the register R1 to the left by 16 bits, Adr The contents of the register R2 are obtained by inserting the grid point data H read from H.
[0075]
Finally, in step S528, the interpolation calculation process described in (4) above is performed. As shown in FIG. 6, first, the process of R3 = R2-R1 is performed in units of 16 bits. As a result, each term in parentheses in the above-described equations (b-1) to (b-6) is stored in the register R3. As a result, regardless of the six different interpolation formulas based on the magnitude relation of the lower-order bit data, the interpolation calculation itself can be performed by one unified process.
[0076]
Next, the product-sum operation of each content is performed between the register R3 and the register R0, and the result is stored in the register R4. As a result, the product-sum operation result of the corresponding two 16-bit data is stored in the upper 32 bits of the register R4, and the product-sum operation result of the corresponding two 16-bit data is stored in the lower 32 bits. . The converted color data P can be obtained by adding the two product sums and shifting to the left by m bits.
[0077]
The color conversion process for one input data (Xi, Yi, Zi) described above is generated by conversion. For example, the four colors of yellow, cyan, magenta, and black are dot-sequentially processed. In this case, the above-described processes (1) and (2) need only be performed once for all four colors. This is because the address for reading the lattice point data from the LUT does not change while the input color data (for example, each value of R, G, B) obtains these four color conversion data. On the other hand, since the contents of the LUT (grid point data) differ for each color obtained by the conversion in the processes (3) and (4) described above, by repeating these processes for four colors, the process for four colors is performed. Conversion color data can be obtained.
[0078]
In this case, if the above repetitive processing is based on loop control as shown in FIG. 7, the processing time increases because condition determination (step S707) exists. On the other hand, in the present embodiment, as shown in FIG. 8, the processing of reading out the grid point data and storing it in the register shown in FIG. 6 for each color is performed for all four colors (steps S801 to S807), and thereafter the interpolation calculation is performed. What is necessary is just to perform a process for 4 colors collectively.
[0079]
As a result, the interpolation operation for four colors per pixel can be greatly speeded up as compared with the conventional method.
[0080]
(Third embodiment)
In the third embodiment of the present invention, interpolation calculation processing is performed based on the above-described equations (a-1) to (a-6).
[0081]
FIG. 9 is a diagram for explaining the processing in the case of Yf ≧ Zf ≧ Xf in the interpolation calculation processing of the present embodiment after the determination of the magnitude relation of the lower-order bit data by the register configuration.
[0082]
In the register R10, the lower
[0083]
In the above operation, the subtraction operation result and the product-sum operation result are stored in the registers R12 and R14, respectively, for the sake of easy understanding. However, the operation result storage registers are limited to R12 and R14. Instead, it can be any free register.
[0084]
When the above calculation is performed for each color of cyan, magenta, yellow, and black, the points where lower lattice data corresponding to A, C, G, and H of each color are loaded and lower bit data are stored according to the magnitude relationship. Processing is the same as in the second embodiment described above. As a result, the interpolation operation for four colors per pixel can be greatly speeded up as compared with the conventional method.
[0085]
(Fourth embodiment)
In the fourth embodiment of the present invention, interpolation calculation processing is performed based on the above-described equations (c-1) to (c-6).
[0086]
FIG. 10 is a diagram showing the interpolation operation of the present embodiment by the register configuration when the lower-order bit data is Yf ≧ Zf ≧ Xf.
[0087]
As shown in the above equations (c-1) to (c-6), the register R100 has grid point data A, H, C, and G, and the register R101 has
[0088]
The resist R3 has 2m, Xf, Yf, Zf are stored. The product-sum operations A + Xf (HG) and Yf (CA) + Zf (GC) are executed in parallel. Further, an addition operation and an m-bit right shift operation are performed on these results, and converted color data is obtained.
[0089]
In the above calculation, the subtraction operation result and the product-sum operation result are stored in the registers R102 and R104, respectively, in order to make the explanation easy to understand. It can be anywhere as long as it is free.
[0090]
When the above calculation is performed for each color of cyan, magenta, yellow, and black, the grid point data and lower-order bit data for each color are stored in the same manner as in the above-described second embodiment. Thereby, the interpolation calculation of four colors per pixel can be significantly speeded up as compared with the conventional method.
[0091]
<Other embodiments>
As described above, the present invention can be applied to a system composed of a plurality of devices (for example, a host computer, an interface device, a reader, a printer, etc.) but also to an apparatus composed of a single device (for example, a copying machine, a facsimile machine). May be.
[0092]
In addition, a program code of software for realizing the functions of the embodiment is provided in an apparatus or a computer in the system connected to the various devices so as to operate the various devices so as to realize the functions of the above-described embodiments. What is implemented by operating the various devices according to a program stored in the computer (CPU or MPU) of the system or apparatus supplied is also included in the scope of the present invention.
[0093]
In this case, the program code of the software itself realizes the functions of the above-described embodiments, and the program code itself and means for supplying the program code to the computer, for example, a memory storing the program code The medium constitutes the present invention.
[0094]
As a storage medium for storing the program code, for example, a floppy disk, a hard disk, an optical disk, a magneto-optical disk, a CD-ROM, a magnetic tape, a nonvolatile memory card, a ROM, or the like can be used.
[0095]
Further, by executing the program code supplied by the computer, not only the functions of the above-described embodiments are realized, but also the OS (operating system) in which the program code is running on the computer, or other application software, etc. It goes without saying that the program code is also included in the embodiment of the present invention even when the functions of the above-described embodiment are realized in cooperation with the embodiment.
[0096]
Further, after the supplied program code is stored in a memory provided in a function expansion board of a computer or a function expansion unit connected to the computer, a CPU provided in the function expansion board or function storage unit based on an instruction of the program code However, it is needless to say that the present invention also includes a case where the function of the above-described embodiment is realized by performing part or all of the actual processing.
[0097]
【The invention's effect】
As described above, according to the present invention, the position of the input color data in the interpolation space is indicated by the magnitude relationship, for example, the lower bit data, and the grid point data read from the lookup table according to the magnitude relationship. Are stored in a plurality of registers determined in advance according to the above magnitude relationship, and interpolation is performed using data stored in these registers in accordance with an interpolation operation formula determined between these registers. Since the calculation is performed, the interpolation calculation formula that is different depending on the above magnitude relationship or the calculation of each term of this formula can be unified into the calculation relationship between each register or one specified formula. In this interpolation calculation, each term of the arithmetic expression can be calculated in parallel.
[0098]
As a result, it is possible to effectively use the parallel processing function of the CPU having the multimedia support function, and the processing speed can be greatly increased as compared with the case of performing the color conversion process sequentially.
[Brief description of the drawings]
FIG. 1 is a schematic diagram showing a relationship between input color data and grid point data in an LUT used in color conversion processing according to an embodiment of the present invention.
FIG. 2 is a schematic diagram showing an example of a tetrahedron (four lattice points) used for interpolation calculation in the LUT.
FIG. 3 is a block diagram showing a schematic configuration of color conversion processing according to an embodiment of the present invention.
FIGS. 4A to 4J are processes according to the first embodiment of the present invention, in which conversion color data for four pixels is obtained by parallel interpolation calculation processing from input color data for four pixels. It is a figure shown by the structure of a register.
FIG. 5 relates to a second embodiment of the present invention, a process of calculating an address for accessing four grid point data, and a process of arranging coefficients to be multiplied by the difference value of the grid point data in descending order and storing them in a resist. It is a flowchart which shows.
FIG. 6 is a diagram illustrating an interpolation calculation process in the color conversion process of the second embodiment by using a register configuration.
FIG. 7 is a flowchart illustrating a process for converting input color data of one pixel into color data of four colors using a loop process, showing a comparative example with the second embodiment.
8 is a flowchart showing processing for converting color data of one pixel into color data of four colors without using the loop processing shown in FIG. 7 according to the second embodiment.
FIG. 9 is a diagram showing an interpolation calculation process according to a third embodiment of the present invention by using a register configuration.
FIG. 10 is a diagram showing a register configuration for interpolation calculation processing according to the fourth embodiment of the present invention.
[Explanation of symbols]
301 registers
302Y, 302M, 302C, 302K LUT (Lookup Table) 303 Size discrimination unit
304 Address generator
401, 402, 403, 404, 405, 406, 407, 408, 409, 410, R0, R1, R2, R3, R4, R10, R11, R12, R13, R14, R100, R101, R102, R103, R104 registers
Claims (11)
入力色データのうち、当該入力色データの補間空間における位置をその大小関係によって示すデータと、入力色データのうち、ルックアップテーブルのアドレスを示すデータおよび前記位置を大小関係によって示すデータに基づいてルックアップテーブルから読出される格子点データを、前記大小関係に応じて予じめ定められた複数のレジスタに格納し、
該複数のレジスタ間において予じめ定められた補間演算式に従い当該レジスタが格納するデータを用いて補間演算を行う、
ステップを有したことを特徴とする色変換方法。A color conversion method for performing color conversion by using an interpolation operation together with a lookup table,
Based on the input color data, the data indicating the position of the input color data in the interpolation space by the magnitude relationship, the input color data indicating the address of the lookup table, and the data indicating the position by the magnitude relationship The grid point data read from the lookup table is stored in a plurality of registers determined in advance according to the magnitude relationship,
Interpolation is performed using data stored in the register according to a predetermined interpolation calculation formula between the plurality of registers.
A color conversion method comprising steps.
Xi=Xh・2m +Xf
Yi=Yh・2m +Yf
Zi=Zh・2m +Zf
と表わし、前記ルックアップテーブルのアドレスを示すデータをXh,Yh,Zh、前記位置を大小関係によって示すデータをXf,Yf,Zfとするとき、
前記色変換方法は、(Xh,Yh,Zh)で規定される補間空間の8格子点の内、(Xf,Yf,Zf)の大小関係によって規定される4格子点のデータを用いて補間演算を実行する色変換方法であって、
4画素分の(Xh,Yh,Zh)格子点データをレジスタaに格納するステップと、
4画素分の(Xf,Yf,Zf)の最大値をレジスタbに格納するステップと、
4画素分の(Xh,Yh,Zh)格子点に隣接する格子点データをレジスタcに格納するステップと4画素分の(Xf,Yf,Zf)の中央値をレジスタdに格納するステップと、
4画素分の(Xh+1,Yh+1,Zh+1)格子点に隣接する格子点データをレジスタeに格納するステップと、
4画素分の(Xf,Yf,Zf)の最小値をレジスタfに格納するステップと、
4画素分の(Xh+1,Yh+1,Zh+1)格子点データをレジスタgに格納するステップと、
4画素分並列に(レジスタc−レジスタa)・レジスタbを演算し、その結果をレジスタhに格納するステップと、
4画素分並列に(レジスタe−レジスタc)・レジスタdを演算し、その結果をレジスタiに格納するステップと、
4画素分並列に(レジスタg−レジスタe)・レジスタfを演算し、その結果をレジスタjに格納するステップと、
前記レジスタaの値をmビット左へシフトして、その結果に4画素分並列して、前記レジスタh,レジスタi,レジスタjの値の加算演算をするステップ
により4画素分並列に補間演算処理することを特徴とする請求項1に記載の色変換方法。The input color data is composed of three color data Xi, Yi, Zi each having (n + m) bits, and the data Xi, Yi, Zi are represented by Xi = Xh · 2 m + Xf.
Yi = Yh · 2 m + Yf
Zi = Zh · 2 m + Zf
And Xh, Yh, Zh as data indicating the address of the lookup table, and Xf, Yf, Zf as data indicating the position according to the magnitude relationship,
In the color conversion method, interpolation calculation is performed using data of four grid points defined by the magnitude relationship of (Xf, Yf, Zf) among eight grid points of the interpolation space defined by (Xh, Yh, Zh). A color conversion method for performing
Storing (Xh, Yh, Zh) lattice point data for four pixels in the register a;
Storing the maximum value of (Xf, Yf, Zf) for four pixels in the register b;
Storing lattice point data adjacent to (Xh, Yh, Zh) lattice points for four pixels in the register c, and storing a median value of (Xf, Yf, Zf) for four pixels in the register d;
Storing lattice point data adjacent to (Xh + 1, Yh + 1, Zh + 1) lattice points for four pixels in the register e;
Storing a minimum value of (Xf, Yf, Zf) for four pixels in the register f;
Storing (Xh + 1, Yh + 1, Zh + 1) lattice point data for four pixels in the register g;
Calculating (register c-register a) and register b in parallel for four pixels and storing the result in a register h;
Calculating (register e-register c) and register d in parallel for four pixels and storing the result in register i;
Calculating (register g-register e) and register f in parallel for four pixels, and storing the result in register j;
The value of the register a is shifted to the left by m bits, and the result is paralleled by 4 pixels, and the interpolation calculation processing is performed in parallel by 4 pixels by the step of adding the values of the registers h, i, and j. The color conversion method according to claim 1, wherein:
Xi=Xh・2m +Xf
Yi=Yh・2m +Yf
Zi=Zh・2m +Zf
と表わし、前記ルックアップテーブルのアドレスを示すデータをXh,Yh,Zh、前記位置を大小関係によって示すデータをXf,Yf,Zfとするとき、
前記色変換方法は、(Xh,Yh,Zh)で規定される補間空間の8格子点の内、(Xf,Yf,Zf)の大小関係によって規定される4格子点のデータを用いて補間演算を実行する色変換方法であって、
4つのブロックに分割されたレジスタ0の最上位ブロック2m を格納するステップと、
前記レジスタ0の最上位から2番目のブロックに(Xf,Yf,Zf)の最大値を格納するステップと、
前記レジスタ0の最上位から3番目のブロックに(Xf,Yf,Zf)の中央値を格納するステップと、
前記レジスタ0の最上位から4番目のブロックに(Xf,Yf,Zf)の最小値を格納するステップと、 4つのブロックに分割されたレジスタ1の最上位ブロックに0を格納するステップと、
前記レジスタ1の最上位から2番目のブロックに(Xh,Yh,Zh)格子点データを格納するステップと、
前記レジスタ1の最上位から3番目のブロックに(Xh,Yh,Zh)格子点に隣接する格子点データを格納するステップと、
前記レジスタ1の最上位から4番目のブロックに(Xh+1,Yh+1,Zh+1)格子点に隣接する格子点データを格納するステップと、
前記レジスタ1の内容をレジスタ2にロードし、そして、レジスタ2を1ブロック分左へシフトした後、最上位から4番目のブロックに(Xh+1,Yh+1,Zh+1)格子点データを格納するステップと、
4ブロック並列に前記レジスタ2−前記レジスタ1の演算を行ない、その結果をレジスタ3に格納するステップと、
(前記レジスタ0の1ブロック×前記レジスタ3の1ブロック+前記レジスタ0の2ブロック×前記レジスタ3の2ブロック)と(前記レジスタ0の3ブロック×前記レジスタ3の3ブロック+前記レジスタ0の4ブロック×前記レジスタ3の4ブロック)の2つの積和演算を並列に実行し、その結果を各々レジスタ4の1−2ブロックと3−4ブロックに格納するステップと、
前記レジスタ4の1−2ブロックと3−4ブロック値を加算して、mビット右シフトするステップ、
により並列に補間演算処理することを特徴とする請求項1に記載の色変換方法。The input color data is composed of three color data Xi, Yi, Zi each having (n + m) bits, and the data Xi, Yi, Zi are represented by Xi = Xh · 2 m + Xf.
Yi = Yh · 2 m + Yf
Zi = Zh · 2 m + Zf
And Xh, Yh, Zh as data indicating the address of the lookup table, and Xf, Yf, Zf as data indicating the position according to the magnitude relationship,
In the color conversion method, interpolation calculation is performed using data of four grid points defined by the magnitude relationship of (Xf, Yf, Zf) among eight grid points of the interpolation space defined by (Xh, Yh, Zh). A color conversion method for performing
Storing the most significant block 2 m of register 0 divided into four blocks;
Storing the maximum value of (Xf, Yf, Zf) in the second block from the top of register 0;
Storing the median value of (Xf, Yf, Zf) in the third block from the top of register 0;
Storing the minimum value of (Xf, Yf, Zf) in the fourth block from the top of the register 0; storing 0 in the top block of the register 1 divided into four blocks;
Storing (Xh, Yh, Zh) lattice point data in the second highest block of the register 1;
Storing grid point data adjacent to the (Xh, Yh, Zh) grid point in the third block from the top of the register 1;
Storing the grid point data adjacent to the (Xh + 1, Yh + 1, Zh + 1) grid point in the fourth block from the top of the register 1;
Loading the contents of the register 1 into the register 2 and shifting the register 2 to the left by one block, and then storing (Xh + 1, Yh + 1, Zh + 1) lattice point data in the fourth block from the highest level;
Performing the operation of the register 2 to the register 1 in parallel in four blocks and storing the result in the register 3;
(1 block of the register 0 × 1 block of the register 3 + 2 blocks of the register 0 × 2 blocks of the register 3) and (3 blocks of the register 0 × 3 blocks of the register 3 + 4 of the register 0 Block x 4 blocks of register 3) in parallel, and storing the results in blocks 1-2 and 3-4 of register 4, respectively,
Adding 1-2 block and 3-4 block values of register 4 and shifting right by m bits;
The color conversion method according to claim 1, wherein the interpolation calculation processing is performed in parallel.
Xi=Xh・2m +Xf
Yi=Yh・2m +Yf
Zi=Zh・2m +Zf
と表わし、前記ルックアップテーブルのアドレスを示すデータをXh,Yh,Zh、前記位置を大小関係によって示すデータをXf,Yf,Zfとするとき、
前記色変換方法は、(Xh,Yh,Zh)で規定される補間空間の8格子点の内、(Xf,Yf,Zf)の大小関係によって規定される4格子点のデータを用いて補間演算を実行する色変換方法であって、
4つのブロックに分割されたレジスタ0の最上位ブロック2m を格納するステップと、
前記レジスタ0の最上位から2番目のブロックに(Xf,Yf,Zf)の最大値を格納するステップと、
前記レジスタ0の最上位から3番目のブロックに(Xf,Yf,Zf)の中央値を格納するステップと、
前記レジスタ0の最上位から4番目のブロックに(Xf,Yf,Zf)の最小値を格納するステップと、 前記レジスタ0の内容をレジスタ1に格納し、1ブロック分左にシフトするステップと、
ブロック毎に並列にそのデータについて(レジスタ0−レジスタ1)の減算演算をし、その結果をレジスタ2に格納するステップと、
4つのブロックに分割されたレジスタ3の最上位ブロックに(Xh,Yh,Zh)格子点データを格納するステップと、
前記レジスタ1の最上位から2番目のブロックに(Xh,Yh,Zh)格子点に隣接する格子点データを格納するステップと、
前記レジスタ1の最上位から3番目のブロックに(Xh+1,Yh+1,Zh+1)格子点に隣接する格子点データを格納するステップと、
前記レジスタ1の最上位から4番目のブロックに(Xh+1,Yh+1,Zh+1)格子点データを格納するステップと、
(前記レジスタ2の1ブロック×前記レジスタ3の1ブロック+前記レジスタ2の2ブロック×前記レジスタ3の2ブロック)と(前記レジスタ2の3ブロック×前記レジスタ3の3ブロック+前記レジスタ2の4ブロック×前記レジスタ3の4ブロック)の2つの積和演算を並列に実行し、その結果を各々レジスタ4の4つに分割される第1,第2ブロックと第3,第4ブロックに格納するステップと、
前記レジスタ4の第1,第2ブロックと第3,第4ブロックのデータを加算して、mビット右シフトするステップ、
により並列に補間演算処理することを特徴とする請求項1に記載の色変換方法。The input color data is composed of three color data Xi, Yi, Zi each having (n + m) bits, and the data Xi, Yi, Zi are represented by Xi = Xh · 2 m + Xf.
Yi = Yh · 2 m + Yf
Zi = Zh · 2 m + Zf
And Xh, Yh, Zh as data indicating the address of the lookup table, and Xf, Yf, Zf as data indicating the position according to the magnitude relationship,
In the color conversion method, interpolation calculation is performed using data of four grid points defined by the magnitude relationship of (Xf, Yf, Zf) among eight grid points of the interpolation space defined by (Xh, Yh, Zh). A color conversion method for performing
Storing the most significant block 2 m of register 0 divided into four blocks;
Storing the maximum value of (Xf, Yf, Zf) in the second block from the top of register 0;
Storing the median value of (Xf, Yf, Zf) in the third block from the top of register 0;
Storing the minimum value of (Xf, Yf, Zf) in the fourth block from the top of the register 0; storing the contents of the register 0 in the register 1 and shifting to the left by one block;
Performing a subtraction operation on the data in parallel for each block (register 0-register 1) and storing the result in register 2;
Storing (Xh, Yh, Zh) lattice point data in the uppermost block of the register 3 divided into four blocks;
Storing grid point data adjacent to the (Xh, Yh, Zh) grid point in the second highest block of the register 1;
Storing lattice point data adjacent to (Xh + 1, Yh + 1, Zh + 1) lattice points in the third block from the top of the register 1;
Storing (Xh + 1, Yh + 1, Zh + 1) lattice point data in the fourth block from the top of the register 1;
(1 block of the register 2 × 1 block of the register 3 + 2 blocks of the register 2 × 2 blocks of the register 3) and (3 blocks of the register 2 × 3 blocks of the register 3 + 4 of the register 2 Block x 4 blocks of register 3) are executed in parallel, and the results are stored in the first, second block and third and fourth blocks respectively divided into four of register 4. Steps,
Adding the data of the first and second blocks and the third and fourth blocks of the register 4 and shifting right by m bits;
The color conversion method according to claim 1, wherein the interpolation calculation processing is performed in parallel.
Xi=Xh・2m +Xf
Yi=Yh・2m +Yf
Zi=Zh・2m +Zf
と表わし、前記ルックアップテーブルのアドレスを示すデータをXh,Yh,Zh、前記位置を大小関係によって示すデータをXf,Yf,Zfとするとき、
前記色変換方法は、(Xh,Yh,Zh)で規定される補間空間の8格子点の内、(Xf,Yf,Zf)の大小関係によって規定される4格子点のデータを用いて補間演算を実行する色変換方法であって、
4つのブロックに分割されたレジスタ0の最上位ブロックに(Xh,Yh,Zh)格子点データを格納するステップと、
前記レジスタ0の最上位から2番目のブロックに(Xh+1,Yh+1,Zh+1)の格子点データを格納するステップと、
前記レジスタ0の最上位から3番目のブロックに(Xh,Yh,Zh)格子点に隣接する格子点データを格納するステップと、
前記レジスタ0の最上位から3番目のブロックに(Xh+1,Yh+1,Zh+1)格子点に隣接する格子点データを格納するステップと、
4つのブロックに分割されたレジスタ1の最上位ブロックに0を格納するステップと、
前記レジスタ1の最上位から2番目のブロックに(Xh+1,Yh+1,Zh+1)格子点データを格納するステップと、
前記レジスタ1の最上位から3番目のブロックに(Xh,Yh,Zh)格子点データを格納するステップと、
前記レジスタ1の最上位から4番目のブロックに(Xh,Yh,Zh)格子点に隣接する格子点データを格納するステップと、
ブロック毎に並列に(レジスタ0−レジスタ1)の減算演算をし、その結果をレジスタ2に格納するステップと、
4つのブロックに分割されたレジスタ3の最上位ブロックに2m を格納するステップと、
前記レジスタ3の最上位から2番目のブロックに(Xf,Yf,Zf)の最小値を格納するステップと、
前記レジスタ3の最上位から3番目のブロックに(Xf,Yf,Zf)の最大値を格納するステップと、
前記レジスタ3の最上位から4番目のブロックに(Xf,Yf,Zf)の中央値を格納するステップと、
(前記レジスタ2の1ブロック×前記レジスタ3の1ブロック+前記レジスタ2の2ブロック×前記レジスタ3の2ブロック)と(前記レジスタ2の3ブロック×前記レジスタ3の3ブロック+前記レジスタ2の4ブロック×前記レジスタ3の4ブロック)の2つの積和演算を並列に実行し、その結果を各々レジスタ4の4つに分割される第1,第2ブロックと第3,第4ブロックに格納するステップと、
前記レジスタ4の第1,第2ブロックと第3,第4ブロックのデータを加算して、mビットを右シフトするステップ、
により並列に補間演算処理することを特徴とする請求項1に記載の色変換方法。The input color data is composed of three color data Xi, Yi, Zi each having (n + m) bits, and the data Xi, Yi, Zi are represented by Xi = Xh · 2 m + Xf.
Yi = Yh · 2 m + Yf
Zi = Zh · 2 m + Zf
And Xh, Yh, Zh as data indicating the address of the lookup table, and Xf, Yf, Zf as data indicating the position according to the magnitude relationship,
In the color conversion method, interpolation calculation is performed using data of four grid points defined by the magnitude relationship of (Xf, Yf, Zf) among eight grid points of the interpolation space defined by (Xh, Yh, Zh). A color conversion method for performing
Storing (Xh, Yh, Zh) lattice point data in the most significant block of register 0 divided into four blocks;
Storing (Xh + 1, Yh + 1, Zh + 1) lattice point data in the second highest block of the register 0;
Storing grid point data adjacent to the (Xh, Yh, Zh) grid point in the third block from the top of the register 0;
Storing the lattice point data adjacent to the (Xh + 1, Yh + 1, Zh + 1) lattice point in the third block from the top of the register 0;
Storing 0 in the highest block of register 1 divided into four blocks;
Storing (Xh + 1, Yh + 1, Zh + 1) lattice point data in the second highest block of the register 1;
Storing (Xh, Yh, Zh) lattice point data in the third block from the top of the register 1;
Storing the grid point data adjacent to the (Xh, Yh, Zh) grid point in the fourth block from the top of the register 1;
Performing a subtraction operation (register 0-register 1) in parallel for each block and storing the result in register 2;
Storing 2 m in the top block of register 3 divided into four blocks;
Storing the minimum value of (Xf, Yf, Zf) in the second highest block of the register 3;
Storing the maximum value of (Xf, Yf, Zf) in the third block from the top of the register 3;
Storing the median of (Xf, Yf, Zf) in the fourth block from the top of the register 3;
(1 block of the register 2 × 1 block of the register 3 + 2 blocks of the register 2 × 2 blocks of the register 3) and (3 blocks of the register 2 × 3 blocks of the register 3 + 4 of the register 2 Block x 4 blocks of register 3) are executed in parallel, and the results are stored in the first, second block and third and fourth blocks respectively divided into four of register 4. Steps,
Adding the data of the first and second blocks and the third and fourth blocks of the register 4 to shift m bits to the right;
The color conversion method according to claim 1, wherein the interpolation calculation processing is performed in parallel.
入力色データのうち、当該入力色データの補間空間における位置をその大小関係によって示すデータと、入力色データのうち、ルックアップテーブルのアドレスを示すデータおよび前記位置を大小関係によって示すデータに基づいてルックアップテーブルから読出される格子点データを、前記大小関係に応じて予じめ定められた複数のレジスタに格納する格納手段と、
該複数のレジスタ間において予じめ定められた補間演算式に従い当該レジスタが格納するデータを用いて補間演算を行う演算手段と、
を有したことを特徴とする色変換装置。A color conversion device that performs color conversion by using an interpolation operation together with a lookup table,
Based on the input color data, the data indicating the position of the input color data in the interpolation space by the magnitude relationship, the input color data indicating the address of the lookup table, and the data indicating the position by the magnitude relationship Storage means for storing grid point data read from a lookup table in a plurality of registers determined in advance according to the magnitude relationship;
An arithmetic means for performing an interpolation operation using data stored in the register according to an interpolation operation formula determined in advance between the plurality of registers;
A color conversion device characterized by comprising:
入力色データのうち、当該入力色データの補間空間における位置をその大小関係によって示すデータと、入力色データのうち、ルックアップテーブルのアドレスを示すデータおよび前記位置を大小関係によって示すデータに基づいてルックアップテーブルから読出される格子点データを、前記大小関係に応じて予じめ定められた複数のレジスタに格納し、
該複数のレジスタ間において予じめ定められた補間演算式に従い当該レジスタが格納するデータを用いて補間演算を行う、
ステップを有したことを特徴とする記憶媒体。A storage medium storing a color conversion processing program for performing color conversion by using an interpolation operation together with a lookup table so that the information processing apparatus can read the color conversion processing,
Based on the input color data, the data indicating the position of the input color data in the interpolation space by the magnitude relationship, the input color data indicating the address of the lookup table, and the data indicating the position by the magnitude relationship The grid point data read from the lookup table is stored in a plurality of registers determined in advance according to the magnitude relationship,
Interpolation is performed using data stored in the register according to a predetermined interpolation calculation formula between the plurality of registers.
A storage medium comprising steps.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP37428198A JP3927715B2 (en) | 1998-12-28 | 1998-12-28 | Color conversion method and color conversion apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP37428198A JP3927715B2 (en) | 1998-12-28 | 1998-12-28 | Color conversion method and color conversion apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000196903A JP2000196903A (en) | 2000-07-14 |
JP3927715B2 true JP3927715B2 (en) | 2007-06-13 |
Family
ID=18503578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP37428198A Expired - Fee Related JP3927715B2 (en) | 1998-12-28 | 1998-12-28 | Color conversion method and color conversion apparatus |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3927715B2 (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 |
JP4806606B2 (en) * | 2006-08-30 | 2011-11-02 | 株式会社リコー | Image processing apparatus and image processing method |
JP4901891B2 (en) | 2008-11-05 | 2012-03-21 | 株式会社東芝 | Image processor |
-
1998
- 1998-12-28 JP JP37428198A patent/JP3927715B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000196903A (en) | 2000-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5558767B2 (en) | Image processing apparatus and processing method thereof | |
US6075514A (en) | Color table look-up having last value memory | |
JP4724413B2 (en) | Data classification method | |
US20020122207A1 (en) | Fast Interpolation of large color lookup tables | |
JP5522890B2 (en) | Image processing apparatus and method | |
JP2011139164A (en) | Image processing apparatus and processing method thereof | |
JP3927715B2 (en) | Color conversion method and color conversion apparatus | |
JPH06320802A (en) | Image processor | |
CN100414963C (en) | Normalization method, and multi-dimensional interpolation method and apparatus | |
US20080225345A1 (en) | Image processing apparatus and computer readable medium | |
JP4810615B2 (en) | Multidimensional interpolation apparatus, multidimensional interpolation method, and computer program | |
US8494261B2 (en) | Image processing apparatus, image processing method, and computer-readable medium | |
JP5267147B2 (en) | Image processing apparatus, image processing method, and computer program | |
US20030107577A1 (en) | Data processing system having a plurality of processors and executing a series of processings in a prescribed order | |
JP3911898B2 (en) | Color conversion apparatus and method | |
JPH10191089A (en) | Color converter, color printer, color image data output device and recording medium | |
JP2007174392A (en) | Data converting apparatus, control method and program for the data converting apparatus | |
JP2016163070A (en) | Data converter and control method and program thereof | |
JP4096672B2 (en) | Data conversion method and data conversion apparatus | |
JP3512462B2 (en) | Black isolated point removal device | |
JPH05342340A (en) | Method for picture processing and device therefor | |
JP2010214905A (en) | Image forming apparatus, image forming method, and program | |
JP3308940B2 (en) | Encoding method and decoding method | |
JP2006165649A (en) | Multi-dimensional data converter and method thereof | |
JP2008187514A (en) | Image processor and image processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040514 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060524 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060526 |
|
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: 20070223 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070305 |
|
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: 20100309 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110309 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120309 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130309 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140309 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |