(58)【調査した分野】(Int.Cl.,DB名)
前記作成部は、所定の前記上位ビットデータの前記補正値と、前記所定の上位ビットデータの一つ前の、および次の、および更に次の前記上位ビットデータの前記補正値と、に基づいて前記曲線を作成する、請求項1記載の画像補正装置。
所定の前記上位ビットデータの前記補正値と、前記所定の上位ビットデータの一つ前の、および次の、および更に次の前記上位ビットデータの前記補正値と、に基づいて前記曲線を作成する、請求項5記載の画像補正方法。
所定の前記上位ビットデータの前記補正値と、前記所定の上位ビットデータの一つ前の、および次の、および更に次の前記上位ビットデータの前記補正値と、に基づいて前記曲線を作成する処理を実行させる、請求項9記載の画像補正プログラム。
【発明を実施するための形態】
【0013】
以下、図を参照しながら、本発明の実施形態を詳細に説明する。但し、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
(第1の実施形態)
図1は、本発明の第1の実施形態の画像補正装置の構成を示すブロック図である。本実施形態の画像補正装置1は、所定のビット数の画像データの補正値を有する補正テーブル11を有する。さらに、前記所定のビット数よりも大きいビット数の画像データが入力されると、前記画像データを前記所定のビット数に対応する上位ビットデータと、残りの下位ビットデータとに分離する分離部12を有する。さらに、前記補正値に基づいて、1階導関数が連続である曲線を作成する作成部13を有する。さらに、作成された前記曲線を用いて前記下位ビットデータの補正値を算出する算出部14を有する。さらに、算出された前記補正値で前記画像データを補正して出力する補正部15を有する。
【0014】
画像補正装置1によれば、補正テーブル11の有する所定のビット数の画像データの補正値に基づいて作成された曲線によって、所定のビット数よりも大きいビット数の画像データに対する補正値が算出される。補正テーブル11は所定のビット数の画像データの補正値の容量だけで済むため、メモリ容量の削減が可能である。さらに、曲線により、補正テーブル11の有する補正値の間は滑らかに繋がれるため、画像データの補正の精度を高くすることができる。
【0015】
以上のように、本実施形態によれば、補正テーブルのメモリ容量を削減し、かつ精度の高い画像補正を行う画像補正装置を提供することができる。
(第2の実施形態)
図2は、本発明の第2の実施形態の画像補正装置の構成を示すブロック図である。本実施形態の画像補正装置2は、LUT21と、分離回路22と、作成回路23と、算出回路24と、補正回路25と、を有する。画像補正装置2は、輝度のガンマ補正や、コントラスト調整や、階調補正などの画像補正を行うことができる画像補正装置である。
【0016】
LUT21は、輝度や階調などの画像データを表すビット数が所定のビット数である補正値を格納している。例えば、LUT21は、所定のビット数が8ビットのときのガンマ補正の場合、Y=255×(X/255)
1/γ(Xは入力画像データで0から255までの整数、Yは出力補正画像データ、γはガンマ値)で算出されるXとYの値を格納している。本実施形態では、これ以降、所定のビット数を8ビットとして説明を行うが、これには限定されない。
【0017】
分離回路22は、所定のビット数よりも大きいビット数の画像データが入力されると、画像データを所定のビット数に対応する上位ビットデータと、残りの下位ビットデータとに分離する。本実施形態では、これ以降、所定のビット数よりも大きいビット数を12ビットとして説明を行うが、これには限定されない。所定のビット数が8ビット、所定のビット数よりも大きいビット数が12ビットの場合、所定のビット数に対応する上位ビットデータは8ビット、下位ビットデータは4ビットとなる。
【0018】
作成回路23は、LUT21に格納されており上位ビットデータに対応する補正値に基づいて、下位ビットデータの補正値を算出するための曲線を作成する。曲線の作成の詳細は後述する。曲線は、上位ビットデータの補正値の間を滑らかに繋ぐことができる曲線である。
【0019】
算出回路24は、作成回路23によって作成された曲線を用いて、下位ビットデータの補正値を算出する。下位ビットデータの補正値の算出の詳細は後述する。
【0020】
補正回路25は、算出回路24により算出された下位ビットデータに対応する補正値で、入力された画像データを補正して出力する。画像データの補正は、例えば、入力された画像データを補正値で置き換える、また、入力された画像データに補正値を乗算する等の方法が可能である。
【0021】
本実施形態の画像補正装置2は、コンピュータに実装される。具体的には、画像補正装置2は、プログラムの形式で補助記憶装置に記憶されている。補助記憶装置は、一時的でない有形の媒体である。コンピュータに搭載されたCPU(Central Processing Unit)は、そのプログラムを補助記憶装置から読み出して主記憶装置に展開し、そのプログラムに従って処理を実行する。
【0022】
図3は、本実施形態の画像補正装置2の動作を示すフローチャートである。LUT21は、輝度や階調などの画像データを表すビット数が所定のビット数である補正値を予め格納している。ここでは所定のビット数を8ビットとして説明を行うが、これには限定されない。本フローチャートは、画像補正装置2に画素ごとの画像データが入力されて開始となる。
【0023】
まず、分離回路22は、所定のビット数よりも大きいビット数の画像データが入力されると、画素ごとの画像データを、所定のビット数に対応する上位ビットデータと、残りの下位ビットデータとに分離する(ステップS01)。ここでは所定のビット数よりも大きいビット数を12ビットとして説明を行うが、これには限定されない。所定のビット数が8ビット、所定のビット数よりも大きいビット数が12ビットの場合、所定のビット数に対応する上位ビットデータは8ビット、下位ビットデータは4ビットとなる。
【0024】
分離回路22が、12ビットの画像データを上位8ビットデータと下位4ビットデータとに分離する方法は、例えば以下の様である。例えば、12ビットの画像データが「101100111010」の場合、マスクデータを「111111110000」として画像データとの「AND」をとれば、上位8ビットデータである「10110011」を取り出すことができる。また、マスクデータを「000000001111」として画像データとの「AND」をとれば、下位4ビットデータである「1010」を取り出すことができる。
【0025】
次に、作成回路23は、LUT21に格納されており上位ビットデータに対応する補正値に基づいて、下位ビットデータの補正値を算出するための曲線を作成する(ステップS02)。
【0026】
図4は、作成回路23が作成する曲線として、ベジェ曲線を作成する方法を説明するための図である。
図4において、横軸(X軸)は10進数で表記した入力画像データを、縦軸(Y軸)は10進数で表記した出力画像データ(補正画像データ)を、各々示す。
【0027】
図4では、12ビットの入力X(t)の上位8ビットデータがA1である場合について、LUT21に格納されている8ビットの画像データの補正値に基づいて、A1を通るベジェ曲線を作成する方法を説明する。
【0028】
まず、作成回路23は、LUT21に格納されている8ビットの画像データの補正値から、上位8ビットデータであるA1の補正値と、上位8ビットデータにおいてA1の1つ前(A0)、およびA1の1つ後(A2)、および更に1つ後(A3)の、補正値を取得する。入力データは12ビットであるので、10進数で表記した場合、A0の16後がA1、A1の16後がA2、A2の16後がA3となる。ここではA0のX値を10進数表記での0と置くと、A0〜A3は以下のように表される。
A0(0、Y0):Y0はA1の1つ前の補正値
A1(16、Y1):Y1はA1の補正値
A2(32、Y2):Y2はA1の1つ後の補正値
A3(48、Y3):Y3はA1の2つ後の補正値
次に、作成回路23は、A0〜A3に基づいてA1〜A2のベジェ曲線を作成する。ベジェ曲線では、A0とA1を通る直線L0と、A2とA3を通る直線L2との交点B1(XB、YB)を基準点とする。すなわち、
始点(X1、Y1)=A1(16、Y1)
基準点(XB、YB)=B1(XB、YB)
終点(X2、Y2)=A2(32、Y2)
このとき、0≦t≦1において、
X(t)=(X2−2XB+X1)t
2+2(XB−X1)t+X1
Y(t)=(Y2−2YB+Y1)t
2+2(YB−Y1)t+Y1
で表されるベジェ曲線が得られる。
【0029】
tは、0≦t≦1であり、A1のX=16からA2のX=32の下位4ビットデータ(10進数表記で16、17、18、19、20、・・・、31、32)に対応するものである。例えば、X(0)=X1=16、X(1)=X2=32である。
【0030】
算出回路24は、A1のX1=16からA2のX2=32の下位4ビットデータに対応する10進数表記で16、17、・・・、32ごとにX(t)の式からt値を算出する。そして、算出されたt値を用いてY(t)の式から下位4ビットデータに対応する補正値を算出する(ステップS03)。すなわち、
図4に示すように、12ビットに対応する補正点R1(X(t)、Y(t))が求まる。以上のようにしてベジェ曲線を作成することによって、A1からA2の12ビットの画像データX(t)に対応する補正値Y(t)を算出することができる。
【0031】
補正回路25は、算出回路24により算出された下位4ビットデータに対応する補正値で、画像データを補正して出力する(ステップS04)。
【0032】
ベジェ曲線から算出された補正点R1は、A1とA2を結ぶ直線L1に対して差を有する。仮に、8ビットの画像データの補正値の間を直線で結んだL0、L1、L2から12ビットの画像データの補正値を求めた場合、L0とL1の接続部分、およびL1とL2の接続部分は折れ線状態となっている。このため、接続部分では滑らかなグラデーションの表現ができない。これに対して、ベジェ曲線では、8ビットの画像データの補正値が滑らかに結ばれているため、折れ線状態は発生せず、滑らかなグラデーションの表現が可能である。すなわち、補正点R1の直線L1との差は、滑らかなグラデーションを可能とするという画像データの補正の精度を向上させる効果として現れる。
【0033】
曲線が折れ線状態を生じないためには、曲線の1階導関数が連続であればよい。曲線が、曲線の1階導関数が連続でない箇所を有すると、1階導関数が連続でない箇所で折れ線状態が生じてしまう。このため、曲線の1階導関数が連続でない箇所を有することを避けることが望ましい。
【0034】
なお、曲線を描く方法はベジェ曲線には限定されない。曲線は、上位ビットデータの補正値の間を滑らかに繋ぐことができる曲線であればよく、スプライン法、ニアレストネイバー法、リニア法、キュービック法などを用いることができる。曲線を描く方法は、前記のような折れ線状態を有さない曲線が描けるならば、前記の各種方法には限定されない。
【0035】
なお、画像補正装置2は、処理速度や補正精度の要求に応じて、曲線を描く方法を選択することができる。すなわち、画像補正装置2では、作成回路23により、LUT21に保存されている所定のビット数(例えば8ビット)の補正値を用いて、処理速度や補正精度の要求に適した方法を選択して曲線を描くことができる。これにより、処理速度や補正精度の要求に応じた補正値を得ることができる。
【0036】
なお、画像補正装置2は、算出回路24により算出された下位ビットデータに対応する補正値を保存するメモリやHDD(Hard Disk Drive)などの記憶部を備えていてもよい。下位ビットデータに対応する補正値を保存する記憶部を備えていることにより、同じ12ビットの画像データの画素に対して記憶部に保存された補正値を適用することが可能となり、同じ演算を再び行う必要がなくなるため、処理速度を向上させることができる。
【0037】
以上のように、画像補正装置2によれば、LUT21の有する所定のビット数の画像データの補正値に基づいて作成された曲線によって、所定のビット数よりも大きいビット数の画像データに対する補正値が算出される。LUT21は所定のビット数の画像データの補正値の容量だけで済むため、メモリ容量の削減が可能である。さらに、曲線により、LUT21の有する補正値の間は滑らかに繋がれるため、画像データの補正の精度を高くすることができる。
【0038】
以上のように、本実施形態によれば、LUTのメモリ容量を削減し、かつ精度の高い画像補正を行う画像補正装置を提供することができる。
【0039】
本発明は上記実施形態に限定されることなく、特許請求の範囲に記載した発明の範囲内で種々の変形が可能であり、それらも本発明の範囲内に含まれるものである。
【0040】
また、上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記1)
所定のビット数の画像データの補正値を有する補正テーブルと、
前記所定のビット数よりも大きいビット数の画像データが入力されると、前記画像データを前記所定のビット数に対応する上位ビットデータと、残りの下位ビットデータとに分離する分離部と、
前記補正値に基づいて、1階導関数が連続である曲線を作成する作成部と、
作成された前記曲線を用いて前記下位ビットデータの補正値を算出する算出部と、
算出された前記補正値で前記画像データを補正して出力する補正部と、を有する画像補正装置。
(付記2)
前記作成部は、所定の前記上位ビットデータの前記補正値と、前記所定の上位ビットデータの一つ前の、および次の、および更に次の前記上位ビットデータの前記補正値と、に基づいて前記曲線を作成する、付記1記載の画像補正装置。
(付記3)
前記作成部はベジェ曲線を作成する、付記1または2記載の画像補正装置。
(付記4)
前記算出部で算出された補正値を保存する記憶部を有する、付記1から3の内の1項記載の画像補正装置。
(付記5)
所定のビット数の画像データの補正値を有する補正テーブルを用いた画像補正方法において、
前記所定のビット数よりも大きいビット数の画像データが入力されると、前記画像データを前記所定のビット数に対応する上位ビットデータと、残りの下位ビットデータとに分離し、
前記補正値に基づいて、1階導関数が連続である曲線を作成し、
作成された前記曲線を用いて前記下位ビットデータの補正値を算出し、
算出された前記補正値で前記画像データを補正して出力する、画像補正方法。
(付記6)
所定の前記上位ビットデータの前記補正値と、前記所定の上位ビットデータの一つ前の、および次の、および更に次の前記上位ビットデータの前記補正値と、に基づいて前記曲線を作成する、付記5記載の画像補正方法。
(付記7)
前記曲線はベジェ曲線である、付記5または6記載の画像補正方法。
(付記8)
前記算出された補正値を保存する、付記5から7の内の1項記載の画像補正方法。
(付記9)
所定のビット数の画像データの補正値を有する補正テーブルを用いた画像補正をコンピュータに実行させる画像補正プログラムにおいて、
前記所定のビット数よりも大きいビット数の画像データが入力されると、前記画像データを前記所定のビット数に対応する上位ビットデータと、残りの下位ビットデータとに分離する処理と、
前記補正値に基づいて、1階導関数が連続である曲線を作成する処理と、
作成された前記曲線を用いて前記下位ビットデータの補正値を算出する処理と、
算出された前記補正値で前記画像データを補正して出力する処理と、を実行させる画像補正プログラム。
(付記10)
所定の前記上位ビットデータの前記補正値と、前記所定の上位ビットデータの一つ前の、および次の、および更に次の前記上位ビットデータの前記補正値と、に基づいて前記曲線を作成する処理を実行させる、付記9記載の画像補正プログラム。
(付記11)
前記曲線はベジェ曲線である、付記9または10記載の画像補正プログラム。
(付記12)
前記算出された補正値を保存する処理を実行させる、付記9から11の内の1項記載の画像補正プログラム。