(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
以下、添付図面を参照しながら実施形態を説明する。
【0014】
上述されているように、自発光表示パネルを駆動する表示ドライバにおいては、ガンマ補正と同時に画面の輝度を制御する画像データ演算を行うことが望ましい。ここでいう自発光表示パネルとは、例えば、OLED表示パネルのように、画素を構成する副画素を構成する画素回路が発光素子を含んでいる表示パネルのことである。最も典型的なOLED表示パネルの構成では、各画素は、R副画素、G副画素及びB副画素を含んでおり、R副画素、G副画素及びB副画素は、それぞれ、赤色、緑色及び青色を発光する発光素子を含んでいる。
【0015】
図1は、理想的な場合にガンマ補正において実現すべき各副画素の輝度と入力階調値との関係、即ち、表示パネルの理想的なガンマ特性を、画面の各輝度について示すグラフである。「輝度100%」は、画面の輝度が最大輝度である(100%である)場合のガンマ特性を示すグラフであり、「輝度75%」は、画面の輝度が最大輝度の75%である場合のガンマ特性を示すグラフである。同様に、「輝度50%」は、画面の輝度が最大輝度の50%である場合のガンマ特性を示すグラフであり、「輝度25%」は、画面の輝度が最大輝度の25%である場合のガンマ特性を示すグラフである。
図1においては、画面の輝度が最大(輝度100%)であるときに、ある副画素に対応する入力階調値が最大値(
図1では255)である場合の当該副画素の輝度が1.0であるとして規格化されている。例えば、画面の輝度が100%である場合、ある副画素に対応する入力階調値が186であれば、当該副画素の理想的な輝度は0.5である。
【0016】
ガンマ補正と同時に画面の輝度を制御する演算を行う場合、ガンマ補正の入出力特性を、画面の輝度に応じて変化することが望ましい。
図2は、画面の各輝度についてのガンマ補正の理想的な入出力特性の一例を示すグラフである。なお、
図2は、電圧プログラミングによってOLED表示パネルを駆動する場合に用いられる表示データを生成する場合における、各輝度についてのガンマ補正の入出力特性を示している。
図2では、表示データの値(即ち、ガンマ補正の出力値)が12ビットであり、且つ、表示データの値に比例した電圧で、OLED表示パネルの各画素の各副画素がプログラミングされるものとして入出力特性のグラフが描かれている。例えば、出力値が“4095”である場合、5Vの電圧で対象の副画素がプログラミングされる。電圧プログラミングによってOLED表示パネルを駆動する場合、駆動電圧が低いほど輝度が大きくなることに留意されたい。
【0017】
図2において留意すべきことは、表示デバイスのガンマ特性に起因して、ガンマ補正の入出力特性のカーブの形状が、画面の輝度に応じて異なるということである。例えば、入出力特性のカーブが折れ曲がる入力階調値は、輝度に応じて異なる。より具体的には、
図2の例においては、輝度100%に対応する入出力特性のカーブは、入力階調値“17”及び“34”において折れ曲がるが、輝度25%に対応する入出力特性のカーブは、入力階調値“30”及び“66”で折れ曲がっている。
【0018】
入出力特性のカーブの形状が画像の全体の輝度に応じて異なることは、ガンマ補正と同時に画像の全体の輝度を制御する演算を行うガンマ補正回路の回路規模を不所望に増大させるという問題を生じさせ得る。例えば、ガンマ補正と同時に画面の輝度を制御する演算を行う最も簡便な手法は、画面の各輝度について、入出力特性に対応するLUT(lookup table)を用意することである。しかしながら、LUTは回路規模が大きいので、LUTを画面の各輝度について用意すると、ガンマ補正回路の回路規模が増大してしまう。
【0019】
ガンマ補正回路の回路規模の増大を防止するための一つの手法として、画面の輝度が最大輝度である場合のガンマ補正の入出力特性を実現する演算回路(例えば、LUT)を設けると共に、当該演算回路に入力される入力階調値を画面の輝度に応じて調節することが考えられる。
図3は、このような構成のガンマ補正回路100の構成を示すブロック図である。なお、出願人は、
図3のガンマ補正回路100の構成が公知であることを自認するものではないことに留意されたい。
【0020】
図3のガンマ補正回路100は、入力階調値調節回路101と、最大輝度演算回路102とを備えている。入力階調値調節回路101は、ガンマ補正回路100の入力階調値D
IN1と画面の輝度とに基づいて、最大輝度演算回路102に供給すべき入力階調値D
IN2を算出する。最大輝度演算回路102は、最大輝度(輝度100%)についてのガンマ補正の入出力特性を実現する演算回路であり、入力階調値D
IN2を受け取ると、最大輝度(輝度100%)についてのガンマ補正の入出力特性に従って入力階調値D
IN2に対応する出力値D
OUTを出力する。最大輝度演算回路102は、例えば、
図2の「輝度100%」のグラフとして規定された入出力関係に従って入力階調値D
IN2に対応する出力値D
OUTを出力する。このような動作は、例えば、最大輝度演算回路102としてLUTを使用することで実現可能である。
【0021】
ガンマ補正のガンマ値がγであり、画面の輝度が最大輝度のq倍(0≦q<1)である場合、ガンマ補正回路100の入力階調値D
IN1と最大輝度演算回路102に与えるべき入力階調値D
IN2との間には、下記式(1a)が成立する。
【数1】
【0022】
式(1a)から下記式(1b)が得られる:
【数2】
【0023】
例えば、表示パネルのガンマ値γが2.2であり、画面の輝度が最大輝度の0.5倍(輝度50%)である場合、式(1b)から下記式(1c)が得られる。
【数3】
式(1c)は、ガンマ値γが2.2である場合、ガンマ補正回路100の入力階調値D
IN1を(186/255)倍して得られる値を入力階調値D
IN2として最大輝度演算回路102に入力することにより、輝度50%についてのガンマ補正の入出力特性を実現することができることを意味している。一般に、ガンマ値がγであり、画面の輝度が最大輝度のq倍である場合、ガンマ補正回路100の入力階調値D
IN1のq
1/γ倍の値を最大輝度演算回路102に入力することで、最大輝度のq倍である場合についてのガンマ補正を実現することができる。
【0024】
しかしながら、このような手法は、表現可能な階調数を減少させるという問題を生じさせる。これは、
図4に図示されているように、ガンマ補正回路100の入力階調値D
IN1のq
1/γ倍の入力階調値D
IN2を最大輝度演算回路102に入力する構成では、入力階調値D
IN2の許容される範囲が、入力階調値D
IN1の許容最大値D
INMAXのq
1/γ倍以下に制限されるからである。入力階調値D
IN1が8ビットであれば、入力階調値D
IN1の許容最大値D
INMAXは、255(=2
8−1)である。例えば、画面の輝度が特定輝度の0.5倍(輝度50%)である場合、ガンマ補正回路の入力階調値D
IN1を(186/255)倍して得られる入力階調値D
IN2が最大輝度演算回路102に入力される。しかしながら、最大輝度演算回路102に入力される入力階調値D
IN2の範囲は0から186に制限される。これは、表現可能な階調数が減少することを意味している。
【0025】
以下に述べられる実施形態では、回路規模の増大を抑制すると共に、表現可能な階調数の減少の問題を回避するように構成されたガンマ補正回路、及び、その応用が提示される。
【0026】
図5は、一実施形態の表示装置10の構成を示すブロック図である。
図5の表示装置10は、OLED表示パネル1と、表示ドライバ2とを備えるOLED表示装置として構成されている。
【0027】
OLED表示パネル1は、ゲート線4とデータ線5と画素回路6とゲートドライバ回路7とを備えている。画素回路6のそれぞれは、ゲート線4とデータ線5とが交差する位置に設けられており、赤、緑、青のいずれかの色を発光する発光素子を備えている。赤を発光する発光素子を備える画素回路6は、R副画素として用いられる。同様に、緑を発光する発光素子を備える画素回路6はG副画素として用いられ、青を発光する発光素子を備える画素回路6はB副画素として用いられる。ゲートドライバ回路7は、表示ドライバ2から受け取ったゲート制御信号SOUTに応答してゲート線4を駆動する。本実施形態では、一対のゲートドライバ回路7が設けられており、一方のゲートドライバ回路7は、奇数番目のゲート線4を駆動し、他方のゲートドライバ回路7は、偶数番目のゲート線4を駆動する。
【0028】
表示ドライバ2は、ホスト3から受け取った画像データD
IN及び制御データD
CTRLに応じてOLED表示パネル1を駆動してOLED表示パネル1に画像を表示する。画像データD
INは、OLED表示パネル1の各画素の各副画素の階調値を記述している。制御データD
CTRLは、表示ドライバ2を制御するためのコマンド及びパラメータを含んでいる。ホスト3としては、例えば、アプリケーションプロセッサ、CPU(central processing unit)、DSP(digital signal processor)などが使用され得る。
【0029】
図6は、一実施形態における表示ドライバ2の構成を示すブロック図である。表示ドライバ2は、インターフェース制御回路11と、ガンマ補正回路12と、ラッチ回路13と、リニア階調電圧生成回路14と、データ線駆動回路15と、レジスタ16とを備えている。
【0030】
インターフェース制御回路11は、下記の動作を行う。第1に、インターフェース制御回路11は、ホスト3から受け取った画像データD
INをガンマ補正回路12に転送する。インターフェース制御回路11は、更に、制御データD
CTRLに含まれている様々な制御パラメータをレジスタ16に格納すると共に、制御データD
CTRLに含まれるコマンドに応答して表示ドライバ2の各回路を制御する。レジスタ16に格納される制御パラメータは、ガンマ補正回路12で行われるガンマ補正を制御するためのパラメータ、具体的には最大輝度制御点データCP0〜CPmを含んでいる。最大輝度制御点データCP0〜CPmの内容や技術的意義については、後に詳細に説明する。加えて、インターフェース制御回路11は、OLED表示パネル1に表示される画面の輝度(OLED表示パネル1に表示される画像全体の輝度)を指定する輝度データD
BRTをガンマ補正回路12に供給する。一実施形態では、ホスト3から受け取った制御データD
CTRLが輝度データD
BRTを含んでおり、インターフェース制御回路11は、制御データD
CTRLに含まれる輝度データD
BRTをガンマ補正回路12に供給してもよい。
【0031】
ガンマ補正回路12は、インターフェース制御回路11から受け取った画像データD
INに対してガンマ補正を行ってOLED表示パネル1の駆動に用いられる表示データD
OUTを生成する。上述の最大輝度制御点データCP0〜CPm及び輝度データD
BRTは、ガンマ補正回路12によって行われるガンマ補正において用いられる。ガンマ補正回路12において行われるガンマ補正の詳細については後述する。なお、インターフェース制御回路11から受け取った画像データD
INそのものではなく、画像データD
INに何らかのデジタル演算処理(例えば、スケーリング(拡大又は縮小)や色調整)を行って得られる画像データがガンマ補正回路12に入力されてもよい。
【0032】
ラッチ回路13は、ガンマ補正回路12から出力される表示データD
OUTをラッチしてデータ線駆動回路15に転送する。
【0033】
リニア階調電圧生成回路14は、表示データD
OUTに記述されているデータ値がとり得る値のそれぞれに対応する一組の階調電圧を生成する。本実施形態では、リニア階調電圧生成回路14は、隣接する階調電圧の電圧レベルの間隔が同一であるように一組の階調電圧を生成する。即ち、本実施形態では、表示データD
OUTに記述されているデータ値とそれに対応する階調電圧の関係が線形的である。
【0034】
データ線駆動回路15は、表示データD
OUTに記述されているデータ値に対応する階調電圧で各データ線5を駆動する。詳細には、データ線駆動回路15は、リニア階調電圧生成回路14から供給された階調電圧のうちから表示データD
OUTのデータ値に対応する階調電圧を選択し、その階調電圧になるように各データ線5を駆動する。
【0035】
続いて、ガンマ補正回路12の動作について説明する。以下の説明においては、画像データD
INとして、演算対象の副画素の入力階調値X_INがガンマ補正回路12の入力に与えられると、ガンマ補正回路12が当該副画素に対応する表示データD
OUTのるデータ値として出力値Y_OUTを出力するものとする。以下における本実施形態の説明では、入力階調値X_INが8ビットデータであり、出力値Y_OUTが12ビットデータであるとして説明を行う。
【0036】
本実施形態では、ガンマ補正回路12で行われるガンマ補正の入出力特性、即ち、入力階調値X_INと出力値Y_OUTとの対応関係が、最大輝度制御点データCP0〜CPm及び輝度データD
BRTによって制御される。最大輝度制御点データCP0〜CPmは、画面の輝度が最大輝度である場合、即ち、輝度データD
BRTにより最大輝度が指定されている場合のガンマ補正の入出力特性を指定する一組のデータである。
【0037】
図7は、最大輝度制御点データCP0〜CPm及びそれによって決定される入出力特性のカーブを概念的に示すグラフである。最大輝度制御点データCP0〜CPmは、X軸を入力階調値X_INに対応する座標軸とし、Y軸を出力値Y_OUTに対応する座標軸として規定されるXY座標系において、画面の輝度が最大輝度である場合のガンマ補正の入出力特性を規定する制御点CP0〜CPmの座標を指定するデータである。なお、
図7において、最大輝度制御点データCPi(iは、0以上m以下の整数)によって座標が指定される制御点を、制御点CPiと記載し、制御点CPiの座標を、CPi(X
CPi,Y
CPi)と記載していることに留意されたい。ここで、X
CPiは、制御点CPiのX座標(即ち、X軸方向に沿った方向における位置を示す座標)であり、Y
CPiは、制御点CPiのY座標(即ち、Y軸方向に沿った方向における位置を示す座標)である。また、制御点CPiのX座標X
CPiは、下記の条件を満たしているものとする:
X
CP0<X
CP1< … <X
CPi<X
CP(i+1)< … <X
CP(m−1)<X
CPm
ただし、制御点CP0のX座標X
CP0は、入力階調値X_INの許容最小値(即ち、0)であり、制御点CPmのX座標X
CPmは、入力階調値X_INの許容最小値(即ち、255)である。
【0038】
画面の輝度が最大輝度である場合(即ち、輝度データD
BRTにより最大輝度が指定されている場合)、ガンマ補正回路12は、制御点CP0〜CPmによって規定される曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標として、出力値Y_OUTを算出する。一実施形態では、ガンマ補正回路12は、制御点CP0〜CPmによって規定されるベジェ曲線を用いて入力階調値X_INに対応する出力値Y_OUTを算出してもよい。この場合、ガンマ補正回路12は、当該ベジェ曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標として、出力値Y_OUTを算出する。
【0039】
一例としては、ガンマ補正回路12は、制御点CP0〜CPmによって規定される2次ベジェ曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標として、出力値Y_OUTを算出してもよい。2次ベジェ曲線は、3つの制御点によって決定可能であるから、2次ベジェ曲線を用いて出力値Y_OUTを算出する場合、ガンマ補正回路12は、X座標が入力階調値X_INに近い3つの制御点CP(2k)〜CP(2(k+1))を制御点CP0〜CPmのうちから選択し、該3つの制御点CP(2k)〜CP(2(k+1))で規定される2次ベジェ曲線上に位置し、X座標が入力階調値X_INである点のY座標として、出力値Y_OUTを算出してもよい。2次ベジェ曲線が出力値Y_OUTの算出に用いられる場合、(2p+1)個(pは、2以上の整数)の制御点CP0〜CPmが最大輝度制御点データCP0〜CPmに規定される。即ち、m=2pである。
【0040】
ただし、出力値Y_OUTの算出に用いられるベジェ曲線は、2次ベジェ曲線に限定されない。一般に、n次ベジェ曲線は、(n+1)個の制御点で規定される。よって、n次ベジェ曲線を用いて出力値Y_OUTを算出する場合、ガンマ補正回路12は、X座標が入力階調値X_INに近い(n+1)個の制御点CP(k×n)〜CP((k+1)×n)を制御点CP0〜CPmのうちから選択し、該(n+1)個の制御点CP(k×n)〜CP((k+1)×n)で規定されるn次ベジェ曲線上に位置し、X座標が入力階調値X_INである点のY座標として、出力値Y_OUTを算出してもよい。n次ベジェ曲線が出力値Y_OUTの算出に用いられる場合、((p×n)+1)個(pは、2以上の整数)の制御点CP0〜CPmが最大輝度制御点データCP0〜CPmに規定される。即ち、m=n×pである。
【0041】
一方、輝度データD
BRTにより最大輝度以外の輝度が指定されている場合、
図8に図示されているように、ガンマ補正回路12は、当該指定された輝度である場合のガンマ補正の入出力特性が、制御点CP0〜CPmで規定される曲線をX軸方向にA倍に拡大して得られる曲線で表されるとして出力値Y_OUTを算出する。ここで、Aは、輝度データD
BRTによって指定されている輝度の最大輝度に対する比qに依存する係数である。なお、係数Aを得るための式は、後述する。ガンマ補正回路12は、制御点CP0〜CPmで規定される曲線をX軸方向にA倍に拡大して得られる曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標として、出力値Y_OUTを算出する。即ち、本実施形態では、画面の輝度が最大輝度である場合のガンマ補正回路12の入出力特性が、下記式(2a):
Y_OUT=f
MAX(X_IN) ・・・(2a)
により表される場合に、画面の輝度が最大輝度のq倍である場合のガンマ補正回路12の入出力特性が、下記式
Y_OUT=f
MAX(X_IN/A) ・・・(2b)
で表されるものとして、出力値Y_OUTが算出される。
【0042】
Y_OUT=f
MAX(X_IN/A)で表される曲線は、制御点CP0〜CPmのX座標をA倍して得られる制御点CP0’〜CPm’によって規定することができるから、画面の輝度が最大輝度のq倍である場合には、制御点CP0’〜CPm’によって規定される曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標として、出力値Y_OUTが算出される。ここで、制御点CP0’〜CPm’は、ガンマ補正における演算において実際に用いられる制御点であり、よって、以下では、補正用制御点CP0’〜CPm’と記載する。補正用制御点CPi’の座標CPi’(X
CPi’,Y
CPi’)は、制御点CPiの座標CPi(X
CPi,Y
CPi)を用いて下記式(3b)、(3c)によって得られる。
X
CPi’=A・X
CPi・・・(3b)
Y
CPi’=Y
CPi ・・・(3c)
【0043】
一例としては、ガンマ補正回路12は、補正点制御点CP0’〜CPm’によって規定される2次ベジェ曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標として、出力値Y_OUTを算出してもよい。ただし、出力値Y_OUTの算出に用いられるベジェ曲線は、2次ベジェ曲線に限定されない。
【0044】
上記のように、係数Aは、輝度データD
BRTによって指定されている輝度の最大輝度に対する比qに依存して決定される。表示装置10のガンマ値がγである場合、係数Aについて、下記式が成立する:
(X_IN/A)
γ=q・(X_IN)
γ ・・・(4a)
よって、Aは、下記式(4b)により決定可能である。
A=1/q
(1/γ) ・・・(4b)
【0045】
例えば、ガンマ値γが2.2であり、qが0.5である場合(即ち、画面の輝度が最大輝度の0.5倍である場合)、Aは、下記式(4c)で得られる:
A=1/(0.5)
1/2.2
=255/186 ・・・(4c)
即ち、画面の輝度が最大輝度の0.5倍(輝度50%)である場合、制御点CP0〜CPmのX座標を255/186倍することで得られる制御点CP0’〜CPm’で指定される曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標として出力値Y_OUTが算出される。一般に、輝度データD
BRTで指定されている画面の輝度が最大輝度のq倍である場合には、制御点CP0〜CPmのX座標を1/q
(1/γ)倍することで得られる制御点CP0’〜CPm’で指定される曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標として出力値Y_OUTが算出される。
【0046】
続いて、上記の動作を実現するためのガンマ補正回路12の具体的な構成の例を説明する。
図9は、一実施形態におけるガンマ補正回路12の構成を示すブロック図である。ガンマ補正回路12は、最大輝度制御点データCP0〜CPmを保持するレジスタ16と共に、ガンマ補正を実行するための補正回路部を構成している。
図9のガンマ補正回路12は、n次ベジェ曲線を用いて入力階調値X_INから出力値Y_OUTを算出するように構成されている。この場合、mは、p×n(pは、2以上の整数)であり、最大輝度制御点データCP0〜CPmによって(p×n+1)個の制御点CP0〜CPmの座標が指定される。
【0047】
ガンマ補正回路12は、補正用制御点演算回路21と、ベジェ曲線演算回路22とを備えている。補正用制御点演算回路21は、輝度データD
BRTと、入力階調値X_INと、レジスタ16から受け取った最大輝度制御点データCP0〜CPmとから、入力階調値X_INに対応する出力値Y_OUTの算出に用いられる(n+1)個の補正用制御点CP(k×n)’〜CP((k+1)×n)’を決定する。ここで、kは、0以上p−1以下の整数である。ベジェ曲線演算回路22は、(n+1)個の補正用制御点CP(k×n)’〜CP((k+1)×n)’で規定されるn次ベジェ曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標を算出し、算出したY座標を出力値Y_OUTとして出力する。
【0048】
補正用制御点演算回路21は、乗算回路23と、セレクタ24と、乗算回路25とを備えている。乗算回路23とセレクタ24は、入力階調値X_INと輝度データD
BRTに指定された画面の輝度と入力階調値X_INとに基づいて制御点CP0〜CPmのうちから(n+1)個の制御点CPk〜CP(k+n)を選択する選択回路を構成している。詳細には、乗算回路23は、入力階調値X_INに係数Aの逆数1/A(即ち、q
(1/γ))を乗じて得られる値として制御点選択用階調値Pixel_inを算出する。ここで、qは、輝度データD
BRTに指定された画面の輝度の最大輝度に対する比であり、係数Aは、上述の式(4b)で与えられることに留意されたい。セレクタ24は、制御点選択用階調値Pixel_inに基づいて、制御点CP0〜CPmのうちから(n+1)個の制御点CP(k×n)〜CP((k+1)×n)を選択する。以下では、セレクタ24で選択された制御点CP(k×n)〜CP((k+1)×n)を選択制御点CP(k×n)〜CP((k+1)×n)と記載する。乗算回路25は、選択制御点CP(k×n)〜CP((k+1)×n)のX座標X
CP(k×n)〜X
CP((k+1)×n)をA倍して、それぞれ、補正用制御点CP(k×n)’〜CP((k+1)×n)’のX座標X
CP(k×n)’〜X
CP((k+1)×n)’を算出する。補正用制御点CP(k×n)’〜CP((k+1)×n)’のY座標Y
CP(k×n)’〜Y
CP((k+1)×n)’としては、選択制御点CP(k×n)〜CP((k+1)×n)のY座標Y
CP(k×n)〜Y
CP((k+1)×n)がそのまま用いられる。
【0049】
図10は、
図9のガンマ補正回路12の動作を示すフローチャートである。ある副画素(対象副画素)の階調を示す入力階調値X_INがガンマ補正回路12に入力されると、制御点選択用階調値Pixel_inが、入力階調値X_INから乗算回路23によって算出される(ステップS01)。上述のように、制御点選択用階調値Pixel_inは、入力階調値X_INに係数Aの逆数1/A(即ち、q
(1/γ))を乗ずることで得られる。
【0050】
更に、制御点選択用階調値Pixel_inに基づいて、制御点CP0〜CPmのうちから(n+1)個の制御点CP(k×n)〜CP((k+1)×n)が選択される(ステップS02)。(n+1)個の制御点CP(k×n)〜CP((k+1)×n)の選択は、セレクタ24によって行われる。より具体的には、下記のようにして(n+1)個の制御点CPk〜CP(k+n)が選択される。
【0051】
m(=p×n+1)個の制御点CP0〜CPmのうち、制御点CP0、CPn、CP(2n)、・・・CP(p×n)は、n次ベジェ曲線が通過する制御点である。他の制御点は、該n次ベジェ曲線の形状を決めるが、当該n次ベジェ曲線の上にあるとは限らない。セレクタ24は、n次ベジェ曲線が通過する制御点それぞれのX座標と制御点選択用階調値Pixel_inとを比較し、その比較の結果に応じて(n+1)個の制御点CP(k×n)〜CP((k+1)×n)を選択する。
【0052】
詳細には、制御点選択用階調値Pixel_inが、制御点CP0のX座標より大きく、制御点CPnのX座標より小さい場合、セレクタ24は、制御点CP0〜CPnを選択する。また、制御点選択用階調値Pixel_inが、制御点CPnのX座標より大きく、制御点CP2nのX座標より小さい場合、セレクタ24は、制御点CPn〜CP(2n)を選択する。一般に、制御点選択用階調値Pixel_inが、制御点CP(k×n)のX座標X
CP((k−1)×n)より大きく、制御点CP((k+1)×n)のX座標X
CP(k×n)より小さい場合、セレクタ24は、制御点CP(k×n)〜CP((k+1)×n)を選択する(kは、0以上p以下の整数)。
【0053】
また、制御点選択用階調値Pixel_inが制御点CP(k×n)のX座標X
CP(k×n)に一致する場合、一実施形態では、セレクタ24が、制御点CP(k×n)〜((k+1)×n)を選択する。この場合、制御点選択用階調値Pixel_inが制御点CP(p×n)に一致するときには、セレクタ24は、制御点CP((p−1)×n)〜CP(p×n)を選択する。
【0054】
その代わりに、制御点選択用階調値Pixel_inが制御点CP((k+1)×n)のX座標X
CP((k+1)×n)に一致する場合に、セレクタ24が制御点CP(k×n)〜((k+1)×n)を選択してもよい。この場合、制御点選択用階調値Pixel_inが制御点CP0に一致するときには、セレクタ24は、制御点CP0〜CPnを選択する。
【0055】
続いて、補正用制御点CP(k×n)’〜CP((k+1)×n)’が決定される(ステップS03)。詳細には、補正用制御点CP(k×n)’〜CP((k+1)×n)’のX座標X
CP(k×n)’〜X
CP((k+1)×n)’は、乗算回路25により、選択制御点CP(k×n)〜CP((k+1)×n)のX座標X
CP(k×n)〜X
CP((k+1)×n)と係数Aとの積として算出される。即ち、乗算回路25は、下記式(5a):
X
CP(k×n)’=A・X
CP(k×n)
X
CP((k×n)+1)’=A・X
CP((k×n)+1)
・・・
X
CP((k+1)×n)’=A・X
CP((k+1)×n) ・・・(5a)
に従って、補正用制御点CP(k×n)’〜CP((k+1)×n)’のX座標X
CP(k×n)’〜X
CP((k+1)×n)’を算出する。
【0056】
補正用制御点CP(k×n)’〜CP((k+1)×n)’のY座標Y
CP(k×n)’〜Y
CP((k+1)×n)’は、それぞれ、選択制御点CP(k×n)〜CP((k+1)×n)のY座標Y
CP(k×n)〜Y
CP((k+1)×n)と同一に決定される。即ち、補正用制御点CP(k×n)’〜CP((k+1)×n)’のY座標Y
CP(k×n)’〜Y
CP((k+1)×n)’は、下記式(5b):
Y
CP(k×n)’=Y
CP(k×n)
Y
CP((k×n)+1)’=Y
CP((k×n)+1)
・・・
Y
CP((k+1)×n)’=Y
CP((k+1)×n) ・・・(5b)
で表される。
【0057】
このようにして決定された補正用制御点CP(k×n)’〜CP((k+1)×n)’のX座標、Y座標が、ベジェ曲線演算回路22に供給され、ベジェ曲線演算回路22により、入力階調値X_INに対応する出力値Y_OUTが算出される(ステップS04)。出力値Y_OUTは、(n+1)個の補正用制御点CP(k×n)’〜CP((k+1)×n)’で規定されるn次ベジェ曲線上に位置し、且つ、X座標が入力階調値X_INである点のY座標として算出される。
【0058】
上記の実施形態では、画面の輝度が最大輝度である場合(即ち、輝度データD
BRTにより最大輝度が指定されている場合)のガンマ補正の入出力特性を指定する制御点の座標を示す最大輝度制御点データCP0〜CPmが、ガンマ補正回路12に与えられる構成が記載されているが、一般に、最大輝度制御点データCP0〜CPmの代わりに、画面の輝度が特定輝度である場合(即ち、輝度データD
BRTにより該特定輝度が指定されている場合)のガンマ補正の入出力特性を指定する制御点の座標を示す制御点データが用いられてもよい。この場合にも、係数Aを算出する式(4b)に含まれるパラメータqとして、輝度データD
BRTにより指定されている輝度の、該特定輝度に対する比を用いることで、(n+1)個の補正用制御点CP(k×n)’〜CP((k+1)×n)’を算出することができる。
【0059】
出力値Y_OUTの算出に使用されるベジェ曲線の次数は特に限定されず、必要とする精度に応じた次数が選択され得る。ただし、2次ベジェ曲線を用いて出力値Y_OUTを算出することは、ベジェ曲線演算回路22の構成を簡略にしながら正確な出力値Y_OUTを算出することができる点で好適である。以下では、2次ベジェ曲線を用いて出力値Y_OUTを算出する場合のベジェ曲線演算回路22の好適な構成及び動作について説明する。ここで、2次ベジェ曲線を用いて出力値Y_OUTを算出する場合には、3つの補正用制御点CP(2k)’、CP(2k+1)’、CP(2k+2)’のX座標、Y座標がベジェ曲線演算回路22の入力として与えられることに留意されたい。
【0060】
以下では、まず、ベジェ曲線演算回路22において行われる演算のアルゴリズムについて説明する。
図11は、一実施形態において、ベジェ曲線演算回路22において行われる演算のアルゴリズムを示す概念図であり、
図12は、当該演算の手順を示すフローチャートである。
【0061】
図12に図示されているように、初期設定として、3つの補正用制御点CP(2k)’〜CP(2k+2)’が、ベジェ曲線演算回路22に設定される(ステップS11)。なお、記載を簡潔にするために、以下では、ベジェ曲線演算回路22に設定される補正用制御点CP(2k)’、CP(2k+1)、CP(2k+2)’を、それぞれ、制御点A
0、B
0、C
0と記載する。即ち、
図11を参照して、制御点A
0、B
0、C
0の座標A
0(AX
0、AY
0)、B
0(BX
0、BY
0)、C
0(CX
0、CY
0)は、それぞれ、次のように表わされる:
A
0(AX
0、AY
0)=(X
CP(2k)’,Y
CP(2k)’)
B
0(BX
0、BY
0)=(X
CP(2k+1)’,Y
CP(2k+1)’)
C
0(CX
0、CY
0)=(X
CP(2k+2)’
),Y
CP(2k+2’)
【0062】
出力値Y_OUTは、以下に述べられるように、中点を求める演算を繰り返すことによって算出される。この繰り返し演算の1単位を、以下では、中点演算と呼ぶことにする。また、3つの制御点の隣接する2つの制御点の中点を1次中点と呼び、該2つの1次中点の中点を2次中点と呼ぶことがある。
【0063】
最初の中点演算(1回目の中点演算)では、初期的に与えられる制御点A
0、B
0、C
0(即ち、3つの補正用制御点CP(2k)’、CP(2k+1)’、CP(2k+2)’)に関し、制御点A
0と制御点B
0の中点である1次中点d
0と、制御点B
0と制御点C
0の中点である1次中点e
0とが求められ、更に、1次中点d
0と1次中点e
0の中点である2次中点f
0が求められる。2次中点f
0は、3つの制御点A
0、B
0、C
0で規定される2次ベジェ曲線上の点である。このとき、2次中点f
0の座標(X
f0、Y
f0)は、下記式(6a)、(6b)で表わされる:
X
f0=(AX
0+2BX
0+CX
0)/4 ・・・(6a)
Y
f0=(AY
0+2BY
0+CY
0)/4 ・・・(6b)
【0064】
次の中点演算(2回目の中点演算)に使用される3つの制御点:制御点A
1、B
1、C
1は、制御点A
0、1次中点d
0、2次中点f
0、1次中点e
0、制御点B
0のうちから、入力階調値X_INと2次中点f
0のX座標X
f0との比較の結果に応じて選択される。詳細には、下記のようにして制御点A
1、B
1、C
1が選択される:
(A)X
f0≧X_INの場合
この場合、X座標が小さい3点(左側の3点):制御点A
0、1次中点d
0、2次中点f
0が、制御点A
1、B
1、C
1として選択される。即ち、
A
1=A
0,B
1=d
0,C
1=f
0. ・・・(7a)
(B)X
f0<X_INの場合
この場合、X座標が大きい3点(右側の3点):2次中点f
0、1次中点e
0、制御点C
0が、制御点A
1、B
1、C
1として選択される。即ち、
A
1=f
0,B
1=e
0,C
1=C
0. ・・・(7b)
【0065】
同様の手順により、2回目の中点演算が行われる。制御点A
1、B
1、C
1に関し、制御点A
1と制御点B
1の1次中点d
1と、制御点B
1と制御点C
1の1次中点e
1とが求められ、更に、1次中点d
1と1次中点e
1の2次中点f
1が求められる。2次中点f
1は、所望の2次ベジェ曲線上の点である。更に、次の中点演算(3回目の中点演算)に使用される3つの制御点:制御点A
2、B
2、C
2、が制御点A
1、1次中点d
1、2次中点f
1、1次中点e
1、制御点B
1のうちから、入力階調値X_INと2次中点f
1のX座標X
f1との比較の結果に応じて選択される。
【0066】
結局、
図12に示されているように、i回目の中点演算では、下記のような演算が行われることになる(ステップS12〜S14):
(A)(AX
i−1+2BX
i−1+CX
i−1)/4≧X_INの場合
AX
i=AX
i−1,・・・(8a)
BX
i=(AX
i−1+BX
i−1)/2, ・・・(9a)
CX
i=(AX
i−1+2BX
i−1+CX
i−1)/4,・・・(10a)
AY
i=AY
i−1,・・・(11a)
BY
i=(AY
i−1+BY
i−1)/2, ・・・(12a)
CY
i=(AY
i−1+2BY
i−1+CY
i−1)/4.・・・(13a)
(B)(AX
i−1+2BX
i−1+CX
i−1)/4<X_INの場合
AX
i=(AX
i−1+2BX
i−1+CX
i−1)/4,・・・(8b)
BX
i=(BX
i−1+CX
i−1)/2, ・・・(9b)
CX
i=CX
i−1,・・・(10b)
AY
i=(AY
i−1+2BY
i−1+CY
i−1)/4,・・・(11b)
BY
i=(BY
i−1+CY
i−1)/2, ・・・(12b)
CY
i=CY
i−1,・・・(13b)
【0067】
なお、条件(A)、(B)に関して等号が条件(A)、(B)のいずれの不等号に付せられてもよいことは、当業者には自明的であろう。
【0068】
以下、同様の手順により、所望の回数だけ中点演算が繰り返される(ステップS15)。
【0069】
中点演算が行われる毎に、制御点A
i、B
i、C
iが2次ベジェ曲線に近づいていくと共に、制御点A
i、B
i、C
iのX座標が入力階調値X_INに近づいていく。N回目の中点演算によって得られた制御点A
N、B
N、C
Nの少なくとも一つのY座標から、最終的に算出すべき出力値Y_OUTの値が得られる。例えば、制御点A
N、B
N、C
Nのうちから任意に選択された一点のY座標が、出力値Y_OUTとして選ばれてもよい。また、制御点A
N、B
N、C
NのY座標の平均値が出力値Y_OUTとして選ばれてもよい。
【0070】
中点演算が行われる回数Nが比較的少ない範囲では、中点演算が行われる回数Nが多いほど、出力値Y_OUTの精度を向上させることができる。ただし、出力値Y_OUTの精度は、中点演算が行われる回数Nが出力値Y_OUTのビット数に到達すると、それ以上は向上しない。したがって、中点演算が行われる回数Nは、出力値Y_OUTのビット数に一致することが好ましい。例えば、出力値Y_OUTが12ビットデータである本実施形態では、中点演算が行われる回数Nは、12であることが好ましい。
【0071】
上記のように、出力値Y_OUTの算出は、中点演算の繰り返しによって行われるので、ベジェ曲線演算回路22は、直列に接続された、それぞれが中点演算を行うように構成された複数の演算回路として構成され得る。
図13は、このように構成されたベジェ曲線演算回路22の構成の一例を示すブロック図である。
【0072】
ベジェ曲線演算回路22は、N個の単位演算ユニット30
1〜30
Nと、出力段40とを備えている。単位演算ユニット30
1〜30
Nのそれぞれは、上記の中点演算を行うように構成されている。即ち、単位演算ユニット30
iは(iは、1以上N以下の整数)、制御点A
i−1、B
i−1、C
i−1のX座標、Y座標から、式(8a)〜(13a)、(8b)〜(13b)の演算により、制御点A
i、B
i、C
iのX座標、Y座標を算出するように構成されている。出力段40は、単位演算ユニット30
Nから出力される制御点A
N、B
N、C
Nのうちの少なくとも一つの制御点のY座標(即ち、AY
N、BY
N及びCY
Nのうちの少なくとも一)に基づいて出力値Y_OUTを出力する。出力段40は、制御点A
N、B
N、C
Nのうちの一の制御点のY座標を出力値Y_OUTとして出力してもよい。
【0073】
図14は、各単位演算ユニット30
iの構成を示す回路図である。各単位演算ユニット30は、加算器31〜33と、セレクタ34〜36と、比較器37と、加算器41〜43と、セレクタ44〜46とを備えている。加算器31〜33と、セレクタ34〜36は、制御点A
i−1、B
i−1、C
i−1のX座標について演算を行い、加算器41〜43と、セレクタ44〜46とは、制御点A
i−1、B
i−1、C
i−1のY座標について演算を行う。
【0074】
各単位演算ユニット30
iは、7つの入力端を有しており、そのうちの一つには入力階調値が入力され、他の6つには、制御点A
i−1、B
i−1、C
i−1のX座標AX
i−1、BX
i−1、CX
i−1、及び、Y座標AY
i−1、BY
i−1、CY
i−1が供給される。加算器31は、その第1入力がAX
i−1が供給される入力端に接続され、第2入力がBX
i−1が供給される入力端に接続される。加算器32は、その第1入力がBX
i−1が供給される入力端に接続され、第2入力がCX
i−1が供給される入力端に接続される。加算器33は、その第1入力が加算器31の出力に接続され、第2入力が加算器32の出力に接続される。
【0075】
同様に、加算器41は、その第1入力がAY
i−1が供給される入力端に接続され、第2入力がBY
i−1が供給される入力端に接続される。加算器42は、その第1入力がBY
i−1が供給される入力端に接続され、第2入力がCY
i−1が供給される入力端に接続される。加算器43は、その第1入力が加算器41の出力に接続され、第2入力が加算器42の出力に接続される。
【0076】
比較器37は、その第1入力に入力階調値X_INが供給され、第2入力が加算器33の出力に接続されている。
【0077】
セレクタ34は、第1入力がAX
i−1が供給される入力端に接続され、第2入力が加算器33の出力に接続され、比較器37の出力値に応答して第1入力と第2入力のいずれかを選択する。セレクタ34の出力は、AX
iを出力する出力端に接続されている。同様に、セレクタ35は、第1入力が加算器31の出力に接続され、第2入力が加算器32の出力に接続され、比較器37の出力値に応答して第1入力と第2入力のいずれかを選択する。セレクタ35の出力は、BX
iを出力する出力端に接続されている。また、セレクタ36は、第1入力が加算器33の出力に接続され、第2入力がCX
i−1が供給される入力端に接続され、比較器37の出力値に応答して第1入力と第2入力のいずれかを選択する。セレクタ36の出力は、CX
iを出力する出力端に接続されている。
【0078】
セレクタ44〜46についても同様である。セレクタ44は、第1入力がAY
i−1が供給される入力端に接続され、第2入力が加算器43の出力に接続され、比較器37の出力値に応答して第1入力と第2入力のいずれかを選択する。セレクタ44の出力は、AY
iを出力する出力端に接続されている。同様に、セレクタ45は、第1入力が加算器41の出力に接続され、第2入力が加算器42の出力に接続され、比較器37の出力値に応答して第1入力と第2入力のいずれかを選択する。セレクタ45の出力は、BY
iを出力する出力端に接続されている。また、セレクタ46は、第1入力が加算器43の出力に接続され、第2入力がCY
i−1が供給される入力端に接続され、比較器37の出力値に応答して第1入力と第2入力のいずれかを選択する。セレクタ46の出力は、CY
iを出力する出力端に接続されている。
【0079】
このような構成の単位演算ユニット30
iにおいて、加算器31は上記の式(9a)の演算を行い、加算器32は、式(9b)の演算を行い、更に、加算器33は、加算器31、32の出力値を用いて式(10a)、(8b)の演算を行う。同様に、加算器41は上記の式(12a)の演算を行い、加算器42は、式(12b)の演算を行い、更に、加算器43は、加算器41、42の出力値を用いて式(13a)、(11b)の演算を行う。比較器37は、加算器33の出力値と入力階調値X_INとを比較し、セレクタ34〜36、44〜46のそれぞれが2つの入力値のいずれを出力値として出力するかを指示する。入力階調値X_INが(AX
i−1+2BX
i−1+CX
i−1)/4よりも小さい場合には、セレクタ34がAX
i−1を選択し、セレクタ35が加算器31の出力値を選択し、セレクタ36が加算器33の出力値を選択し、セレクタ44がAY
i−1を選択し、セレクタ45が加算器41の出力値を選択し、セレクタ46が加算器43の出力値を選択する。一方、入力階調値X_INが(AX
i−1+2BX
i−1+CX
i−1)/4よりも大きい場合には、セレクタ34が加算器33の出力値を選択し、セレクタ35が加算器32の出力値を選択し、セレクタ36がCX
i−1を選択し、セレクタ44が加算器43の出力値を選択し、セレクタ45が加算器42の出力値を選択し、セレクタ46がCY
i−1を選択する。セレクタ34〜36、44〜46によって選択された値が、それぞれ、AX
i、BX
i、CX
i、AY
i、BY
i、CY
iとして、次段の単位演算ユニット30に供給される。
【0080】
ここで、式(8a)〜(13a)、(8b)〜(13b)に含まれている除算は、下位ビットを切り捨てることによって実現可能であることに留意されたい。最も簡便には、加算器31〜33、41〜43の出力において、下位ビットを切り捨てれば所望の演算を実現できる。この場合、加算器31〜33、41〜43の出力端において1ビットを切り捨てればよい。ただし、下位ビットの切り捨てを行う回路上の場所は、式(8a)〜(13a)、(8b)〜(13b)と等価な演算が行われる限り、適宜に変更可能である。例えば、加算器31〜33、加算器41〜43の入力において下位ビットの切り捨てが行われてもよいし、また、比較器37、セレクタ34〜36、44〜46の入力において下位ビットの切り捨てが行われてもよい。
【0081】
このように構成された単位演算ユニット30
1〜30
Nの最終段の単位演算ユニット30
Nから出力されるAY
N、BY
N、CY
Nの少なくともいずれか一つから、最終的に算出すべき出力値Y_OUTの値が得られる。
【0082】
図15は、出力値Y_OUTの算出に2次ベジェ曲線を用いる場合において、出力値Y_OUTを算出するアルゴリズムの改良を示す概念図である。
図15に図示されているアルゴリズムでは、第1に、i回目の中点演算において、制御点A
i−1、B
i−1,C
i−1を制御点B
i−1が原点になるように平行移動した後に1次中点d
i−1、1次中点e
i−1、2次中点f
i−1が演算される。第2に、2次中点f
i−1が第i+1回目の中点演算に使用される制御点C
iとして常に選択される。このような平行移動/中点演算を繰り返し行うことにより、演算器の数を低減し、また、各演算器において処理される値のビット数を低減することができる。以下、
図14のアルゴリズムを詳細に説明する。
【0083】
1回目の平行移動/中点演算では、まず、制御点A
0、B
0、C
0が、移動後に制御点B
0が原点になるように平行移動される。平行移動後の制御点A
0、B
0、C
0をそれぞれ、制御点A
0’、B
0’、C
0’と表記する。制御点B
0’は、原点に一致する。このとき、制御点A
0’、制御点C
0’の座標は、次のように表わされる:
A
0’(AX
0’,AY
0’)=(AX
0−BX
0,AY
0−BY
0)
C
0’(CX
0’,CY
0’)=(CX
0−BX
0,CY
0−BY
0).
【0084】
同時に、演算対象階調値X_IN
0から、X軸方向の平行移動量BX
0が減じられて演算対象階調値X_IN
1が算出される。
【0085】
続いて、制御点A
0’と制御点B
0’の1次中点d
0’と、制御点B
0’と制御点C
0’の1次中点e
0’とが求められ、更に、1次中点d
0’と1次中点e
0’の2次中点f
0’が求められる。2次中点f
0’は、制御点B
iが原点になるように平行移動した後の2次ベジェ曲線(即ち、3つの制御点A
0’、B
0’、C
0’で規定される2次ベジェ曲線)上の点である。
【0086】
このとき、2次中点f
0’の座標(X
f0’、Y
f0’)は、下記式で表わされる:
【数4】
【0087】
次の平行移動/中点演算(2回目の平行移動/中点演算)に使用される3つの制御点:制御点A
1、B
1、C
1は、制御点A
0’、1次中点d
0’、2次中点f
0’、1次中点e
0’、制御点C
0’のうちから、演算対象階調値X_IN
1と2次中点f
0’のX座標値X
f0’との比較の結果に応じて選択される。このとき、2次中点f
0’が制御点C
1として常に選択される一方、制御点A
1、B
1は、次のようにして選択される。
(A)X
f0’≧X_IN
1の場合
この場合、X座標値が小さい2点(左側の2点):制御点A
0’、1次中点d
0’が、それぞれ、制御点A
1、B
1として選択される。即ち、
A
1=A
0’,B
1=d
0’,C
1=f
0’. ・・・(15a)
(B)X
f0<X_IN
1の場合
この場合、X座標値が大きい2点(右側の2点):制御点C
0’、1次中点e
0’が、それぞれ、制御点A
1、B
1として選択される。即ち、
A
1=C
0’,B
1=e
0’,C
1=f
0’. ・・・(15b)
【0088】
結局、1回目の平行移動/中点演算では、下記のような演算が行われることになる:
X_IN
1=X_IN
0−BX
0, ・・・(16)
X
f0’=(AX
0−2BX
0+CX
0)/4,・・・(17)
(A)X
f0’≧X_IN
1の場合
AX
1=AX
0−BX
0, ・・・(17a)
BX
1=(AX
0−BX
0)/2, ・・・(18a)
CX
1=X
f0’
=(AX
0−2BX
0+CX
0)/4,・・・(19)
AY
1=AY
0−BY
0, ・・・(20a)
BY
1=(AY
0−BY
0)/2, ・・・(21a)
CY
1=Y
f0’
=(AY
0−2BY
0+CY
0)/4. ・・・(22)
(B)X
f0’<X_INの場合
AX
1=CX
0−BX
0,・・・(17b)
BX
1=(CX
0−BX
0)/2, ・・・(18b)
CX
1=(AY
0−2BY
0+CY
0)/4,・・・(19)
AY
1=CY
0−BY
0, ・・・(20b)
BY
1=(CY
0−BY
0)/2, ・・・(21b)
CY
1=(AY
0−2BY
0+CY
0)/4.・・・(22)
【0089】
なお、条件(A)、(B)に関して等号が条件(A)、(B)のいずれの不等号に付せられてもよいことは、当業者には自明的であろう。
【0090】
ここで、式(17a)、(18a)、(17b)、(18b)から理解できるように、(A)、(B)のいずれの場合にも
AX
1=2BX
1, ・・・(23)
AY
1=2BY
1, ・・・(24)
という関係が成立する。これは、上記の演算を実装する際には、制御点A
1、B
1の座標を重複して計算し、又は記憶する必要がないことを意味している。このことは、
図15に図示されているように、制御点B
1が制御点A
1と原点Oの中点に位置することからも理解されよう。以下では、制御点B
1の座標が計算される実施形態を説明するが、制御点A
1の座標を計算する演算でも実質的に等価である。
【0091】
2回目の平行移動/中点演算でも、同様の演算が行われる。まず、制御点A
1、B
1、C
1が、移動後に制御点B
1が原点になるように平行移動される。平行移動後の制御点A
1、B
1、C
1をそれぞれ、制御点A
1’、B
1’、C
1’と表記する。同時に、演算対象階調値X_IN
1から、X軸方向の平行移動量BX
1が減じられて演算対象階調値X_IN
2が算出される。続いて、制御点A
1’と制御点B
1’の1次中点d
1’と、制御点B
1’と制御点C
1’の1次中点e
1’とが求められ、更に、1次中点d
1’と1次中点e
1’の2次中点f
1’が求められる。
【0092】
このとき、式(16)〜(22)と同様にして、
X_IN
2=X_IN
1−BX
1, ・・・(25)
X
f1’=(AX
1−2BX
1+CX
1)/4,・・・(26)
(A)X
f1’≧X_IN
2の場合
AX
2=AX
1−BX
1, ・・・(27a)
BX
2=(AX
1−BX
1)/2, ・・・(28a)
CX
2=X
f1’,
=(AX
1−2BX
1+CX
1)/4,・・・(29)
AY
2=AY
1−BY
1, ・・・(30a)
BY
2=(AY
1−BY
1)/2, ・・・(31a)
CY
2=Y
f1’
=(AY
1−2BY
1+CY
1)/4. ・・・(32)
(B)X
f1’<X_IN
2の場合
AX
2=CX
1−BX
1,・・・(27b)
BX
2=(CX
1−BX
1)/2, ・・・(28b)
CX
2=(AY
1−2BY
1+CY
1)/4,・・・(29)
AY
2=CY
1−BY
1, ・・・(30b)
BY
2=(CY
1−BY
1)/2, ・・・(31b)
CY
2=(AY
1−2BY
1+CY
1)/4.・・・(32)
が得られる。
【0093】
このとき、式(23)を式(28a)、(29)に代入し、式(24)を式(31a)、(32)に代入することにより、下記式が得られる:
BX
2=BX
1/2, (for CX
1≧X_IN
2)・・・(33a)
=(CX
1−BX
1)/2, (for CX
1<X_IN
2)・・・(33b)
CX
2=CX
1/4, ・・・(34)
BY
2=BY
1/2, (for CX
1≧X_IN
2)・・・(35a)
=(CY
1−BY
1)/2, (for CX
1<X_IN
2)・・・(35b)
CY
2=CY
1/4. ・・・(36)
【0094】
ここで、式(23)、(24)と同様に下記式が成立するから、制御点A
2のX座標値AX
2、Y座標AY
2を計算し、又は、記憶する必要はないことに留意されたい。
AX
2=2BX
2, ・・・(37)
AY
2=2BY
2, ・・・(38)
【0095】
3回目以降の平行移動/中点演算についても、同様な演算が行われる。このとき、2回目の平行移動/中点演算と同様にして考えれば、i回目の平行移動/中点演算(i≧2)において行われる演算が下記のように表わされることが理解されよう。
X_IN
i=X_IN
i−1−BX
i−1, ・・・(39)
BX
i=BX
i−1/2, (CX
i−1≧X_IN
i)・・・(40a)
=(CX
i−1−BX
i−1)/2, (CX
i−1<X_IN
i)・・・(40b)
CX
i=CX
iー1/4, ・・・(41)
BY
i=BY
i−1/2, (CX
i−1≧X_IN
i)・・・(42a)
=(CY
i−1−BY
i−1)/2, (CX
i−1<X_IN
i)・・・(42b)
CY
i=CY
i−1/4. ・・・(43)
【0096】
なお、式(40a)、(40b)に関し、等号が式(40a)、(40b)のいずれの不等号に付せられてもよいことは、当業者には自明的であろう。式(42a)、(42b)についても同様である。
【0097】
ここで、式(41)、(43)の式の意味するところは、制御点C
iは、原点Oと制御点C
i−1とを結ぶ線分上にあり、且つ、原点Oからの距離が、線分OC
i−1の長さの4分の1であるような点であるということである。即ち、平行移動/中点演算を繰り返すと、制御点C
iは、原点Oに近づいていく。このような関係が制御点C
iの座標の計算の容易化に寄与していることは容易に理解されよう。また、式(39)〜(43)には制御点A
i、A
i−1の座標値が含まれていないから、2回目以降の平行移動/中点演算においても制御点A
2〜A
Nの座標を計算し、又は、記憶する必要はないことに留意されたい。
【0098】
平行移動/中点演算をN回繰り返した後に最終的に得るべき出力値Y_OUTは、平行移動をすべてキャンセルした場合の制御点B
NのY座標(即ち、
図4における制御点B
NのY座標)として得ることができる。即ち、出力値Y_OUTは、下記式:
Y_OUT=BY
0+BY
1+・・・+BY
i−1, ・・・(44)
から得ることができる。このような演算を行うためには、i回目の平行移動/中点演算において下記の演算を行えばよい:
Y_OUT
1=BY
0, (for i=1)
Y_OUT
i=Y_OUT
i−1+BY
i−1, (for i≧2) (45)
この場合、目的の出力値Y_OUTは、Y_OUT
Nとして得られることになる。
【0099】
図16は、以上に説明された平行移動/中点演算をハードウェアによって行う場合のベジェ曲線演算回路22の構成を示すブロック図である。
図16のベジェ曲線演算回路22は、初段演算ユニット50
1と、初段演算ユニット50
1の出力に直列に接続された複数の単位演算ユニット50
2〜50
Nとを備えている。初段演算ユニット50
1は、1回目の平行移動/中点演算を行う機能を有しており、式(16)〜(22)の演算を行うように構成されている。また、単位演算ユニット50
2〜50
Nは、2回目以降の平行移動/中点演算を行う機能を有しており、式(39)〜(43)及び式(45)の演算を行うように構成されている。
【0100】
図17は、初段演算ユニット50
1と単位演算ユニット50
2〜50
Nの構成を示す回路図である。初段演算ユニット50
1は、減算器51〜53と、加算器54と、セレクタ55と、比較器56と、減算器62、63と、加算器64と、セレクタ65とを備えている。初段演算ユニット50
1は、7つの入力端を有しており、そのうちの一つには入力階調値X_INが入力され、他の6つには、制御点A
0、B
0、C
0のX座標値AX
0、BX
0、CX
0、及び、Y座標AY
0、BY
0、CY
0が供給される。
【0101】
減算器51は、第1入力に入力階調値X_INが供給され、第2入力にBX
0が供給される入力端に接続されている。減算器52は、第1入力がAX
0が供給される入力端に接続され、第2入力がBX
0が供給される入力端に接続されている。減算器53は、第1入力がCX
0が供給される入力端に接続され、第2入力がBX
0が供給される入力端に接続されている。加算器54は、第1入力が減算器52の出力に接続され、第2入力が減算器53の出力に接続されている。
【0102】
同様に、減算器62は、第1入力がAY
0が供給される入力端に接続され、第2入力がBY
0が供給される入力端に接続されている。減算器63は、第1入力がCY
0が供給される入力端に接続され、第2入力がBY
0が供給される入力端に接続されている。加算器64は、第1入力が減算器62の出力に接続され、第2入力が減算器63の出力に接続されている。
【0103】
比較器56は、第1入力が減算器51の出力に接続され、第2入力が加算器54の出力に接続されている。セレクタ55は、第1入力が減算器52の出力に接続され、第2入力が減算器53の出力に接続され、比較器56の出力値SEL1に応答して第1入力と第2入力のいずれかを選択する。また、セレクタ65は、第1入力が減算器62の出力に接続され、第2入力が減算器63の出力に接続され、比較器56の出力値SEL1に応答して第1入力と第2入力のいずれかを選択する。
【0104】
演算対象階調値X_IN
1を出力する出力端は、減算器51の出力に接続される。また、BX
1を出力する出力端はセレクタ55の出力に接続され、CX
1を出力する出力端は、加算器54の出力に接続されている。更に、BY
1を出力する出力端はセレクタ65の出力に接続され、CY
1を出力する出力端は、加算器64の出力に接続されている。
【0105】
減算器51は、式(16)の演算を行い、減算器52は、式(18a)の演算を行う。減算器53は、式(18b)の演算を行い、加算器54は、減算器52、53の出力値に基づいて式(19)の演算を行う。同様に、減算器62は、式(21a)の演算を行う。減算器63は、式(21b)の演算を行い、加算器64は、減算器62、63の出力値に基づいて式(22)の演算を行う。比較器56は、減算器51の出力値X_IN
0−BX
0と加算器54の出力値とを比較し、セレクタ55、65のそれぞれが2つの入力値のいずれを出力値として出力するかを指示する。X_IN
1が(AX
0−2BX
0+CX
0)/4以下の場合には、セレクタ55が減算器52の出力値を選択し、セレクタ65が減算器62の出力値を選択する。一方、X_IN
0−BX
0が(AX
0−2BX
0+CX
0)/4よりも大きい場合には、セレクタ55が減算器53の出力値を選択し、セレクタ65が減算器63の出力値を選択する。セレクタ55、65によって選択された値が、それぞれBX
1、BY
1として、単位演算ユニット50
2に供給される。また、加算器54、64の出力値が、それぞれCX
1、CY
1として単位演算ユニット50
2に供給される。
【0106】
ここで、式(16)〜(22)に含まれている除算は、下位ビットを切り捨てることによって実現可能であることに留意されたい。下位ビットの切り捨てを行う回路上の場所は、式(16)〜(22)と等価な演算が行われる限り、適宜に変更可能である。
図17の初段演算ユニット50
1は、セレクタ55、65の出力において下位1ビットが切り捨てられ、加算器54、64の出力において下位2ビットが切り捨てられるものとして構成されている。
【0107】
一方、単位演算ユニット50
2〜50
Nは、同一の構成を有しており、減算器71、72、セレクタ73、比較器74、減算器75、セレクタ76、及び加算器77を備えている。
【0108】
以下では、i回目の平行移動/中点演算を行う単位演算ユニット50
iについて説明する(iは、2以上N以下の整数)。減算器71は、第1入力が演算対象階調値X_IN
i−1が供給される入力端に接続され、第2入力がBX
i−1が供給される入力端に接続されている。減算器72は、第1入力がBX
i−1が供給される入力端に接続され、第2入力がCX
i−1が供給される入力端に接続されている。減算器75は、第1入力がBY
i−1が供給される入力端に接続され、第2入力がCY
i−1が供給される入力端に接続されている。
【0109】
比較器74は、第1入力が減算器71の出力に接続され、第2入力がCX
i−1が供給される入力端に接続されている。
【0110】
セレクタ73は、第1入力がBX
i−1が供給される入力端に接続され、第2入力が減算器72の出力に接続され、比較器74の出力値SELiに応答して第1入力と第2入力のいずれかを選択する。同様に、セレクタ76は、第1入力がBY
i−1が供給される入力端に接続され、第2入力が減算器75の出力に接続され、比較器74の出力値に応答して第1入力と第2入力のいずれかを選択する。
【0111】
演算対象階調値X_IN
iは、減算器71の出力に接続された出力端から出力される。また、BX
iは、セレクタ73の出力に接続された出力端から出力され、CX
iは、CX
iが供給された入力端に配線を介して接続された出力端から出力される。このとき、CX
iの下位2ビットが切り捨てられる。更に、BY
iは、セレクタ73の出力に接続された出力端から出力され、CY
iは、CY
i−1が供給された入力端に配線を介して接続された出力端から出力される。このとき、CY
i−1の下位2ビットが切り捨てられる。
【0112】
また、加算器77は、第1入力がBX
i−1が供給される入力端に接続され、第2入力がY_OUT
i−1が供給される入力端に接続される。ここで、2回目の平行移動/中点演算を行う単位演算ユニット50
2については、単位演算ユニット50
2に入力されるY_OUT
1がBY
0に一致することに留意されたい。Y_OUT
iは、加算器77の出力から出力される。
【0113】
減算器71は、式(39)の演算を行い、減算器72は、式(40b)の演算を行う。減算器75は、式(42b)の演算を行い、加算器77は、式(45)の演算を行う。比較器74は、減算器71の出力値X_IN
i(=X_IN
i−1−BX
i−1)とCX
i−1とを比較し、セレクタ73、76のそれぞれが2つの入力値のいずれを出力値として出力するかを指示する。X_IN
iがCX
i−1以下である場合には、セレクタ73がBX
i−1を選択し、セレクタ76がBY
i−1を選択する。一方、X_IN
iがCX
i−1よりも大きい場合には、セレクタ73が減算器72の出力値を選択し、セレクタ76が減算器75の出力値を選択する。セレクタ73、76によって選択された値が、それぞれBX
i、BY
iとして、次段の単位演算ユニット50
i+1に供給される。また、CX
i−1、CY
i−1の下位2ビットを切り捨てた値が、CX
i、CY
iとして次段の単位演算ユニット50
i+1に供給される。
【0114】
ここで、式(40)〜(43)に含まれている除算は、下位ビットを切り捨てることによって実現可能であることに留意されたい。下位ビットの切り捨てを行う回路上の場所は、式(40)〜(343)と等価な演算が行われる限り、適宜に変更可能である。
図17の単位演算ユニット50
iは、セレクタ73、76の出力において下位1ビットが切り捨てられ、CX
i−1、CY
i−1を受け取る配線において下位2ビットが切り捨てられるものとして構成されている。
【0115】
図17の単位演算ユニット50
2〜50
Nと
図14の単位演算ユニット30
1〜30
Nの構成を比較すれば、演算の最適化による演算器の減少の効果を理解できよう。加えて、平行移動/中点演算を行う
図17の構成では、単位演算ユニット50
2〜50
Nのそれぞれが下位ビットを切り捨てるように構成されているので、取り扱うデータのビット数が後段の単位演算ユニット50
2〜50
Nになるほど少なくなる。このように、平行移動/中点演算を行う
図17の構成では、ハードウェアを削減しながら出力値Y_OUTを計算できる。
【0116】
上記では、3つの制御点で形状が規定される2次ベジェ曲線を用いて出力値Y_OUTを算出する場合について説明されているが、3次以上のベジェ曲線を用いて出力値Y_OUTを算出してもよい。n次ベジェ曲線を用いる場合には、(n+1)個の補正用制御点が初期的に与えられ、その(n+1)個の補正用制御点に対して上記と同様の中点演算が行われて出力値Y_OUTが算出される。
【0117】
より具体的には、(n+1)個の補正用制御点が与えられる場合、中点演算は、以下のようにして行われる。(n+1)個の補正用制御点の隣接する2つの制御点の中点である1次中点が算出される。1次中点は、n個存在する。更に、n個の1次中点の隣接する2つの中点である2次中点が算出される。2次中点は、n−1個存在する。以下同様に、(n−k+1)個のk次中点の隣接する2つの中点である(n−k)個の(k+1)次中点が算出される。この手順を、1個のn次中点が算出されるまで繰り返して行う。ここで、(n+1)個の制御点のうち、X座標が最小のものを最小制御点と規定し、X座標が最大のものを最大制御点と規定する。また、k次中点のうちX座標が最小のものを最小k次中点と規定し、X座標が最大のものを最大k次中点と規定する。n次中点のX座標が入力階調値X_INより小さい場合、最小制御点、最小1次中点乃至最小(n−1)次中点、及びn次中点が、次のステップの(n+1)個の制御点として選択される。一方、n次中点のX座標が入力階調値X_INより大きい場合、n次中点、最大(n−1)次中点乃至最大1次中点、及び最大制御点が、次の中点演算の(n+1)個の制御点として選択される。出力値Y_OUTは、N回の中点演算によって得られた(n+1)個の制御点のうちの少なくとも一の制御点のY座標に基づいて算出される。
【0118】
このような一般化の理解をより容易にするために、n=3の場合(即ち、3次ベジェ曲線が出力値Y_OUTの算出に用いられる場合)の中点演算について更に説明する。この場合、4つの補正用制御点CP(3k)’〜 CP(3k+3)’がベジェ曲線演算回路22に設定される。以下では、4つの補正用制御点CP(3k)’、CP(3k+1)’、CP(3k+2)’、CP(3k+3)’を、単に、制御点A
0、B
0、C
0、D
0と記載し、また、制御点A
0、B
0、C
0、D
0の座標が、それぞれ、(AX
0、AY
0)、(BX
0、BY
0)、(CX
0、CY
0)、(DX
0、DY
0)であるとする。ここで、制御点A
0、B
0、C
0、D
0の座標A
0(AX
0、AY
0)、B
0(BX
0、BY
0)、C
0(CX
0、CY
0)、D
0(DX
0、DY
0)は、それぞれ、次のように表わされる:
A
0(AX
0、AY
0)=(X
CP(3k)’,Y
CP(3k)’)
B
0(BX
0、BY
0)=(X
CP(3k+1)’,Y
CP(3k+1)’)
C
0(CX
0、CY
0)=(X
CP(3k+2)’
),Y
CP(3k+2’)
D
0(DX
0、DY
0)=(X
CP(3k+3)’
),Y
CP(3k+3’)
【0119】
図18は、n=3の場合(即ち、3次ベジェ曲線が出力値Y_OUTの算出に使用される場合)についての中点演算を説明する図である。初期的に、4つの制御点A
0、B
0、C
0、D
0が与えられる。ここで、制御点A
0が最小制御点であり、点D
0が最大制御点である。最初の中点演算(1回目の中点演算)では、制御点A
0と制御点B
0の中点である1次中点d
0と、制御点B
0と制御点C
0の中点である1次中点e
0と、制御点C
0と点D
0の中点である1次中点f
0が求められる。ここで、d
0が最小1次中点であり、f
0が最大1次中点である。更に、1次中点d
0、e
0の中点である2次中点g
0と、1次中点e
0、f
0の中点である2次中点h
0とが求められる。ここで、g
0が最小2次中点であり、h
0が最大2次中点である。更に、2次中点g
0、h
0の中点である3次中点i
0が求められる。3次中点i
0は、4つの制御点A
0、B
0、C
0、D
0によって規定される3次ベジェ曲線の上の点であり、3次中点i
0の座標(X
i0,Y
i0)は、下記式で表わされる:
X
i0=(AX
0+3BX
0+3CX
0+DX
0)/8,
Y
i0=(AY
0+3BY
0+3CY
0+DY
0)/8.
【0120】
次の中点演算(2回目の中点演算)に使用される4つの制御点:点A
1、B
1、C
1、D
1は、入力階調値X_INと3次中点i
0のX座標X
i0との比較の結果に応じて選択される。詳細には、X
i0≧X_INの場合、最小制御点A
0、最小1次中点d
0、最小2次中点f
0、及び3次中点e
0が、それぞれ、点A
1、B
1、C
1、D
1として選択される。一方、X
i0<X_INの場合には、3次中点e
0、最大2次中点h
0、最大1次中点f
0、及び最大制御点D
0が、それぞれ、点A
1、B
1、C
1、D
1として選択される。
【0121】
2回目以降の中点演算も、同様の手順で行われる。一般化すれば、i回目の中点演算では、下記のような演算が行われることになる:
(A)(AX
i−1+3BX
i−1+3CX
i−1+DX
i−1)/8≧X_INの場合
AX
i=AX
i−1,・・・(2a’)
BX
i=(AX
i−1+BX
i−1)/2, ・・・(3a’)
CX
i=(AX
i−1+2BX
i−1+CX
i−1)/4,・・・(4a’)
DX
i=(AX
i−1+3BX
i−1+3CX
i−1+DX
i−1)/8,・・・(5a’)
AY
i=AY
i−1,・・・(6a’)
BY
i=(AY
i−1+BY
i−1)/2, ・・・(7a’)
CY
i=(AY
i−1+2BY
i−1+CY
i−1)/4.・・・(8a’)
DY
i=(AY
i−1+3BY
i−1+3CY
i−1+DY
i−1)/8,・・・(9a’)
(B)(AX
i−1+3BX
i−1+3CX
i−1+DX
i−1)/8<X_INの場合
AX
i=(AX
i−1+3BX
i−1+3CX
i−1+DX
i−1)/8,・・・(2b’)
BX
i=(BX
i−1+2CX
i−1+DX
i−1)/4,・・・(3b’)
CX
i=(CX
i−1+DX
i−1)/2, ・・・(4b’)
DX
i=DX
i−1,・・・(5b’)
AX
i=(AX
i−1+3BX
i−1+3CX
i−1+DX
i−1)/8
BY
i=(BY
i−1+2CY
i−1+DY
i−1)/4,・・・(6b’)
CY
i=(CY
i−1+DY
i−1)/2, ・・・(7b’)
DY
i=DY
i−1,・・・(8b’)
【0122】
なお、条件(A)、(B)に関して等号が条件(A)、(B)のいずれの不等号に付せられてもよいことは、当業者には自明的であろう。
【0123】
中点演算が行われる毎に、制御点A
i、B
i、C
i,D
iが3次ベジェ曲線に近づいていくと共に、制御点A
i、B
i、C
i,D
iのX座標が入力階調値X_INに近づいていく。N回目の中点演算によって得られた制御点A
N、B
N、C
N,D
Nの少なくとも一つのY座標から、最終的に算出すべき出力値Y_OUTの値が得られる。例えば、制御点A
N、B
N、C
N、D
Nのうちから任意に選択された一の制御点のY座標が、出力値Y_OUTとして選ばれてもよい。また、制御点A
N、B
N、C
N、D
NのY座標の平均値が出力値Y_OUTとして選ばれてもよい。
【0124】
中点演算が行われる回数Nが比較的少ない範囲では、中点演算が行われる回数Nが多いほど、出力値Y_OUTの精度を向上させることができる。ただし、出力値Y_OUTの精度は、中点演算が行われる回数Nが出力値Y_OUTのビット数に到達すると、それ以上は向上しない。中点演算が行われる回数Nは、出力値Y_OUTのビット数に一致することが好ましい。例えば、出力値Y_OUTが12ビットデータである本実施形態では、中点演算が行われる回数Nは、12であることが好ましい。
【0125】
(n+1)次ベジェ曲線を用いて出力値Y_OUTを算出する場合においても2次ベジェ曲線を用いる場合と同様に、中間に位置する制御点のいずれかが原点Oになるように平行移動したうえで中点演算を行ってもよい。例えば、3次ベジェ曲線でガンマカーブを表現する場合、制御点B
i−1又はC
i−1が原点Oになるように平行移動したうえで1次中点乃至n次中点が算出される。更に、平行移動後の制御点A
i−1’、最小1次中点、最小2次中点、及び3次中点の組み合わせ、又は、3次中点、最大2次中点、最大1次中点、及び制御点D
i−1’の組み合わせのいずれかが、次の制御点A
i、B
i、C
i、D
iとして選ばれる。この場合も、各演算器において処理される値のビット数を低減することができる。
【0126】
以上には、本発明の実施形態が具体的に記述されているが、本発明は、上記の実施形態に限定されない。本発明が種々の変更と共に実施され得ることは、当業者には理解されよう。