以下、図を参照しつつ、画像補正装置について説明する。この画像補正装置は、Retinex理論における照明光の照度分布を表す平滑化画像を生成する際に、原画像を縮小した縮小画像を生成する。そしてこの画像補正装置は、平滑化画像の生成だけでなく、補正係数の算出にもその縮小画像を利用することで、演算量の削減を図る。すなわち、この画像補正装置は、縮小画像と、縮小画像そのものを平滑化して得られる縮小平滑化画像との対応画素間での対数輝度差分値を被写体の反射率成分として算出し、その被写体の反射率成分の度数分布を表すヒストグラムに基づいて補正係数を算出する。その際、この画像補正装置は、照明光の照度分布におけるエッジ部分などでのアーティファクトによる補正係数への影響を抑制するため、エッジ部分に相当する画素を検出し、検出した画素の被写体の反射率成分を除いてヒストグラムを作成する。
図1は、一つの実施形態による画像補正装置が組み込まれた撮像装置のハードウェア構成図である。撮像装置1は、ユーザインターフェース部2と、撮像部3と、記憶媒体アクセス装置4と、記憶部5と、制御部6とを有する。ユーザインターフェース部2、撮像部3、記憶媒体アクセス装置4、記憶部5及び制御部6は、筐体7内に配置される。なお、撮像装置1は、例えば、携帯電話機、携帯情報端末、デジタルカメラまたはタブレット型コンピュータである。さらに撮像装置1は、撮像装置1を他の機器に接続するための通信インターフェース回路(図示せず)を有していてもよい。なお、図1は、撮像装置1が有する構成要素を説明するための図であり、撮像装置1の各構成要素の実際の配置を表した図ではないことに留意されたい。
ユーザインターフェース部2は、例えば、液晶ディスプレイ、あるいは有機エレクトロルミネッセンスディスプレイを有し、ユーザインターフェース部2の表示画面が、筐体7の正面に対向するユーザを向くように配置される。そしてユーザインターフェース部2は、撮像部3により生成された画像など、ユーザに対して様々な情報を表示する。またユーザインターフェース部2は、ユーザが撮像装置1に対する操作を行うための複数の操作ボタンを有していてもよい。あるいは、ユーザインターフェース部2は、タッチパネルディスプレイを有してもよい。この場合、ユーザインターフェース部2は、例えば、様々なアイコンまたは操作ボタンを、制御部6からの制御信号に応じて表示する。そしてユーザインターフェース部2は、表示されたアイコンまたは操作ボタンの位置にユーザが触れた場合に、その位置に応じた操作信号を生成し、その操作信号を制御部6へ出力する。
撮像部3は、例えば、2次元アレイ状に配置された固体撮像素子を有するイメージセンサと、そのイメージセンサ上に被写体の像を結像する撮像光学系とを有する。
撮像部3は、ユーザの操作に応じて被写体を撮影することで、その被写体が写った画像を生成する。本実施形態では、撮像部3は、RGB表色系で表されるカラー画像を生成する。そして撮像部3は、画像を生成する度に、生成した画像を制御部6へ出力する。
記憶媒体アクセス装置4は、例えば、半導体メモリカードといった記憶媒体8にアクセスする装置である。記憶媒体アクセス装置4は、例えば、記憶媒体8に記憶された、制御部6上で実行されるコンピュータプログラムを読み込み、制御部6に渡す。また、後述するように、制御部6が画像補正装置としての機能を実現するコンピュータプログラムを実行する場合には、記憶媒体アクセス装置4は、記憶媒体8から画像補正用コンピュータプログラムを読み込んで、制御部6に渡してもよい。
記憶部5は、例えば、読み書き可能な不揮発性の半導体メモリと、読み書き可能な揮発性の半導体メモリとを有する。そして記憶部5は、制御部6上で実行される各種のアプリケーションプログラム及び各種のデータを記憶する。また記憶部5は、画像補正処理の対象となる画像、画像補正処理の実行により生成された補正画像、及び、画像補正処理に利用される各種のデータあるいは画像補正処理の途中で生成される各種のデータを記憶する。
制御部6は、一つまたは複数のプロセッサ及びその周辺回路を有する。そして制御部6は、撮像装置1の各部と信号線を介して接続されており、撮像装置1全体を制御する。
また制御部6は、画像補正装置として動作し、撮像部3から受け取った画像に対して画像補正処理を実行する。
図2は、画像補正処理に関する制御部6の機能ブロック図である。制御部6は、色変換部11と、輝度補正部12と、彩度補正部13と、逆色変換部14とを有する。制御部6が有するこれらの各部は、例えば、制御部6上で実行されるコンピュータプログラムにより実現される。なお、制御部6が有するこれらの各部は、制御部6が有するプロセッサとは別個に、これらの各部の機能を実現する一つまたは複数の集積回路として、撮像装置1に実装されてもよい。
なお、以下の説明では、画像補正処理の対象となる画像を原画像と呼ぶ。
色変換部11は、原画像の各画素について、RGB表色系で表された値からYUV表色系で表された値へ変換する。そして色変換部11は、各画素が輝度成分(すなわち、Y成分)のみを持つ輝度画像を輝度補正部12へ出力し、各画素が色差成分(すなわち、U成分及びV成分)のみを持つ色差画像を彩度補正部13へ出力する。
輝度補正部12は、輝度画像の各画素の輝度値を、例えば、Retinex理論に従って補正して、輝度補正画像を生成する。これにより、輝度補正画像上での被写体のコントラストが強調される。そして輝度補正部12は、輝度補正画像を逆色変換部14へ出力する。さらに、輝度補正部12は、輝度補正画像の各画素について、補正前の輝度画像の対応画素の輝度値に対する補正後の輝度値の比である輝度補正係数rを彩度補正部13へ出力する。なお、輝度補正部12の処理の詳細については後述する。
彩度補正部13は、画像の各画素の色差成分を、同じ画素の輝度補正係数rに応じて補正する。例えば、彩度補正部13は、次式に従って、画像の各画素の色差成分を補正する。
U'=α(r)(U-β)+β
V'=α(r)(V-β)+β
ここでU、Vは、それぞれ、補正前のU成分の値、V成分の値であり、U'、V'は、それぞれ、補正後のU成分、V成分の値である。βは定数であり、例えば、U成分、V成分が、0〜255で表される場合、128に設定される。そしてα(r)は、輝度補正係数rに応じて設定される補正係数であり、例えば、輝度補正係数rの増加に対して線形な単調増加関数、あるいは、シグモイド関数のように、輝度補正係数rが大きくなるほど増加率が緩やかになる単調増加関数とすることができる。
彩度補正部13は、補正された色差画像の各画素の値を逆色変換部14へ出力する。
逆色変換部14は、輝度補正画像の各画素について、その画素の輝度値と、補正された色差画像の対応画素の色差成分とで表されるYUV表色系の値からRGB表色系で表される値へ変換する。これにより、補正画像が得られる。
以下、輝度補正部12の詳細について説明する。
図3は、輝度補正部12の機能ブロック図である。輝度補正部12は、縮小画像生成部21と、縮小平滑化部22と、エッジ検出部23と、縮小反射率成分算出部24と、ヒストグラム算出部25と、補正係数算出部26と、拡大部27と、補正部28とを有する。
縮小画像生成部21は、輝度画像が持つ画素数よりも少ない画素数を持つ縮小画像を生成する。例えば、縮小画像生成部21は、輝度画像において、隣接する縦2×横2画素の組ごとに、輝度値の平均値を算出し、その平均値をその組に対応する、一つの画素の輝度値とする。これにより、縦方向及び横方向について、元の輝度画像に対して画素数が1/2となる中間縮小画像が得られる。縮小画像生成部21は、同様の処理を得られた中間縮小画像に対して、所定の縮小率に応じた回数(例えば、1〜5回)繰り返すことにより、縮小画像を生成する。
あるいは、縮小画像生成部21は、縦方向及び横方向のそれぞれについて、所定の縮小率に応じた間引き率で輝度画像から画素を間引くことにより、縮小画像を生成してもよい。なお、縮小率は、例えば、原画像の画素数と、制御部6の演算能力とに基づいて予め設定され、例えば、1/4〜1/16である。
縮小画像生成部21は、得られた縮小画像を縮小平滑化部22及び縮小反射率成分算出部24へ出力する。
縮小平滑化部22は、縮小画像を平滑化して、縮小平滑化画像を生成する。例えば、縮小平滑化部22は、縮小画像の各画素に対して、移動平均フィルタ、メディアンフィルタ、ガウシアンフィルタ、あるいはεフィルタといった平滑化フィルタ処理を実行することで縮小平滑化画像を生成する。そして縮小平滑化部22は、生成した縮小平滑化画像をエッジ検出部23、縮小反射率成分算出部24、及び拡大部27へ出力する。
エッジ検出部23は、縮小平滑化画像に基づいて、照明光の照度分布等に起因するエッジ部分に含まれる画素であるエッジ画素を検出する。ここで、縮小画像と縮小平滑化画像間の差分により生じる、エッジ部分でのアーティファクトについて説明する。
図4(a)は、縮小画像及び縮小平滑化画像についての輝度値のプロファイルの一例を示す図である。図4(a)において、横軸は位置を表し、縦軸は輝度値を表す。プロファイル401は、縮小画像400における、エッジ部分410を横切る方向の画素列411における輝度値の変化を表す。一方、プロファイル402は、縮小画像400を平滑化して得られた縮小平滑化画像における、画素列411と同じ画素列における輝度値の変化を表す。プロファイル402に示されるように、縮小平滑化画像では、もとの縮小画像400における、被写体の構造に起因する反射率成分に相当する微細な輝度値変化が平滑化されていることが分かる。ただし、その平滑化に伴い、エッジ部分410も鈍っていることが分かる。
図4(b)は、縮小画像と縮小平滑化画像の対応画素間の輝度差分値、すなわち、被写体の反射率成分のプロファイルの一例を示す図である。図4(b)において、横軸は位置を表し、縦軸は輝度差分値を表す。そしてプロファイル403は、画素列411における、輝度差分値の変化を表す。プロファイル403に示されるように、縮小平滑化画像においてエッジ部分410が鈍っているために、エッジ部分410において輝度差分値の絶対値が被写体の構造に起因する反射率成分の変化を超えるほど大きくなっていることが分かる。すなわち、エッジ部分410において、アーティファクトが生じている。
図4(c)は、図4(b)に示される輝度差分値のプロファイルに対応する、輝度差分値のヒストグラムを示す図である。図4(c)において、横軸は輝度差分値を表し、縦軸は度数を表す。そしてヒストグラム420は、図4(b)に示される輝度差分値のプロファイルに対応する輝度差分値のヒストグラムである。上記のように、エッジ部分410にアーティファクトが生じている。このようなアーティファクトは、相対的に大きな輝度差分値の絶対値を有するために、ヒストグラム420の下限近傍及び上限近傍のそれぞれに、ピークが生じている。そのため、被写体の反射率成分の度数分布に基づいて補正係数を決定しようとすると、そのアーティファクトが補正係数に影響する。そこで補正係数の算出に利用される被写体の反射率成分の分布には、このようなアーティファクトが含まれないことが好ましい。
また、図4(a)に示されるように、縮小平滑化画像では、エッジ部分に含まれる画素については、近傍画素間の輝度差分値の絶対値が比較的大きくなるのに対して、エッジ部分に含まれない画素については、近傍画素間の輝度差分値の絶対値が比較的小さくなる。そこで、エッジ検出部23は、縮小平滑化画像の各画素に対して、エッジ検出フィルタ処理を実行することでエッジ強度を算出し、そのエッジ強度に基づいて、エッジ画素を検出する。例えば、エッジ検出部23は、エッジ検出フィルタとして、水平方向または垂直方向の1次微分フィルタ(例えば、隣接画素間の差分またはSobelフィルタ)を適用して得られる値の絶対値をエッジ強度として算出してもよい。あるいは、エッジ検出部23は、水平方向及び垂直方向の両方について1次微分フィルタを適用して、水平方向のエッジ強度と垂直方向のエッジ強度を算出し、その二乗和をエッジ強度としてもよい。あるいはまた、エッジ検出部23は、エッジ検出フィルタとして、ラプラシアンフィルタといった2次微分フィルタを適用して得られる値の絶対値をエッジ強度として算出してもよい。
さらに、エッジ検出部23は、各画素がエッジ強度を持つ画像(以下、便宜上、エッジ強度画像と呼ぶ)に対してローパスフィルタ処理を適用してもよい。これにより、エッジ検出部23は、本来、エッジ部分に含まれるにもかかわらず、単純なエッジ検出処理ではエッジ部分に含まれないと判定される画素もエッジ画素として検出することができる。
なお、エッジ検出部23は、ローパスフィルタ処理として、例えば、ガウシアンフィルタ処理をエッジ強度画像の各画素に対して実行すればよい。
エッジ検出部23は、エッジ強度画像の各画素について、その画素のエッジ強度を所定の閾値(例えば、5〜10)と比較する。そしてエッジ検出部23は、エッジ強度が所定の閾値よりも高い画素をエッジ画素として検出する。
エッジ検出部23は、検出したエッジ画素のそれぞれについて、エッジ画素を表す情報、例えば、エッジ強度画像上でのエッジ画素の座標をヒストグラム算出部25へ通知する。
縮小反射率成分算出部24は、縮小画像と縮小平滑化画像とに基づいて、縮小画像に表されている被写体の反射率成分を算出する。上記のように、画素(x,y)に写っている被写体の反射率成分は、その画素の輝度値I(x,y)と、その画素(x,y)における照明光の照度L(x,y)の比(I(x,y)/L(x,y))として表される。また、縮小平滑化画像は、照明光の照度分布を近似的に表している。そこで、縮小反射率成分算出部24は、縮小画像の各画素について、その画素の輝度値I(x,y)の対数値logI(x,y)から縮小平滑化画像の対応画素の輝度値L(x,y)の対数値logL(x,y)を減じることで得られる対数輝度差分値LogR(x,y){=LogI(x,y)-LogL(x,y)}を算出する。そして縮小反射率成分算出部24は、各画素の対数輝度差分値LogR(x,y)を、縮小画像に表されている被写体の反射率成分とする。
縮小反射率成分算出部24は、各画素の被写体の反射率成分、すなわち、対数輝度差分値LogR(x,y)をヒストグラム算出部25へ通知する。
ヒストグラム算出部25は、被写体の反射率成分の値ごとの度数を算出することで、被写体の反射率成分の度数分布を表すヒストグラムを算出する。本実施形態では、ヒストグラム算出部25は、LogR(x,y)の値ごとに度数を算出して、LogR(x,y)のヒストグラムを算出する。
ただし、本実施形態では、ヒストグラム算出部25は、エッジ画素に対応する縮小画像の画素についての被写体の反射率成分の値を、ヒストグラムの算出に利用しない。これにより、ヒストグラム算出部25は、エッジ部分で生じるアーティファクトがヒストグラムに影響することを抑制できる。したがって、詳細は後述するように、エッジ部分で生じるアーティファクトが補正係数の算出に影響することが抑制される。
図5は、ヒストグラム算出処理の概要を示す図である。図5に示される画像500の各画素の値は、その画素における被写体の反射率成分の値を表す。そして画像500の各画素のうち、画素501がエッジ画素であるとする。この場合、ヒストグラム510は、画素501の被写体の反射率成分の値'4'を除いて作成される。そして被写体の反射率成分の値が'4'となる画素は他に存在しないため、ヒストグラム510では、値'4'の度数が'0'となる。
ヒストグラム算出部25は、算出したヒストグラムを補正係数算出部26へ渡す。
補正係数算出部26は、エッジ画素の被写体の反射率成分以外の各画素の被写体の反射率成分の分布に応じて、その反射率成分の値に応じた値を持ち、輝度値補正に用いられる補正係数を算出する。そのために、本実施形態では、補正係数算出部26は、エッジ画素の被写体の反射率成分を除いた被写体の反射率成分についてのヒストグラムに基づいて補正係数を算出する。
図6(a)及び図6(b)は、補正係数算出処理の概要を説明する図である。図6(a)において、横軸は被写体の反射率成分の値LogR(x,y)を表し、縦軸は度数を表す。そしてヒストグラム600は、ヒストグラム算出部25により算出されたヒストグラムである。
補正係数算出部26は、ヒストグラム600において、被写体の反射率成分の値の最小値から順に、累積度数が第1の所定値となる基準値aを算出する。同様に、補正係数算出部26は、ヒストグラム600において、被写体の反射率成分の値の最大値から順に、累積度数が第2の所定値となる基準値bを算出する。なお、第1の所定値及び第2の所定値は、例えば、ヒストグラム600の全度数の0.1%〜1%に相当する値とすることができる。また、第1の所定値と第2の所定値は同一でもよく、あるいは、互いに異なっていてもよい。
補正係数算出部26は、基準値aが予め設定された値cとなり、かつ、基準値bが予め設定された値dとなるように、範囲[a,b]を範囲[c,d]へ拡大する。すなわち、補正係数算出部26は、被写体の反射率成分の値LogR(x,y)を次式に従って値R'に変換する。
図6(b)は、変換後の被写体の反射率成分の値R'と補正係数kとの関係を示すグラフである。図6(b)において、横軸は変換後の被写体の反射率成分の値R'を表し、縦軸は補正係数kを表す。そしてグラフ610は、変換後の被写体の反射率成分の値R'と補正係数kとの関係を表す。この例では、変換後の被写体の反射率成分の値R'が下限値Rminと上限値Rmaxに含まれている場合、その値R'が大きくなるほど補正係数kも線形に単調増加する。一方、変換後の被写体の反射率成分の値R'が下限値Rmin以下、あるいは、上限値Rmax以上となる場合、補正係数kは一定値となる。なお、下限値Rminは、値cと同一でもよく、あるいは、異なっていてもよい。また、上限値Rmaxは、値dと同一でもよく、あるいは、異なっていてもよい。さらに、変換後の被写体の反射率成分の値R'と補正係数kとの関係は、図6(b)に示されるものに限られず、例えば、グラフ611のように、下に凸な非線形な単調増加関数で表されてもよい。あるいは、変換後の被写体の反射率成分の値R'と補正係数kとの関係は、グラフ612のように、上に凸な非線形な単調増加関数で表されてもよい。あるいはまた、変換後の被写体の反射率成分の値R'と補正係数kとの関係は、S字カーブ状の単調増加関数で表されてもよい。
補正係数算出部26は、上記の変換式と、グラフ610などに示されるような、変換後の被写体の反射率成分の値R'と補正係数kとの関係を参照して、被写体の反射率成分LogR(x,y)の値ごとに、対応する補正係数k(LogR(x,y))を算出する。そして補正係数算出部26は、被写体の反射率成分の値ごとの補正係数k(LogR(x,y))を補正部28へ出力する。
拡大部27は、縮小平滑化像を輝度画像と同じ画素数を持つように拡大することで、拡大平滑化画像を生成する。
本実施形態では、拡大部27は、縮小平滑化画像の各画素について、元の輝度画像における対応画素を特定する。例えば、縮小平滑化画像が、縦方向及び横方向のそれぞれについて、元の輝度画像に対して1/m(ただしmは2以上の整数)に縮小されているとする。この場合、拡大部27は、例えば、縮小平滑化画像の座標(xs,ys)の画素を、元の輝度画像の座標(xs*m+offsetx,ys*m+offsety)の画素に対応付ける。なお、offsetx、offsetyは、それぞれ、横方向、縦方向のオフセット値であり、例えば、0またはm/2に設定される。そして拡大部27は、元の輝度画像の各画素を順次着目画素とし、着目画素の周囲4点の縮小平滑化画像の画素を特定する。
図7は、輝度画像の着目画素と、着目画素の拡大平滑化に利用される縮小平滑化画像の画素の位置関係の一例を示す図である。なお、この例では、縮小平滑化画像の縮小率は1/4とする。
縮小平滑化画像のの画素数は、輝度画像の画素数よりも少ない。そのため、輝度画像700に対して、縮小平滑化画像の各画素は、離散的に対応付けられ、この例では、ハッチングで表される。そして着目画素701の上下左右それぞれの方向について、着目画素701に最も近い縮小平滑化画像の画素702〜705が、着目画素の周囲4点の画素として利用される。
拡大部27は、輝度画像の各画素について、周囲4点のそれぞれについての縮小平滑化画像の画素の輝度値に基づいて、バイリニア補間を行うことにより、拡大平滑化画像の対応画素の輝度値を算出する。あるいは、拡大部27は、輝度画像の各画素について、他の補間方法、例えば、最近傍補間あるいはバイキュービック補間により、拡大平滑化画像の対応画素の輝度値を算出してもよい。
拡大部27は、拡大平滑化画像を補正部28へ出力する。
補正部28は、輝度画像と拡大平滑化画像とに基づいて、輝度補正画像を生成する。拡大平滑化画像は、照明光の照度分布を近似的に表すと考えられるので、本実施形態では、補正部28は、Retinex理論に基づく次式に従って、輝度補正画像の各画素の輝度値R'(x,y)を算出する。
ここでI(x,y)は、輝度画像の画素(x,y)の輝度値を表し、L(x,y)は、拡大平滑化画像の画素(x,y)の輝度値を表す。またk(LogR(x,y))は、補正係数算出部26により算出された補正係数である。
なお、補正部28は、(2)式で算出された輝度値R'(x,y)と元の輝度値I(x,y)とを所定のブレンド比にて合成することで、輝度補正画像の各画素の輝度値を算出してもよい。
さらに、補正部28は、輝度補正画像の各画素について、輝度補正係数rを算出する。
補正部28は、得られた輝度補正画像を逆色変換部14へ出力し、各画素の輝度補正係数rを彩度補正部13へ出力する。
図8は、輝度補正部12により実行される輝度補正処理の動作フローチャートである。
縮小画像生成部21は、輝度画像から縮小画像を生成する(ステップS101)。また、縮小平滑化部22は、縮小画像の各画素について平滑化フィルタ処理を行って、縮小平滑化画像を生成する(ステップS102)。
エッジ検出部23は、縮小平滑化画像の各画素についてエッジ強度を算出し、そのエッジ強度が所定の閾値よりも大きい画素を、エッジ部分に含まれるエッジ画素として検出する(ステップS103)。
また、縮小反射率成分算出部24は、縮小画像の各画素について、その画素と縮小平滑化画像の対応画素間の対数輝度差分値LogR(x,y)を、被写体の反射率成分として算出する(ステップS104)。
ヒストグラム算出部25は、縮小画像のエッジ画素以外の各画素の被写体の反射率成分LogR(x,y)に基づいて反射率成分LogR(x,y)の値ごとの度数を算出することで、エッジ部分を除いた被写体の反射率成分についてのヒストグラムを算出する(ステップS105)。そして補正係数算出部26は、そのヒストグラムに基づいて、反射率成分LogR(x,y)の値に応じた値を持つ補正係数k(LogR(x,y))を算出する(ステップS106)。
拡大部27は、元の輝度画像の各画素について、その周囲4点における縮小平滑化画像の画素を特定する。そして拡大部27は、周囲4点のそれぞれについての縮小平滑化画像の輝度値を用いて補間処理を行って得た値を、拡大平滑化画像の対応画素の輝度値とすることで、拡大平滑化画像を生成する(ステップS107)。
補正部28は、元の輝度画像の各画素について、その画素の輝度値I(x,y)と拡大平滑化画像の対応画素の輝度値L(x,y)に基づいて被写体の反射率成分LogR(x,y)を算出する。そして補正部28は、その反射率成分LogR(x,y)を、LogR(x,y)の値に応じた補正係数k(LogR(x,y))により強調することで、輝度補正画像を生成する(ステップS108)。そして輝度補正部12は、輝度補正処理を終了する。
図9は、制御部6により実行される、画像補正処理の動作フローチャートである。
色変換部11は、原画像の各画素について、RGB表色系の値からYUV表色系の値に変換する(ステップS201)。そして色変換部11は、原画像の各画素の輝度成分を表す輝度画像を輝度補正部12へ出力し、原画像の各画素の色差成分を表す色差画像を彩度補正部13へ出力する。
輝度補正部12は、輝度画像に基づいて、被写体のコントラストが強調される輝度補正画像を生成する(ステップS202)。また、彩度補正部13は、色差画像の各画素の色差成分を、輝度補正画像における輝度補正の程度に応じて補正する(ステップS203)。
逆色変換部14は、輝度補正画像の画素ごとに、その画素の輝度値と、補正された色差画像の対応画素の色差成分とで表されるYUV表色系の値からRGB表色系の値に変換して、補正画像を生成する(ステップS204)。そして制御部6は、画像補正処理を終了する。
以上に説明してきたように、この画像補正装置は、照明光分布を表す拡大平滑化画像の生成に利用される縮小画像及び縮小平滑化画像に基づいて、被写体の反射率成分の値に応じた値を持つ補正係数を算出する。そのため、元の輝度画像そのものに基づいて補正係数を算出する場合と比較して、補正係数の算出の際に参照する画素の数が削減される。したがって、この画像補正装置は、照明光分布の算出に要する演算量だけでなく、補正係数の算出に要する演算量を削減できる。またこの画像補正装置は、補正係数の算出に用いられる被写体の反射率成分のヒストグラムを求める際に、エッジ部分に含まれるエッジ画素を除外して、そのヒストグラムを生成する。そのため、この画像補正装置は、エッジ部分で生じるアーティファクトが補正係数に影響することを抑制できるので、被写体の反射率成分を適切に強調できる補正係数を算出できる。
変形例によれば、ヒストグラム算出部25は、エッジ画素についての被写体の反射率成分の値を0に置換した上で、ヒストグラムを算出してもよい。この場合、エッジ画素の数は、値'0'の度数として計上される。そのため、この変形例でも、エッジ画素における被写体の反射率成分はヒストグラムには反映されないので、エッジ部分で生じるアーティファクトが補正係数の算出に影響することが抑制される。
また他の変形例によれば、エッジ画素は、ヒストグラム算出部25によるヒストグラムの作成の際に利用される代わりに、縮小反射率成分算出部24による、縮小画像上での被写体の反射率成分の算出において利用されてもよい。例えば、縮小反射率成分算出部24は、縮小平滑化画像におけるエッジ画素の輝度値を、縮小画像における対応画素の輝度値で置換することで、補正縮小平滑化画像を生成する。そして縮小反射率成分算出部24は、縮小画像と補正縮小平滑化画像の対応画素間で対数輝度差分値LogR(x,y)を算出してもよい。この場合には、エッジ画素については、縮小画像と補正縮小平滑化画像とで同じ値となるので、対数輝度差分値LogR(x,y)は'0'となる。したがって、上記の変形例と同様に、被写体の反射率成分についてのヒストグラムでは、エッジ画素の数は、値'0'の度数として計上される。そのため、この変形例でも、エッジ画素における被写体の反射率成分はヒストグラムには反映されないので、エッジ部分で生じるアーティファクトが補正係数の算出に影響することが抑制される。
また、縮小反射率成分算出部24は、縮小平滑化画像の各画素の輝度値を、その画素の輝度値と縮小画像の対応画素の輝度値とをエッジ強度画像の対応画素のエッジ強度に応じてブレンドして得られる値で置換することで、補正縮小平滑化画像を生成してもよい。この場合、縮小反射率成分算出部24は、エッジ強度画像の対応画素のエッジ強度が高くなるほど、縮小画像の対応画素の輝度値のブレンド比を高くし、逆に縮小平滑化画像の対応画素の輝度値のブレンド比を低くする。そしてエッジ強度が所定の上限値以上となる場合、縮小反射率成分算出部24は、縮小画像の対応画素の輝度値のブレンド比を100%にする。
この場合も、エッジ強度が高い画素ほど、対数輝度差分値LogR(x,y)の絶対値は小さくなるので、エッジ部分で生じるアーティファクトが補正係数の算出に影響することが抑制される。
また、照明光の輝度分布によるエッジ部分をより正確に検出するために、縮小平滑化画像では、被写体の構造に起因する輝度値変化を平滑化しつつ、エッジ部分での輝度値変化はできるだけ維持されることが好ましい。
図10は、縮小平滑化画像において、被写体の構造に起因する輝度値変化を平滑化しつつ、エッジ部分での輝度値変化を維持可能な変形例による、輝度補正部12の機能ブロック図である。輝度補正部12は、縮小画像生成部21と、縮小平滑化部22と、エッジ検出部23と、縮小反射率成分算出部24と、ヒストグラム算出部25と、補正係数算出部26と、拡大部27と、補正部28とを有する。そして縮小平滑化部22は、正側制限平滑化部31と、負側制限平滑化部32と、平滑化部33とを有する。この変形例による輝度補正部12は、上記の実施形態による輝度補正部12と比較して、縮小平滑化部22、エッジ検出部23、縮小反射率成分算出部24及び拡大部27の処理が異なる。そこで以下では、縮小平滑化部22、エッジ検出部23、縮小反射率成分算出部24及び拡大部27について説明する。輝度補正部12のその他の構成要素については、上記の実施形態における対応する構成要素の説明を参照されたい。
縮小平滑化部22の正側制限平滑化部31は、縮小画像の各画素について、その画素を含むフィルタ領域内の参照画素の輝度値とその画素の輝度値の差に応じた重みで、その差を重み付け加算することで平滑化処理を行う。ただし、正側制限平滑化部31は、参照画素の輝度値から着目する画素の輝度値を減じた差が所定値以上になると、その参照画素に対する重み係数を小さくする。すなわち、参照画素の輝度値から着目する画素の輝度値を減じた差が所定値以上になる参照画素の参照が制限される。正側制限平滑化部31は、例えば、次式に従って正側制限平滑化処理を実行する。
ここで、px,yは、補正前の画素(x,y)の輝度値であり、p'x,yは、補正後の画素(x,y)の輝度値である。そしてpx+i,y+jは、フィルタ領域[-K,K]内の参照画素(x+i,y+j)の輝度値である。またw(px+i,y+j-px,y)は、(px+i,y+j-px,y)に応じて設定される重み係数である。そしてNは、フィルタ領域に含まれる画素数である。
同様に、負側制限平滑化部32は、縮小画像の各画素について、その画素を含むフィルタ領域内の参照画素の輝度値とその画素の輝度値の差に応じた重みで、その差を重み付け加算することで平滑化処理を行う。ただし、負側制限平滑化部32は、着目する画素の輝度値から参照画素の輝度値を減じた差が所定値以上になると、その参照画素に対する重み係数を小さくする。すなわち、着目する画素の輝度値から参照画素の輝度値を減じた差が所定値以上になる参照画素の参照が制限される。負側制限平滑化部32は、例えば、正側制限平滑化処理と同様に、(3)式に従って負側制限平滑化処理を実行する。なお、負側制限平滑化処理で設定されるフィルタ領域も、正側制限平滑化処理で設定されるフィルタ領域と同様である。
図11は、正側制限平滑化処理及び負側制限平滑化処理が行われるフィルタ領域の一例を示す図である。この例では、縮小画像の着目画素1101を正側制限平滑化または負側制限平滑化する際に、着目画素1101を中心とする、縦5画素×横5画素のフィルタ領域1100が設定される。そしてフィルタ領域1100内の25個の参照画素(着目画素1101そのものも含む)の輝度値が参照される。
図12(a)は、正側制限平滑化処理における、参照画素の輝度値と着目画素の輝度値の差と重み係数の関係の一例を示す図である。図12(a)において、横軸は参照画素の輝度値と着目画素の輝度値の差を表し、縦軸は重み係数を表す。そしてグラフ1200は、参照画素の輝度値と着目画素の輝度値の差Δp(=px+i,y+j-px,y)と重み係数wの関係を表す。グラフ1200に示されるように、差Δpが重み上限WUL(ただし、WUL>0)の1/2以下である場合、重み係数wは、差Δpの増加に応じて、傾きが1で線形に単調増加する。したがって、w=Δpとなる。一方、差Δpが重み上限WULの1/2より大きく、かつ、重み上限WUL以下である場合、重み係数wは、差Δpの増加に応じて、傾きが-1で線形に単調減少する。したがって、w=(WUL-Δp)となる。そして差Δpが重み上限WULより大きくなると、重み係数w=0となる。なお、重み上限WULは、輝度値が0〜255で表される場合、例えば、10〜20に設定される。
図12(b)は、負側制限平滑化処理における、参照画素の輝度値と着目画素の輝度値の差と重み係数の関係の一例を示す図である。図12(b)において、横軸は参照画素の輝度値と着目画素の輝度値の差を表し、縦軸は重み係数を表す。そしてグラフ1210は、参照画素の輝度値と着目画素の輝度値の差Δp(=px+i,y+j-px,y)と重み係数wの関係を表す。グラフ1210に示されるように、差Δpが重み下限WLL(ただし、WLL<0)の1/2以上である場合、重み係数wは、差Δpの増加に応じて、傾きが1で線形に単調増加する。したがって、w=Δpとなる。一方、差Δpが重み下限WLLの1/2より小さく、かつ、重み下限WLL以上である場合、重み係数wは、差Δpの増加に応じて、傾きが-1で線形に単調減少する。したがって、w=(WLL-Δp)となる。そして差Δpが重み下限WLLより小さくなると、重み係数w=0となる。なお、重み下限WLLは、輝度値が0〜255で表される場合、例えば、-10〜-20に設定される。
図13(a)は、元の縮小画像と、正側制限平滑化処理が行われた縮小画像(以下では、便宜上、正側制限平滑化画像と呼ぶ)及び負側制限平滑化処理が行われた縮小画像(以下では、便宜上、負側制限平滑化画像と呼ぶ)の関係の一例を示す図である。また図13(b)は、図13(a)に示された縮小画像に対応する輝度画像と、図13(a)に示された正側制限平滑化画像及び負側制限平滑化画像をバイリニア補間して得られた補間画像の関係の一例を示す図である。図13(a)及び図13(b)において、横軸は、縮小画像または輝度画像の横方向の位置を表す。また縦軸は、輝度値を表す。そして図13(a)におけるプロファイル1300は、元の縮小画像における、横方向の一つの画素列の輝度値のプロファイルを表す。またプロファイル1310は、正側制限平滑化画像における、プロファイル1300で表される画素列と同じ画素列についての輝度値のプロファイルを表す。そしてプロファイル1320は、負側制限平滑化画像における、プロファイル1300で表される画素列と同じ画素列についての輝度値のプロファイルを表す。さらに、図13(b)におけるプロファイル1350は、輝度画像における、プロファイル1300で示された縮小画像の画素列に対応する横方向の一つの画素列の輝度値のプロファイルを表す。同様に、プロファイル1360は、プロファイル1310で表された正側制限平滑化画像の画素列に対応する、正側制限平滑化画像の補間画像の横方向の一つの画素列の輝度値のプロファイルを表す。さらに、プロファイル1370は、プロファイル1320で表された負側制限平滑化画像の画素列に対応する、負側制限平滑化画像の補間画像の横方向の一つの画素列の輝度値のプロファイルを表す。
上記のように、正側制限平滑化処理では、参照画素の輝度値から着目する画素の輝度値を減じた差が所定値以上となる参照画素の参照が制限される。したがって、着目画素の輝度値よりも低い輝度値を持つ参照画素の方が、着目画素の輝度値よりも高い輝度値を持つ参照画素よりも、正側制限平滑化において参照され易い。そのため、フィルタ領域に、照明光の照度分布のエッジ部分が含まれ、かつ、着目画素がそのエッジ部分よりも高輝度側に位置していると、正側制限平滑化処理によって平滑化された着目画素の輝度値は、元の輝度値よりも低くなる傾向にある。そのため、プロファイル1310及びプロファイル1360に示されるように、プロファイル1300のエッジ部分1301の近傍で、かつ、エッジ部分1301よりも高輝度側では、正側制限平滑化画像の画素の輝度値の方が、元の縮小画像の同じ位置の画素の輝度値よりも低くなる。一方、それ以外の位置では、正側制限平滑化画像の画素の輝度値と、元の縮小画像の同じ位置の画素の輝度値とは、ほぼ等しくなる。これは、差Δpが重み上限以上となり、正側制限平滑化処理において参照されない画素が少なくなるためである。
逆に、負側制限平滑化処理では、着目する画素の輝度値から参照画素の輝度値を減じた差が所定値以上となる参照画素の参照が制限される。したがって、着目画素の輝度値よりも高い輝度値を持つ参照画素の方が、着目画素の輝度値よりも低い輝度値を持つ参照画素よりも、負側制限平滑化において参照され易い。そのため、フィルタ領域に、照明光の照度分布のエッジ部分が含まれ、かつ、着目画素がそのエッジ部分よりも低輝度側に位置していると、負側制限平滑化処理によって平滑化された着目画素の輝度値は、元の輝度値よりも高くなる傾向にある。そのため、プロファイル1320及びプロファイル1370に示されるように、エッジ部分1301の近傍で、かつ、エッジ部分1301よりも低輝度側では、負側制限平滑化画像の画素の輝度値の方が、元の縮小画像の同じ位置の画素の輝度値よりも高くなる。一方、それ以外の位置では、負側制限平滑化画像の画素の輝度値と、元の縮小画像の同じ位置の画素の輝度値とは、ほぼ等しくなる。これは、差Δpが重み下限以下となり、負側制限平滑化処理において参照されない画素が少なくなるためである。
したがって、元の縮小画像における、照明光の照度分布のエッジ部分よりも高輝度側は、正側制限平滑化画像よりも負側制限平滑化画像において比較的正確に表される。逆に、元の縮小画像におけるそのエッジ部分よりも低輝度側は、負側制限平滑化画像よりも正側制限平滑化画像において比較的正確に表される。言い換えれば、エッジ部分は、負側制限平滑化画像の方が正側制限平滑化画像よりも輝度値が高くなる範囲に含まれる。
正側制限平滑化部31は、正側制限平滑化画像をエッジ検出部23、拡大部27へ出力する。また、負側制限平滑化部32は、負側制限平滑化画像をエッジ検出部23、拡大部27へ出力する。
平滑化部33は、正側制限平滑化画像と負側制限平滑化画像とに基づいて、縮小平滑化画像を生成する。例えば、平滑化部33は、正側制限平滑化画像の各画素について、その画素の輝度値と負側制限平滑化画像の対応画素の輝度値との平均値を算出し、その平均値を縮小平滑化画像の対応画素の輝度値とすることで、縮小平滑化画像を生成する。そして平滑化部33は、縮小平滑化画像を縮小反射率成分算出部24へ出力する。
エッジ検出部23は、正側制限平滑化画像と負側制限平滑化画像とに基づいて、縮小画像上での照明光の照度分布によるエッジ部分を検出する。
上記のように、照明光の照度分布のエッジ部分は、負側制限平滑化画像の方が正側制限平滑化画像よりも輝度値が高くなる範囲に含まれる。したがって、エッジ検出部23は、負側制限平滑化画像と正側制限平滑化画像との対応画素間の輝度の差分絶対値に基づいて、照明光の照度分布のエッジ部分を推定することができる。
図14(a)は、正側制限平滑化画像と負側制限平滑化画像をバイリニア補間して得られた補間画像と輝度画像との関係の一例を示す図であり、図14(b)は、負側制限平滑化画像と正側制限平滑化画像をバイリニア補間して得られた補間画像の対応画素間の輝度値の差分絶対値の一例を示す図である。図14(a)において、横軸は、各画像の横方向の位置を表し、縦軸は、輝度値を表す。また図14(b)において、横軸は、差分画像における横方向の位置を表し、縦軸は、差分絶対値を表す。
図14(a)において、プロファイル1400は、輝度画像における、横方向の一つの画素列の輝度値のプロファイルを表す。またプロファイル1410は、正側制限平滑化画像をバイリニア補間して得られる補間画像における、プロファイル1400で表される画素列と同じ画素列についての輝度値のプロファイルを表す。そしてプロファイル1420は、負側制限平滑化画像をバイリニア補間して得られる補間画像における、プロファイル1400で表される画素列と同じ画素列についての輝度値のプロファイルを表す。また図14(b)において、プロファイル1430は、プロファイル1400で表される画素列と同じ画素列についての、負側制限平滑化画像と正側制限平滑化画像をバイリニア補間して得られる補間画像の対応画素間の輝度値の差分絶対値のプロファイルを表す。
図14(a)に示されるように、照明光の照度分布のエッジ部分1401は、負側制限平滑化画像の方が正側制限平滑化画像よりも輝度値が高くなる範囲に含まれる。そしてその範囲は、図14(b)に示されるように、差分絶対値が比較的大きくなる範囲と一致する。
そこでエッジ検出部23は、負側制限平滑化画像の各画素について、その画素の輝度値と正側制限平滑化画像との対応画素の輝度値との差分絶対値をエッジ強度として算出する。そしてエッジ検出部23は、その差分絶対値が所定の差分閾値(例えば、5〜10)以上となる画素を、エッジ画素として検出する。そしてエッジ検出部23は、検出したエッジ画素を表す情報をヒストグラム算出部25または縮小反射率成分算出部24へ通知する。
縮小反射率成分算出部24は、上記の実施形態または変形例と同様に、縮小画像と縮小平滑化画像とに基づいて、縮小画像における被写体の反射率成分を算出する。あるいは、縮小反射率成分算出部24は、縮小平滑化画像におけるエッジ画素の輝度値を縮小画像の対応画素の輝度値で置換、あるいは、対応画素の輝度値と合成することで補正縮小平滑化画像を生成してもよい。そして縮小反射率成分算出部24は、縮小画像と補正縮小平滑化画像とに基づいて、被写体の反射率成分を算出してもよい。
またヒストグラム算出部25は、上記の実施形態または変形例と同様に、エッジ画素を除いて、あるいは、エッジ画素の被写体の反射率成分の値を'0'として、被写体の反射率成分の値ごとの度数を求めてヒストグラムを算出する。そして補正係数算出部26は、そのヒストグラムに基づいて、被写体の反射率成分の値に応じた補正係数を算出する。
拡大部27は、正側制限平滑化画像、負側制限平滑化画像、及び、元の輝度画像に基づいて、輝度画像と同じサイズを持つ拡大平滑化画像を生成する。
拡大部27は、上記の実施形態と同様に、輝度画像の各画素について、その画素の周囲4点における最も近い正側制限平滑化画像及び負側制限平滑化画像の画素を特定する。
拡大部27は、周囲4点のそれぞれについて、その点の正側制限平滑化画像の画素の輝度値と元の輝度画像の着目画素の輝度値を合成した第1の参照値と、その点の負側制限平滑化画像の画素の輝度値と元の輝度画像の着目画素の輝度値を合成した第2の参照値を算出する。そして拡大部27は、周囲4点のそれぞれについて、第1の参照値と第2の参照値を平均して求めた合成参照値に基づいて、バイリニア補間を行うことにより、拡大平滑化画像の対応画素の輝度値を算出する。
上述したように、元の縮小画像における照明光の照度分布のエッジよりも高輝度側は、正側制限平滑化画像よりも負側制限平滑化画像において比較的正確に表される。逆に、元の縮小画像におけるそのエッジよりも低輝度側は、負側制限平滑化画像よりも正側制限平滑化画像において比較的正確に表される。そこで、拡大部27は、輝度画像の着目画素の周囲4点のそれぞれについて、正側制限平滑化画像の画素の輝度値と着目画素の輝度値のうち、高い方に対する重みを他方に対する重みよりも大きくして、その二つの輝度値を重み付け加算する。
また、拡大部27は、輝度画像の着目画素の周囲4点のそれぞれについて、負側制限平滑化画像の画素の輝度値と着目画素の輝度値のうち、低い方に対する重みを他方に対する重みよりも大きくして、その二つの輝度値を重み付け加算する。
例えば、拡大部27は、輝度画像の着目画素の周囲4点のそれぞれについて、次式に従って第1の参照値ER1及び第2の参照値ER2を算出する。
ここで、Yは、着目画素の輝度値であり、Epl、Emiは、それぞれ、周囲4点のうちの着目する点の正側制限平滑化画像の輝度値及び負側制限平滑化画像の輝度値である。また、wpl(Epl-Y)は、(Epl-Y)に応じて定められる重み係数である。同様に、wmi(Emi-Y)は、(Emi-Y)に応じて定められる重み係数である。
図15(a)は、正側制限平滑化画像の輝度値と輝度画像の着目画素の輝度値の差(Epl-Y)と重み係数wpl(Epl-Y)の関係の一例を示す図である。また図15(b)は、負側制限平滑化画像の輝度値と輝度画像の着目画素の輝度値の差(Emi-Y)と重み係数wmi(Emi-Y)の関係の一例を示す図である。
図15(a)において、横軸は、正側制限平滑化画像の輝度値と輝度画像の着目画素の輝度値の差(Epl-Y)を表し、縦軸は重み係数wpl(Epl-Y)を表す。そしてグラフ1500は、差(Epl-Y)と重み係数wpl(Epl-Y)の関係を表す。グラフ1500に示されるように、差(Epl-Y)が0以下の場合、重み係数wpl(Epl-Y)=0となる。したがって、差(Epl-Y)が0以下の場合、すなわち、Y≧Eplとなる場合、第1の参照値ER1はYとなる。一方、差(Epl-Y)が0よりも大きい場合、すなわち、Epl>Yとなる場合、その差(Epl-Y)に対する重み係数wpl(Epl-Y)の傾きは1であるので、第1の参照値ER1はEplとなる。すなわち、第1の参照値ER1は、下限をYとしてEplをクリップした値となる。
図15(b)において、横軸は、負側制限平滑化画像の輝度値と輝度画像の着目画素の輝度値の差(Emi-Y)を表し、縦軸は重み係数wmi(Emi-Y)を表す。そしてグラフ1510は、差(Emi-Y)と重み係数wmi(Emi-Y)の関係を表す。グラフ1510に示されるように、差(Emi-Y)が0以上の場合、重み係数wmi(Emi-Y)=0となる。したがって、差(Emi-Y)が0以上の場合、すなわち、Emi≧Yとなる場合、第2の参照値ER2はYとなる。一方、差(Emi-Y)が0よりも小さい場合、すなわち、Y>Emiとなる場合、その差(Emi-Y)に対する重み係数wmi(Emi-Y)の傾きは1であるので、第2の参照値ER2はEmiとなる。すなわち、第2の参照値ER2は、上限をYとしてEmiをクリップした値となる。
図16は、正側制限平滑化画像と負側制限平滑化画像とを利用して拡大部平滑化画像を生成する処理の概念図である。各グラフにおいて、横軸は輝度画像上の位置を表し、縦軸は輝度値を表す。左側のグラフにおいて、プロファイル1600は、輝度画像の横方向のある画素列のプロファイルを表す。またプロファイル1610、1620は、それぞれ、同じ画素列における、正側制限平滑化画像のプロファイル及び負側制限平滑化画像のプロファイルを表す。上記のように、負側制限平滑化画像の輝度値が正側制限平滑化画像の輝度値よりも大きくなる範囲に、元の輝度画像におけるエッジ部分1601が含まれる。
図16の中央の上側のグラフにおいて、プロファイル1630は、プロファイル1600及びプロファイル1610と同じ画素列における、第1の参照値のプロファイルを表す。一方、図16の中央の下側のグラフにおいて、プロファイル1640は、プロファイル1600及びプロファイル1620と同じ画素列における、第2の参照値のプロファイルを表す。第1の参照値のプロファイル1630及び第2の参照値のプロファイル1640の両方において、エッジ部分1601が維持されていることが分かる。
図16の右側のグラフにおいて、プロファイル1650は、プロファイル1600、プロファイル1630及びプロファイル1640と同じ画素列における、最終的に得られる拡大平滑化画像における輝度値のプロファイルを表す。プロファイル1650に示されるように、拡大平滑化画像においても、元の輝度画像におけるエッジ部分1601が維持されていることが分かる。また、エッジ部分1601以外では、拡大平滑化画像は、元の輝度画像よりも平滑化されていることが分かる。
なお、変形例によれば、拡大部27は、正側制限平滑化画像及び負側制限平滑化画像を利用する代わりに、平滑化部33により得られた縮小平滑化画像を用いて拡大平滑化画像を生成してもよい。この場合には、拡大部27は、上記の実施形態と同様の処理を縮小平滑化画像に対して実行することで、拡大平滑化画像を生成すればよい。
拡大部27は、拡大平滑化画像を補正部28へ出力する。
補正部28は、上記の実施形態または変形例と同様に、輝度画像、拡大平滑化画像及び補正係数に基づいて、輝度補正画像を算出する。
図17及び図18は、この変形例による、輝度補正処理の動作フローチャートである。
縮小画像生成部21は、輝度画像から縮小画像を生成する(ステップS301)。
縮小平滑化部22の正側制限平滑化部31は、縮小画像の各画素について、フィルタ領域内の各参照画素のうち、参照画素の輝度値からその画素の輝度値を減じた差が所定値以上となる参照画素を除く。そして正側制限平滑化部31は、縮小画像の各画素について、除かれていない各参照画素の輝度値を用いて平滑化することで正側制限平滑化画像を算出する(ステップS302)。また、縮小平滑化部22の負側制限平滑化部32は、縮小画像の各画素について、フィルタ領域内の各参照画素のうち、その画素の輝度値から参照画素の輝度値を減じた差が所定値以上となる参照画素を除く。そして負側制限平滑化部32は、縮小画像の各画素について、除かれていない各参照画素の輝度値を用いて平滑化することで負側制限平滑化画像を算出する(ステップS303)。
縮小平滑化部22の平滑化部33は、正側制限平滑化画像の各画素について、その画素の輝度値と負側制限平滑化画像の対応画素の輝度値との平均値を縮小平滑化画像の対応画素の輝度値として算出することで、縮小平滑化画像を生成する(ステップS304)。
エッジ検出部23は、正側制限平滑画像と負側制限平滑化画像の対応画素間の輝度値の差分絶対値が所定の差分閾値以上となる画素をエッジ画素として検出する(ステップS305)。
また、縮小反射率成分算出部24は、縮小画像の各画素について、その画素と縮小平滑化画像の対応画素間の対数輝度差分値LogR(x,y)を、被写体の反射率成分として算出する(ステップS306)。
ヒストグラム算出部25は、縮小画像のエッジ画素以外の各画素の被写体の反射率成分LogR(x,y)に基づいて、その反射率成分LogR(x,y)の値ごとの度数を算出することで、エッジ部分を除いた被写体の反射率成分のヒストグラムを算出する(ステップS307)。そして補正係数算出部26は、そのヒストグラムに基づいて、反射率成分LogR(x,y)の値に応じた値を持つ補正係数k(LogR(x,y))を算出する(ステップS308)。
図18に示されるように、拡大部27は、元の輝度画像の各画素について、その周囲4点における正側制限平滑化画像の画素及び負側制限平滑化画像の画素を特定する。そして拡大部27は、周囲4点のそれぞれについて、元の輝度画像の画素の輝度値と正側制限平滑化画像の対応画素の輝度値のうちの高い方が占める割合を他方よりも大きくして重み付け加算することで第1の参照値を算出する(ステップS309)。また、拡大部27は、周囲4点のそれぞれについて、元の輝度画像の画素の輝度値と負側制限平滑化画像の対応画素の輝度値のうちの低い方が占める割合を他方よりも大きくして重み付け加算することで第2の参照値を算出する(ステップS310)。
拡大部27は、元の輝度画像の各画素について、その周囲4点のそれぞれについて第1の参照値と第2の参照値の平均値を合成参照値として算出する(ステップS311)。そして拡大部27は、元の輝度画像の各画素について、その周囲4点のそれぞれの合成参照値を用いて補間処理を行って得た値を、拡大平滑化画像の対応画素の輝度値とすることで、拡大平滑化画像を生成する(ステップS312)。
補正部28は、元の輝度画像の各画素について、その画素の輝度値I(x,y)と拡大平滑化画像の対応画素の輝度値L(x,y)に基づいて被写体の反射率成分LogR(x,y)を算出する。そして補正部28は、その反射率成分LogR(x,y)を、LogR(x,y)の値に応じた補正係数k(LogR(x,y))により強調することで、輝度補正画像を生成する(ステップS313)。そして輝度補正部12は、輝度補正処理を終了する。
この変形例によれば、輝度補正部12は、照明光の照度分布におけるエッジ部分に含まれるエッジ画素をより正確に検出できるので、補正係数へのエッジ画素の影響をより軽減して、より適切な補正係数を算出できる。さらに、輝度補正部12は、拡大平滑化画像についても、照明光の照度分布におけるエッジ部分を維持しつつ、被写体の反射率成分を平滑化することできるので、アーティファクトを抑制しつつ、被写体のコントラストを向上できる。
また他の変形例によれば、エッジ検出部23は、縮小平滑化画像の代わりに縮小画像を用いてエッジ画素を検出してもよい。この場合には、例えば、エッジ検出部23は、縮小画像の各画素に対してエッジ検出フィルタ処理を実行して、各画素についてエッジ強度を算出する。そしてエッジ検出部23は、エッジ強度が所定の閾値よりも高い画素をエッジ画素として検出すればよい。ただし、この場合には、被写体の構造に起因する近傍画素間の輝度値変動によりエッジ画素を誤検出することを抑制するために、所定の閾値は、縮小平滑化画像からエッジ画素を検出する場合のエッジ強度に対する閾値よりも高い値に設定されることが好ましい。
また他の変形例によれば、縮小反射率成分算出部24は、縮小画像の各画素について、その画素の輝度値I(x,y)と縮小平滑化画像の対応画素の輝度値L(x,y)の比R(x,y){=I(x,y)/L(x,y)}を、縮小画像に表されている被写体の反射率成分として算出してもよい。この場合には、補正係数も、R(x,y)に応じた値として算出されるので、補正部28も、輝度画像の各画素について、R(x,y)に補正係数を乗じることで、輝度補正画像を算出すればよい。
また他の変形例によれば、補正係数算出部26は、基準値a、bの代わりに、縮小画像の各画素について算出された被写体の反射率成分LogR(x,y)のうち、エッジ画素以外の画素についての最小値min(LogR(x,y))及び最大値max(LogR(x,y))を求めてもよい。そして補正係数算出部26は、(1)式において、基準値a、bの代わりに最小値min(LogR(x,y))及び最大値max(LogR(x,y))を入力することで、補正係数を算出してもよい。この場合には、被写体の反射率成分のヒストグラムを作成する必要が無いので、補正係数の算出に要する演算量がより削減される。
あるいは、補正係数算出部26は、縮小画像の各画素について算出された被写体の反射率成分LogR(x,y)のうち、エッジ画素以外の画素についての反射率成分の分散を算出してもよい。そして補正係数算出部26は、予め設定される標準分散値に対するその分散の比を、予め設定された反射率成分の値ごとの標準補正係数に乗じることで、補正係数を算出してもよい。
さらに他の変形例によれば、制御部6は、入力された画像の赤色成分、青色成分、緑色成分のそれぞれごとに、輝度補正部12の処理を実行してもよい。あるいはまた、制御部6に入力される画像は、輝度成分のみを持つモノクロ画像であってもよい。これらの場合には、色変換部11、彩度補正部13及び逆色変換部14は省略されてもよい。あるいは、色変換部11は、原画像の各画素について、その画素値を、YUV表色系以外の表色系、例えば、L*a*b*表色系で表された値に変換してもよい。この場合、逆色変換部14も、各画素の値を、色変換部11により変換された表色系の値から、RGB表色系の値に変換すればよい。あるいはまた、補正画像の各画素の値がRGB表色系以外で表されてもよい場合には、逆色変換部14は省略されてもよい。
上記の実施形態またはその変形例による画像補正装置の各部の機能は、プロセッサ上で実行されるコンピュータプログラムにより実現されてもよい。そのようなコンピュータプログラムは、磁気記録媒体、光記録媒体といったコンピュータ読み取り可能な記録媒体に記録された形で提供されてもよい。ただし、その記録媒体には、搬送波は含まれない。
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。