(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
<第1の実施形態>
以下に、図面を参照しながら本発明の好適な実施の形態を詳細に説明する。先ず、
図1から
図8を参照して、第1の実施形態の画像処理装置について説明する。第1の実施形態の画像処理装置は、被写体までの距離情報からなる後述の距離マップを取得可能なデジタルカメラ等の撮像装置100である。
【0011】
図1は、本実施形態の撮像装置100の概略構成を示す図である。
図1において、撮像装置100は、撮像光学系101、撮像素子102、A/D変換器103、画像処理部104、システム制御部106、操作部107、表示部108、記録部109、メモリ部110、発光部111等を備えている。
【0012】
撮像光学系101は、フォーカスレンズを含む複数のレンズ群及び絞りを有して構成される。撮像光学系101は、被写体からの光を受け、撮像素子102に光を導く。撮像光学系101に含まれるフォーカスレンズは、不図示のレンズ駆動制御部からの駆動命令に基づいて駆動し、ピント位置の調節を可能とする。なお、フォーカスレンズは、ピントリングの回転動作に応じて駆動されてもよい。撮像光学系101を通過した光束は、撮像素子102上に被写体の光学像を形成する。
【0013】
発光部111は、いわゆるストロボ光を発光させるストロボ発光部や、点灯状態を続けて撮影時の照明補助を行うための補助光源部などを備えている。ストロボ発光部は、カメラの内蔵ストロボでもよいし、カメラに付属しないいわゆる外付けストロボ、或いは、ケーブルや無線を通じて接続される外部ストロボであってもよい。発光部111は、システム制御部106によりストロボ発光やストロボ非発光等のような発光動作が制御される。
【0014】
撮像素子102は、CCDやCMOS等からなる撮像素子であり、その表面は例えばベイヤー配列のようなRGBカラーフィルタにより覆われ、カラー撮影が可能な構成となっている。撮像素子102は、受光した光束を電気信号に変換し、アナログ信号としてA/D変換器103に出力する。A/D変換器103は、撮像素子102からのアナログ信号をデジタル信号に変換するための変換器である。A/D変換器103は、変換したデジタル信号を画像処理部104に出力する。
【0015】
操作部107は、撮像装置100に備えられた各種スイッチやダイヤル、シャッターボタンなどの操作デバイスである。撮影者は、操作部107を用いて撮影パラメータの設定や撮影動作などの操作指示を入力することが可能である。撮影者による操作部107を介した操作入力信号は、システム制御部106に出力される。なお、シャッターボタンは、いわゆる半押しと全押しが可能なスイッチにより構成されている。
【0016】
表示部108は、液晶ディスプレイ(LCD)等からなり、システム制御部106から転送される撮影時の画像や記録部109に記憶された画像の表示、或いは、各種の設定画面などの表示を行う。記録部109は、様々な規格のメモリカード等の着脱可能な記録媒体が装填され、システム制御部106を介して転送される画像データを記録媒体へ記録し、また、記録媒体から記録データの読み出しを行う。
【0017】
画像処理部104は、ホワイトバランス補正処理や顔検出処理などを含む様々な画像処理を行う。画像処理部104におけるホワイトバランス補正は、ホワイトバランス補正部105などの回路構成により実現されてもよいし、システム制御部106が実行するプログラム群により実現されてもよい。以下、本実施形態では、ホワイトバランスを適宜「WB」と表記する。WB補正部105の詳細な構成及びホワイトバランス補正値の決定方法については後述する。また、画像処理部104における顔検出処理は、顔検出部112などの回路構成により実現されてもよいし、システム制御部106が実行するプログラム群により実現されてもよい。顔検出処理については後述する第2の実施形態において説明する。画像処理部104は、システム制御部106からの制御命令に基づいて、A/D変換器103から供給されるデジタル信号群に対して画像処理を行い、記録用及び表示用の画像データを生成する。画像処理部104で行われる画像処理は、WB補正後の画像データに色ゲインをかけて色差信号に変換する処理やRGB信号に変換する処理、ガンマ補正処理などの現像処理も含まれる。なお、画像処理部104は、画像処理を行う際に、適宜画像データをメモリ部110に記憶し、また、適宜画像データの読み出しを行う。
【0018】
また、画像処理部104は、撮像素子102で撮像された信号を基に、被写体までの距離情報を保持する距離マップのデータを取得する。ここで、画像処理部104が距離マップデータを取得する際の取得方法について説明する。撮像素子102には、複数のマイクロレンズが格子状に並べられており、各マイクロレンズ下には複数の分割画素が備えられている。例えば、各マイクロレンズ下に水平方向の左右2つの分割画素がある場合、画像処理部104は、先ず水平方向の同一のライン内に備えられた左の分割画素の値と右の分割画素の値の相関値演算を行う。次に、画像処理部104は、相関値が最も高くなる分割画素間の視差と撮像素子102の画素ピッチ等の情報に基づいて、実空間での距離、すなわち撮像素子102から被写体までの実空間内の奥行き方向の距離を算出する。画像処理部104は、上述のような処理を任意の領域ごとに繰り返し行うことで、それら領域ごとの距離情報からなる距離マップを生成する。本実施形態では、距離マップを取得する際の任意の領域は、一例として後述するように画像を分割したブロックごとの領域となされている。したがってこの場合、距離マップの解像度は、画像を分割したブロックごとの解像度と同じになる。
【0019】
システム制御部106はCPUを含み、メモリ部110に格納されている制御プログラムに従って、撮像光学系101内のフォーカスレンズの駆動制御などのシステム全体の動作制御を行う。また、システム制御部106は、画像処理部104での画像処理によって得られたデータや、撮像光学系101のレンズ位置情報の取得等のように各構成要素間の信号の入出力も行う。
【0020】
メモリ部110は、ROMとRAMを含む。メモリ部110のROMは、システムプログラムである基本ソフトや、システム制御部106と画像処理部104が後述する各種制御や信号処理を実行するためのプログラム、それらプログラムの実行に伴って使用される各種データを記憶している。メモリ部110のRAMは、システム制御部106や画像処理部104が実行するプログラムが展開され、またそのプログラムが使用するデータエリアとなされている。詳細については後述するが、本実施形態においてメモリ部110のROMに記憶されている各種データは、例えば、ストロボ光の配光特性、一般的な物質の平均的な標準反射率、人の顔の反射率、顔の3次元モデル等の各データを挙げることができる。詳細については後述するが、メモリ部110のRAMに一時記憶されるデータは、例えば、撮像された画像データ、ストロボ非発光時の画像データ、ストロボ発光時の画像データ、ストロボ発光時の距離マップのデータ等を挙げることができる。
【0021】
以上が、本実施形態の撮像装置100の概略構成である。次に、画像処理部104のWB補正部105の構成及びホワイトバランス補正値の決定方法について詳細に述べる。
図2は、WB補正部105の構成を示す図である。
図2において、WB補正部105は、入力部201、第1のWB補正値決定部206、第1の補正部207、第2のWB補正値決定部208、第2の補正部209、ストロボ光成分算出部210、合成比率算出部211、合成部212、出力部213を有している。
【0022】
入力部201は、ストロボ非発光時の画像データ202、ストロボ光の配光特性203のデータ、ストロボ発光時の距離マップ204のデータ、ストロボ発光時の画像データ205を、メモリ部110から読み出し、それらデータを各部に出力する。これら各データがどのように取得されて使用されるかについての詳細は後述する。
【0023】
図3は、システム制御部106により行われる撮影制御を、時系列に並べた状態を示す図である。
図3において、シャッターボタンが半押しされる状態301(以下、SW1と表記する。)の前には、システム制御部106は、撮像光学系101及び撮像素子102を制御して、いわゆるライブビュー表示用の画像310をフレーム周期ごとに撮影させる。シャッターボタンが半押しされたSW1の状態では、システム制御部106は、撮像光学系101を制御して、AFロック311とAEロック312とを行う。なお、AFロック311は、撮像光学系101内のフォーカスレンズを駆動するオートフォーカスの制御において焦点距離をロックする制御である。AEロック312は、自動露出制御において露出値をロックする制御である。SW1の状態が保持された保持期間302の後、シャッターボタンが全押しされる状態303(以下、SW2と表記する。)になると、システム制御部106は、発光部111に対してテスト発光314を行わせる。その後、システム制御部106は、撮像光学系101及び撮像素子102、発光部111を制御して、実際に被写体等の画像を撮影させる本露光315を行わせる。
【0024】
ここで、テスト発光314がなされる前に、システム制御部106は、撮像光学系101及び撮像素子102を制御して、環境光露光313として
図3に示されている時間にも露光を行わせる。本実施形態では、環境光露光313の時間に露光した画像データが、
図2のストロボ非発光時の画像データ202であり、本露光315の時間に露光した画像データが、
図2のストロボ発光時に撮影された画像データ205である。ストロボ非発光時の画像データ202は、発光部111のストロボを発光させず、環境光により撮像素子102による撮像がなされて取得される画像データである。ストロボ発光時の画像データ205は、発光部111のストロボ発光時に撮像素子102で撮像がなされて取得された画像データである。なお、ストロボ非発光時の画像データ202は、本露光315の後に、環境光で露光した撮影画像データを用いてもよい。
【0025】
図2の説明に戻り、第1のWB補正値決定部206は、ストロボ非発光時の画像データ202に基づいて環境光に対するWB補正値を決定し、そのWB補正値のデータを第1の補正部207に出力する。第2のWB補正値決定部208は、ストロボ発光時の画像データ205に基づいてストロボ光に対するWB補正値を決定し、そのWB補正値のデータを第2の補正部209に出力する。
【0026】
第1の補正部207は、環境光に対するWB補正値に基づいて、ストロボ発光時の画像データ205のWB補正を行う。第2の補正部209は、ストロボ光に対するWB補正値に基づいて、ストロボ発光時の画像データ205のWB補正を行う。第1の補正部207でWB補正された画像データと第2の補正部209でWB補正された画像データは、合成部212に出力される。
【0027】
ストロボ光成分算出部210は、ストロボ発光時の画像データ205の後述する領域ごとのストロボ光成分を、ストロボ光の配光特性203のデータ及びストロボ発光時に取得された距離マップ204のデータから算出し、合成比率算出部211に出力する。ストロボ光の配光特性203の詳細については後述する。
【0028】
合成比率算出部211は、ストロボ発光時の画像データ205とストロボ光成分に基づいて、画像合成のための合成比率を算出し、合成部212に出力する。合成部212は、合成比率算出部211が出力する合成比率に基づいて、第1の補正部207でWB補正された画像データと第2の補正部209でWB補正された画像データとを合成する。合成部212にて合成された画像データは、最終的なホワイトバランス補正画像データとして出力部213へ送られる。出力部213は、後段の処理部に対してホワイトバランス補正画像データを出力する。
【0029】
以上が第1の実施形態の撮像装置100内部のWB補正部105の構成である。次に、本実施形態におけるWB補正部105のWB補正動作を説明する。
図4は、WB補正部105において行われる補正処理のフローチャートである。
【0030】
先ず、ステップS401において、第1のWB補正値決定部206は、ストロボ非発光時の画像データ202に基づいて、環境光に対する第1のWB補正値を決定する。ステップS401のストロボ非発光時のWB補正値決定処理を
図5と
図6を用いて詳細に説明する。
図5は、WB補正値決定処理のフローチャートである。
図6は、白検出を行うための色評価値の関係を示す特性図であり、
図6(a)はストロボ非発光時の白検出範囲を、
図6(b)はストロボ発光時の白検出範囲を示す。
【0031】
図5のフローチャートのステップS501において、第1のWB補正値決定部206は、入力されたストロボ非発光時の画像データ202の画像を任意のn個のブロック(1〜n)に分割する。本実施形態の場合、ストロボ非発行時の画像データ202のブロック分割数の「n」は、後述するストロボ発光時の画像データ205のブロック分割数の「m」と同じにする。ステップS501の後、第1のWB補正値決定部206は、処理をステップS502へ進める。ステップS502に進むと、第1のWB補正値決定部206は、ブロックごとに、画素値を各色で加算平均して、RGBの各色平均値(R[i],G[i],B[i])を算出する。なお、[i]はブロック(1〜n)のうちのi番目のブロックを示している。さらに、第1のWB補正値決定部206は、以下の式(1)を用いて、色評価値(Cx[i],Cy[i])を算出する。
【0032】
Cx[i]=(R[i]−B[i])/Y[i]×1024
Cy[i]=(R[i]+B[i]−2G[i])/Y[i]×1024 …式(1)
但し、Y[i]=(R[i]+2G[i]+B[i])/4
【0033】
ステップS502の後、第1のWB補正値決定部206は、処理をステップS503へ進める。ステップS503に進むと、第1のWB補正値決定部206は、
図6に示すような座標軸を持つグラフを用いて白検出を行う。
図6は、x座標(Cx)の負方向が高色温度被写体の色を撮影したときの色評価値を表し、正方向が低色温度被写体の色を撮影したときの色評価値を表している。また、y座標(Cy)は光源の緑成分の度合いを意味しており、負方向になるにつれてG成分が大きくなり、つまり蛍光灯であることを示している。
【0034】
また、ステップS503において、第1のWB補正値決定部206は、ステップS502で算出したi番目のブロックの色評価値(Cx[i],Cy[i])が、
図6(a)に示す予め設定した白検出範囲601に含まれるか否かを判定する。白検出範囲601は、環境光が未知の光源であるため、予め異なる光源下で白い被写体が撮影された画像から算出した色評価値を基準に定めたものである。そして、第1のWB補正値決定部206は、ステップS503において、i番目のブロックの色評価値(Cx[i],Cy[i])が予め設定される白検出範囲601に含まれると判定した場合には、処理をステップS504へ進める。一方、第1のWB補正値決定部206は、ステップS503において、i番目のブロックの色評価値(Cx[i],Cy[i])が予め設定される白検出範囲601に含まれないと判定した場合には、処理をステップS505へ進める。
【0035】
ステップS504では、第1のWB補正値決定部206は、i番目のブロックが白色であると判定して、当該ブロックの色平均値(R[i],G[i],B[i])を積分して、色平均値の積分値(SumR、SumG、SumB)を求める。なお、ステップS503及び504の処理は、次の式(2)によって表すことができる。
【0037】
ここで、式(2)において、色評価値(Cx[i],Cy[i])が白検出範囲601に含まれる場合、第1のWB補正値決定部206は、式(2)中のSw[i]を「1」とする。一方、色評価値(Cx[i],Cy[i])が白検出範囲601に含まれない場合、第1のWB補正値決定部206は、式(2)中のSw[i]を「0」とする。すなわち、Sw[i]が「1」になされた場合、第1のWB補正値決定部206は、色平均値(R[i],G[i],B[i])を積分することになる。一方、Sw[i]が「0」になされた場合、第1のWB補正値決定部206は、色平均値(R[i],G[i],B[i])を積分しないことになる。ステップS504の後、第1のWB補正値決定部206は、処理をステップS505へ進める。
【0038】
ステップS505では、第1のWB補正値決定部206は、全てのブロックについて前述したステップS502〜S504の処理を行ったか否かを判定する。ステップS505で未処理のブロックが存在すると判定した場合、第1のWB補正値決定部206は、ステップS502へ処理を戻して前述同様の処理を繰り返す。一方、ステップS505で全てのブロックについて処理を行ったと判定した場合、第1のWB補正値決定部206は、処理をステップS506へ進める。
【0039】
ステップS506では、第1のWB補正値決定部206は、全てのブロックで得られた色平均値の積分値(SumR1、SumG1、SumB1)から、式(3)を用い、第1のWB補正値(WBCol_R1、WBCol_G1、WBCol_B1)を算出する。なお、積分値(SumR1、SumG1、SumB1)は、前述した各ブロックの色平均値の積分値(SumR、SumG、SumB)を全てのブロックについて積分して得られた値である。
【0040】
WBCol_R1=SumY1×1024/SumR1
WBCol_G1=SumY1×1024/SumG1 …式(3)
WBCol_B1=SumY1×1024/SumB1
但し、SumY1=(SumR1+2×SumG1+SumB1)/4
【0041】
なお、ここではストロボ非発光時の画像データ202から第1のWB補正値を算出する例を説明したが、スタジオでの撮影などで環境光が既知の場合は、第1のWB補正値を予め設定しておいてもよい。
【0042】
図4の説明に戻り、ステップS401の後、処理はステップS402へ進むが、このステップS402の処理は、第2のWB補正値決定部208で行われる。ステップS402では、第2のWB補正値決定部208は、ストロボ発光時の画像データ205に基づいてストロボ光に対する第2のWB補正値を決定する。第2のWB補正値の決定処理は、前述した第1のWB補正値の決定処理と同様の方法によって行われる。但し、第2のWB補正値の決定処理は、第1のWB補正値の決定処理とは異なり、
図6(b)に示すようにストロボ光用の白検出範囲602を用いた処理が行われる。これは環境光が基本的には未知の光源であるのに対して、ストロボ光は既知の光源であるため、
図6(b)の白検出範囲602のように範囲を限定することができるためである。なお、第2のWB補正値としてのストロボ光のWB補正値は、既知のものとして予め設定しておいてもよい。
【0043】
ステップS402の後、処理はステップS403へ進むが、このステップS403の処理は、ストロボ光成分算出部210にて行われる。ステップS403では、ストロボ光成分算出部210は、ストロボ発光時の画像データ205のブロックごとのストロボ光成分を、ストロボ光の配光特性203及びストロボ発光時に取得された距離マップ204の各データから算出する。
【0044】
ここで、ステップS403のストロボ光成分算出処理を
図7と
図8を用いて詳細に説明する。
図7は、ストロボ光成分算出処理のフローチャートである。
図8(a)は、ストロボ発光時の画像(画像データ205)、及び、ストロボ光成分を算出するブロックの一例(ブロックP)を示す図である。
図8(b)は、ストロボ光成分算出処理の処理単位であるブロックの分割の一例を示す図である。
図8(c)は、ストロボ光の配光特性の一例を示す図である。
【0045】
先ず、
図7のフローチャートにおいて、ストロボ光成分算出部210は、ステップS701の処理として、ストロボ発光撮影時のレンズの焦点距離情報をシステム制御部106から取得する。すなわち、システム制御部106は、撮像光学系101内のフォーカスレンズを駆動するオートフォーカスの制御を行っているため焦点距離情報を保持しており、ストロボ光成分算出部210はその焦点距離情報を取得する。ステップS701の後、ストロボ光成分算出部210は、処理をステップS702へ進める。
【0046】
ステップS702に進むと、ストロボ光成分算出部210は、ストロボ発光時の画像データ205を、距離マップ204の作成時と同数のm個のブロックに分割する。これにより、距離マップ204の解像度は、ストロボ発光時の画像データ205をブロック分割した解像度と同じになる。
図8(b)は、複数の画素803からなるストロボ発光時の画像データ205が、距離マップ204の各ブロックに対応する図中太線で示した範囲804のブロックごとに分割された状態を模式的に示した図である。なお、
図8(a)の画像801のようなストロボ発光時の画像データ205において、例えば被写体802の画像の一部であるブロックPは、前述のように分割された各ブロックのうちの一つのブロックを示している。ステップS702の後、ストロボ光成分算出部210は、処理をステップS703へ進める。
【0047】
ステップS703に進むと、ストロボ光成分算出部210は、ステップS702で分割したブロックごとに対応する距離マップ204の距離情報(ストロボ光源からの奥行き方向の距離情報)をメモリ部110から読み出す。ステップS703の後、ストロボ光成分算出部210は、処理をステップS704へ進める。
【0048】
ステップS704に進むと、ストロボ光成分算出部210は、ストロボ光成分を算出する。具体的には、距離マップ204の(x,y)座標に相当するブロックの座標、ステップS701で取得された焦点距離情報、ステップS703で取得された距離マップ204の奥行き距離情報、及びストロボ光の配光特性203からストロボ光成分を算出する。
【0049】
ここで、ストロボ光の配光特性203とは、
図8(c)に示すような、ストロボ光源からの距離と方向に応じて、被写体に届く光量Ysがどのように変化するかを示す特性である。なお、
図8(c)は、ストロボ光の照射方向を変更せずに被写体方向側にして撮影する場合、及び、ストロボ光源の発光光量とストロボ光の広がり角度についてもそれぞれ一定で変化させないで撮影する場合を想定して説明している。
図8(c)からわかるように、ストロボ光が被写体に届く光量Ysは、ストロボ光源から被写体までの距離が近いほど大きくなり、反対に被写体までの距離が遠いほど小さくなる。また、ストロボ光源からの方向は、ストロボ光源が備えているレンズ光学系や反射光学系の光軸(ストロボ光源の光軸とする。)と、ストロボ光源の発光点から被写体までを結ぶ線分(光源から被写体までの線分とする。)とが成す角度で言い表すことができる。ストロボ光源の光軸と光源から被写体までの線分との成す角度が小さくなる(ストロボ光源の光軸に対して被写体の位置が近い)ほど、被写体に届く光量Ysは大きくなっていく。反対に、ストロボ光源の光軸と光源から被写体までの線分との成す角度が大きくなる(ストロボ光源の光軸に対して被写体の位置が遠くなる)につれて、被写体に届く光量Ysは小さくなっていく。また、撮影時の焦点距離は撮影時の画角と対応しており、焦点距離が長く(大きく)なればなるほど画角は狭まり、逆に焦点距離が短く(小さく)なればなるほど画角は広くなる。すなわち、焦点距離が長く(画角が狭く)なればなるほど、撮影画像内に占める被写体等の画像は大きくなり、逆に、焦点距離が短く(画角が広く)なればなるほど、撮影画像内に占める被写体等の画像は小さくなる。また、焦点距離が長ければ(画角が狭ければ)、ストロボ光の広がり角度に対して狭い範囲の撮影画像が得られるようになり、逆に、焦点距離が短ければ(画角が広ければ)、ストロボ光の広がり角度に対して広い範囲の撮影画像が得られることになる。さらに、本実施形態において、距離マップのサイズは撮像素子102のセンサ面のサイズと対応しており、距離マップの解像度は前述したブロック分割数による解像度と同じになされている。したがって、焦点距離が変われば、距離マップの(x,y)座標に対する被写体画像の(x,y)座標は変化することになり、また、ストロボ光源の光軸に対する被写体の方向も変化することになる。一例として、或る焦点距離において、
図8(a)に示すブロックPのストロボ光成分が
図8(c)のYspであったとしても、焦点距離が変われば、ストロボ光源の光軸に対するブロックPの方向も変わり、ストロボ光成分も異なるようになる。なお、
図8(c)ではx軸方向における配光特性とy軸方向における配光特性は同一である場合について示しているが、ストロボの形状などによってはx軸方向の配光特性とy軸方向の配光特性は異なる場合もある。
【0050】
そして、ストロボ光成分算出部210は、分割したブロック(1〜m)ごとのストロボ光成分Ys[i]を、以下の四つの引数を用いた式(4)の関数gにより算出する。式(4)において、四つの引数は、各ブロックに対応する距離マップの座標(x[i],y[i])、距離マップの奥行き距離情報z(x[i],y[i])、焦点距離fである。すなわち、ストロボ光成分算出部210は、これら四つの引数に基づいて実空間での被写体位置を算出した上で、配光特性の情報を適用してストロボ光成分Ys[i]を求める。
【0051】
Ys[i]=g(x[i],y[i],z(x[i],y[i]),f) …式(4)
【0052】
なお、ここではストロボ光成分の算出に上記の4つの引数を用いる例を説明したが、他のストロボ光成分に関係する引数を用いてもよい。一方、ストロボ光成分の算出精度は低くなるが、全ての被写体は光源の正面に位置すると仮定して、奥行き距離情報のみを引数として用いてもよい。また、ここではストロボ光成分を複数の引数を用いて関数により算出する例を説明したが、ストロボ光成分をテーブルとして保持し、条件により参照することで決定してもよい。ステップS704の後、ストロボ光成分算出部210は、処理をステップS705へ進める。
【0053】
ステップS705に進むと、ストロボ光成分算出部210は、全てのブロックについて前述したステップS703、S704の処理を行ったか否かを判定する。ストロボ光成分算出部210は、ステップS705において未処理のブロックが存在すると判定した場合にはステップS703へ処理を戻して前述同様の処理を繰り返す。一方、ストロボ光成分算出部210は、ステップS705において全てのブロックについて処理を行ったと判定した場合には、この
図7のフローチャートに示したストロボ光成分算出処理を終了する。
【0054】
図7のフローチャートのストロボ光成分算出処理が終了すると、画像処理部104における処理は、
図4のステップS404の画像合成比率算出処理へ進むが、このステップS404の処理は合成比率算出部211にて行われる。ステップS404の処理に進むと、合成比率算出部211は、画像合成に用いる合成比率αを算出する。ここで、合成比率算出部211は、ステップS403で算出されたブロックごとのストロボ光成分Ys[i]とストロボ発光時の画像データ205とを用いて、合成比率αを算出する。先ず、合成比率算出部211は、ストロボ発光時の画像データ205をストロボ光成分算出処理と同様のm個のブロックに分割し、ブロックごとに画素値をRGB各色で加算平均して色平均値(Rt[i],Gt[i],Bt[i])を算出する。そして、合成比率算出部211は、以下の式(5)を用いて各ブロックの輝度値Yt[i]を算出する。
【0055】
Yt[i]=0.3×Rt[i]+0.6×Gt[i]+0.1×Bt[i]…式(5)
【0056】
ここで、このように算出した各ブロックの輝度値Yt[i]を、各ブロックのストロボ光成分と環境光成分の総和とする。合成比率算出部211は、さらに、前述の式(4)のストロボ光成分Ys[i]と、ストロボ光成分と環境光成分の総和Yt[i]との比率を、以下の式(6)を用いて算出することで、各ブロックの合成比率α[i]を求める。
【0057】
α[i]=Ys[i]/Yt[i] …式(6)
【0058】
次に、ステップS404の合成比率算出処理が終了すると、画像処理部104における処理は、ステップS405の補正画像データ生成処理へ進むが、このステップS405の処理は、第1の補正部207と第2の補正部209にて行われる。ステップS405の処理に進むと、第1の補正部207は、ステップS401で決定された環境光に対応する第1のWB補正値を用いて、ストロボ発光時の画像データ205から第1の補正画像データYuv1を生成する。また、ステップS405において、第2の補正部209は、ステップS402で決定されたストロボ光に対応する第2のWB補正値を用いて、ストロボ発光時の画像データ205から第2の補正画像データYuv2を生成する。なお、第1の補正部207、第2の補正部209では、RGBからYUVへの現像処理も行われる。
【0059】
次に、ステップS405の補正画像データ生成処理が終了すると、画像処理部104における処理はステップS406の画像合成処理へ進むが、このステップS406の処理は合成部212にて行われる。ステップS406に進むと、合成部212は、ステップS404で算出されたブロックごとの合成比率α[i]を用いて、補正画像データYuv1と補正画像データYuv2とを合成し、合成画像データYuv3を生成する。具体的には、合成部212は、合成画像データYuv3における色評価値(Y3[i],u3[i],v3[i])を次の式(7)のようにして算出する。式(7)中の(Y1[i],u1[i],v1[i])は補正画像データYuv1における色評価値であり、(Y2[i],u2[i],v2[i])は補正画像データYuv2における色評価値である。
【0060】
Y3[i]=Y1[i]×(1−α[i])+Y2[i]×α[i]
u3[i]=u1[i]×(1−α[i])+u2[i]×α[i] …式(7)
v3[i]=v1[i]×(1−α[i])+v2[i]×α[i]
【0061】
ここで、ブロックの境界部分に生じる色味ずれを緩和するために、合成比率算出部211は、ステップS404でさらに画素補間処理を行うことにより、ブロックごとの合成比率α[i]から画素ごとの合成比率β[j]を算出してもよい。なお、[j]はブロック内の各画素のうちのj番目の画素を示している。具体的には合成比率算出部211は、画素補間処理としてバイリニア補間を用い、ブロックごとの合成比率α[i]から画素ごとの合成比率β[j]を算出する。またこの場合、合成部212は、ステップS406において、画素ごとの合成比率β[j]を用いて、補正画像データYuv1と補正画像データYuv2を合成し、合成画像データYuv3を生成する。合成画像データYuv3の色評価値(Y3[j],u3[j],v3[j])は、補正画像データYuv1の色評価値(Y1[j],u1[j],v1[j])と補正画像データYuv2の色評価値(Y2[j],u2[j],v2[j])とから算出される。すなわち、合成部212は、以下の式(8)により合成画像データYuv3の色評価値(Y3[j],u3[j],v3[j])を算出する。
【0062】
Y3[j]=Y1[j]×(1−β[j])+Y2[j]×β[j]
u3[j]=u1[j]×(1−β[j])+u2[j]×β[j] …式(8)
v3[j]=v1[j]×(1−β[j])+v2[j]×β[j]
【0063】
以上説明したように、本実施形態の画像処理部104は、ストロボ光成分を距離マップとストロボ光の配光特性から算出している。これにより、本実施形態によれば、撮影の際に例えば被写体が動いたり撮像装置側が移動したりしたとしても、被写体の境界部分の色味ずれを軽減でき、主被写体と背景とを共に適正な色味とすることが可能となる。なお、
図2では、画像処理部104が第1,第2のWB補正値決定部206,208と第1,第2の補正部207,209を備えた構成例を挙げたが、これに限られるものではなく、一つのWB補正値決定部と一つの補正部とを備えた構成としてもよい。一つのWB補正値決定部及び補正部を用いる場合、先ず前述の第1のWB補正値決定部206及び補正部207と同様の処理の後、次に前述の第2のWB補正値決定部206及び補正部207と同様の処理が行われるような時間でわけた順次処理とする。また、本実施形態では、複数のブロックに分割し、ブロック単位で処理を行う例を説明したが、これに限られるものではなく、処理時間と画質を考慮した上で、画素単位の処理を行うようにしてもよい。
【0064】
<第2の実施形態>
次に、第2の実施形態の画像処理装置について説明する。第2の実施形態の画像処理装置は、第1の実施形態で説明したストロボ光成分算出部210の処理に、さらに被写体の反射率を適用する。以下、第2の実施形態の画像処理装置において、第1の実施形態と異なる処理のみ説明し、第1の実施形態と同じ処理についての説明は省略する。
【0065】
第2の実施形態の画像処理装置では、
図7のフローチャートのステップS704の処理として、ストロボ光成分算出部210は、ブロックごとのストロボ光成分Ys[i]を式(4)に被写体の反射率rを適用した以下の式(9)により算出する。なお、被写体の反射率rは、予めメモリ部110に記憶しておいた一般的な物質の平均値である標準反射率とする。
【0066】
Ys[i]=g(x[i],y[i],z(x[i],y[i]),f)×r…式(9)
【0067】
また、第2の実施形態において、ストロボ光成分算出部210は、標準反射率の他にも、例えば人の顔の反射率を考慮して、ストロボ光成分を算出することも可能となされている。
図9(a)は、撮影画像から顔が検出された場合の例を示す模式的な図である。画像処理部104に含まれる顔検出部112は、ストロボ発光撮影時の画像データから被写体である人物画像領域901を検出し、さらに顔画像を検出して顔画像領域902を特定する。WB補正部105のストロボ光成分算出部210は、顔検出部112により検出された顔画像領域902に該当するブロックに関しては、予めメモリ部110に記憶されている人の顔の反射率を用いてストロボ光成分Ys[i]を算出する。
【0068】
以上説明したように、第2の実施形態によれば、ストロボ光成分の算出の際に被写体の反射率を考慮することで、ストロボ光成分の算出精度が向上し、より適正なホワイトバランス補正が可能となる。また、第2の実施形態の画像処理装置は、撮影画像から人の顔画像領域を検出し、その顔画像領域については人の顔の反射率を考慮してストロボ光成分を算出することにより、特に人の顔に対してより適正なWB補正が可能となる。
【0069】
<第3の実施形態>
次に、第3の実施形態の画像処理装置について説明する。第3の実施形態の画像処理装置は、第2の実施形態で説明したストロボ光成分算出部210の処理に、さらに被写体表面でのストロボ光の反射方向を適用する。以下、第3の実施形態の画像処理装置において、第2の実施形態と異なる処理のみ説明し、第2の実施形態と同じ処理についての説明は省略する。
【0070】
図10は、被写体表面の法線方向とストロボ光の反射光の関係を示す図である。先ず、被写体表面におけるストロボ光の反射角度θの算出方法について説明する。
図10に示すように被写体表面1001の点1002に対して、ストロボ光1003が入射した場合、ストロボ光は被写体表面1001の点1002で反射して反射光1004となる。反射光1004の被写体表面1001に対する反射角度θは、点1002における法線ベクトル1005を被写体の表面形状から推定し、ストロボ光と法線とのなす角を求めることで算出できる。したがって、反射光1004の反射光成分のうち、実際に撮像装置から観測できるストロボ光の反射光成分は、
図10に示すような反射光成分1006となる。
図10では説明を簡略化するために、被写体表面1001によるストロボ光1003の入射と反射を、ストロボ光1003と反射光1004及び法線を含む2次元平面により説明したが、ストロボ光1003の入射と反射は、本来は3次元空間での現象である。したがって、法線ベクトル1005や反射光成分1006は、実際には3次元空間に対応して求められる。
【0071】
ここで、被写体の表面形状は、距離マップに対して補間処理を行うことで算出することができる。すなわち、ストロボ光成分算出部210は、
図7のフローチャートのステップS704において、ブロックごとのストロボ光成分Ys[i]を、式(9)にストロボ光の反射角度θを適用した、以下の式(10)で算出する。
【0072】
Ys[i]=g(x[i],y[i],z(x[i],y[i]),f)
×cos2θ×r …式(10)
【0073】
また、第3の実施形態において、画像処理部104に含まれる顔検出部112は、ストロボ発光撮影時の画像データから顔画像を検出すると、さらに顔画像領から目や口などの器官位置を検出する。この場合、ストロボ光成分算出部210は、顔検出部112が検出した目や口などの器官位置情報に基づいて、
図9(b)に示すような顔の3次元モデルを当てはめることで法線ベクトルを算出する。なお、顔の3次元モデルのデータは、予めメモリ部110に記憶されている。そしてストロボ光成分算出部210は、その法線ベクトルを、反射光成分とする。
【0074】
以上説明したように、第3の実施形態によれば、ストロボ光成分の算出の際に被写体表面によるストロボ光の反射方向を考慮することで、ストロボ光成分の算出精度が向上し、より適正なホワイトバランス補正が可能となる。また、第3の実施形態の画像処理装置は、撮影画像から検出された人の顔画像領域により、人の顔によるストロボ光の反射方向を考慮してストロボ光成分を算出することにより、特に人の顔に対してより適正なWB補正が可能となる。
【0075】
<第4の実施形態>
次に、第4の実施形態の画像処理装置について説明する。第4の実施形態の画像処理装置は、第1の実施形態で説明したストロボ光成分算出部210の際に、被写体や撮像装置の移動を検出して、その移動検出結果に応じてストロボ光成分算出方法を切り替える。
【0076】
以下、第4の実施形態の画像処理装置について、
図11及び
図12を参照しながら説明する。
図11は第4の実施形態の場合のストロボ光成分算出部210における処理のフローチャートを示している。なお、
図11のフローチャートにおいて、第1の実施形態の説明で使用した
図7のフローチャートと同じ処理については、
図7と同じ参照番号を付して、それらの処理の説明は適宜省略する。また、
図12は、撮像画像から被写体や撮像装置の移動を検出するための移動領域検出処理について説明するための模式的な図である。
【0077】
図11のフローチャートにおいて、ストロボ光成分算出部210は、ステップS701において焦点距離情報の取得が完了すると、処理をステップS1101へ進める。ステップS1101に進むと、ストロボ光成分算出部210は、
図12(a)に示すようにストロボ非発光時の被写体領域1201とストロボ発光時の被写体領域1202を特定する。そして、ストロボ光成分算出部210は、ストロボ非発光時の被写体領域1201とストロボ発光時の被写体領域1202から、
図12(b)に示すような移動領域1203の検出を行う。このとき、移動領域1203の検出については、例えばストロボ非発光撮影時の画像データ202とストロボ発光撮影時の画像データ205とを比較し、それら画像データ202と画像データ205に所定量以上の差があるか否かにより判断する。なお、このとき、ストロボ光成分算出部210は、ストロボ光による影響を考慮して、ストロボ発光撮影時の画像データ205からストロボ光成分を差し引いた上で比較を行う。そして、ストロボ光成分算出部210は、画像データ202と画像データ205に所定量以上の差がある領域を、移動領域1203として検出する。ステップS1101において移動領域の検出が完了すると、ストロボ光成分算出部210は、処理をステップS702へ進める。
【0078】
ステップS702では、ストロボ光成分算出部210は、第1の実施形態の場合と同様にして、ストロボ発光時の画像データ205に加えて、ストロボ非発光時の画像データ202を複数のブロックに分割する。ステップS702で画像データの分割が完了すると、ストロボ光成分算出部210は、処理をステップS1102へ進める。
【0079】
ステップS1102に進むと、ストロボ光成分算出部210は、処理対象となっているブロックに、ステップS1101で検出した移動領域が含まれているか否かを判定する。処理対象のブロックに移動領域が含まれる場合、ストロボ光成分算出部210は、処理をステップS703へ進める。そして、ストロボ光成分算出部210は、ステップS703以降は第1の実施形態で説明したステップS705までの処理を行う。一方、ステップS1101において、処理対象のブロックに移動領域が含まれないと判定した場合、ストロボ光成分算出部210は、処理をステップS1103へ進める。
【0080】
ステップS1103に進むと、ストロボ光成分算出部210は、ストロボ非発光時の画像データ202とストロボ発光時の画像データ205の差分からストロボ光成分を算出する。具体的には、ストロボ光成分算出部210は、先ず、ストロボ非発光時の画像データ202の各ブロックの輝度値Ye[i]と、ストロボ発光時の画像データ205の各ブロックの輝度値Yt[i]からストロボ光成分Ys[i]を算出する。輝度値Ye[i]、輝度値Yt[i]の算出方法は、第1の実施形態における
図4のステップS404で説明した通りである。次に、ストロボ光成分算出部210は、以下の式(11)を用いて、ストロボ光成分Ys[i]を、ストロボ光成分と環境光成分の総和(Yt[i])から環境光成分(Ye[i])を引くことにより算出する。
【0081】
Ys[i]=Yt[i]−Ye[i] …式(11)
【0082】
ストロボ光成分算出部210は、ステップ1103でストロボ光成分Ys[i]の算出が完了すると、処理をステップS705へ進める。そして、ストロボ光成分算出部210は、ステップS705において全ブロックの処理が完了したか否かを判定する。ステップS705で全ブロックの処理が完了したと判定した場合、ストロボ光成分算出部210は、ストロボ光成分算出処理を終了する。一方、ステップS705で全ブロックの処理が完了していないと判定(未処理のブロックが残っていると判定)した場合、ストロボ光成分算出部210は、処理をステップS1102へ戻し、上述した処理を行う。
【0083】
以上説明したように、第4の実施形態においては、移動領域の検出結果に応じてストロボ光成分の算出方法を切り替えることで、距離マップの精度が低くなる背景領域のストロボ光成分の算出精度を向上させることが可能となる。そして、その結果として、第4の実施形態によれば、被写体や撮像装置が移動する状態でのストロボ発光撮影であっても、被写体の境界部分の色味ずれを軽減し、主被写体と背景とを共に適正な色味とすることが可能となる。このように、第4の実施形態によれば、距離マップの精度が低い距離の遠い領域、すなわち背景領域におけるストロボ光成分の算出精度が向上し、より適正なホワイトバランス補正が可能となる。
【0084】
なお、第4の実施形態では、ストロボ非発光時の画像データとストロボ発光時の画像データとの差分による移動領域の検出例を説明したが、これに限られるものではない。例えば、ストロボ非発光時の距離マップとストロボ発光時の距離マップの差から、移動領域を検出してもよい。すなわち、ストロボ非発光時の距離マップとストロボ発光時の距離マップとの差が例えば予め決めた値より大きくなったときには、被写体等が移動したと検出することができる。
【0085】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【0086】
<その他の実施形態>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0087】
上述の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明は、その技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。