以下、本発明を実施するための形態(以下、実施の形態という)について説明する。なお、説明は以下の順序で行う。
1.本発明の概要
2.第1の実施の形態(ブロック輝度平均値およびブロック輝度分散をそのまま用いてエッジ保存平滑化処理を行う例)
3.第2の実施の形態(空間的に平滑化したブロック輝度平均値およびブロック輝度分散を用いてエッジ保存平滑化処理を行う例)
4.第3の実施の形態(縮小画像を用いて算出したブロック輝度平均値およびブロック輝度分散を用いてエッジ保存平滑化処理を行う例)
5.変形例
<1.本発明の概要>
上述した特許文献1に記載の発明のように、1フレーム分の輝度画像を空間方向に複数の空間ブロックBK(i,j)に分割し、各空間ブロックBK(i,j)内の輝度値λの分布を示すヒストグラム(ブロックヒストグラム)を作成した場合、ほとんどのブロックヒストグラムは単峰性を有する。そこで、本発明では、各空間ブロックBK(i,j)内の輝度値λの分布(度数分布)が、次式(3)のガウス関数H'に従うと仮定する。すなわち、上述した式(1)のブロック輝度分布関数H(i,j,λ)を、次式(3)のガウス関数H'に近似する。
なお、u(i,j)は、空間ブロックBK(i,j)内の輝度値の平均値(以下、ブロック輝度平均値と称する)を示し、Vb(i,j)は、空間ブロックBK(i,j)内の輝度値の分散(以下、ブロック輝度分散と称する)を示す。また、cは、空間ブロックBK(i,j)内の画素の総数を示す。
そうすると、上述した式(1)のブロック積分値分布関数Sは、式(3)のガウス関数H'に輝度値λを乗じた式(4)により近似できる。
そして、上述した式(1)の分母について、ブロック輝度分布関数Hを式(3)のガウス関数H'に置き換えると、次式(5)が導出される。
この式(5)により、空間ブロックBK(i,j)の輝度値の分布がガウス関数H'に従うと仮定した場合の、空間ブロックBK(i,j)内の輝度値Lの画素に対する、空間ブロックBK(i,j)内の重み関数φに基づく重みの総和の近似値が求められる。
また、上述した式(1)の分子について、ブロック積分値分布関数Sを式(4)の関数S'に置き換えると、次式(6)が導出される。
この式(6)により、空間ブロックBK(i,j)の輝度値の分布がガウス関数H'に従うと仮定した場合の、空間ブロックBK(i,j)内の輝度値Lの画素に対する、重み関数φを用いた空間ブロックBK(i,j)内の輝度値の加重和の近似値が求められる。
そして、式(1)の分母[φ*H](i,j,L)および分子[φ*S](i,j,L)を、式(5)の[φ*H'](i,j,L)および式(6)の[φ*S'](i,j,L)にそれぞれ置き換えると、空間ブロックBK(i,j)内の輝度値Lの画素に対する大局輝度値Ll'(i,j,L)を求める次式(7)が導出される。
なお、式(7)のa(i,j)は、加重平均係数を表し、次式(8)により表される。
すなわち、式(7)により、重み関数φを用いた空間ブロックBK(i,j)内の輝度値の加重平均の近似値が、空間ブロックBK(i,j)内の輝度値Lの画素に対する大局輝度値Ll'(i,j,L)として求められる。
なお、式(7)の右辺の第2項は、各空間ブロックBK(i,j)に固有な定数となる。そこで、式(7)の右辺の第2項を、次式(9)に示されるb(i,j)で置き換えると、
式(7)は次式(10)となる。
すなわち、大局輝度値Ll'(i,j,L)を、簡単な一次関数(線形式)で求めることができる。
なお、非特許文献4でも、画素値の平均値、および分散値を用いた線形式によるノイズリダクションを行う手法が提案されている。しかし、非特許文献4の手法とは、a(i,j)に相当する係数の計算方法が異なる。
また、非特許文献4では、処理対象画素ごとに、周囲の画素の画素値の平均値、および分散を算出するため、平滑化領域を大きくした場合に演算量が増大していた。
本発明では、式(8)および式(9)により、各空間ブロックBK(i,j)ごとに定数a(i,j)、定数b(i,j)を算出し、保持しておき、式(10)の線形式を計算することで、輝度画像の各画素の大局輝度値Ll'を求め、エッジ保存平滑化処理を行う。
なお、以下、定数a(i,j)をブロック輝度変換直線傾きと称し、定数b(i,j)をブロック輝度変換直線切片と称する。
さらに、本発明では、各空間ブロックBK(i,j)間に不自然な境界(ブロックノイズ)が現れないようにするために、補間処理を行う。具体的には、ある画素位置pの画素の輝度値をL(p)とした場合、輝度値L(p)に対する大局輝度値Ll(p)を、次式(11)により算出する。
なお、ω(i,j,p)は、画素位置pと空間ブロックBK(i,j)との相対位置関係により定まる重み関数を表す。
これにより、画素位置pの画素の近傍の空間ブロックBK(i,j)の情報(a(i,j), b(i,j))を用いて計算した輝度値Ll'(i,j,L(p))を、近傍の空間ブロックBK(i,j)と画素位置pとの相対位置に基づいて加重平均することで、空間方向の補間処理が行われた大局輝度値Ll(i,j,L(p))を得ることができる。
なお、以下、空間ブロックBK(i,j)を、単に空間ブロックとも称する。
<2.第1の実施の形態>
[デジタルビデオカメラの構成例]
図1は、本発明を適用したデジタルビデオカメラの第1の実施の形態を示すブロック図である。デジタルビデオカメラは、レンズ11、絞り12、画像センサ13、相関2重サンプリング回路(CDS)14、A/D(Analog/Digital)コンバータ15、DSP(Digital Signal Processor)ブロック16、タイミングジェネレータ(TG)17、LCD(Liquid Crystal Display)ドライバ18、LCD19、CODEC(Compression/Decompression)20、メモリ21、CPU(Central Processing Unit)22、入力デバイス23、およびバス24から構成される。なお、DSPブロック16は、信号処理用のプロセッサ(例えば、DSP)と画像データを保持するRAM(Random Access Memory)などのメモリなどにより構成されるブロックであり、プロセッサが所定のプログラムを実行することにより、後述する画像処理を行う。また、以下、DSPブロック16を、単にDSP16と呼ぶ。
レンズ11および絞り12などからなる光学系を通過した被写体からの入射光は、まず画像センサ13の撮像面上の各受光素子に到達し、受光素子による光電変換により電気信号に変換される。画像センサ13から出力された電気信号は、相関2重サンプリング回路14によってノイズが除去され、A/Dコンバータ15によってデジタル化された後、デジタル化された画像データがDSP16内のメモリに一時的に格納される。タイミングジェネレータ17は、一定のフレームレートにより画像データが取り込まれるように、相関2重サンプリング回路14、A/Dコンバータ15、および、DSP16により構成される信号処理系を制御する。すなわち、DSP16には、一定のフレームレートで画像データのストリームが供給される。
なお、画像センサ13は、一般的なCCD(Charge Coupled Device)などの画像センサよりダイナミックレンジが広く、飽和したり、ノイズを発生させたりすることなく、被写体の暗い部分から明るい部分までを撮像することができる。従って、A/Dコンバータ15は、入力される電気信号を、通常のデジタルビデオカメラの階調数(例えば、10乃至12ビット程度のデータにより表現できる階調数)よりも多い階調数(例えば、14乃至16ビット程度のデータにより表現できる階調数)の画像データに変換する。
DSP16は、画像データのダイナミックレンジが、例えばLCD19が表示可能なダイナミックレンジになるように、後述する画像処理を画像データに施した後、画像処理を施した画像データを、必要に応じて、LCDドライバ18またはCODEC20に供給する。
LCDドライバ18は、DSP16から供給される画像データをアナログの画像信号に変換する。LCDドライバ18は、デジタルビデオカメラのファインダであるLCD19にアナログの画像信号を供給し、画像信号に基づく画像を表示させる。
CODEC20は、DSP16から供給される画像データを所定の方式により符号化し、符号化した画像データを、半導体、磁気記録媒体、光磁気記録媒体、光記録媒体などよりなるメモリ21に記録させる。
CPU22は、例えば、ユーザがシャッタボタン等の操作ボタンなどにより構成される入力デバイス23を操作することにより入力された指令などに基づいて、デジタルビデオカメラの全体の処理を制御する。また、DSP16、タイミングジェネレータ17、CODEC20、メモリ21、LCD19、CPU22、および入力デバイス23は、バス24を介して相互に接続されている。
[デジタルカメラのDSPブロックにより実現される機能の構成例]
図2は、DSP16の内部のプロセッサ(演算ユニット)が、所定のプログラムを実行することにより実現される機能の構成の例を示すブロック図である。DSP16の内部のプロセッサが所定のプログラムを実行することにより、ホワイトバランス処理部51、デモザイク処理部52、階調補正処理部53、ガンマ補正処理部54、およびYC変換処理部55を含む機能が実現される。
ホワイトバランス処理部51は、A/Dコンバータ15によりA/D変換された、動画像などの画像データであるモザイク画像を取得する。モザイク画像は、R,G,Bのうちのいずれかの色成分に対応するデータが1つの画素に格納され、例えば図3に示す、ベイヤー配列と呼ばれる色配列に従って各画素が配置されている画像であり、RAWデータとも呼ばれている。
図3では、1つの正方形が1つの画素を表しており、正方形内の文字R,G,Bは、それぞれRの画素,Gの画素,およびBの画素を示している。そして、Gの画素が市松状に配置され、残りの部分にRの画素およびBの画素が一行ごとに交互に配置されている。
図2の説明に戻り、ホワイトバランス処理部51は、取得したモザイク画像の各画素の画素値に適切な係数をかけることにより、被写体の無彩色の部分の色バランスが実際に無彩色となるように、モザイク画像のホワイトバランスを調整する。ホワイトバランス処理部51は、ホワイトバランスを調整したモザイク画像をデモザイク処理部52に供給する。なお、以下、ホワイトバランスが調整されたモザイク画像をMwとする。
デモザイク処理部52は、ホワイトバランス処理部51から供給されたモザイク画像Mwに対して、1つの画素がR,G,B成分を全て有するようにするデモザイク処理を施す。これにより、R,G,Bの3つの色成分にそれぞれ対応するR画像、G画像、B画像の3つの画像データが生成される。デモザイク処理部52は、生成したR画像、G画像、B画像の3つの画像データを階調補正処理部53に供給する。
なお、以下、R画像、G画像、B画像の3つの画像データをまとめてRGB画像とも称する。また、以下、モザイク画像の画素位置pにおける画素値をM(p)とする。さらに、以下、デモザイク処理が施された画像データの画素位置pにおける画素値を[Rw(p), Gw(p), Bw(p)]とする。ここで、Rw(p)はR成分の画素値であり、Gw(p)はG成分の画素値であり、Bw(p)はB成分の画素値である。
階調補正処理部53は、RGB画像に階調補正処理を施し、階調補正処理を施したRGB画像をガンマ補正処理部54に供給する。なお、以下、階調補正処理が施された画像データの画素位置pにおける画素値を[Ru(p), Gu(p), Bu(p)]とする。ここで、Ru(p)はR成分の画素値であり、Gu(p)はG成分の画素値であり、Bu(p)はB成分の画素値である。
ガンマ補正処理部54は、階調変換されたRGB画像にガンマ補正を施す。ガンマ補正処理部54は、ガンマ補正を施したRGB画像をYC変換処理部55に供給する。なお、以下、ガンマ補正が施された画像データの画素位置pにおける画素値を[Ruγ(p), Guγ(p), Buγ(p)]とする。ここで、Ruγ(p)はR成分の画素値であり、Guγ(p)はG成分の画素値であり、Buγ(p)はB成分の画素値である。
YC変換処理部55は、ガンマ補正が施されたRGB画像に対して、YCマトリックス処理およびクロマ成分に対する帯域制限を行うことにより、輝度成分(Y成分)により構成されるY画像、および、色差成分(CbまたはCr成分)により構成されるC画像を生成する。YC変換処理部55は、生成したY画像およびC画像を、必要に応じて、LCDドライバ18またはCODEC20に供給する。なお、以下、YC変換処理部55から出力される画像データの画素位置pにおける画素値を[Y(p), C(p)]とする。ここで、Y(p)はY画像における輝度成分の値であり、C(p)はC画像における色差成分の値である。また、以下、C画像のCb成分をCb(p)と称し、C画像のCr成分をCr(p)と称する。
[階調補正処理部の機能の構成例]
図4は、階調補正処理部53の機能の構成例を示すブロック図である。階調補正処理部53は、輝度算出部81、非線形変換部82、輝度階調補正部83、非線形変換部84−1乃至非線形変換部84−3、階調補正部85−1乃至階調補正部85−3、および非線形逆変換部86−1乃至非線形逆変換部86−3から構成される。
輝度算出部81は、デモザイク処理部52から供給されたRGB画像の画素値Rw(p),Gw(p),Bw(p)から、その画素位置に対応する輝度成分の値(輝度値L(p))を算出し、非線形変換部82に供給する。非線形変換部82は、輝度算出部81からの輝度値L(p)を非線形変換し、その結果として得られた輝度値L(nl)(p)およびその画素位置pを、輝度階調補正部83および階調補正部85−1乃至階調補正部85−3に供給する。
輝度階調補正部83は、非線形変換部82からの輝度値L(nl)(p)の階調を圧縮することで、輝度値L(nl)(p)の階調補正を行い、階調補正により得られた輝度値Lu(nl)(p)を階調補正部85−1乃至階調補正部85−3に供給する。
非線形変換部84−1乃至非線形変換部84−3のそれぞれは、デモザイク処理部52から供給されたRGB画像の画素値Rw(p)、Gw(p)、およびBw(p)のそれぞれを非線形変換する。また、非線形変換部84−1乃至非線形変換部84−3のそれぞれは、非線形変換により得られた画素値R(nl)(p)、G(nl)(p)、およびB(nl)(p)のそれぞれを、階調補正部85−1乃至階調補正部85−3に供給する。なお、以下、非線形変換部84−1乃至非線形変換部84−3のそれぞれを個々に区別する必要のない場合、単に非線形変換部84と称する。
階調補正部85−1乃至階調補正部85−3のそれぞれは、非線形変換部82からの輝度値L(nl)(p)と、輝度階調補正部83からの輝度値Lu(nl)(p)とを用いて、非線形変換部84−1乃至非線形変換部84−3からの画素値R(nl)(p)、G(nl)(p)、およびB(nl)(p)のそれぞれを階調補正する。階調補正部85−1乃至階調補正部85−3のそれぞれは、階調補正により得られた画素値Ru(nl)(p)、Gu(nl)(p)、およびBu(nl) (p)のそれぞれを、非線形逆変換部86−1乃至非線形逆変換部86−3のそれぞれに供給する。
非線形逆変換部86−1乃至非線形逆変換部86−3のそれぞれは、階調補正部85−1乃至階調補正部85−3からの画素値Ru(nl)(p)、Gu(nl)(p)、およびBu(nl) (p)のそれぞれに、非線形変換部84による非線形変換の逆変換となる非線形逆変換を施す。非線形逆変換部86−1乃至非線形逆変換部86−3のそれぞれは、非線形逆変換により得られた画素値Ru(p)、Gu(p)、およびBu(p)のそれぞれを、ガンマ補正処理部54に供給する。
なお、以下、階調補正部85−1乃至階調補正部85−3のそれぞれを個々に区別する必要のない場合、単に階調補正部85と称する。また、以下、非線形逆変換部86−1乃至非線形逆変換部86−3のそれぞれを個々に区別する必要のない場合、単に非線形逆変換部86と称する。
[輝度階調補正部の機能の構成例]
図5は、図4の輝度階調補正部83の機能の構成の例を示すブロック図である。輝度階調補正部83は、輝度域情報算出部111、輝度域情報メモリ112、ブロック輝度平均値算出部113、ブロック輝度分散算出部114、ブロック輝度変換直線傾き算出部115、ブロック輝度変換直線切片算出部116、ブロック輝度変換直線傾きメモリ117、ブロック輝度変換直線切片メモリ118、輝度変換部119、トーンカーブ算出部120、トーンカーブメモリ121、マッピング部122、マッピング部123、およびコントラスト補正部124から構成される。
輝度域情報算出部111、ブロック輝度平均値算出部113、ブロック輝度分散算出部114、ブロック輝度変換直線傾き算出部115、およびブロック輝度変換直線切片算出部116は、輝度画像の特性値を算出し、その情報を1フレームごとに更新する処理を行う。
すなわち、輝度域情報算出部111は、非線形変換部82から供給された輝度値L(nl)(p)からなる1フレーム分の輝度画像の輝度値のヒストグラムにおける暗輝度側および明輝度側の裾野の輝度値である裾野値を求める。また、輝度域情報算出部111は、求めた裾野値を輝度域情報として輝度域情報メモリ112に格納する。輝度域情報メモリ112は、輝度域情報算出部111から供給された輝度域情報を一時的に記録し、トーンカーブ算出部120に供給する。
ブロック輝度平均値算出部113は、非線形変換部82から供給された輝度値L(nl)(p)からなる1フレーム分の輝度画像を、空間方向に複数のいくつかの空間ブロック(領域)に分割し、各空間ブロック内の輝度値の平均値(ブロック輝度平均値)を算出する。ブロック輝度平均値算出部113は、算出した各空間ブロックのブロック輝度平均値を、ブロック輝度分散算出部114およびブロック輝度変換直線切片算出部116に供給する。
ブロック輝度分散算出部114は、非線形変換部82から供給された輝度値L(nl)(p)からなる1フレーム分の輝度画像を、空間方向に複数のいくつかの空間ブロック(領域)に分割し、各空間ブロック内の輝度値の分散(ブロック輝度分散)を算出する。ブロック輝度分散算出部114は、算出した各空間ブロックのブロック輝度分散をブロック輝度変換直線傾き算出部115に供給する。
ブロック輝度変換直線傾き算出部115は、各空間ブロックのブロック輝度分散に基づいて、上述した式(8)により、各空間ブロックのブロック輝度変換直線傾きを求める。ブロック輝度変換直線傾き算出部115は、算出した各空間ブロックのブロック輝度変換直線傾きを、ブロック輝度変換直線切片算出部116およびブロック輝度変換直線傾きメモリ117に供給する。ブロック輝度変換直線傾きメモリ117は、ブロック輝度変換直線傾き算出部115から供給されたブロック輝度変換直線傾きを一時的に記録し、輝度変換部119に供給する。
ブロック輝度変換直線切片算出部116は、各空間ブロックのブロック輝度平均値およびブロック輝度変換直線傾きに基づいて、上述した式(9)により、各空間ブロックのブロック輝度変換直線切片を求める。ブロック輝度変換直線切片算出部116は、算出した各空間ブロックのブロック輝度変換直線切片を、ブロック輝度変換直線切片メモリ118に格納する。ブロック輝度変換直線切片メモリ118は、ブロック輝度変換直線切片算出部116から供給されたブロック輝度変換直線切片を一時的に記録し、輝度変換部119に供給する。
なお、以下、輝度域情報、ブロック輝度変換直線傾き、およびブロック輝度変換直線切片を中間データとも称する。この中間データとしての輝度域情報、ブロック輝度変換直線傾き、およびブロック輝度変換直線切片は、輝度域情報メモリ112、ブロック輝度変換直線傾きメモリ117、およびブロック輝度変換直線切片メモリ118に、輝度画像(RGB画像)の1フレーム分の時間だけ保持されて、1フレームごとに更新されることになる。
また、中間データは、算出するのにほぼ1フレーム分の時間が必要とされるため、従来の技術では、実際に生成された中間データが利用されるのは、次のフレームの画像情報が入力されたときとなる。しかし、階調補正処理部53では、中間データを算出する処理と、中間データを利用してRGB画像の階調補正を行う処理とは並行して行われるので、動画像データについてもリアルタイムに処理を行うことが可能である。
輝度変換部119は、非線形変換部82から供給された輝度値L(nl)(p)と、ブロック輝度変換直線傾きメモリ117からのブロック輝度変換直線傾き、およびブロック輝度変換直線切片メモリ118からのブロック輝度変換直線切片とから、輝度値L(nl)(p)からなる輝度画像のごく低周波成分からなる画像(以下、大局輝度画像と称する)の輝度値である大局輝度値Ll(nl)(p)を算出する。
すなわち、処理対象となっているフレームの時間的に1つ前のフレームの輝度画像(RGB画像)から求められた、ブロック輝度変換直線傾きおよびブロック輝度変換直線切片が用いられて、供給された輝度値L(nl)(p)の画素の大局輝度値Ll(nl)(p)が算出される。ここで、大局輝度値とは、いわばRGB画像上の画素が属す物体領域の平均輝度に相当する情報、つまりその画素が含まれる物体領域の平均的な明るさを示す輝度値である。
なお、以下、処理の対象となっている画素(いわゆる注目画素)、例えば、輝度階調補正部83に供給された輝度値L(nl)(p)の画素を、処理対象画素とも称する。
また、輝度変換部119は、算出した大局輝度値Ll(nl)(p)を、トーンカーブ算出部120およびマッピング部122に供給する。
トーンカーブ算出部120は、輝度域情報メモリ112からの輝度域情報と、輝度変換部119からの大局輝度値Ll(nl)(p)とから、輝度値の階調を圧縮するために適用されるトーンカーブの形状を算出し、その算出結果をトーンカーブメモリ121に供給する。トーンカーブメモリ121は、トーンカーブ算出部120からのトーンカーブを記録し、記録しているトーンカーブをマッピング部122、マッピング部123、およびコントラスト補正部124に供給する。
マッピング部122は、トーンカーブメモリ121に記録されているトーンカーブに基づいて、輝度変換部119からの大局輝度値Ll(nl)(p)の階調を圧縮(補正)し、階調補正により得られた大局輝度値Lcl(nl)(p)をコントラスト補正部124に供給する。マッピング部123は、トーンカーブメモリ121に記録されているトーンカーブに基づいて、非線形変換部82から供給された輝度値L(nl)(p)の階調を圧縮(補正)し、階調補正により得られた輝度値Lc(nl)(p)をコントラスト補正部124に供給する。
コントラスト補正部124は、マッピング部122からの大局輝度値Lcl(nl)(p)、マッピング部123からの輝度値Lc(nl)(p)、およびトーンカーブメモリ121に記録されているトーンカーブに基づいて、階調が圧縮された輝度値Lc(nl)(p)からなる輝度画像のコントラストを補正する。また、コントラスト補正部124は、コントラストの補正された輝度値Lu(nl)(p)を階調補正部85に供給する。
[輝度域情報算出部の機能の構成例]
図6は、図5の輝度域情報算出部111の機能の構成例を示すブロック図である。輝度域情報算出部111は、間引き部151、飽和画素除外部152、ソーティング部153、およびソーティング部154から構成される。
間引き部151は、ラスタスキャン順に供給される輝度画像の画素の輝度値L(nl)(p)を所定の間隔でサンプリングして出力する。すなわち、間引き部151は、非線形変換部82から供給された輝度値L(nl)(p)の画素位置pが、所定の間隔ごとに設けられているサンプリング位置に合致するか否かを判定し、サンプリング位置に合致すると判定した場合、輝度値L(nl)(p)を飽和画素除外部152に供給する。これにより、後段のソーティング部153およびソーティング部154に出力される輝度値の数が一定数以上とならないようになされる。
飽和画素除外部152は、noise Level(nl)およびsaturation Level(nl)を、DSP16の図示せぬ内部のメモリから読み込む。ここで、noise Level(nl)およびsaturation Level(nl)は、それぞれノイズレベルの輝度値を示す閾値、および飽和レベルの輝度値を示す閾値である。
飽和画素除外部152は、間引き部151から供給された輝度値L(nl)(p)が、noise Level(nl)以上かつsaturation Level(nl)以下である場合、その輝度値L(nl)(p)をソーティング部153およびソーティング部154に供給する。したがって、ノイズレベル以下である輝度値、および飽和レベル以上である輝度値は、後段に出力されずに遮断され、これにより後段のソーティング部153およびソーティング部154により、有効な輝度域以外の画素がカウントされないようになされる。
ソーティング部153は、比較部161−1乃至比較部161−k、および各比較部に対応するレジスタ162−1乃至レジスタ162−kから構成される。比較部161−1乃至比較部161−kは、飽和画素除外部152および比較部161−1乃至比較部161−(k−1)から供給された輝度値L(nl)(p)と、レジスタ162−1乃至レジスタ162−kの値とを比較する。
そして、比較部161−1乃至比較部161−kのそれぞれは、輝度値L(nl)(p)がレジスタ162−1乃至レジスタ162−kのそれぞれの値より小さい場合、レジスタ162−1乃至レジスタ162−kの値を後段に出力し、輝度値L(nl)(p)をレジスタ162−1乃至レジスタ162−kのそれぞれに記録させる。また、比較部161−1乃至比較部161−kのそれぞれは、輝度値L(nl)(p)がレジスタ162−1乃至レジスタ162−kのそれぞれの値以上である場合、輝度値L(nl)(p)をそのまま後段に出力する。
これにより、供給された輝度値L(nl)(p)のうち、最小値からk番目に小さい値までが、レジスタ162−1乃至レジスタ162−kに昇順に記録される。ソーティング部153は、1フレーム分の輝度画像の輝度値L(nl)(p)のソート後に、レジスタ162−kに記録されている値を、暗輝度側の裾野値Ldark(nl)として、輝度域情報メモリ112に供給する。
なお、以下、比較部161−1乃至比較部161−kのそれぞれを個々に区別する必要のない場合、単に比較部161と称する。また、以下、レジスタ162−1乃至レジスタ162−kのそれぞれを個々に区別する必要のない場合、単にレジスタ162と称する。
ソーティング部154は、比較部171−1乃至比較部171−k、および各比較部に対応するレジスタ172−1乃至レジスタ172−kから構成される。比較部171−1乃至比較部171−kは、飽和画素除外部152および比較部171−1乃至比較部171−(k−1)から供給された輝度値L(nl)(p)と、レジスタ172−1乃至レジスタ172−kの値とを比較する。
そして、比較部171−1乃至比較部171−kのそれぞれは、輝度値L(nl)(p)がレジスタ172−1乃至レジスタ172−kのそれぞれの値より大きい場合、レジスタ172−1乃至レジスタ172−kの値を後段に出力し、輝度値L(nl)(p)をレジスタ172−1乃至レジスタ172−kのそれぞれに記録させる。また、比較部171−1乃至比較部171−kのそれぞれは、輝度値L(nl)(p)がレジスタ172−1乃至レジスタ172−kのそれぞれの値以下である場合、輝度値L(nl)(p)をそのまま後段に出力する。
これにより、供給された輝度値L(nl)(p)のうち、最大値からk番目に大きい値までが、レジスタ172−1乃至レジスタ172−kに降順に記録される。ソーティング部154は、1フレーム分の輝度画像の輝度値L(nl)(p)のソート後に、レジスタ172−kに記録されている値を、明輝度側の裾野値Lbright(nl)として、輝度域情報メモリ112に供給する。
なお、以下、比較部171−1乃至比較部171−kのそれぞれを個々に区別する必要のない場合、単に比較部171と称する。また、以下、レジスタ172−1乃至レジスタ172−kのそれぞれを個々に区別する必要のない場合、単にレジスタ172と称する。
ここで、比較部161およびレジスタ162と、比較部171およびレジスタ172の数は、輝度値のヒストグラムの面積比何パーセントに相当する輝度値を裾野値として算出するかによって定まる。
例えば、暗輝度側および明輝度側のそれぞれにおいて、0.5%に相当する輝度値を裾野値として算出したい場合、ソーティング部153およびソーティング部154への輝度値の最大入力数が1200に制限されるように間引き部151の動作が制御される。そして、ソーティング部153に設けられる比較部161とレジスタ162のセットの数、およびソーティング部154に設けられる比較部171とレジスタ172のセットの数は、それぞれ6とされる。
すると、全画素の輝度値の入力が終了した時点で、レジスタ162−kおよびレジスタ172−k(k=6)には、面積比0.5%相当の輝度値が記録されているので、それらの輝度値が暗輝度側の裾野値および明輝度側の裾野値として出力される。
[ブロック輝度平均値算出部の機能の構成例]
図7は、図5のブロック輝度平均値算出部113の機能の構成例を示すブロック図である。ブロック輝度平均値算出部113は、ブロック選択部201および平均値算出部202−1乃至平均値算出部202−Nから構成される。
ブロック選択部201は、非線形変換部82から供給された処理対象画素の位置pから、処理対象画素の属す空間ブロックを特定する。ブロック選択部201は、各空間ブロックに対応する平均値算出部202−1乃至平均値算出部202−Nのうち、特定された空間ブロックに対応する平均値算出部に輝度値L(nl)(p)を供給する。
ここで、輝度画像が幅方向にW個、高さ方向にH個の空間ブロックに分割されて、輝度画像が合計N(=W×H)個の空間ブロックに分割されるとする。この場合、ブロック輝度平均値算出部113には、それらのN個の空間ブロックのそれぞれに対応するN個の平均値算出部202−1乃至平均値算出部202−Nが設けられる。そして、ブロック選択部201は、空間ブロックが特定されると、その空間ブロックに対応する平均値算出部に輝度値L(nl)(p)を供給する。
平均値算出部202−1乃至平均値算出部202−Nのそれぞれには、加算部211−1乃至加算部211−Nのそれぞれと、レジスタ212−1乃至レジスタ212−Nのそれぞれと、カウンタ213−1乃至カウンタ213−Nのそれぞれと、除算部214−1乃至214−Nのそれぞれとが設けられている。
加算部211−1乃至加算部211−Nのそれぞれは、ブロック選択部201から供給された輝度値L(nl)(p)を、レジスタ212−1乃至レジスタ212−Nのそれぞれに記録されている値に加算してレジスタ212−1乃至レジスタ212−Nのそれぞれに記録する。すなわち、レジスタ212−1乃至レジスタ212−Nのそれぞれは、ブロック選択部201から供給された輝度値L(nl)(p)の総和を記録する。
カウンタ213−1乃至カウンタ213−Nのそれぞれは、ブロック選択部201から供給された輝度値L(nl)(p)の数を記録する。すなわち、カウンタ213−1乃至カウンタ213−Nのそれぞれは、対応する空間ブロック内の画素の数をカウントする。
除算部214−1乃至214−Nのそれぞれは、レジスタ212−1乃至レジスタ212−Nのそれぞれに記録されている値を、カウンタ213−1乃至カウンタ213−Nのそれぞれに記録されている値で割り、得られた値をブロック輝度分散算出部114およびブロック輝度変換直線切片算出部116に供給する。
すなわち、平均値算出部202−1乃至平均値算出部202−Nのそれぞれは、対応する空間ブロックの輝度値の平均値(ブロック輝度平均値)を算出し、算出したブロック輝度平均値をブロック輝度分散算出部114およびブロック輝度変換直線切片算出部116に供給する。
なお、以下、平均値算出部202−1乃至平均値算出部202−Nのそれぞれを、個々に区別する必要のない場合、単に平均値算出部202と称する。また、以下、加算部211−1乃至加算部211−Nのそれぞれを、個々に区別する必要がない場合、単に加算部211と称する。さらに、以下、レジスタ212−1乃至レジスタ212−Nのそれぞれを、個々に区別する必要のない場合、単にレジスタ212と称する。また、以下、カウンタ213−1乃至カウンタ213−Nのそれぞれを、個々に区別する必要のない場合、単にカウンタ213と称する。さらに、以下、除算部214−1乃至除算部214−Nのそれぞれを、個々に区別する必要のない場合、単に除算部214と称する。
なお、予め各空間ブロック内の画素数が分かっている場合には、各平均値算出部202にカウンタ213を設けないようにすることも可能である。
[ブロック輝度分散算出部の機能の構成例]
図8は、図5のブロック輝度分散算出部114の機能の構成例を示すブロック図である。ブロック輝度分散算出部114は、ブロック輝度2乗平均値算出部231および分散算出部232から構成される。また、ブロック輝度2乗平均値算出部231は、ブロック選択部241および2乗平均値算出部242−1乃至2乗平均値算出部242−Nから構成される。
ブロック選択部241は、非線形変換部82から供給された処理対象画素の輝度値L(nl)(p)の位置pから、処理対象画素の属する空間ブロックを特定する。ブロック選択部241は、各空間ブロックに対応する2乗平均値算出部242−1乃至2乗平均値算出部242−Nのうち、特定された空間ブロックに対応する2乗平均値算出部に輝度値L(nl)(p)を供給する。
2乗平均値算出部242−1乃至2乗平均値算出部242−Nのそれぞれには、2乗部251−1乃至251−Nのそれぞれと、加算部252−1乃至加算部252−Nのそれぞれと、レジスタ253−1乃至レジスタ253−Nのそれぞれと、カウンタ254−1乃至カウンタ254−Nのそれぞれと、除算部255−1乃至除算部255−Nのそれぞれが設けられている。
2乗部251−1乃至2乗部251−Nのそれぞれは、ブロック選択部241から供給された輝度値L(nl)(p)を2乗し、加算部252−1乃至252−Nのそれぞれに供給する。
加算部252−1乃至加算部252−Nのそれぞれは、2乗部251−1乃至2乗部252−Nのそれぞれから供給された輝度値L(nl)(p)の2乗値を、レジスタ253−1乃至レジスタ253−Nのそれぞれに記録されている値に加算して、レジスタ253−1乃至レジスタ253−Nのそれぞれに記録させる。すなわち、レジスタ253−1乃至レジスタ253−Nのそれぞれには、供給された輝度値L(nl)(p)の2乗値の総和が記録される。
レジスタ253−1乃至レジスタ253−Nのそれぞれは、加算部252−1乃至加算部252−Nのそれぞれから供給された値を記録するとともに、記録している値を加算部252−1乃至加算部252−Nのそれぞれと、除算部255−1乃至除算部255−Nのそれぞれとに供給する。
カウンタ254−1乃至カウンタ254−Nのそれぞれは、1フレーム毎に、ブロック選択部241から供給された輝度値L(nl)(p)の数をカウントする。すなわち、カウンタ254−1乃至カウンタ254−Nのそれぞれは、対応する空間ブロック内の画素の数をカウントする。
除算部255−1乃至除算部255−Nのそれぞれは、レジスタ253−1乃至レジスタ253−Nのそれぞれに記録されている値を、カウンタ254−1乃至カウンタ254−Nのそれぞれに記録されている値で割ることにより、対応する空間ブロック内の画素の輝度値L(nl)(p)の2乗の平均値を求める。除算部255−1乃至除算部255−Nのそれぞれは、求めた各空間ブロックの輝度値L(nl)(p)の2乗の平均値(以下、ブロック輝度2乗平均値とも称する)を分散算出部232に供給する。
なお、以下、2乗平均値算出部242−1乃至2乗平均値算出部242−Nのそれぞれを、個々に区別する必要のない場合、単に2乗平均値算出部242と称する。また、以下、2乗部251−1乃至2乗部251−Nのそれぞれを、個々に区別する必要のない場合、単に2乗部251と称する。さらに、以下、加算部252−1乃至加算部252−Nのそれぞれを個々に区別する必要のない場合、単に加算部252と称する。また、以下、レジスタ253−1乃至レジスタ253−Nのそれぞれを、個々に区別する必要のない場合、単にレジスタ253と称する。さらに、以下、カウンタ254−1乃至カウンタ254−Nのそれぞれを、個々に区別する必要がない場合、単にカウンタ254と称する。また、以下、除算部255−1乃至除算部255−Nのそれぞれを、個々に区別する必要がない場合、単に除算部255と称する。
分散算出部232は、ブロック輝度平均値算出部113から供給される各空間ブロックのブロック輝度平均値と、2乗平均値算出部242から供給される各空間ブロックのブロック輝度2乗平均値に基づいて、各空間ブロック内の輝度値の分散(ブロック輝度分散)を算出する。分散算出部232は、算出した各空間ブロックのブロック輝度分散をブロック輝度変換直線傾き算出部115に供給する。
なお、予め各空間ブロック内の画素数が分かっている場合には、各2乗平均値算出部242にカウンタ254を設けないようにすることも可能である。
[輝度変換部の機能の構成例]
図9は、図5の輝度変換部119の機能の構成例を示すブロック図である。輝度変換部119は、近傍ブロック選択部271、線形計算部272−1乃至線形計算部272−16、ブロック重み係数算出部273、および加重平均部274から構成される。
近傍ブロック選択部271は、各空間ブロックのブロック輝度変換直線傾きa(i,j)およびブロック輝度変換直線切片b(i,j)をブロック輝度変換直線傾きメモリ117およびブロック輝度変換直線切片メモリ118から読み出す。また、近傍ブロック選択部271は、非線形変換部82から供給される処理対象画素の位置pに基づいて、処理対象画素の周囲の縦4×横4の合計16個の空間ブロック(以下、近傍ブロックとも称する)を選択する。近傍ブロック選択部271は、選択した16個の各近傍ブロックのブロック輝度変換直線傾きa(i,j)およびブロック輝度変換直線切片b(i,j)をそれぞれ、各近傍ブロックに対応する線形計算部272−1乃至線形計算部272−16に供給する。
なお、線形計算部272−1乃至線形計算部272−16のそれぞれが対応する近傍ブロックは、4×4の近傍ブロックの領域内の各近傍ブロックの位置に基づいて決定する。例えば、線形計算部272−1は、4×4の近傍ブロックのうちの左上隅の近傍ブロックに対応し、線形計算部272−16は、4×4の近傍ブロックの右下隅の近傍ブロックに対応する。
線形計算部272−1乃至線形計算部272−16のそれぞれは、処理対象画素の輝度値L(nl)(p)、並びに、それぞれが対応する近傍ブロックのブロック輝度変換直線傾きa(i,j)およびブロック輝度変換直線切片b(i,j)に基づいて、対応する近傍ブロックの中心位置での大局輝度値La(nl)(i,j,p)を算出し、加重平均部274に供給する。
ブロック重み係数算出部273は、各近傍ブロックの中心位置と処理対象画素との相対距離に基づいて、各近傍ブロックに対する重み係数ω(i,j,p)を算出し、加重平均部274に供給する。
加重平均部274は、重み係数ω(i,j,p)を用いて、各近傍ブロックの大局輝度値La(nl)(i,j,p)の加重平均を処理対象画素の大局輝度値Ll(nl)(p)として算出し、トーンカーブ算出部120およびマッピング部122に供給する。
なお、以下、線形計算部272−1乃至線形計算部272−16のそれぞれを、個々に区別する必要のない場合、単に線形計算部272と称する。
[線形計算部の機能の構成例]
図10は、図9の線形計算部272の機能の構成例を示すブロック図である。線形計算部272は、乗算部281、および加算部282から構成される。
乗算部281は、近傍ブロック選択部271から供給されるブロック輝度変換直線傾きa(i,j)と、非線形変換部82から供給される輝度値L(nl)(p)を掛け合わせ、その結果を加算部282に供給する。
加算部282は、乗算部281の計算結果と、近傍ブロック選択部271から供給されるブロック輝度変換直線切片b(i,j)とを足し合わせ、その結果を加重平均部274に供給する。
すなわち、線形計算部272は、与えられた輝度値L(nl)(p)、ブロック輝度変換直線傾きa(i,j)、およびブロック輝度変換直線切片b(i,j)を用いて、上述した式(10)の計算を行う。
[コントラスト補正部の機能の構成例]
図11は、図5のコントラスト補正部124の機能の構成例を示すブロック図である。コントラスト補正部124は、ゲイン値算出部301およびコントラスト強調部302から構成される。
ゲイン値算出部301は、トーンカーブメモリ121に記録されているトーンカーブから、トーンカーブの傾きの代表値であるγ-compパラメータを算出する。また、ゲイン値算出部301は、マッピング部123からの輝度値Lc(nl)(p)およびγ-compパラメータに基づいて、輝度値Lc(nl)(p)をコントラスト補正するときに用いるゲイン値g(p)を算出し、コントラスト強調部302に供給する。
コントラスト強調部302は、ゲイン値算出部301からのゲイン値g(p)と、マッピング部122からの大局輝度値Lcl(nl)(p)とを用いて、マッピング部123からの輝度値Lc(nl)(p)からなる輝度画像のコントラストを強調するようにコントラストを補正する。コントラスト強調部302は、コントラストを補正することにより得られた輝度値Lu(nl)(p)を階調補正部85−1乃至階調補正部85−3に供給する。
[デジタルカメラのDSPブロックの画像処理の説明]
次に、図12のフローチャートを参照して、DSP16により実行される画像処理について説明する。なお、この処理は、例えば、図1のデジタルビデオカメラによる撮影が開始され、A/Dコンバータ15からDSP16への画像データ(モザイク画像)のストリームの供給が開始されたときに開始される。また、DSP16に供給された画像データは、逐次DSP16の図示せぬ内部のメモリに格納される。
ステップS11において、ホワイトバランス処理部51は、モザイク画像を読み込む。具体的には、ホワイトバランス処理部51は、DSP16の図示せぬ内部のメモリに格納されている先頭のフレームのモザイク画像を読み込む。
ステップS12において、ホワイトバランス処理部51は、取得したモザイク画像のホワイトバランスを調整し、デモザイク処理部52に供給する。
ステップS13において、デモザイク処理部52は、デモザイク処理を行う。すなわち、デモザイク処理部52は、ホワイトバランス処理部51からのモザイク画像にデモザイク処理を施してRGB画像を生成し、階調補正処理部53に供給する。
ステップS14において、階調補正処理部53は、階調補正処理を行い、デモザイク処理部52からのRGB画像の階調を補正する。そして、階調補正処理部53は、階調の補正されたRGB画像をガンマ補正処理部54に供給する。なお、階調補正処理の詳細は後述する。
ステップS15において、ガンマ補正処理部54は、階調補正処理部53からのRGB画像にガンマ補正を施してYC変換処理部55に供給する。
ステップS16において、YC変換処理部55は、YC変換処理を行う。例えば、YC変換処理部55は、ガンマ補正処理部54からのRGB画像に対してYCマトリックス処理およびクロマ成分に対する帯域制限を行うことにより、RGB画像からY画像およびC画像を生成する。そして、ステップS17において、YC変換処理部55は、Y画像およびC画像を出力する。例えば、YC変換処理部55は、必要に応じてY画像およびC画像をLCDドライバ18またはCODEC20に出力する。
ステップS18において、ホワイトバランス処理部51は、後続するフレームが存在するか否かを判定する。例えば、DSP16の図示せぬ内部のメモリに後続するフレームのモザイク画像が蓄積されている場合、後続フレームが存在すると判定される。
ステップS18において、後続するフレームが存在すると判定された場合、処理はステップS11に戻り、処理対象となる次のフレームのモザイク画像が読み込まれる。これに対して、ステップS18において、後続するフレームが存在しないと判定された場合、画像処理は終了する。
[階調補正処理の説明]
次に、図13および図14のフローチャートを参照して、図12のステップS14の処理に対応する階調補正処理について説明する。
ステップS41において、輝度変換部119およびトーンカーブ算出部120は、中間データを読み込む。すなわち、輝度変換部119の近傍ブロック選択部271は、ブロック輝度変換直線傾きメモリ117およびブロック輝度変換直線切片メモリ118から中間データとしてのブロック輝度変換直線傾きおよびブロック輝度変換直線切片を読み込む。また、トーンカーブ算出部120は、輝度域情報メモリ112から中間データとしての輝度域情報を読み込む。
ステップS42において、輝度域情報算出部111の飽和画素除外部152は、DSP16の図示せぬ内部のメモリからnoise Level(nl)およびsaturation Level(nl)を読み込む。
ステップS43において、階調補正処理部53は、デモザイク処理部52から、RGB画像の処理対象画素の画素値および画素位置を読み込む。すなわち、階調補正処理部53の輝度算出部81、および非線形変換部84−1乃至非線形変換部84−3は、処理対象画素のR成分の画素値Rw(p)、G成分の画素値Gw(p)、およびB成分の画素値Bw(p)、およびその画素位置pを、デモザイク処理部52から読み込む。
ステップS44において、輝度算出部81は、読み込んだ画素値に基づいて、処理対象画素の輝度値L(p)を算出し、非線形変換部82に供給する。例えば、輝度算出部81は、読み込んだ画素値Rw(p)乃至画素値Bw(p)に所定の係数を乗算して線形和を求めて輝度値としたり、画素値Rw(p)乃至画素値Bw(p)のうちの最大値を輝度値としたりする。
ステップS45において、非線形変換部82は、輝度算出部81からの輝度値L(p)を非線形変換し、変換により得られた輝度値L(nl)(p)を、輝度階調補正部83および階調補正部85に供給する。例えば、非線形変換部82は、1より小さい指数によるべき乗特性や対数特性など、上に凸の単調増加特性を有する関数を用いて輝度値L(p)を非線形変換する。
ステップS46において、輝度階調補正部83の輝度値L(nl)(p)を処理に用いる各部、および階調補正部85は、非線形変換部82から、処理対象画素の輝度値L(nl)(p)およびその画素位置pを読み込む。
ステップS47において、輝度階調補正部83の輝度域情報算出部111は、輝度域情報算出のための画素処理を行う。なお、輝度域情報算出のための画素処理の詳細は後述するが、輝度域情報算出のための画素処理において、これまでに供給された輝度画像の画素の輝度値と、非線形変換部82から読み込んだ輝度値L(nl)(p)とが比較され、ソーティングが行われる。
ステップS48において、ブロック輝度平均値算出部113は、ブロック輝度平均値算出のための画素処理を行う。なお、ブロック輝度平均値算出のための画素処理の詳細は後述するが、ブロック輝度平均値算出のための画素処理において、各空間ブロック内の輝度値の積算値が算出されるとともに、各空間ブロック内の画素数がカウントされる。
ステップS49において、ブロック輝度分散算出部114は、ブロック輝度分散算出のための画素処理を行う。なお、ブロック輝度分散のための画素処理の詳細は後述するが、このブロック輝度分散のための画素処理において、各空間ブロック内の輝度値の2乗の積算値が算出されるとともに、各空間ブロック内の画素数がカウントされる。
ステップS50において、輝度変換部119は、大局輝度値算出処理を行って、処理対象画素の大局輝度値Ll(nl)(p)を算出し、トーンカーブ算出部120およびマッピング部122に供給する。なお、大局輝度値算出処理の詳細は後述する。
ステップS51において、トーンカーブ算出部120は、輝度域情報メモリ112から読み出した輝度域情報と、輝度変換部119からの大局輝度値Ll(nl)(p)とから、トーンカーブを求める。
例えば、トーンカーブ算出部120は、図15に示すトーンカーブのコントロールポイントを設定する。なお、図15のグラフの横軸方向は、階調補正する前の入力輝度の対数値を表し、縦軸方向は、トーンカーブCLによる階調補正後の出力輝度の対数値を表している。
まず、トーンカーブ算出部120は、9つのコントロールポイントP1乃至コントロールポイントP9を設定する。コントロールポイントP1は、入力輝度が所定の最小レベルとなり、出力輝度が所定の最小レベルLbase(nl)となるポイントに設定される。コントロールポイントP2は、入力輝度がノイズレベルであると見なすことができる輝度である所定のノイズレベルLnoise(nl)となり、出力輝度が最小レベルLbase(nl)となるポイントに設定される。コントロールポイントP3は、入力輝度がノイズレベルLnoise(nl)の2倍の輝度値となり、出力輝度が最小レベルLbase(nl)となるポイントに設定される。
コントロールポイントP4は、入力輝度が、輝度域情報メモリ112からの輝度域情報としての暗輝度側の裾野値Ldark(nl)となり、出力輝度がほぼ黒レベルの輝度値である輝度値Lankle(nl)となるポイントに設定される。コントロールポイントP5は、入力輝度が裾野値Ldark(nl)の2倍の輝度値となり、出力輝度が輝度値Lankle(nl)の2倍の輝度値となるポイントに設定される。コントロールポイントP6は、入力輝度が輝度変換部119からの大局輝度値Ll(nl)(p)となり、出力輝度が出力輝度の輝度範囲における所定のほぼ中間の中間輝度レベルLmid(nl)となるポイントに設定される。すなわち、大局輝度値がトーンカーブにより階調補正された場合に、大局輝度値が、トーンカーブによる階調補正後の輝度値の取り得る範囲のほぼ中間の値に変換されるように、コントロールポイントP6が設定される。
コントロールポイントP7は、入力輝度が明輝度側の裾野値Lbright(nl)の2分の1の輝度値となり、出力輝度がほぼ白レベルの輝度値である輝度値Lshoulder(nl)の2分の1の輝度値となるポイントに設定される。コントロールポイントP8は、入力輝度が、輝度域情報メモリ112からの輝度域情報としての裾野値Lbright(nl)となり、出力輝度が輝度値Lshoulder(nl)となるポイントに設定される。コントロールポイントP9は、入力輝度が所定の入力輝度の最大値となり、出力輝度が所定の出力輝度の最大値となるポイントに設定される。
また、図15において、コントロールポイントP5と、コントロールポイントP7とを結ぶ線分ALの傾きは、トーンカーブCLの傾きを代表するγ-compパラメータを示している。
処理対象画素ごとのトーンカーブCLの形状は、例えば、コントロールポイントP1乃至コントロールポイントP9に基づいて、各入力輝度値に対する出力輝度値(トーンカーブ値)をB-Spline補間処理により求めることにより定められる。
なお、トーンカーブCLの形状は、どのような形式でトーンカーブメモリ121に保持されてもよい。但し、トーンカーブCLの形状は画素ごとに更新されるため、データ量が小さい形式で保持されることが望ましい。例えばトーンカーブの形状を数個乃至10数個程度のコントロールポイントにより表現し、マッピング部122およびマッピング部123がそれらのコントロールポイントから、トーンカーブCLを算出することが妥当である。
トーンカーブ算出部120は、設定したコントロールポイントP1乃至コントロールポイントP9の入力輝度および出力輝度のセットをトーンカーブメモリ121に記録させる。したがって、実際には、1フレーム分の輝度画像を処理する期間では、コントロールポイントP6の入力輝度だけが処理対象画素が変化するたびに更新されることになる。
なお、コントロールポイントP3が補助点として設定されることにより、トーンカーブCLが確実にコントロールポイントP2またはその近傍を通過するようになる。すなわち、入力輝度がほぼノイズレベルLnoise(nl)である場合、出力輝度の最小レベルLbase(nl)にほぼ等しい値に階調変換されるようになる。また、コントロールポイントP5が補助点として設定されることにより、入力輝度がほぼ裾野値Ldark(nl)となり、出力輝度がほぼ黒レベルとなる輝度値Lankle(nl)となる付近(コントロールポイントP4付近)のトーンカーブCLの傾きが極端に急峻になったり緩やかになったりすることが防止される。また、コントロールポイントP7が補助点として設定されることにより、入力輝度がほぼ裾野値Lbright(nl)となり、出力輝度がほぼ白レベルとなる輝度値Lshoulder(nl)付近(コントロールポイントP8付近)のトーンカーブCLの傾きが極端に急峻になったり緩やかになったりすることが防止される。
したがって、トーンカーブCLは、コントロールポイントP6付近で傾きが緩やかになり、コントロールポイントP4およびP8付近で傾きがほぼ1に近くなる逆S字状の単調増加する曲線となる。つまり、トーンカーブCLは、大局輝度値Ll(nl)(p)が高い場合には、輝度値の高い画素の明るさを抑えるものとなり、大局輝度値Ll(nl)(p)が低い場合には、輝度値の低い画素の明るさを明るくするものとなる。これにより、トーンカーブCLによる階調圧縮およびコントラスト補正を組み合わせることにより、画像のディテールをほぼ保持したまま、白ツブレをほとんど発生させることなく、画像上の暗い部分が明るくなるように画像の階調の圧縮を行うことができる。
図13のフローチャートの説明に戻り、ステップS51において、トーンカーブの形状が求められ、トーンカーブの形状、より詳細にはコントロールポイントの入力輝度および出力輝度のセットがトーンカーブメモリ121に記録されると、処理はステップS52に進む。
ステップS52において、マッピング部122は、輝度変換部119から供給された大局輝度値Ll(nl)(p)を、トーンカーブメモリ121に記録されているトーンカーブに基づいて補正し、コントラスト補正部124に供給する。すなわち、マッピング部122は、トーンカーブメモリ121に記録されているコントロールポイントを用いて、B-Spline補間処理によりトーンカーブを求め、求めたトーンカーブを用いて大局輝度値Ll(nl)(p)を大局輝度値Lcl(nl)(p)に変換することにより、大局輝度値Ll(nl)(p)の階調を補正する。
ステップS53において、マッピング部123は、読み込んだ処理対象画素の輝度値L(nl)(p)を、トーンカーブメモリ121に記録されているトーンカーブに基づいて補正し、コントラスト補正部124に供給する。すなわち、マッピング部123は、トーンカーブメモリ121に記録されているコントロールポイントを用いて、B-Spline補間処理によりトーンカーブを求め、求めたトーンカーブを用いて輝度値L(nl)(p)を輝度値Lc(nl)(p)に変換することにより、輝度値L(nl)(p)の階調を補正する。
ステップS54において、コントラスト補正部124は、コントラスト補正処理を行い、トーンカーブにより階調が補正され、コントラストが劣化した輝度値Lc(nl)(p)からなる輝度画像を元の画像と同程度のコントラストに補償する。コントラスト補正部124は、コントラスト補正された輝度値Lu(nl)(p)を階調補正部85に供給する。なお、コントラスト補正処理の詳細は後述する。
ステップS55において、非線形変換部84は、読み込んだ処理対象画素の画素値を非線形変換し、階調補正部85に供給する。すなわち、非線形変換部84−1乃至非線形変換部84−3は、RGB画像の画素値Rw(p)、Gw(p)、およびBw(p)のそれぞれに対して、ステップS45の処理においてなされる非線形変換と同じ非線形変換を行う。
ステップS56において、階調補正部85−1乃至階調補正部85−3は、非線形変換部82からの輝度値L(nl)(p)と、輝度階調補正部83からの輝度値Lu(nl)(p)とを用いて、非線形変換部84からの画素値を階調補正する。そして、階調補正部85は、階調補正された画素値を、非線形逆変換部86に供給する。
例えば、階調補正部85は、輝度値L(nl)(p)と、階調補正された輝度値Lu(nl)(p)との比を各色の成分の画素値に乗算する。より具体的には、例えば、階調補正部85−1は、次式(12)を計算することにより、階調補正された画素値Ru(nl)(p)を求める。
式(12)では、階調補正前後の輝度値の比率、つまり階調補正された輝度値Lu(nl)(p)を階調補正前の輝度値L(nl)(p)で除算した値が、非線形変換された画素値R(nl)(p)に対して乗算されている。階調補正部85−2および階調補正部85−3においても、上述した式(12)と同様の計算が行われ、画素値が階調補正される。
なお、非線形変換部82および非線形変換部84において行われる非線形変換が、対数変換である場合には、式(13)に示す計算を行うことにより、画素値が階調補正されてもよい。
式(13)では、階調補正された輝度値Lu(nl)(p)と、階調補正前の輝度値L(nl)(p)との差分値が、画素値R(nl)(p)に加算されて、階調補正された画素値Ru(nl)(p)とされている。
ステップS57において、非線形逆変換部86−1乃至非線形逆変換部86−3は、階調補正部85からの画素値に、非線形変換部84による非線形変換の逆変換となる非線形逆変換を施す。そして、ステップS58において、非線形逆変換部86−1乃至非線形逆変換部86−3は、非線形逆変換により得られた画素値Ru(p)、Gu(p)、およびBu(p)を、ガンマ補正処理部54に出力する。
ステップS59において、階調補正処理部53は、処理対象となっているフレームのRGB画像上の全ての画素を処理したか否かを判定する。ステップS59において、まだ全ての画素を処理していない、つまり全ての画素が処理対象画素とされていないと判定された場合、処理はステップS43に戻り、上述した処理が繰り返される。
これに対して、ステップS59において、全ての画素が処理されたと判定された場合、ステップS60において、輝度域情報算出部111(図5)は、暗輝度側裾野値および明輝度側裾野値を算出する。すなわち、輝度域情報算出部111のソーティング部153は、レジスタ162−kに記録されている値を、輝度域情報である暗輝度側の裾野値Ldark(nl)として、輝度域情報メモリ112に供給して記録させる。また、ソーティング部154は、レジスタ172−kに記録されている値を、輝度域情報である明輝度側の裾野値Lbright(nl)として、輝度域情報メモリ112に供給して記録させる。
ステップS61において、ブロック輝度平均値算出部113の各平均値算出部202は、対応する空間ブロックのブロック輝度平均値u(i,j)を算出する。すなわち、各平均値算出部202において、除算部214が、レジスタ212に記録されている空間ブロック内の画素の輝度値L(nl)(p)の総和を、カウンタ213に記録されている空間ブロック内の画素数で割ることにより、各空間ブロックのブロック輝度平均値u(i,j)を求める。各平均値算出部202の除算部214は、算出したブロック輝度平均値u(i,j)を、ブロック輝度分散算出部114の分散算出部232およびブロック輝度変換直線切片算出部116に供給する。
ステップS62において、ブロック輝度分散算出部114は、各空間ブロックのブロック輝度分散Vb(i,j)を算出する。具体的には、ブロック輝度分散算出部114の各2乗平均値算出部242において、除算部255が、レジスタ253に記録されている空間ブロック内の画素の輝度値L(nl)(p)の2乗の総和を、カウンタ254に記録されている空間ブロック内の画素数で割ることにより、各空間ブロックのブロック輝度2乗平均値を求める。各平均値算出部202の除算部214は、算出した各空間ブロックのブロック輝度2乗平均値を分散算出部232に供給する。分散算出部232は、空間ブロックごとに、その空間ブロックのブロック輝度2乗平均値からブロック輝度平均値の2乗を引くことにより、ブロック輝度分散Vb(i,j)を求める。ブロック輝度分散算出部232は、算出した各空間ブロックのブロック輝度分散Vb(i,j)をブロック輝度変換直線傾き算出部115に供給する。
ステップS63において、ブロック輝度変換直線傾き算出部115は、ブロック輝度変換直線傾きを算出する。すなわち、ブロック輝度変換直線傾き算出部115は、上述した式(8)により、各空間ブロックのブロック輝度変換直線傾きa(i,j)を算出する。ブロック輝度変換直線傾き算出部115は、算出した各空間ブロックのブロック輝度変換直線傾きa(i,j)を、ブロック輝度変換直線切片算出部116に供給する。また、ブロック輝度変換直線傾き算出部115は、算出した各空間ブロックのブロック輝度変換直線傾きa(i,j)を、ブロック輝度変換直線傾きメモリ117に供給して記録させる。
ステップS64において、ブロック輝度変換直線切片算出部116は、ブロック輝度変換直線切片を算出する。すなわち、ブロック輝度変換直線切片算出部116は、上述した式(9)により、各空間ブロックのブロック輝度変換直線切片b(i,j)を算出する。ブロック輝度変換直線切片算出部116は、算出した各空間ブロックのブロック輝度変換直線切片b(i,j)を、ブロック輝度変換直線切片メモリ118に供給して記録させる。
その後、階調補正処理は終了し、処理は図12のステップS15に進む。
このように、階調補正処理においては、1フレーム分の輝度画像に基づいて、中間データとしての輝度域情報、ブロック輝度変換直線傾きa(i,j)、およびブロック輝度変換直線切片b(i,j)が求められ、輝度域情報メモリ112、ブロック輝度変換直線傾きメモリ117、およびブロック輝度変換直線切片メモリ118に格納される。そして、輝度階調補正部83では、現在処理しているフレームよりも時間的に1つ前のフレームから求められた中間データが用いられて処理対象画素の大局輝度値やトーンカーブが算出され、エッジ保存平滑化処理および階調補正処理が行われる。
従って、処理対象の画像が動画像であっても、画像の全画素を2回スキャンすることなく、少ない演算量および少ないワーキングメモリで、大きいオペレータサイズのエッジ保存平滑化処理を行うことができる。
次に、図16乃至図18のフローチャートを参照して、図13のステップS47乃至ステップS49の処理に対応する処理を説明する。
[輝度域情報算出のための画素処理の説明]
まず、図16のフローチャートを参照して、図13のステップS47の処理に対応する輝度域情報算出のための画素処理について説明する。
ステップS91において、間引き部151は、輝度値L(nl)(p)の処理対象画素の画素位置が、所定の間隔ごとに設けられているサンプリング位置に合致するか否かを判定する。ステップS91において、サンプリング位置に合致しないと判定された場合、読み込まれた輝度値L(nl)(p)は、飽和画素除外部152には出力されずに、処理は図13のステップS48に進む。
一方、ステップS91において、サンプリング位置に合致すると判定された場合、輝度値L(nl)(p)は、飽和画素除外部152に出力され、処理はステップS92に進む。ステップS92において、飽和画素除外部152は、間引き部151からの輝度値がnoise Level(nl)以上、かつsaturation Level(nl)以下であるか否かを判定する。
ステップS92において、noise Level(nl)以上、かつsaturation Level(nl)以下でないと判定された場合、輝度値L(nl)(p)は、飽和画素除外部152から出力されずに、処理は図13のステップS48に進む。
これに対して、ステップS92において、noise Level(nl)以上、かつsaturation Level(nl)以下であると判定された場合、つまり有効な輝度域内の輝度値であると判定された場合、飽和画素除外部152は、輝度値L(nl)(p)をソーティング部153およびソーティング部154に出力し、処理はステップS93に進む。
ステップS93において、ソーティング部153は、暗輝度側ソーティングを行う。具体的には、ソーティング部153の比較部161−1は、レジスタ162−1が記録している値と、飽和画素除外部152からの輝度値L(nl)(p)とを比較して、輝度値L(nl)(p)がレジスタ162−1の値より小さい場合、レジスタ162−1に記録されていた値を後段の比較部161−2に出力し、輝度値L(nl)(p)をレジスタ162−1に記録させる。一方、輝度値L(nl)(p)がレジスタ162−1の値以上である場合、比較部161−1は、輝度値L(nl)(p)をそのまま後段の比較部161−2に出力する。後段の比較部161−2乃至比較部161−kも同様の処理を行う。その結果、最終的に、フレーム内のサンプリング位置の画素の輝度値L(nl)(p)のうち、最小の輝度値L(nl)(p)からk番目に小さい輝度値L(nl)(p)までが、レジスタ162−1乃至レジスタ162−kに昇順に記録される。
ステップS94において、ソーティング部154は、明輝度側ソーティングを行い、処理は、図13のステップS48に進む。具体的には、ソーティング部154の比較部171−1は、レジスタ172−1が記録している値と、飽和画素除外部152からの輝度値L(nl)(p)とを比較して、輝度値L(nl)(p)がレジスタ172−1の値より大きい場合、レジスタ172−1に記録されていた値を後段の比較部171−2に出力し、輝度値L(nl)(p)をレジスタ172−1に記録させる。一方、比較部171−1は、輝度値L(nl)(p)がレジスタ172−1の値以下である場合、輝度値L(nl)(p)をそのまま後段の比較部171−2に出力する。後段の比較部171−2乃至比較部171−kも同様の処理を行う。その結果、最終的に、フレーム内のサンプリング位置の画素の輝度値L(nl)(p)のうち、最大の輝度値L(nl)(p)からk番目に大きい輝度値L(nl)(p)までが、レジスタ172−1乃至レジスタ172−kに降順に記録される。
このようにして、処理対象画素の輝度値が読み込まれるたびに暗輝度側ソーティングおよび明輝度側ソーティングを行うことで、輝度域情報としての裾野値が求められる。
[ブロック輝度平均値算出のための画素処理の説明]
次に、図17のフローチャートを参照して、図13のステップS48の処理に対応するブロック輝度平均値算出のための画素処理について説明する。
ステップS121において、ブロック輝度平均値算出部113のブロック選択部201は、処理対象画素の位置pから、処理対象画素の属す空間ブロックを特定する。
ステップS122において、ブロック選択部201は、特定した空間ブロックに対応する平均値算出部202に輝度値L(nl)(p)を加算させる。具体的には、ブロック選択部201は、特定した空間ブロックに対応する平均値算出部202の加算部211に輝度値L(nl)(p)を供給する。輝度値L(nl)(p)が供給された加算部211は、後段のレジスタ212に記録されている輝度値の積算値に、ブロック選択部201からの輝度値L(nl)(p)を加算して、レジスタ212に記録させる。これにより、各空間ブロックの輝度値が積算されていく。
ステップS123において、ブロック選択部201は、特定した空間ブロックに対応する平均値算出部202のカウンタ213の値をインクリメントする。すなわち、ブロック選択部201は、特定した空間ブロックに対応する平均値算出部202のカウンタ213に指示し、保持している値を1つ増加させる。これにより、各空間ブロックの画素数がカウントされていく。
その後、処理は図13のステップS49に進む。
[ブロック輝度分散算出のための画素処理の説明]
次に、図18のフローチャートを参照して、図13のステップS49の処理に対応するブロック輝度分散算出のための画素処理について説明する。
ステップS151において、ブロック輝度分散算出部114のブロック選択部241は、処理対象画素の位置pから、処理対象画素の属す空間ブロックを特定する。
ステップS152において、ブロック選択部241は、特定した空間ブロックに対応する2乗平均値算出部242に輝度値L(nl)(p)の2乗を加算させる。具体的には、ブロック選択部241は、特定した空間ブロックに対応する2乗平均値算出部242の2乗部251に輝度値L(nl)(p)を供給する。輝度値L(nl)(p)が供給された2乗部251は、輝度値L(nl)(p)の2乗を求め、求めた値を後段の加算部252に供給する。加算部252は、後段のレジスタ253に記録されている輝度値の2乗の積算値に、2乗部251からの値を加算して、レジスタ253に記録させる。これにより、各空間ブロックの輝度値の2乗が積算されていく。
ステップS153において、ブロック選択部241は、特定した空間ブロックに対応する2乗平均値算出部242のカウンタ254の値をインクリメントする。すなわち、ブロック選択部241は、特定した空間ブロックに対応する2乗平均値算出部242のカウンタ254に指示し、保持している値を1つ増加させる。これにより、各空間ブロックの画素数がカウントされていく。
その後、処理は図13のステップS50に進む。
[大局輝度値算出処理の説明]
次に、図19のフローチャートを参照して、図13のステップS50の処理に対応する処理である大局輝度値算出処理について説明する。
ステップS181において、近傍ブロック選択部271は、処理対象画素の近傍の4×4の空間ブロックを選択する。具体的には、近傍ブロック選択部271は、処理対象画素の空間方向の近傍(処理対象画素が含まれる空間ブロックも含む)の4×4の合計16個の空間ブロックBK(i,j)を近傍ブロックとして選択する。近傍ブロック選択部271は、選択した近傍ブロックのブロック輝度変換直線傾きa(i,j)およびブロック輝度変換直線切片b(i,j)を、各近傍ブロックに対応する線形計算部272に供給する。
ステップS182において、各線形計算部272は、上述した式(10)に対応する次式(14)により、各近傍ブロックの中心位置での大局輝度値La(nl)(i,j,p)を算出する。
すなわち、各線形計算部272は、各近傍ブロックのブロック輝度変換直線傾きa(i,j)およびブロック輝度変換直線切片b(i,j)、並びに、処理対象画素に対する重み関数φを用いて、処理対象画素の輝度値L(nl)(p)に対する各近傍ブロックの中心位置での大局輝度値La(nl)(i,j,p)を算出する。各線形計算部272は、算出した大局輝度値La(nl)(i,j,p)を加重平均部274に供給する。
ステップS183において、ブロック重み係数算出部273は、各近傍ブロックに対する重み係数ω(i,j,p)を算出する。重み係数ω(i,j,p)は、近傍ブロックの中心位置と処理対象画素との相対距離により定まる係数である。また、ブロック重み係数算出部273は、例えば、近傍ブロックの中心位置と処理対象画素との相対距離と、重み係数ω(i,j,p)との関係を表すルックアップテーブル、または3次B-spline関数などの情報を保持している。そして、ブロック重み係数算出部273は、それらの情報を用いて、各近傍ブロックの中心位置と処理対象画素との相対距離に基づいて、各近傍ブロックに対する重み係数ω(i,j,p)を算出する。ブロック重み係数算出部273は、算出した重み係数ω(i,j,p)を加重平均部274に供給する。
ステップS184において、加重平均部274は、上述した式(11)に対応する次式(15)により、各近傍ブロックの中心位置と処理対象画素との相対距離に基づいて、処理対象画素の画素位置での大局輝度値を補間する。
すなわち、加重平均部274は、各近傍ブロックの中心位置と処理対象画素との相対距離で定まる重み係数ω(i,j,p)を用いて、各近傍ブロックの情報を用いて平滑化した大局輝度値La(nl)(i,j,p)の加重平均を算出して、処理対象画素の大局輝度値Ll(nl)(p)とする。
ステップS185において、加重平均部274は、算出した大局輝度値Ll(nl)(p)を、トーンカーブ算出部120およびマッピング部122に出力する。
その後、大局輝度値算出処理は終了し、処理は図13のステップS51に進む。
このようにして、輝度変換部119は、処理対象画素の近傍の16個の空間ブロック内の輝度値に対し、それぞれの空間ブロックごとに処理対象画素に輝度値が近い画素ほど重みを大きくし、輝度値が遠い画素ほど重みを小さくして加重平均をとり、さらに算出された値に対し、処理対象画素と各空間ブロックとの相対距離に応じて重みを付け加重平均をとることで処理対象画素の大局輝度値Ll(nl)(p)を算出する。
その結果、例えば、処理対象画素近傍の16個の空間ブロックといった、広範囲な領域内の画素の輝度値の加重平均をとっても、処理対象画素とは異なる明るさである、処理対象画素の属す被写体(処理対象画素により表示される被写体)とは、別の被写体の画素による影響は少なく、処理対象画素が属す被写体の平均輝度値を示す大局輝度値を算出することができる。
[コントラスト補正処理の説明]
次に、図20のフローチャートを参照して、図13のステップS54の処理に対応するコントラスト補正処理について説明する。
ステップS211において、コントラスト補正部124は、処理対象画素の階調補正された輝度値および大局輝度値を読み込む。すなわち、コントラスト補正部124のゲイン値算出部301は、マッピング部123から、トーンカーブにより階調補正された輝度値Lc(nl)(p)を読み込む。また、コントラスト強調部302は、マッピング部123から輝度値Lc(nl)(p)を読み込むとともに、マッピング部122から、トーンカーブにより階調補正された大局輝度値Lcl(nl)(p)を読み込む。
ステップS212において、ゲイン値算出部301はγ-compパラメータを求める。例えば、ゲイン値算出部301は、図15のコントロールポイントP6付近におけるトーンカーブCLの傾きに近い値を得るために、トーンカーブメモリ121から、コントロールポイントP5およびコントロールポイントP7の入力輝度および出力輝度を読み出す。そして、ゲイン値算出部301は、読み出した入力輝度および出力輝度から、コントロールポイントP5およびコントロールポイントP7を結ぶ線分ALの傾きを、γ-compパラメータとして求める。
ステップS213において、ゲイン値算出部301は、読み込んだ輝度値Lc(nl)(p)と、求めたγ-compパラメータとからゲイン値g(p)を算出する。例えば、ゲイン値算出部301は、輝度値Lc(nl)(p)およびγ-compパラメータに基づいて、次式(16)および式(17)を計算することで、ゲイン値g(p)を算出する。
なお、式(16)において、Lmin(nl)およびLmax(nl)は、輝度値Lc(nl)(p)が取り得る値の範囲内の最小値および最大値を示しており、Lmid(nl)は、図15の中間輝度レベルLmid(nl)を示している。また、式(17)において、contrastGainは、予め定められた定数を示している。
ゲイン値算出部301はゲイン値g(p)を算出すると、算出したゲイン値g(p)をコントラスト強調部302に供給する。
ここで、図21は、輝度値Lc(nl)(p)と、ゲイン値g(p)との関係をグラフに表したものである。すなわち、図中、縦軸はゲイン値g(p)を示しており、横軸は輝度値Lc(nl)(p)を示している。
図21では、輝度値Lc(nl)(p)が中間輝度レベルLmid(nl)となるときゲイン値g(p)が最大となり、その値は、予め定められた定数contrastGainと、γ-compパラメータとから定まる値((contrastGain/γ-comp)−1)となる。また、輝度値Lc(nl)(p)が、中間輝度レベルLmid(nl)から最小値Lmin(nl)または最大値Lmax(nl)に近づくにつれて、ゲイン値g(p)は直線的に減衰する。
さらに、輝度値Lc(nl)(p)が最小値Lmin(nl)未満および最大値Lmax(nl)を超える範囲では、ゲイン値g(p)は0となる。したがって、中間輝度レベルLmid(nl)付近の輝度成分のコントラストが、最小値Lmin(nl)または最大値Lmax(nl)付近の輝度成分のコントラストと比較して強調される。より厳密に言えば、中間輝度レベルLmid(nl)付近の輝度成分ほどコントラストが強調され、最小値Lmin(nl)または最大値Lmax(nl)付近の輝度成分は、ほとんどコントラストの強調が行われない。
トーンカーブにより輝度値の階調が補正(圧縮)された画像(輝度値Lc(nl)(p)からなる画像)は、元の画像(輝度値L(nl)(p)からなる画像)と比較してコントラストが抑制(圧縮)されている。また、コントラストが抑制される度合いはトーンカーブの傾きに依存し、トーンカーブの傾きが緩やかであるほど抑制の度合いが大きい。従って、トーンカーブの傾きの逆数に応じて、階調が圧縮された画像のコントラスを強調するように補正すれば、階調を圧縮する前の画像に近いコントラストを得ることができる。しかし、noise Level(nl)またはsaturation Level(nl)付近の輝度値Lc(nl)(p)の画素についても同様の補正を行った場合、補正後の輝度値がnoise Level(nl)を下回ったり、saturation Level(nl)を超えたりするクリッピングが生じ、逆に画像のディテールが失われてしまう場合がある。
そこで、ゲイン値算出部301は、中間輝度レベルLmid(nl)付近のトーンカーブの傾きを代表する値であるγ-compパラメータを算出し、γ-compパラメータに基づくコントラスト補正量を基準として、輝度値Lc(nl)(p)がnoise Level(nl)(最小値Lmin(nl))またはsaturation Level(nl)(最大値Lmax(nl))に近づくほど基準値から減衰するようにゲイン値g(p)を決定する。
図20のフローチャートの説明に戻り、ステップS214において、コントラスト強調部302は、読み込んだ輝度値Lc(nl)(p)および大局輝度値Lcl(nl)(p)と、ゲイン値算出部301からのゲイン値g(p)とを用いて、コントラスト補正した輝度値Lu(nl)(p)を算出する。
例えば、コントラスト強調部302は、トーンカーブにより階調補正された輝度値Lc(nl)(p)および大局輝度値Lcl(nl)(p)の差分を計算することで、輝度値Lc(nl)(p)からなる輝度画像のコントラスト成分値を求める。さらに、コントラスト強調部302は、コントラスト成分値をゲイン値g(p)で増幅したものを、階調補正された輝度値Lc(nl)(p)に加算して、輝度値Lc(nl)(p)をコントラスト補正する。これにより、コントラスト補正された輝度値Lu(nl)(p)が得られる。
より具体的には、コントラスト強調部302は、輝度値Lc(nl)(p)、大局輝度値Lcl(nl)(p)、およびゲイン値g(p)を用いて、次式(18)を計算することで、コントラスト補正した輝度値Lu(nl)(p)を算出する。
なお、式(18)において、輝度値(Lc(nl)(p)−Lcl(nl)(p))からなる輝度画像(コントラスト成分値)は、輝度値Lc(nl)(p)からなる輝度画像から、輝度値Lc(nl)(p)からなる輝度画像の低周波域の成分からなる大局輝度画像を差し引いたものである。したがって、輝度値Lu(nl)(p)からなる輝度画像は、輝度値Lc(nl)(p)からなる輝度画像の低周波域を除く周波数成分がゲイン値g(p)により強調された画像となる。
ステップS215において、コントラスト強調部302は、コントラスト補正により得られた輝度値Lu(nl)(p)を図4の階調補正部85に出力し、コントラスト補正処理は終了して、処理は図14のステップS55に進む。
このように、コントラスト補正部124により、輝度値Lc(nl)(p)からなる輝度画像の低周波域を除く、低中周波域から高周波域の成分のコントラストが強調される。したがって、高周波域の成分のコントラストだけを強調したときに目立つ、エッジ部分の局所的なオーバーシュートは発生せず、見た目にもごく自然にコントラストが強調された画像を得ることができる。
また、中間輝度レベルLmid(nl)付近の輝度成分ほどコントラストが強調されるように補正され、最小値Lmin(nl)または最大値Lmax(nl)付近の輝度成分は、ほとんどコントラストの補正が行われないため、画像の白ツブレや黒ツブレがほとんど発生しない。
以上のように、階調補正処理部53では、上述した式(14)および式(15)に示されるように、各空間ブロックのブロック輝度変換直線傾きa(i,j)およびブロック輝度変換直線切片b(i,j)、並びに重み係数ω(i,j,p)のみに基づいて、輝度画像の各画素の大局輝度値Ll(nl)(p)を算出し、エッジ保存平滑化処理を行うことができる。従って、エッジ保存平滑化処理に必要な演算量およびメモリ量を大幅に削減することができる。
また、入力された輝度画像の輝度値を、輝度階調補正部83により行われる巨大な領域を一度にみるエッジ保存平滑化処理によって処理すると、物体領域ごとに平均化されたような輝度値を得ることができる。この輝度値を大局輝度値Ll(nl)(p)、すなわち各画素の大局的な明るさ情報を示す値と考え、この値が中庸な(中間的な)輝度値に変更されるように、トーンカーブ算出部120において各画素のトーンカーブ形状を決定する。このようにして画素位置ごとに決定されたトーンカーブによって各画素位置の輝度を補正することにより、画像の全ての領域を適切な明るさにするような階調補正が可能となる。
さらに、階調が圧縮された大局輝度値Lcl(nl)(p)を、階調が圧縮された処理対象画素の輝度値Lc(nl)(p)から差し引くことで、各画素位置のコントラスト成分を抽出することができる。そこで、トーンカーブ形状から算出することができる、コントラスト劣化の大きさに基づいた補正係数としてのゲイン値g(p)により、コントラスト成分を補正することが可能となる。
<3.第2の実施の形態>
[第2の実施の形態の概要]
次に、図22乃至図27を参照して、本発明の第2の実施の形態について説明する。
本発明の第2の実施の形態は、各空間ブロックのブロック輝度平均値およびブロック輝度分散を空間的に平滑化して用いることにより、演算量の削減を可能にするものである。
[輝度階調補正部の構成例]
本発明を適用したデジタルビデオカメラの第2の実施の形態では、図5の輝度階調補正部83の代わりに、図22の輝度階調補正部83が設けられる。なお、図22において、図5と対応する部分には、同一の符号を付してあり、その説明は適宜省略する。
図22の輝度階調補正部83は、図5の輝度階調補正部83と比較して、ブロック輝度平均値算出部113、ブロック輝度分散算出部114、および輝度変換部119の代わりに、平滑化ブロック輝度平均値算出部401、平滑化ブロック輝度分散算出部402、および輝度変換部403が設けられている点が異なる。
[平滑化ブロック輝度平均値算出部の構成例]
図23は、平滑化ブロック輝度平均値算出部401および平滑化ブロック輝度分散算出部402の機能の構成例を示すブロック図である。なお、図23において、図5および図8と対応する部分には、同一の符号を付してあり、その説明は適宜省略する。
平滑化ブロック輝度平均値算出部401は、ブロック輝度平均値算出部113、および畳み込み部421から構成される。
畳み込み部421は、各空間ブロックのブロック輝度平均値u(i,j)を空間的に平滑化した平滑化ブロック輝度平均値u'(i,j)を算出し、ブロック輝度変換直線切片算出部116、および平滑化ブロック輝度分散算出部402の分散算出部232に供給する。
平滑化ブロック輝度分散算出部402は、ブロック輝度2乗平均値算出部231、畳み込み部431、および分散算出部232から構成される。
畳み込み部431は、各空間ブロックのブロック輝度2乗平均値m(i,j)を空間的に平滑化した平滑化ブロック輝度2乗平均値m'(i,j)を算出し、分散算出部232に供給する。
分散算出部232は、平滑化ブロック輝度平均値算出部401の畳み込み部421から供給される各空間ブロックの平滑化ブロック輝度平均値u'(i,j)と、畳み込み部431から供給される各空間ブロックの平滑化ブロック輝度2乗平均値m'(i,j)に基づいて、各空間ブロック内の輝度値の分散(ブロック輝度分散)を算出する。分散算出部232は、算出した各空間ブロックのブロック輝度分散をブロック輝度変換直線傾き算出部115に供給する。
[輝度変換部の構成例]
図24は、輝度変換部403の構成例を示すブロック図である。なお、図24において、図9と対応する部分には、同一の符号を付してあり、その説明は適宜省略する。
図24の輝度変換部403は、図9の輝度変換部119と比較して、近傍ブロック選択部271、ブロック重み係数算出部273、および加重平均部274の代わりに、近傍ブロック選択部471、ブロック重み係数算出部472、および加重平均部473が設けられ、線形計算部272の数が16個から4個に減っている点が異なる。
近傍ブロック選択部471は、各空間ブロックのブロック輝度変換直線傾きa(i,j)およびブロック輝度変換直線切片b(i,j)をブロック輝度変換直線傾きメモリ117およびブロック輝度変換直線切片メモリ118から読み出す。また、近傍ブロック選択部471は、非線形変換部82から供給される処理対象画素の位置pに基づいて、処理対象画素の周囲の縦2×横2の合計4個の近傍ブロックを選択する。近傍ブロック選択部471は、選択した4個の各近傍ブロックのブロック輝度変換直線傾きa(i,j)およびブロック輝度変換直線切片b(i,j)をそれぞれ、各近傍ブロックに対応する線形計算部272−1乃至線形計算部272−4に供給する。
ブロック重み係数算出部472は、近傍ブロックの中心位置と処理対象画素との相対距離に基づいて、各近傍ブロックに対する重み係数ω(i,j,p)を算出し、加重平均部473に供給する。
加重平均部473は、重み係数ω(i,j,p)を用いて、各近傍ブロックの大局輝度値La(nl)(i,j,p)の加重平均を処理対象画素の大局輝度値Ll(nl)(p)として算出し、トーンカーブ算出部120およびマッピング部122に供給する。
[階調補正処理の説明]
次に、図25および図26のフローチャートを参照して、輝度階調補正部83が図22に示す構成とされる場合における階調補正処理について説明する。なお、この階調補正処理は、図12のステップS14の処理に対応する。
ステップS341乃至ステップS347の処理は、図13のステップS41乃至ステップS47の処理と同様であり、その説明は省略する。
ステップS348において、平滑化ブロック輝度平均値算出部401は、平滑化ブロック輝度平均値算出のための画素処理を行う。具体的には、平滑化ブロック輝度平均値算出部401のブロック輝度平均値算出部113は、図13のステップS48のブロック輝度平均値算出のための画素処理と同様の処理を行う。
ステップS349において、平滑化ブロック輝度分散算出部402は、平滑化ブロック輝度分散算出のための画素処理を行う。具体的には、平滑化ブロック輝度分散算出部402のブロック輝度2乗平均値算出部231は、図13のステップS49のブロック輝度分散算出のための画素処理と同様の処理を行う。
ステップS350において、輝度変換部403は、大局輝度値算出処理を行って、処理対象画素の大局輝度値Ll(nl)(p)を算出し、トーンカーブ算出部120およびマッピング部122に供給する。なお、大局輝度値算出処理の詳細は後述する。
ステップS351乃至ステップS360の処理は、図13のステップS51乃至図14のステップS60の処理と同様であり、その説明は省略する。
ステップS361において、平滑化ブロック輝度平均値算出部401は、平滑化ブロック輝度平均値を算出する。具体的には、平滑化ブロック輝度平均値算出部401のブロック輝度平均値算出部113の各平均値算出部202(図7)は、図14のステップS61と同様の処理により、各空間ブロックのブロック輝度平均値u(i,j)を算出する。各ブロック輝度平均値算出部113は、算出したブロック輝度平均値u(i,j)を畳み込み部421に供給する。
畳み込み部421は、次式(19)により、各空間ブロックのブロック輝度平均値u(i,j)を空間的に平滑化した平滑化ブロック輝度平均値u'(i,j)を算出する。
なお、w(i,j)は空間方向の平滑化の畳み込み関数を表し、総和は1とする(Σw(i,j)=1)。
畳み込み部421は、算出した各空間ブロックの平滑化ブロック輝度平均値u'(i,j)を、ブロック輝度変換直線傾き算出部115、および平滑化ブロック輝度分散算出部402の分散算出部232に供給する。
ステップS362において、平滑化ブロック輝度分散算出部402は、平滑化ブロック輝度分散を算出する。具体的には、平滑化ブロック輝度分散算出部402のブロック輝度2乗平均値算出部231の各2乗平均値算出部242(図8)は、図14のステップS62と同様の処理により、各空間ブロックのブロック輝度2乗平均値m(i,j)を算出する。各2乗平均値算出部242は、算出した各空間ブロックのブロック輝度2乗平均値m(i,j)を畳み込み部431に供給する。
畳み込み部431は、式(19)と同じ畳み込み関数w(i,j)を用いて、次式(20)により、各空間ブロックのブロック輝度2乗平均値m(i,j)を空間的に平滑化した平滑化ブロック輝度2乗平均値m'(i,j)を算出する。
畳み込み部421は、算出した各空間ブロックの平滑化ブロック輝度2乗平均値m(i,j)を分散算出部232に供給する。分散算出部232は、次式(21)により、各空間ブロックのブロック輝度分散Vb(i,j)を空間的に平滑化した平滑化ブロック輝度分散Vb'(i,j)を算出する。
分散算出部232は、算出した各空間ブロックの平滑化ブロック輝度分散Vb'(i,j)をブロック輝度変換直線傾き算出部115に供給する。
ステップS363において、ブロック輝度変換直線傾き算出部115は、ブロック輝度変換直線傾きを算出する。すなわち、ブロック輝度変換直線傾き算出部115は、上述した式(8)により、各空間ブロックのブロック輝度変換直線傾きa(i,j)を算出する。ただし、このとき、ブロック輝度変換直線傾き算出部115は、ブロック輝度分散Vb(i,j)の代わりに、平滑化ブロック輝度分散Vb'(i,j)を用いてブロック輝度変換直線傾きa(i,j)を算出する。ブロック輝度変換直線傾き算出部115は、算出した各空間ブロックのブロック輝度変換直線傾きa(i,j)を、ブロック輝度変換直線傾きメモリ117に供給して記録させる。
ステップS364において、ブロック輝度変換直線切片算出部116は、ブロック輝度変換直線切片を算出する。すなわち、ブロック輝度変換直線切片算出部116は、上述した式(9)により、各空間ブロックのブロック輝度変換直線切片b(i,j)を算出する。ただし、このとき、ブロック輝度変換直線傾き算出部115は、ブロック輝度平均値u(i,j)の代わりに、平滑化ブロック輝度平均値u'(i,j)を用いてブロック輝度変換直線切片b(i,j)を算出する。ブロック輝度変換直線切片算出部116は、算出した各空間ブロックのブロック輝度変換直線切片b(i,j)を、ブロック輝度変換直線切片メモリ118に供給して記録させる。
その後、階調補正処理は終了し、処理は図12のステップS15に進む。
[大局輝度値算出処理の説明]
次に、図27のフローチャートを参照して、図25のステップS350の処理に対応する処理である大局輝度値算出処理について説明する。
ステップS381において、近傍ブロック選択部471は、処理対象画素の近傍の2×2の空間ブロックを選択する。具体的には、近傍ブロック選択部471は、処理対象画素の空間方向の近傍(処理対象画素が含まれる空間ブロックも含む)の2×2の合計4個の空間ブロックBK(i,j)を近傍ブロックとして選択する。近傍ブロック選択部471は、選択した近傍ブロックのブロック輝度変換直線傾きa(i,j)およびブロック輝度変換直線切片b(i,j)を、各近傍ブロックに対応する線形計算部272に供給する。
ステップS382において、各線形計算部272は、図19のステップS182と同様の処理を行い、2×2の各近傍ブロックの中心位置での大局輝度値La(nl)(i,j,p)を算出し、算出した大局輝度値La(nl)(i,j,p)を加重平均部473に供給する。
ステップS383において、ブロック重み係数算出部472は、図19のステップS183と同様の処理により、2×2の各近傍ブロックに対する重み係数ω(i,j,p)を算出し、算出した重み係数ω(i,j,p)を加重平均部274に供給する。
ステップS384において、加重平均部473は、図19のステップS184と同様の処理により、2×2の各近傍ブロックの中心位置と処理対象画素との相対距離で定まる重み係数ω(i,j,p)を用いて、各近傍ブロックの情報を用いて平滑化した大局輝度値La(nl)(i,j,p)の加重平均を算出して、処理対象画素の大局輝度値Ll(nl)(p)とする。
ステップS385において、加重平均部473は、算出した大局輝度値Ll(nl)(p)を、トーンカーブ算出部120およびマッピング部122に出力する。
その後、大局輝度値算出処理は終了し、処理は図25のステップS351に進む。
このように、ブロック輝度平均値およびブロック輝度分散を空間的に平滑化した平滑化ブロック輝度平均値および平滑化ブロック輝度分散を用い、各画素の大局輝度値Ll(nl)(p)を算出する際の近傍ブロックの範囲を小さくすることにより、1画素当たりの演算量を小さくすることができる。その結果、エッジ保存平滑化処理の演算量を削減することができる。
<4.第3の実施の形態>
[第3の実施の形態の概要]
次に、図28乃至図31を参照して、本発明の第3の実施の形態について説明する。
本発明の第3の実施の形態は、輝度画像を縮小した縮小画像を用いて中間データを求めることにより、演算量の削減を可能にするものである。
[輝度階調補正部の構成例]
本発明を適用したデジタルビデオカメラの第3の実施の形態では、図5の輝度階調補正部83の代わりに、図28の輝度階調補正部83が設けられる。なお、図28において、図5と対応する部分には、同一の符号を付してあり、その説明は適宜省略する。
図28に示す輝度階調補正部83は、図5の輝度階調補正部83に、さらに縮小部461および縮小画像メモリ462が設けられている。
縮小部461は、非線形変換部82から輝度画像における処理対象画素の輝度値L(nl)(p)を読み込み、読み込んだ輝度値L(nl)(p)に基づいて、縮小画像を生成する。例えば、縮小部461は、これから生成しようとする縮小画像の画素と同じ位置にある、輝度画像上の領域内の画素の輝度値の平均値を、縮小画像の画素の輝度値とする。縮小部461は、生成した縮小画像を縮小画像メモリ462に供給する。
縮小画像メモリ462は、縮小部461から供給された縮小画像を一時的に記録する。また、輝度域情報算出部111、ブロック輝度平均値算出部113、およびブロック輝度分散算出部114は、縮小画像メモリ462に記録されている縮小画像の画素を、順次、処理対象画素として、縮小画像から輝度域情報、ブロック輝度平均値、およびブロック輝度分散を算出する。
次に、図29および図31のフローチャートを参照して、輝度階調補正部83が図28に示す構成とされる場合における階調補正処理について説明する。この階調補正処理は、図12のステップS14の処理に対応する。
なお、ステップS411乃至ステップS416の処理は、図13のステップS41乃至ステップS46の処理と同様であるので、その説明は省略する。
ステップS417において、縮小部461は、非線形変換部82から読み込んだ処理対象画素の輝度値L(nl)(p)を、縮小画像の対応する画素の加算値に加算する。
すなわち、縮小部461は、これから生成しようとする縮小画像の画素ごとに加算値を保持している。この加算値は、新たなフレームの輝度画像に対する縮小画像の生成が開始されるごとに0に更新される。縮小部461は、処理対象画素の輝度値を読み込むと、その処理対象画素が、縮小画像のどの画素に対応するか、つまり縮小画像上の同じ位置にある画素はどの画素であるかを特定し、特定した縮小画像の画素の加算値に、読み込んだ処理対象画素の輝度値を加算する。
このようにして、輝度画像の処理対象画素の輝度値を読み込むごとに、読み込んだ輝度値を、処理対象画素に対応する縮小画像の画素の加算値に加算していくことで、縮小画像の各画素について、その画素と同じ位置にある、輝度画像上の領域内の画素の輝度値の総和が加算値として得られる。
処理対象画素の輝度値が、縮小画像の対応する画素の加算値に加算されると、その後、ステップS418乃至ステップS426の処理が行われる。なお、これらの処理は、図13および図14のステップS50乃至ステップS58の処理のそれぞれと同様であるので、その説明は省略する。
ステップS427において、階調補正処理部53は、処理対象となっているフレームのRGB画像上の全ての画素を処理したか否かを判定する。ステップS427において、まだ全ての画素を処理していない、つまり全ての画素が処理対象画素とされていないと判定された場合、処理はステップS413に戻り、上述した処理が繰り返される。
これに対して、ステップS427において、全ての画素が処理されたと判定された場合、ステップS428において、縮小部461は、これから生成しようとする縮小画像の各画素について保持している加算値に基づいて、縮小画像を生成する。すなわち、縮小部461は、縮小画像の各画素について、その画素に対応する輝度画像上の領域内の画素の数で、加算値を除算し、その結果得られた値を縮小画像の対応する画素の輝度値とする。縮小部461は、縮小画像を生成すると、その縮小画像を縮小画像メモリ462に供給して記録させる。
縮小画像が生成されると、その後、ステップS429乃至ステップS431の処理が行われる。なお、これらの処理は、図13のステップS47乃至ステップS49の処理と同様であるので、その説明は省略する。また、ステップS429乃至ステップS431の処理においては、縮小画像の画素が、順次、処理対象画素とされる。つまり、縮小画像の画素の輝度値が用いられて、それらの処理が行われる。
ステップS431においてブロック輝度分散算出のための画素処理が行われると、ステップS432において、輝度階調補正部83は、縮小画像メモリ462に記録されている縮小画像の全ての画素を処理したか否かを判定する。例えば、縮小画像の全ての画素が処理対象画素とされて、ステップS429乃至ステップS431の処理が行われた場合、全ての画素を処理したと判定される。
ステップS432において、まだ全ての画素を処理していないと判定された場合、処理はステップS429に戻り、縮小画像の次の画素が処理対象画素とされて、上述した処理が繰り返される。
これに対して、ステップS432において、全ての画素を処理したと判定された場合、処理はステップS433に進む。その後、ステップS433乃至ステップS437の処理が行われて階調補正処理は終了し、処理は図12のステップS15に進む。なお、ステップS433乃至ステップS437の処理は、図14のステップS60乃至ステップS64の処理と同様であるので、その説明は省略する。
このようにして、輝度階調補正部83は、輝度画像から縮小画像を生成し、縮小画像を用いて中間データを生成する。
このように、中間データを生成する前に輝度画像を縮小することで、中間データを生成するための演算量を減らすことができるだけでなく、その演算時のメモリの消費量を削減することができる。
なお、図22に示した輝度階調補正部83において、輝度域情報算出部111、ブロック輝度平均値算出部113、およびブロック輝度分散算出部114の前段に縮小画像メモリ462と縮小部461とが設けられるようにしてもよい。
<5.変形例>
[輝度域情報算出の省略]
なお、RGB画像(輝度画像)のダイナミックレンジが安定していることが期待できる場合には、図5の輝度階調補正部83の輝度域情報算出部111において、暗輝度側裾野値および明輝度側裾野値の算出を省略するようにしてもよい。
そのような場合、図15に示したトーンカーブ形状を決定するコントロールポイントのうち、コントロールポイントP4、コントロールポイントP5、コントロールポイントP7、およびコントロールポイントP8が算出されず、残りのコントロールポイントで、トーンカーブの形状が決定される。この場合においても、画素ごとに算出される大局輝度値Ll(nl)(p)によってコントロールポイントP6の位置は変化するため、画素ごとに明るさを適切に補正するというトーンカーブの性質は保持される。
なお、画素ごとに異なるトーンカーブを設定できる構成があれば、画素ごとに明るさを適切に補正する性質は保持されるので、コントラスト補正は本発明の必須の構成要素ではない。しかし、画素ごとに算出される大局輝度値を利用したコントラスト成分算出およびコントラスト成分の補正処理があれば、より適切な出力が得られる。
[YC変換処理後の画像信号に対して階調補正処理を行う場合]
さらに、以上においては、RGB画像に対して階調補正処理が行われると説明したが、YC変換処理後の画像信号に対して階調補正処理が行われるようにしてもよい。そのような場合、DSP16は、例えば図32に示すように構成される。なお、図32において、図2における場合と対応する部分には、同一の符号を付してあり、その説明は適宜省略する。
図32に示すDSP16は、図2のDSP16に対して、デモザイク処理部52とガンマ補正処理部54との間に階調補正処理部53が設けられておらず、YC変換処理部55に階調補正処理部501が接続されている点で異なる。階調補正処理部501は、YC変換処理部55から供給されたY画像およびC画像(Cb成分およびCr成分)に階調補正処理を施し、階調補正処理を施したY画像およびC画像を、必要に応じてLCDドライバ18またはCODEC20に供給する。
なお、以下、階調補正処理が施された画像データの画素位置pにおける画素値を[Yu(p), Cu(p)]とする。ここで、Yu(p)は、Y画像における輝度成分の値であり、Cu(p)はC画像における色差成分の値である。また、以下、特にC画像の画素値Cu(p)のCb成分をCbu(p)と称し、Cr成分をCru(p)と称する。
図32の階調補正処理部501は、例えば図33に示すように構成される。すなわち、階調補正処理部501は、輝度階調補正部531、Cb階調補正部532、およびCr階調補正部533から構成される。
輝度階調補正部531は、図4の輝度階調補正部83と同様の処理を行って、YC変換処理部55からのY画像の画素値Y(p)の階調を補正(圧縮)する。そして、輝度階調補正部531は、階調補正により得られた画素値Yu(p)を、必要に応じてLCDドライバ18またはCODEC20に供給するとともに、画素値Yu(p)をCb階調補正部532およびCr階調補正部533に供給する。
Cb階調補正部532は、YC変換処理部55からのY画像の画素値Y(p)と、輝度階調補正部531からのY画像の画素値Yu(p)とを用いて、図4の階調補正部85と同様の処理を行い、YC変換処理部55からのC画像の画素値Cb(p)を階調補正して、階調補正された画素値Cbu(p)を、必要に応じてLCDドライバ18またはCODEC20に供給する。
また、Cr階調補正部533は、YC変換処理部55からのY画像の画素値Y(p)と、輝度階調補正部531からのY画像の画素値Yu(p)とを用いて、図4の階調補正部85と同様の処理を行い、YC変換処理部55からのC画像の画素値Cr(p)を階調補正して、階調補正された画素値Cru(p)を、必要に応じてLCDドライバ18またはCODEC20に供給する。
例えば、Cb階調補正部532およびCr階調補正部533が行う階調補正は、上述した式(12)に示される演算と同様に、階調補正されたY画像の画素値Yu(p)と、Y画像の画素値Y(p)との比を、C画像の画素値(画素値Cr(p)または画素値Cb(p))に乗算することにより行われる。つまり、画素値Yu(p)を画素値Y(p)で除算して得られる値が、C画像の画素値に乗算される。
階調補正処理部501には、Y画像およびC画像、つまり輝度信号と色差信号とが入力されるため、階調補正処理部501において輝度画像を生成する必要はない。また、階調補正処理部501に供給されるY画像およびC画像は、既にガンマ補正されているので、Y画像およびC画像を非線形変換する必要もない。したがって、階調補正処理部501には、図4の階調補正処理部53における輝度算出部81、非線形変換部82、非線形変換部84、および非線形逆変換部86に対応するブロックは設けられていない。
このように、Y画像およびC画像に対して階調補正処理を行うことで、より簡単に階調の補正を行うことができる。
[RAWデータに対して階調補正処理を行う場合]
さらに、RAWデータ、つまりモザイク画像に対して階調補正処理が行われるようにしてもよい。そのような場合、DSP16は、例えば図34に示すように構成される。なお、図34において、図2における場合と対応する部分には同一の符号を付してあり、その説明は適宜、省略する。
図34のDSP16と、図2のDSP16とは、図34のDSP16において階調補正処理部581が、ホワイトバランス処理部51とデモザイク処理部52との間に設けられている点で異なる。すなわち、図2のDSP16では、階調補正処理部53が、ホワイトバランス処理部51とガンマ補正処理部54との間に設けられているのに対して、図34のDSP16では、図2の階調補正処理部53に対応する階調補正処理部581が、ホワイトバランス処理部51とデモザイク処理部52との間に設けられている。
階調補正処理部581は、ホワイトバランス処理部51からのモザイク画像Mwに階調補正処理を施し、階調補正処理が施されたモザイク画像Muをデモザイク処理部52に供給する。この階調補正処理部581は、例えば図35に示すように構成される。
具体的には、階調補正処理部581は、輝度算出部611、非線形変換部612、輝度階調補正部613、位相合わせ部614、位相合わせ部615、非線形変換部616、モザイク階調補正部617、および非線形逆変換部618から構成される。
輝度算出部611は、図4の輝度算出部81と同様の処理を行い、モザイク画像Mwから輝度画像を生成する。すなわち、輝度算出部611は、ホワイトバランス処理部51からのモザイク画像Mwの画素位置pの画素値を、処理対象画素の画素値Mw(p)として、モザイク画像Mwのいくつかの画素値から輝度値L(p)を算出し、非線形変換部612に供給する。
モザイク画像Mwは、例えば図36に示すように、各画素がR、G(GrまたはGb)、Bの何れかの成分の画素値しか有していないため、輝度算出部611は、供給された1つの画素の画素値Mw(p)だけでなく、その画素の周囲の画素の画素値も参照して、輝度値を算出する。
図36では、R成分、G成分、またはB成分を有する画素が、ベイヤー配列で並んでおり、1つの四角形はモザイク画像の1つの画素を示している。また、図中、四角形内の文字「R」、「G」、および「B」は、その四角形がR成分、G成分、およびB成分の画素値を有する画素であることを示している。
輝度算出部611は、互いに隣接する縦2画素×横2画素の合計4画素を処理の単位とすると、R成分、G成分(Gr成分およびGb成分)、およびB成分の各成分の画素値が得られることを利用して、それらの4つの画素の画素値に基づいて、図中、円により示される位置の輝度値を求める。つまり、図中、円の位置近傍の4つの画素のRGB信号の和として輝度信号が生成される。
図36の例では、図中の円は、Rの画素、Bの画素、および2つのGの画素からなる領域の中心に位置している。なお、輝度値が求められる位置は、モザイク画像の画素の位置から半画素分だけずれた位置となっており、また、輝度値が求められる位置の間隔も1画素単位ではないが、これらの位置(位相)のずれは、輝度値の階調を補正するうえでは問題とはならない。
図34の説明に戻り、非線形変換部612は、図4の非線形変換部82と同様の処理を行って、輝度算出部611からの輝度値L(p)を非線形変換し、非線形変換により得られた輝度値L(nl)(p)を輝度階調補正部613および位相合わせ部614に供給する。
輝度階調補正部613は、図4の輝度階調補正部83と同様の処理を行い、非線形変換部612からの輝度値L(nl)(p)の階調を圧縮することで、輝度値L(nl)(p)の階調補正を行い、階調補正により得られた輝度値Lu(nl)(p)を位相合わせ部615に供給する。
位相合わせ部614は、非線形変換部612からの輝度値のうち、処理対象画素近傍の位置の輝度値のいくつかを用いて補間処理を行い、処理対象画素の位置の輝度値を算出する。ここで、位相合わせ部614により行われる補間処理は、例えば処理対象画素近傍の2×2の位置の合計4箇所の輝度値を用いたバイリニア補間処理などとされる。
位相合わせ部614は、処理対象画素の輝度値を求めると、求めた輝度値をモザイク階調補正部617に供給する。
位相合わせ部615は、輝度階調補正部613からの輝度値のうち、処理対象画素近傍の位置の輝度値のいくつかを用いて補間処理を行い、処理対象画素の位置の階調補正された輝度値を算出する。ここで、位相合わせ部615により行われる補間処理は、位相合わせ部614により行われる補間処理と同じ処理とされ、例えばバイリニア補間処理などとされる。
非線形変換部616は、図4の非線形変換部84と同様の処理を行って、ホワイトバランス処理部51からの処理対象画素の画素値Mw(p)を非線形変換し、非線形変換された画素値をモザイク階調補正部617に供給する。
モザイク階調補正部617は、位相合わせ部614からの輝度値と、位相合わせ部615からの階調補正された輝度値とを用いて、図4の階調補正部85と同様の処理を行い、非線形変換部616からの画素値を階調補正して、階調補正された画素値を非線形逆変換部618に供給する。例えば、モザイク階調補正部617は、上述した式(12)に示される演算と同様に、位相合わせ部614からの輝度値で、位相合わせ部615からの階調補正された輝度値を除算して得られる値を、非線形変換部616からの画素値に乗算することで、画素値を階調補正する。これにより、処理対象画素の画素値、つまりR、G、またはBの成分の画素値が階調補正されることになる。
非線形逆変換部618は、モザイク階調補正部617からの画素値に、非線形変換部616による非線形変換の逆変換となる非線形逆変換を施す。非線形逆変換部618は、非線形逆変換により得られた画素値Mu(p)を、デモザイク処理部52に供給する。
このように、モザイク画像を対象として階調補正処理を行う場合には、輝度算出部611により算出される輝度値の位置は、モザイク画像上の処理対象画素の位置とは異なるが、位相合わせ部614および位相合わせ部615により位相合わせを行うことで、処理対象画素の位置の輝度値を求めることができる。
[本発明の適用範囲の例]
なお、以上において説明したように、図1のデジタルビデオカメラは、画像の大局的な構造を抽出する画像処理を行う。このような画像処理により抽出された情報は、画質を向上させる処理などに利用することが可能であるため、画像の大局的な構造を抽出するブロックを実装する装置として、デジタルビデオカメラだけでなく他の装置にも適用することが可能である。例えば、そのような装置として、デジタルスチルカメラなどの撮像装置や、プリンタ、ディスプレイなどの表示装置等が考えられる。さらに、画像を加工したり、編集したりする装置やコンピュータプログラムにも応用することができる。
[コンピュータのハードウェアの構成例]
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
図37は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
コンピュータにおいて、CPU901,ROM(Read Only Memory)902,RAM903は、バス904により相互に接続されている。
バス904には、さらに、入出力インターフェース905が接続されている。入出力インターフェース905には、キーボード、マウス、マイクロホンなどよりなる入力部906、ディスプレイ、スピーカなどよりなる出力部907、ハードディスクや不揮発性のメモリなどよりなる記録部908、ネットワークインターフェースなどよりなる通信部909、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア911を駆動するドライブ910が接続されている。
以上のように構成されるコンピュータでは、CPU901が、例えば、記録部908に記録されているプログラムを、入出力インターフェース905及びバス904を介して、RAM903にロードして実行することにより、上述した一連の処理が行われる。
コンピュータ(CPU901)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア911に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
そして、プログラムは、リムーバブルメディア911をドライブ910に装着することにより、入出力インターフェース905を介して、記録部908にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部909で受信し、記録部908にインストールすることができる。その他、プログラムは、ROM902や記録部908に、あらかじめインストールしておくことができる。
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。