(58)【調査した分野】(Int.Cl.,DB名)
前記算出手段は、前記第1の表色系の画像データに対して前記複数の色成分から選択した異なる2色の色成分の乗算値および各色成分の自乗値を前記多次項の値としてそれぞれ算出する請求項1記載の画像処理装置。
前記第1の表色系の画像データがRGB表色系の画像データであり、前記第2の表色系の画像データがL*a*b*表色系の画像データである請求項1から3のいずれか1項記載の画像処理装置。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、変換係数を乗算した後に全ての項に対してシフト演算を行う場合や、変換係数を乗算した項を全て加算した後に一括してシフト演算を行う場合と比較して、少ない演算処理で精度の高い色変換を実現することが可能な画像処理装置およびプログラムを提供することである。
【課題を解決するための手段】
【0005】
[画像処理装置]
請求項1に係る本発明は、
入力された複数の色成分により表現された第1の表色系の画像データに対して複数の色成分の組み合わせを乗算して得られる多次項の値を複数算出する算出手段と、
前記算出手段により算出された複数の多次項の値を、それぞれ予め設定されたビット数だけシフトする複数の第1のシフト手段と、
入力された前記複数の色成分の値および前記第1のシフト手段によりシフトされた後の値に対して、予め設定された複数の変換係数を、第2の表色系の各色成分毎にそれぞれ乗算する複数の乗算手段と、
前記複数の乗算手段により変換係数が乗算された後の値を、第2の表色系の各色成分毎にそれぞれ加算する複数の加算手段と、
前記複数の加算手段により加算された値をそれぞれ予め設定されたビット数だけシフトして、第2の表色系の画像データの各色成分の値として出力する複数の第2のシフト手段と、
を備えた画像処理装置である。
【0006】
請求項2に係る本発明は、前記第1のシフト手段が、前記多次項の次数に応じたビット数だけ前記複数の多次項の値をシフトする請求項1記載の画像処理装置である。
【0007】
請求項3に係る本発明は、前記算出手段が、前記第1の表色系の画像データに対して前記複数の色成分から選択した異なる2色の色成分の乗算値および各色成分の自乗値を前記多次項の値としてそれぞれ算出する請求項1記載の画像処理装置である。
【0008】
請求項4に係る本発明は、前記第1の表色系の画像データがRGB表色系の画像データであり、前記第2の表色系の画像データがL*a*b*表色系の画像データである請求項1から3のいずれか1項記載の画像処理装置である。
【0009】
[プログラム]
請求項5に係る本発明は、
入力された複数の色成分により表現された第1の表色系の画像データに対して複数の色成分の組み合わせを乗算して得られる多次項の値を複数算出するステップと、
算出された複数の多次項の値を、それぞれ予め設定されたビット数だけシフトする
シフトステップと、
入力された前記複数の色成分の値および前
記シフト
ステップによりシフトされた後の値に対して、予め設定された複数の変換係数を、第2の表色系の各色成分毎にそれぞれ乗算するステップと、
変換係数が乗算された後の値を、第2の表色系の各色成分毎にそれぞれ加算するステップと、
各色成分毎に加算された値をそれぞれ予め設定されたビット数だけシフトして、第2の表色系の画像データの各色成分の値として出力するステップとをコンピュータに実行させるためのプログラムである。
【発明の効果】
【0010】
請求項1に係る本発明によれば、変換係数を乗算した後に全ての項に対してシフト演算を行う場合や、変換係数を乗算した項を全て加算した後に一括してシフト演算を行う場合と比較して、少ない演算処理で精度の高い色変換を実現することが可能な画像処理装置を提供することができる。
【0011】
請求項2に係る本発明によれば、請求項1に係る本発明により得られる効果に加えて、演算処理量と色変換精度のバランスを適切に保つことができるという効果を得ることができる。
【0012】
請求項3に係る本発明によれば、第1の表色系の画像データから2次項を算出して色変換を行う際に、変換係数を乗算した後に全ての項に対してシフト演算を行う場合や、変換係数を乗算した項を全て加算した後に一括してシフト演算を行う場合と比較して、少ない演算処理で精度の高い色変換を実現することが可能な画像処理装置を提供することができる。
【0013】
請求項4に係る本発明によれば、RGB表色系の画像データをL*a*b*表色系の画像データに色変換を行う際に、変換係数を乗算した後に全ての項に対してシフト演算を行う場合や、変換係数を乗算した項を全て加算した後に一括してシフト演算を行う場合と比較して、少ない演算処理で精度の高い色変換を実現することが可能な画像処理装置を提供することができる。
【0014】
請求項5に係る本発明によれば、変換係数を乗算した後に全ての項に対してシフト演算を行う場合や、変換係数を乗算した項を全て加算した後に一括してシフト演算を行う場合と比較して、少ない演算処理で精度の高い色変換を実現することが可能なプログラムを提供することができる。
【発明を実施するための形態】
【0016】
[背景]
まず、本発明の理解を助けるために、その背景及び概略を説明する。
【0017】
ある色空間の画像データを他の色空間の画像データに変換する方法として、N×Mの行列演算を行う方法が知られている。例えば、RGBの色成分で表されたRGB表色系の画像データをL*a*b*表色系の画像データに変換するために、
図1に示すような3×9の行列演算を行う方法が知られている。
【0018】
この
図1に示した行列演算では、入力信号として、B、G、R、B×B、G×G、R×R、B×G、G×R、R×Bという9つの値が入力され、出力として、L*、a*、b*という3つの値が出力信号として得られる。
【0019】
この行列演算を行うことにより例えば、L*=C11×B+C12×G+・・・・・+C19×R×Bというような演算が行われ、L*、a*、b*の値がそれぞれ算出される。このような行列演算を行う場合の変換係数C11、C12、・・・C39の値の例を
図2に示す。
【0020】
上記のような演算処理をデジタル処理により行うためには、一般的に先ず変換係数の実数値を整数値とシフト量に変換しておき、実際の演算処理を行う場合には、先ず入力値に整数値を乗算し、得られた値を予め設定されたシフト量だけシフトすることにより除算する方法が行われている。
【0021】
このような演算を行うための画像処理装置の構成を
図3に示す。この画像処理装置は、2次項生成部81と、L*、a*、b*の色成分毎に設けられた演算器82、83、84とから構成されている。
【0022】
2次項生成部81は、3色の色成分B、G、Rにより表現されたRGB表色系の画像データを入力し、その3色の色成分から選択可能な全ての2色の色成分の乗算値B×G、G×R、R×Gおよび各色成分の自乗値(2乗値)B×B、G×G、R×Rをそれぞれ算出し、入力した3色の色成分とともに出力する。
【0023】
演算器82、83、84は、それぞれ、色成分生成期81から出力された9つの値に基づいて、L*、a*、b*の値を算出する。
【0024】
この演算器82の具体的な構成の一例を
図4に示す。この
図4に示した演算器82は、最も一般的な方式(以下通常方式と呼ぶ)であり、乗算器91〜99と、シフト演算器101〜109と、加算器110とから構成されている。
【0025】
乗算器91〜99は、それぞれ、入力値である9つの値B、G、R、B×B、G×G、R×R、B×G、G×R、R×Bに対して、
図5に示すような変換係数D11、D12、・・・、D19を乗算する。
【0026】
この
図5に示す変換係数D11、・・・、D39およびシフト量sft11、・・・、sft39は、
図2に示した変換係数を整数の変換係数とシフト量に変換したものである。
【0027】
そして、シフト演算器101〜109は、
図5に示すようなシフト量sft11、sft12、・・・、sft19により指定されたビット数だけ、乗算器91〜99により変換係数が乗算された後の値をシフトする。
【0028】
そして、加算器110は、シフト演算器101〜109からの出力値を全て加算して、L*の値として出力する。
【0029】
なお、
図5において変換係数D21、D22、・・・、D29およびシフト量sft21、sft22、・・・、sft29は、a*の値を算出するためのものである。また、変換係数D31、D32、・・・、D39およびシフト量sft31、sft32、・・・、sft39は、b*の値を算出するためのものである。
【0030】
このような色変換処理では、乗算処理およびシフト演算処理は、1つの項に注目すると
図6に示すように行われる。この
図6は、色成分Bの値に変換係数D11=−571を乗算し、sft11=12ビットだけシフト演算する場合を示すものである。
【0031】
なお、入力値である色成分Bの値は8ビットにより表現され、変換係数D11は符号付の11ビットにより表現され、シフト量sft11は5ビットにより表現されている。
【0032】
入力値である100は、乗算器91により変換係数D11=−571が乗算されることにより19ビットで表現される値(−57100)となる。そして、この値はシフト演算器101により12ビットだけシフトされることにより−13.9375となり加算器110に出力される。
【0033】
もし、
図2に示した変換係数C11=−0.139610126615を用いて実数計算を行った場合、100×C11=−13.9610126615となるため、
図6に示した方法によりほぼ同等の結果が得られていることがわかる。
【0034】
また、演算器82の具体的な構成の他の例を
図7に示す。この
図7に示した演算器82は、シフト演算を行う回数を減らすことを目的として、シフト演算を加算器110の出力値に対して1回のみ行うようにした共通シフト方式と呼ばれる構成であり、乗算器91〜99と、加算器110と、シフト演算器120とから構成されている。なお、
図7において、
図4中の構成要素と同一の構成要素には同一の符号を付し、説明を省略するものとする。
【0035】
乗算器91〜99は、それぞれ、入力値である9つの値B、G、R、B×B、G×G、R×R、B×G、G×R、R×Bに対して、
図8に示すような変換係数E11、E12、・・・、E19を乗算する。
【0036】
この
図8に示す変換係数E11、・・・、E39および共通シフト量sftL、sft a、sft bは、
図2に示した変換係数を整数の変換係数と共通シフト量に変換したものである。
【0037】
そして、加算器110は、乗算器91〜99からの出力値を全て加算して出力する。シフト演算器120は、共通シフト量sftL(14ビット)により指定されたビット数だけ、加算器110の出力値をシフトして、L*の値として出力する。
【0038】
この共通シフト方式の演算処理によれば、
図4の通常方式と比較してシフト演算処理が少なくなっていることが分かる。
【0039】
[実施形態]
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図9は本発明の一実施形態の画像処理装置のハードウェア構成を示す図である。
【0040】
本実施形態の画像処理装置は、
図9に示されるように、DSP(Digital Signal Processor)11と、メモリ12と、ROM13とにより構成されている。
【0041】
DSP11は、メモリ12またはROM13に格納された制御プログラムに基づいて所定の処理を実行することによりRGB表色系の画像データをL*a*b*表色系の画像データへの色変換処理を実現する。なお、本実施形態では、DSP11は、メモリ12またはROM13内に格納された制御プログラムを読み出して実行するものとして説明したが、当該プログラムをCD−ROM等の記憶媒体に格納してDSP11に提供することも可能である。
【0042】
図10は、上記の制御プログラムが実行されることにより実現される本実施形態の画像処理装置の機能構成を示すブロック図である。
【0043】
本実施形態の画像処理装置は、
図10に示されるように、2次項生成部20と、プリシフト部30と、乗算部40L、40a、40bと、加算器50L、50a、50bと、シフト演算器60L、60a、60bとを備えている。
【0044】
また、プリシフト部30は、シフト演算器31〜36から構成されている。また、乗算部40Lは、乗算器41〜49から構成されている。なお、乗算部40a、40bの構成は乗算部40Lと同様な構成であるため、その説明は省略する。
【0045】
2次項生成部20は、RGB表色系の画像データに対して3つの色成分R、G、Bから選択した異なる2色の色成分の乗算値(BG、GR、GB)および各色成分の自乗値(BB、GG、RR)を2次項の値としてそれぞれ算出する。なお、本実施形態における2次項生成部20は、入力されたBGRの各色成分の値もそのまま出力している。
【0046】
プリシフト部30におけるシフト演算器31〜36は、それぞれ、2次項生成部20により算出された6つの2次項の値を、それぞれプリシフト量Sbb、Sgg、・・・、Srbにより設定されたビット数だけシフトする。
【0047】
乗算部40Lにおける乗算器41〜49は、RGB表色系の画像データの3つの色成分の値(B、G、R)およびプリシフト部30においてシフト演算された後の値に対して、予め設定された9つの変換係数C1〜C9を、L*a*b*表色系の各色成分毎にそれぞれ乗算する。
【0048】
加算器50Lは、9つの乗算器41〜49により変換係数C1〜C9が乗算された後の値を加算して出力する。
【0049】
シフト演算器60Lは、加算器50Lにより加算された値を共通シフト量SLとして設定されたビット数だけシフトして、L*a*b*表色系の画像データのL*成分の値として出力する。
【0050】
また、上記で説明したのと同様な処理により、乗算部40a、加算器50aによりa*成分の値が算出され、乗算部40b、加算器50bによりb*成分の値が算出される。
【0051】
本実施形態において3色の出力値を得るために必要なシフト演算回数は、シフト演算器31〜36、60L、60a、60bにおいて行われる合計9回である。
【0052】
これに対して、
図4に示した通常方式では、1色の出力を得るためにシフト演算器101〜109分の9回のシフト演算処理が必要であり、3色の出力を得るためには27(=9回×3色)回のシフト演算が必要となっている。
【0053】
本実施形態では、2次の項(BB、GG、RR、BG、GR、RB)については変換係数C4〜C9を乗算する前にプリシフト部30におけるシフト演算が行われるため、L*、a*、b*の3色で共通したシフト演算を行うことが可能となり、各色毎に独立してシフト演算を行う場合と比較してシフト演算の回数が削減されている。
【0054】
次に、本実施形態の画像処理装置において使用される変換係数C1〜C9、プリシフト量Sbb〜Srb、および共通シフト量SL、Sa、Sbの例を
図11に示す。この
図11に示した変換係数やプリシフト量、共通シフト量は、
図2に示した変換係数による演算と同じ演算を行うために設定された値である。また、ここではL*成分を算出するための変換係数、a*成分を算出するための変換係数、b*成分を算出するための変換係数を全てC1〜C9で表現しているが、
図11に示すように、これらの変換係数はL*、a*、b*の各色毎に設定される異なる係数である。
【0055】
なお、
図11に示した例では、プリシフト量Sbb〜Srbは共通して4ビット、共通シフト量SL、Sa、Sbは全て14ビットに設定する場合が示されているが、これらのシフト量をそれぞれ異なる値に設定することも可能である。
【0056】
図2に示したような実数値を整数部とシフト量に置き換えるためには、まず、各実数値の中で最も大きい値が整数部のビット幅を超えない範囲で最大に保たれるようにする。例えば、
図2に示す変換係数を整数部とシフト量に置き換える場合、置き換えた後の変換係数を符号付16ビットで表現しようとすると、変換係数は±32768(=2
15)の範囲としなければならない。そして、
図2に示された変換係数で絶対値が最も大きな変換係数はC22=1.395056962967であるため、この変換係数C22が上述した範囲に収まるような共通シフト量を設定する。具体的には、1.395056962967×2
14=22856.61326であり、1.395056962967×2
15=45713.22652であるため、上記の範囲を超えない共通シフト量として14が設定される。
【0057】
そして、2次の項に対する変換係数については、整数部のビット幅を超えない範囲で大きくなるようにプリシフト部30のプリシフト量を設定する。例えば、プリシフト量を4ビットとした場合、2次の項に対する変換係数C4〜C9については、値が約2
4倍となるように設定する。
【0058】
そのため、
図8に示した共通シフト方式の変換係数と比較して、
図11に示した本実施形態における変換係数は、2次の項に対する変換係数のみが約16倍になっているのが分かる。そのため、本実施形態における演算処理の結果は、多次項に乗算される変換係数C4〜C9の実効ビットは、共通シフト方式と比較して大きくなっている。
【0059】
何故ならば、2次の項は2つの値の乗算値であるため、RGB単独の値と比較して絶対値が大きくなり、変換係数は相対的に小さくなるが、本実施形態の方式では、この2次の項を大きくすることにより実数計算値との間の誤差が少なくなるからである。
【0060】
例えば、入力値をB=150、G=200、R=250とした場合の各演算方式による演算結果を
図12に示す。
【0061】
この
図12を参照すると、実数計算値(理論値)と比較して最も近い値が得られるのは通常方式であるが、本実施形態における演算結果もこの通常方式とほぼ同程度の精度となっていることが分かる。また、共通シフト方式の演算結果は、通常方式や本実施形態における演算方式と比較すると、実数計算値との色差が大きくなっているのが分かる。
【0062】
また、1クロックでシフト演算処理と乗算処理を同時に実行可能な機能を備えるDSPを用いると、2次の項に対するプリシフト演算処理(プリシフト部30)と、乗算部40Lにおける乗算処理を1クロックで実行することが可能となる。つまり、このようなDSPを用いることにより、
図7に示した共通シフト方式と同じ演算処理量で色変換精度が通常方式に近づくこととなる。
【0063】
このようなDSPを用いた場合の演算処理を回路的な表現で記載したものを
図13に示す。
この
図13に示した構成では、シフト演算器31〜36と、乗算器41〜49と、加算器71〜78と、シフト演算器60Lにより演算処理が行われている。
【0064】
図13に示すように、1クロックでシフト演算処理と乗算処理を同時に実行可能な機能を備えるDSPを用いれば、シフト演算器31および乗算器44の処理や、シフト演算器32、乗算器45および加算器71の処理や、シフト演算器36、乗算器49および加算器75の処理が1クロックで実行される。
【0065】
[変形例]
上記実施形態では、説明を簡単にするためにRGB3色の表色系の画像データから2次の項(BB、GG、RR、BG、GR、RB)を算出して色変換のための行列演算を行う場合について説明しているが、3次項以上の多次項を算出して色変換を行うような場合にも本発明は同様に適用可能である。
【0066】
例えば入力画像データがRGB表色系の画像データの場合、3次の項として、BBB、GGG、RRR、BBR、BBG、GGB、GGR、RRB、RRG、BGRという10の項を算出して上記で説明した2次の項、各色成分の値とともに行列演算を行うことにより色変換処理を実現することが可能である。
【0067】
この場合、
図10に示した構成において、2次項生成部20を、複数の色成分により表現された表色系の画像データに対して複数の色成分の組み合わせを乗算して得られる多次項の値を複数算出する多次項生成部に置き換えれば良い。そして、プリシフト部30では、算出された複数の多次項の値を、それぞれ予め設定されたビット数だけシフトするようにすれば良い。
【0068】
さらに、このような構成において、プリシフト部30では、多次項の次数に応じたビット数だけ複数の多次項の値をシフトするようにしても良い。つまり、多次項の次数毎にシフト演算を行うシフト量を設定するようにしても良い。
【0069】
また、上記実施形態では、RGBの色空間とL*a*b*の色空間との間の3入力3出力の色変換(3色の色成分を3色の色成分に変換する色変換)を行う場合を用いて説明したが、本発明はこれに限定されるものではなく、RGB、CMY、CMYK、L*a*b*、YCbCr、XYZ等の他の色空間を含めた複数の色空間のうちの任意の2つの色空間の間で色変換を行う場合でも同様に本発明を適用することができるものである。
【0070】
しかし、例えば3入力4出力の色変換を行う場合には、4色目の出力を得るために、
図1に示した変換係数に対してC41〜C49という新たな変換係数が必要となる。
【0071】
また、4入力3出力の色変換を行う場合には、入力項の数が4色目の値の項、4色目の自乗項、4色目と他の3色との組み合わせの項だけ増加する。例えば、CMYKを入力とする場合には、C、M、Y、K、C×C、M×M、Y×Y、K×K、C×M、M×Y、Y×C、K×C、K×M、K×Yという14の項が入力項となる。また、入力項の数が増えたことにより、増えた入力項に対応する変換係数も必要となる。
【0072】
また、CMYKの色空間からC’M’Y’K’の色空間への色変換のような4入力4出力の色変換を行う場合には、上記の2つの場合を組み合わせれば実現可能である。