本発明の画像処理装置における実施の形態について、以下、詳細に説明する。実施の形態では、本発明における画像処理装置としてデジタルカメラを例に説明するが、本発明の適用範囲はこれに限定されず、例えば、パーソナルコンピュータ、プリンタ、電子撮像機能を備えた他の電子機器に対しても適用可能である。
図1及び図2は、デジタルカメラの一例を示すものであり、それぞれ背面側及び前面側から見た外観図である。デジタルカメラ1の本体10の背面には、図1に示す如く、撮像者による操作のためのインターフェースとして、動作モードスイッチ11、メニュー/OKボタン12、ズーム/上下レバー13、左右ボタン14、Back(戻る)ボタン15、表示切替ボタン16が設けられ、更に撮影のためのファインダ17、撮影並びに再生のためのモニタ18及びレリーズボタン19が設けられている。
動作モードスイッチ11は、静止画撮影モード、動画撮影モード、再生モード、の各動作モードを切り替えるためのスライドスイッチである。メニュー/OKボタン12は、押下される毎に撮影モード、フラッシュ発光モード、被写体追跡モード及び被写体特定モード、セルフタイマーON/OFF、記録画素数や感度等の設定を行うための各種メニューをモニタ18に表示させたり、モニタ18に表示されたメニューに基づく選択・設定を決定したりするためのボタンである。
被写体追跡モードは、動く被写体を撮像するときに被写体を追跡し、追跡した被写体に対して最適な撮像条件で撮像を行うものであり、このモードが選択されると、後述の枠表示部78が起動される。
ズーム/上下レバー13は、上下方向に倒すことによって、撮影時には望遠/広角の調整が行われ、各種設定時にはモニタ18に表示されるメニュー画面中のカーソルが上下に移動して表示される。左右ボタン14は、各種設定時にモニタ18に表示されるメニュー画面中のカーソルを左右に移動して表示させるためのボタンである。
Back(戻る)ボタン15は、押下されることによって各種設定操作を中止し、モニタ18に1つ前の画面を表示するためのボタンである。表示切替ボタン16は、押下することによってモニタ18の表示のON/OFF、各種ガイド表示、文字表示のON/OFF等を切り替えるためのボタンである。ファインダ17は、ユーザが被写体を撮像する際に構図やピントを合わせるために覗くためのものである。ファインダ17から見える被写体像は、本体10の前面にあるファインダ窓23を介して映し出される。
レリーズボタン19は、半押し及び全押しの二段階操作が可能な操作ボタンであり、レリーズボタン19を押下すると、後述の操作系制御部74を介して半押し信号又は全押し信号をCPU75へ出力する。
以上説明した各ボタンやレバー等の操作によって設定された内容は、モニタ18中の表示や、ファインダ17内のランプ、スライドレバーの位置等によって確認可能となっている。また、モニタ18には、撮影の際に被写体確認用のスルー画像が表示される。これにより、モニタ18は電子ビューファインダとして機能する他、撮影後の静止画や動画の再生表示、各種設定メニューの表示を行う。ユーザによってレリーズボタン19が全押し操作されると、撮像が行われ、光源推定部67及びホワイトバランス(以下、WBという)算出部63等によって出力されたデータに基づいて、モニタ18に表示された画像が撮影画像として記録される。
更に、本体10の前面には、図2に示す如く、撮影レンズ20、レンズカバー21、電源スイッチ22、ファインダ窓23、フラッシュライト24及びセルフタイマーランプ25が設けられ、側面にはメディアスロット26が設けられている。
撮影レンズ20は、被写体像を所定の結像面上(本体10内部にあるCCD等)に結像させるためのものであり、フォーカスレンズやズームレンズ等によって構成される。レンズカバー21は、デジタルカメラ1の電源がオフ状態のとき、再生モードであるとき等に撮影レンズ20の表面を覆い、汚れやゴミ等から撮影レンズ20を保護するものである。
電源スイッチ22は、デジタルカメラ1の電源のオン/オフを切り替えるためのスイッチである。フラッシュライト24は、レリーズボタン19が押下され、本体10の内部にあるシャッタが開いている間に、撮像に必要な光を被写体に対して瞬間的に照射するためのものである。セルフタイマーランプ25は、セルフタイマーによって撮像する際に、シャッタの開閉タイミングすなわち露光の開始及び終了を被写体に知らせるためのものである。メディアスロット26は、メモリカード等の外部記録メディア70が充填されるための充填口であり、外部記録メディア70が充填されると、データの読み取り/書き込みが行われる。
図3は、デジタルカメラ1の機能構成を示すブロック図を示す。図3に示す如く、デジタルカメラ1の操作系として、前述の動作モードスイッチ11、メニュー/OKボタン12、ズーム/上下レバー13、左右ボタン14、Back(戻り)ボタン15、表示切替ボタン16、レリーズボタン19、電源スイッチ22と、これらのスイッチ、ボタン、レバー類の操作内容をCPU75に伝えるためのインターフェースである操作系制御部74が設けられている。
また、撮影レンズ20を構成するものとして、フォーカスレンズ20a及びズームレンズ20bが設けられている。これらの各レンズは、モータとモータドライバからなるフォーカスレンズ駆動部51、ズームレンズ駆動部52によってステップ駆動され、光軸方向に移動可能な構成となっている。フォーカスレンズ駆動部51は、AF処理部62から出力されるフォーカス駆動量データに基づいてフォーカスレンズ20aをステップ駆動する。ズームレンズ駆動部52は、ズーム/上下レバー13の操作量データに基づいてズームレンズ20bのステップ駆動を制御する。
絞り54は、モータとモータドライバとからなる絞り駆動部55によって駆動される。
シャッタ56は、メカニカルシャッタであり、モータとモータドライバとからなるシャッタ駆動部57によって駆動される。シャッタ駆動部57は、レリーズボタン19の押下信号等に応じてシャッタ56の開閉の制御を行う。
上記光学系の後方には、撮像素子であるCCD58を有している。CCD58は、多数の受光素子がマトリクス状に配置されてなる光電面を有しており、光学系を通過した被写体像が光電面に結像され、光電変換される。光電面の前方には、各画素に光を集光させるためのマイクロレンズアレイ(不図示)と、RGB各色のフィルタが規則的に配列されてなるカラーフィルタアレイ(不図示)とが配置されている。CCD58は、CCD制御部59から供給される垂直転送クロック信号及び水平転送クロック信号に同期して、画素毎に蓄積された電荷を1ラインずつ読み出して画像信号として出力する。各画素における電荷の蓄積時間(即ち露出時間)は、CCD制御部59から与えられる電子シャッタ駆動信号によって決定される。
CCD58が出力する画像像信号は、アナログ信号処理部60に入力される。このアナログ信号処理部60は、画像信号のノイズ除去を行う相関2重サンプリング回路(CDS)と、画像信号のゲイン調整を行うオートゲインコントローラ(AGC)と、画像信号をデジタル画像データに変換するA/Dコンバータ(ADC)とからなる。そしてデジタル画像データは、画素毎にRGBの濃度値を持つCCD−RAWデータである。
タイミングジェネレータ72は、タイミング信号を発生させるものであり、このタイミング信号がシャッタ駆動部57、CCD制御部59、アナログ信号処理部60に入力されて、レリーズボタン19の操作と、シャッタ56の開閉、CCD58の電荷取り込み、アナログ信号処理60の処理の同期が取られる。フラッシュ制御部73は、フラッシュライト24の発光動作を制御する。
画像入力コントローラ61は、上記アナログ信号処理部60から入力されたCCD−RAWデータをフレームメモリ68に書き込む。このフレームメモリ68は、画像データに対して後述の各種デジタル画像処理(信号処理)を行う際に使用する作業用メモリであり、例えば、一定周期のバスクロック信号に同期してデータ転送を行うSDRAM(Synchronous Dynamic Random Access Memory)から構成されている。また画像入力コントローラ61は、画像データを撮影する際のフラッシュ発光する/しない指示等に応じて、本撮影する前に行われるプレ画像を作業用メモリに記録することも可能である。
プレ画像は、撮影条件を決定するための撮像(例えば、調光処理)によって得られる。
表示制御部71は、フレームメモリ68に格納された画像データをスルー画像としてモニタ18に表示させるためのものであり、例えば、輝度(Y)信号と色(C)信号を一緒にして1つの信号としたコンポジット信号に変換して、モニタ18に出力する。スルー画像は、撮像モードが選択されている間、所定時間間隔で取得されてモニタ18に表示される。また、表示制御部71は、外部記録メディア70に記憶され、メディア制御部69によって読み出された画像ファイルに含まれる画像データに基づいた画像をモニタ18に表示させる。
枠表示部78は、表示制御部71を介してモニタ18に所定の大きさの枠を表示させるものである。ここで図6にモニタ18の表示の一実施例を示す。枠表示部78は、図6に示す如く、レリーズボタン19が半押しされることで、後述の特定被写体検出部66によって検出された特定被写体を囲む追跡枠F1〜F4を表示させる。追跡枠は、この検出された特定被写体の動きに追従して動いて表示され、例えば人物が遠方へ移動したときには、顔の大きさに合わせて枠は小さく表示され、近方へ移動したときには枠は大きく表示されるようにしてもよい。またレリーズボタンが半押しする前から特定被写体検出部66により顔検出をしてもよく、かつ検出された顔に対して、枠表示部78により追跡枠をモニタ18に表示させてもよい。
画像処理部64は、本画像の画像データに対してガンマ補正、シャープネス補正、コントラスト補正、色補正等の画質補正処理を施すと共に、CCD−RAWデータを輝度信号であるYデータと、青色色差信号であるCbデータ及び赤色色差信号であるCrデータとからなるYCデータに変換するYC処理を行う。この本画像とは、レリーズボタン19が全押しされることによってCCD58から画像信号が出力され、アナログ信号処理部60、画像入力コントローラ61経由でフレームメモリ68に格納された画像データに基づいた画像である。
本画像の画素数の上限はCCD58の画素数によって決定されるが、例えば、ユーザが設定可能な画質設定(ファイン、ノーマル等の設定)により、記録画素数を変更することができる。一方、プレ画像の画素数は本画像より少なくてもよく、例えば、本画像の1/16程度の画素数で取り込まれてもよい。
圧縮/伸長処理部67は、画像処理部64によって画質補正等の処理が行われた画像データに対して、例えばJPEG等の圧縮形式で圧縮処理を行って、画像ファイルを生成する。この画像ファイルには、各種データ形式に基づいて付帯情報が付加される。またこの圧縮/伸長処理部67は、再生モードにおいては外部記録メディア70から圧縮された画像ファイルを読み出し、伸長処理を行う。伸長後の画像データは表示制御部71に出力され、表示制御部71は画像データに基づいた画像をモニタ18に表示する。
メディア制御部69は、図2におけるメディアスロット26に相当し、外部記録メディア70に記憶された画像ファイル等の読み出し、又は画像ファイルの書き込みを行う。CPU75は、各種ボタン、レバー、スイッチの操作や各機能ブロックからの信号に応じて、デジタルカメラ1の本体各部を制御する。またCPU75は図示しない内部メモリに画像ファイルを記録する記録手段としても機能する。
またデータバス76は、画像入力コントローラ61、重み係数算出部62、WBゲイン算出部63、画像処理部64、圧縮/伸長処理部65、特定被写体検出部66、光源推定部67、フレームメモリ68、各種制御部69、71、82、肌色度評価部77、枠表示部78、肌色度算出部79、及びCPU75、WBゲイン合成部110、WB補正部112に接続されており、このデータバス76を介して各種信号、データの送受信が行われる。
本発明の画像データにおける画素数の上限はCCD58の画素数によって決定されるが、例えば、ユーザが設定可能な画質設定(ファイン、ノーマル等の設定)により、記録画素数を変更することができる。一方、スルー画像やプレ画像の画素数は本画像より少なくてもよく、例えば、本画像の1/16程度の画素数で取り込まれてもよい。
手ブレ補正処理部83は、撮像時に手ブレを起こすことで生じる撮像画像のブレを自動的に補正するものである。
メディア制御部(記録手段)69は、図2におけるメディアスロット26に相当し、外部記録メディア70に記憶された画像ファイル等の読み出し、又は画像ファイルの書き込みを行う。CPU75は、各種ボタン、レバー、スイッチの操作や各機能ブロックからの信号に応じて、デジタルカメラ1の本体各部を制御する。またCPU75は図示しない内部メモリに画像ファイルを記録する記録手段としても機能する。
なお、重み係数算出部62、特定被写体検出部66、光源推定部67、肌色度評価部77、肌色度算出部79、WBゲイン算出部63、撮像条件制御部82、WBゲイン補正部112、WB補正部112については追って詳細に説明する。
次に、以上の構成のデジタルカメラ1において撮像後に行われるホワイトバランス補正をおこなうまでの画像処理について説明する。
<第一の実施形態>
図4は、第一の実施形態における、ホワイトバランス補正のためのWBゲイン係数を算出するまでについての電気的構成を示すブロック図である。
図4を構成する各回路は、画像入力コントローラ61、特定被写体検出部66、肌色度算出部79、光源推定部67、WBゲイン算出部80の5つから構成される。
特定被写体検出部66は、画像入力コントローラ61から読出された画像データによって表される被写体の中から特定被写体(例えば、顔領域)を検出し、検出した顔領域から得られるRGB値等を算出する。
肌色度算出部79(色度算出部)は、顔領域の画像データから背景や顔の器官などのノイズ成分を除外し、R/GとB/G空間から特定の色の特定色度を算出する。好ましくは肌色の色度である肌色度を算出する。
光源推定部67は、基準光源選択部105、肌色度差算出部106(色度差算出部)および白色色度算出部107から構成される。
まず、基準光源選択部105は、各種光源と光源下で撮像された特定の色を表す基準色度との対応関係を示す基準色度データ(複数の基準色度)を有しており、特定色度と色度データベースのデータとを比較し、既知の特定の色に関する色度の中で色成分特定色度と近似する特定色度点を基準色度として決定する。
また上述したデータベースは、基準光源選択部以外の回路に配置されていてもよい。また、デジタルカメラ1の外部に存在するデータベースまたは基準光源選択部以外の回路に存在するデータベースにアクセスする手段(基準色度参照部)を有していてもよい。
なお、好ましくは、上述したデータベースは、肌色に関するデータベースである。各種光源と光源下で撮像された基準肌色度との対応関係を示す基準肌色度データ(複数の基準色度)を有しており、肌色度と肌色度データベースのデータとを比較し、既知の肌色度の中で色成分が肌色度と近似する肌色点を基準肌色度として決定する。
肌色度差算出部106(色度差算出部)は、特定色度と決定された基準色度との色度差を算出する。好ましくは、肌色度と決定された基準肌色度との色度差を算出する。
白色色度算出部107は肌色の色度と白色の色度との対応関係を示す白色色度データを有しており、肌色度と決定された基準肌色度との色度差に基づいて白色色度を補正する。
WBゲイン算出部80は、白色色度算出部107によって補正された白色色度を用いて、WB補正部112でホワイトバランス補正を行うためのWBゲイン係数を算出する。
以下、画像入力コントローラ61、特定被写体検出部66、肌色度算出部66、光源推定部67、基準光源選択部105、肌色度差算出部106、白色色度算出部107、WBゲイン算出部におけるそれぞれの処理を、図5から図13を参照しつつ説明する。図5は、第一の実施形態におけるホワイトバランスのゲイン係数が算出されるまでの処理の流れを示すフローチャートである。
フローチャートのステップS1について説明する。特定被写体検出部66は、画像入力コントローラ61から読出された画像データによって表される被写体の中から特定被写体(例えば、顔領域)を検出し、検出した顔領域から得られるRGB値等を算出する(ステップS1)。
具体的には、顔領域を検出する際に顔領域らしさを示す評価値である位置、大きさ、向き、傾き、彩度、色相のうちいずれか一つに基づき顔領域を自動的に検出する処理を用いる。
例えば、特開2006−202276号(以下、参考文献1という)の手法を用いることができる。参考文献1の手法は、顔の追跡は、動きベクトル、特徴点検出等の公知の手法や学習データに対してリサンプリングの際に重みを逐次的に更新していき,できた機械を最後に学習機械に対する重みをつけて足し合わせて統合学習機械をつくる手法であるAdaboostに基づいたマシンラーニング手法を利用するものであることが考えられる。例えば、平均フレームモデルを実際の顔画像に嵌め込み、平均フレームモデル上の各ランドマークの位置を、顔から検出された相対応するランドマークの位置に合致するように移動することによって平均フレームモデルを変形させて顔のフレームモデルを構築するのに際し、マシンラーニング手法により、所定のランドマークであることが分かっている複数のサンプル画像上の点における輝度プロファイルと、該ランドマークではないことが分かっている複数のサンプル画像上の点における輝度プロファイルとに対して学習を行って得た識別器および各識別器に対する識別条件を用いて、顔画像から当該ランドマークを示す点の位置を検出する手法である。
また、特開2004−334836号(以下、参考文献2という)の手法を用いることも可能である。参考文献2の手法は、画像データから一定の大きさの画像データを切り出し、各切出画像データと特徴部分画像データの照合データとを比較して前記処理対象画像中に前記特徴部分画像が存在するか否かを検出する画像データの特徴部分抽出方法を使用する手法である。
なお、特開2007−11970号(以下、参考文献3という)の手法のように人物の顔領域以外に、動物の顔等を特定被写体として検出してもよい。
例えば、図6は家族の誕生日会を撮像した画像データ例である。F1〜F4は特定被写体検出部66によって検出された顔を枠で示したものである。
次に、フローチャートのステップS2について説明する。肌色度算出部79は、特定被写体検出部66によって検出された顔領域から背景や顔の器官などの不要なノイズ成分を除外し、肌色度(R/G−B/G色空間)を算出する(ステップS2)。肌色度を算出する具体的手法としては、図7に示すように画像データをM×M(例えばM = 8)の領域に分割する。各領域でRGB値のそれぞれの平均値を算出する。算出された各領域のRGB値から、R/GとB/G空間に領域毎の色度点をプロットする(図8参照)。顔領域の大部分は、肌に関する画素であることから、肌色度算出部79は色度分布が密になっている部分が肌色度の候補と推測する。図8に示される有効領域は、プロットされた色度点の肌色度群を示すものである。図8に示すように、肌色度の候補が、一定の密度のもとに収束していることがわかる。
次に、上記の有効領域に存在する色度点に基づき、R/GとB/G空間毎のヒストグラムを算出する。図11は、肌色度算出部79によってプロットされた肌色度群をR/GとB/G空間毎に作成されたヒストグラム例である。頻度が閾値以上の範囲で囲まれる領域を肌色度候補領域として、その領域に含まれる肌色度分布を肌色度候補としている。
そして、顔領域に明暗のコントラストがあった場合、暗部は明部に比べて色度点に対する光源の影響が少ない可能性があるため、各領域の輝度値に応じて、輝度値が大きいほど重み付けを大きくし、肌色度候補の色度点の重み平均を肌色度として算出する。
次に、フローチャートのステップS3について説明する。基準光源選択部105は、各種光源と光源下で撮像された基準肌色度との対応関係を示す基準肌色度データを有しており、基準肌色度データは肌色軌跡と特殊光源1,2,3から構成される(図9参照)。
肌色軌跡は、光源の色温度が変化した場合の肌の色変化を示す黒体軌跡である。また特殊光源に関する肌色度(以下、特殊光源肌という)1、2、3は、黒体軌跡に対応する光源では表わせない特殊な光源下での肌色度である。特殊光源としては、例えば、蛍光灯や水銀灯などが挙げられる。
基準光源選択部105は、基準肌色度データから、算出された肌色度に近似する基準肌色度を算出する。例えば、算出された肌色度と予め求めてある各種光源下での既知の基準肌色度(基準肌色度データ)とを比較し、色空間上での距離が肌色度と最も近いものを基準肌色度として決定する(ステップS3)。距離というのは、例えばユークリッド距離またはマハラノビス距離等が挙げられる。
次に、フローチャートのステップS4について説明する。肌色度差算出部106は、色空間上における肌色度とステップS3にて決定された基準肌色度との色度差により色度差情報を算出する(ステップS4)。肌色度が肌色軌跡に最も近い場合に、算出された肌色度を(RG_1、BG_1)とし、決定された基準肌色度を(RG_2、BG_2)とする。それにより肌色度と決定された基準肌色度の色度差情報を算出することができる。図10は、肌色軌跡と決定された基準肌色度、肌色度および後述する白色色度(補正前、補正後)の関係を示すものである。
なお、フローチャートのステップS5において、肌色度が特殊光源肌と最も近い関係にある場合がある。図13は、特殊光源におけるR/GとB/G空間における肌と白色の色度点の関係を示している。肌色度と決定された基準肌色度をそれぞれ(RG_1、BG_1)、(RG_2、BG_2)とする。特殊光源肌の場合はそれに対応する白色色度は一点しかないため、その色度点を白色色度(RG_3、BG_3)とする。
次に、フローチャートのステップS5について説明する。白色色度算出部107は、肌色度と決定された基準肌色度との色度差に基づいて白色色度を算出する。白色色度算出部107は、肌色の色度と白色の色度との対応関係を示す白色色度データを有している(図12参照)。図12は、R/GとB/G空間のR/G軸における肌と白色の色度点の関係を示すものである。白色色度算出部107は、この関係を利用することで、ステップS3で決定された基準肌色度から白色色度(RG_3、BG_3)に変換することが可能となり、白色色度を算出することができる。
次にフローチャートのステップS6に説明する。肌色度と決定された基準肌色度の位置関係に基づいて、式(1)(2)の関係により白色色度を補正することが可能となる。補正された白色色度を(RG_W、BG_W)とする。
RG_W=RG_3×(RG_1 / RG_2) ・・・(1)
BG_W=BG_3×(BG_1 / BG_2) ・・・(2)
次にフローチャートのステップS7に説明する。WBゲイン算出部80は、WB補正部112によってホワイトバランス補正をおこなうためのWBゲイン係数を算出する(ステップS7)。例えば、補正後の白色色度をRG_W、BG_W、画像が十分な明るさを得るためのGのゲイン値をGain_Gとすると、R、Bのゲインは(3)式(4)式により算出される。WBゲイン係数は(Gain_R、Gain_G、Gain_B)とする。
Gain_R = Gain_G / RG_w ・・・(3)
Gain_B = Gain_G / BG_w ・・・(4)
第一の実施形態において、肌色度と決定された基準肌色度の色度差(色度差情報)を考慮し、決定された基準肌色度に対応する白色色度を補正することで、照明光源下での白色色度を高精度に求めることが可能となる。なお、フローチャートのステップS3において、基準光源選択部105は、色空間上において、肌色度と最も近い距離にある基準肌色度を決定したが、本発明はこれに限定するものではなく、二番目、三番目に近い距離にある基準肌色度を決定してもよい。
<第二の実施形態>
次いで、本発明の第二の実施形態について説明する。第二の実施形態における画像処理装置は、光源推定部67内は、複数の光源推定(光源推定部67A、光源推定部67B)部により構成されていることを特徴とするものである。
図14は、第二の実施形態における、ホワイトバランス補正のためのWBゲイン係数を算出するまでについての電気的構成を示すブロック図である。
図14を構成する各回路は、画像入力コントローラ61、特定被写体検出部66、肌色度算出部79(特定色度算出部)、光源推定部67(67A、67B)、重み係数算出部62、WBゲイン算出部80の6つから構成される。
特定被写体検出部66および肌色度算出部79(特定色度算出部)は、第一の実施形態で説明したとおりである。
第二の実施形態において、光源推定部67は、複数の光源推定部(例えば、第一光源推定部67A、第二光源推定部67B)により構成される。第一の光源推定部67Aと第二の光源推定部67Bは共に第一の実施形態で説明した光源推定部67と同様の構成を有する。よって、同様に基準光源選択部105、肌色度差算出部106および白色色度算出部107から構成されるものである。
なお、第一の光源推定部67Aを構成するものは、基準光源選択部105A、肌色度差算出部106A、白色色度算出部107Aという。また、第二の光源推定部67Bを構成するものは、基準光源選択部105B、肌色度差算出部106B、白色色度算出部107Bという。
なお、第一の光源推定部67Aと第二の光源推定部67Bは、結果として互いに異なる基準肌色度や白色色度を算出するものであってもよいし、同一の基準肌色度や白色色度を算出するものであってもよい。
重み係数算出部62は、第一の光源推定部67Aと第二の光源推定部67Bによって算出された各色度差の情報を利用して、白色色度を算出するための重み係数を算出する。
WBゲイン算出部80は、第一の実施形態で説明したとおりである。
図16は、ホワイトバランスのゲイン係数が算出されるまでの処理の流れを示すフローチャートである。
まずフローチャート(図16)のステップS11について説明する。特定被写体検出部66は、画像入力コントローラ61から読出された画像データによって表される被写体の中から特定被写体(例えば、顔領域)を検出し、検出した顔領域から得られるRGB値等を算出する(ステップS11)。具体的には、第一の実施形態で説明した特定被写体検出と同様である。
次に、フローチャートのステップS12について説明する。肌色度算出部79は、特定被写体検出部66によって検出された顔領域から背景や顔の器官などの不要なノイズ成分を除外し、肌色度を算出する(ステップS12)。具体的には、第一の実施形態で説明した手法を用いる。
次に、フローチャートのステップS13について説明する。基準光源選択部105は、各種光源と光源下で撮像された基準肌色度との対応関係を示す基準肌色度データを有している。基準肌色度データは肌色軌跡と特殊光源1,2,3から構成される(図9参照)。肌色軌跡は、光源の色温度が変化した場合の肌の色変化を示す黒体軌跡である。また特殊光源1、2、3は、黒体軌跡に対応する光源では表わせない特殊な光源下での肌色度であり、特殊光源としては、例えば、蛍光灯や水銀灯などが挙げられる。基準光源選択部105Aでは、基準肌色度データから、算出された肌色度に近似する基準肌色度を決定する。
例えば、算出された肌色度と予め求めてある各種光源下での既知の基準肌色度(基準肌色度データ)とを比較し、色空間上での距離が肌色度と最も近いものを第一の基準肌色度として決定する(ステップS13)。また、基準光源選択部105Bでは、算出された肌色度と予め求めてある各種光源下での既知の基準肌色度(基準肌色度データ)とを比較し、色空間上での距離が肌色度と二番目に近いものを第二の基準肌色度として決定する(ステップS13)。距離というのは、例えばユークリッド距離またはマハラノビス距離等である。
次に、フローチャートのステップS14について説明する。肌色度差算出部106Aは、色空間上における肌色度と決定された第一の基準肌色度との色度差aにより色度差情報を算出する(ステップS14)。図15は、肌色軌跡と第一の基準肌色度、第二の基準肌色度および肌色度の関係を示すものである。図15では、一例として、肌色度に最も近い色度点は、肌色軌跡である場合を表している。白色色度算出部107は、肌色度と決定された第一の基準肌色度との色度差に基づいて白色色度を算出する。白色色度の算出方法は第一の実施形態で説明したものと同様であり、白色色度算出部107Aは、肌色の色度と白色の色度との対応関係を示す白色色度データを有しており(図12参照)、この関係を利用することで、ステップS13で決定された第一の基準肌色度から白色色度に変換することが可能となり、第一の白色色度を算出することができる。
一方、フローチャートのステップS19について説明する。肌色度差算出部106Bは、色空間上における肌色度と決定された第二の基準肌色度との色度差により色度差(色度差情報)を算出する(ステップS19)。肌色度が肌色軌跡の次に特殊光源に最も近い場合を例に説明すると、肌色度と決定された第二の基準肌色度をそれぞれ算出する。それにより肌色度と決定された第二の基準肌色度の色度差bを算出することができる。
白色色度算出部107は、肌色度と決定された第二の基準肌色度との色度差に基づいて白色色度を算出する。白色色度の算出方法は第一の実施形態で説明したものと同様であり、白色色度算出部107Bは、肌色の色度と白色の色度との対応関係を示す白色色度データを有しており(図12参照)、この関係を利用することで、ステップS13で決定された第二の基準肌色度から白色色度に変換することが可能となり、第二の白色色度を算出することができる。
次に、フローチャートのステップS15について説明する。白色色度算出部107Aは、第一の実施形態で説明した手法により、色度差情報(色度差a)を用いて第一の白色色度を補正する。
一方、フローチャートのステップS20について説明する。白色色度算出部107Bは、第一の実施形態で説明した手法により、色度差情報(色度差b)を用いて第二の白色色度を補正する。
フローチャートのステップS16について説明する。重み係数算出部62は、白色色度算出部107Aと白色色度算出部107Bによって算出された色度差a、bを用いて、以下の(5)式、(6)式により、重み係数を算出する。白色色度算出部107Aによって算出された第一の白色色度に対する重み係数をw1とし、白色色度算出部107Bによって算出された第二の白色色度に対する重み係数をw2とする。
w1 = b /(a+b) ・・・(5)
w2 = 1 − w1 ・・・(6)
(5)式、(6)式は、色度差が大きいほど、重みが大きくなるように重み係数が設定されるようになる。
フローチャートのステップS17について説明する。重み係数算出部62は、算出したw1,w2に基づき、第一の白色色度および第二の白色色度の重み平均を算出する。重み平均後の白色色度を(RG_W、BG_W)とする。
フローチャートのステップS18について説明する。WBゲイン算出部80は、画像
が十分な明るさを得るためのGのゲイン値(測光で得られた既知の値)をGain_Gとすることで、R、Bのゲイン係数は(7)式、(8)式により算出される。WBゲイン係数は(Gain_R、Gain_G,Gain_B)とする。
Gain_R = Gain_G / RG_w ・・・(7)
Gain_B = Gain_G / BG_w ・・・(8)
第二の実施形態により、光源推定を複数の回路(光源推定部67A、光源推定部67B)で行っていることから、ミックス(複数)光源下であっても精度よく光源を推定することが可能となる。
なお、第二の実施形態において、光源推定に関する回路は複数であればよく、二つの回路に限定されるものではない。
また肌色度と第一の基準肌色度および第二の基準肌色度との色度差a、bに応じて重み付けを行うことから、撮像環境が単一光源シーンであっても、光源推定の精度が低下しないという効果を奏する。
<第三の実施形態>
次いで、本発明の第三の実施形態について説明する。第三の実施形態における画像処理装置は、WBゲイン算出部80は、複数のWBゲイン算出部(WBゲイン算出部80A、WBゲイン算出部80B)部により構成されていることを特徴とするものである。
図17は、第二の実施形態における、ホワイトバランス補正のためのWBゲイン係数を算出するまでについての電気的構成を示すブロック図である。
図17を構成する各回路は、画像入力コントローラ61、特定被写体検出部66、肌色度算出部79、WBゲイン算出部80(80A、80B)、肌色度評価部77、重み係数算出部62、WBゲイン合成部110から成る。
WBゲイン算出部80は、複数のWBゲイン算出部(例えば、WBゲイン算出部80A、WBゲイン算出部80B)により構成される。また、WBゲイン算出部80Aは、画像入力コントローラ61から画像データから第一のWBゲイン係数を算出するものである。
また、WBゲイン算出部80Bのブロックは、第一の実施形態または第二の実施形態で説明した手法により算出されたWBゲイン係数を用いるものである。
肌色度評価部77は、肌色度算出部79により算出された肌色度に対して第一のWBゲイン係数を積算して第一の色度点を算出し、また、肌色度算出部79により算出された肌色度に対して第二のWBゲイン係数を積算して第二色度点を算出し、第一の色度点と第二の色度点の色空間上での位置関係を評価するものである。
肌色度算出部79により算出された肌色度は、第一の実施形態で説明した手法を用いて算出されたものである。
重み係数算出部62は、肌色度評価部77によって評価された結果に基づき、第一のWBゲイン係数と第二のWBゲイン係数の重み係数を算出するものである。
WBゲイン合成部110は、複数のWBゲイン算出部(例えば、WBゲイン算出部80A、WBゲイン算出部80B)によって算出された複数のWBゲイン係数に対して、合成処理をおこなうものである。
図19は、ホワイトバランスのゲイン係数が合成されるまでの処理の流れを示すフローチャートである。
まずフローチャート(図19)のステップS30について説明する。第一のWBゲイン算出部80Aは、画像データ全体を用いて第一のWBゲイン係数を算出する。具体的手法として、まず図7に示すように画像データをM×M(例えばM = 8)の領域に分割する。各領域でRGB値のそれぞれの平均値を算出する。算出された各領域のRGB値から、R/GとB/G空間に領域毎の色度点をプロットする(図23参照)。肌色軌跡は、光源の色温度が変化した場合の黒体の色変化を示す黒体軌跡である。これを囲むように記載されている多角形は白色物体の判定領域として設定し、多角形の内側に分布する色度点は白色色度候補とし、外側に分布する色度点は白色色度以外の色度点と判断する。白色物体候補の色度点の平均座標をRG1_w、BG1_wとし、画像が十分な明るさを得るためのGのゲイン値(測光で得られた既知の値)をGain1_Gとすると、R、Bのゲインは(9)式、(10)式により算出される。
Gain1_R = Gain1_G / RG1_w ・・・(9)
Gain1_B = Gain1_G / BG1_w ・・・(10)
このように、第一のWBゲイン係数(Gain_R、Gain_G,Gain_B)として、算出ことが可能となる。
次に、フローチャートのステップS31について説明する。特定被写体検出部66は、画像入力コントローラ61から読出された画像データによって表される被写体の中から特定被写体(例えば、顔領域)を検出し、検出した顔領域から得られるRGB値等を算出する(ステップS31)。具体的には、第一の実施形態で説明した特定被写体検出と同様である。
次に、フローチャートのステップS32について説明する。顔領域が検出されない場合(S32;No)、第1のWBゲイン係数をWBゲイン合成部110にて合成処理がおこなわれずに、最終のWBゲイン係数とする。顔領域が検出された場合(S32;Yes)は、次のステップS33へと進む。
フローチャートのステップS33について説明する。前述した特定被写体検出部66の検出された特定被写体(顔領域)の情報を利用する第一の実施形態または第二の実施形態で算出した手法により第二のWBゲイン係数を算出する。
次に、フローチャートのステップS34(図19)について説明する。また、フローチャートS34の説明については、図20のフローチャートを用いて説明する。
肌色度評価部77は、肌色度算出部79によって算出された肌色度に対して、第一のWBゲイン算出部80Aによって算出された第一のWBゲイン係数を適用し積算した場合の色度点p1、および肌色度算出部79によって算出された肌色度に対して第二のWBゲイン算出部80Bによって算出された第二のWBゲイン係数を適用し積算した場合の色度点p2を算出する(ステップS40)。図18に示すように、L*a*bのa*−b*空間における色度点p1とp2の関係について評価する。h1が角度θ1〜θ2の範囲内であるか評価する(ステップS41)。h1が角度θ1〜θ2の範囲内であれば(S41;Yes)、h2が角度θ1〜θ2の範囲内であるか評価する(ステップS42)。次にh2が角度θ1〜θ2の範囲内である場合(ステップS42;Yes)、色度点p1、p2と有効領域との色度差d1、d2(色度差情報)を算出する(ステップS38)。ここで言う色度差とは、色空間上のユークリッド距離またはマハラノビス距離等のことである。
その後、色度差情報を用いて、重み係数算出部62によって重み係数を算出する(ステップS39)。具体的には、図18に示す好ましい肌色と判断される範囲として設定された有効領域内に、色度点が存在する場合は、色度差は0とする。色度差d1、d2に応じて、(11)式により重み係数wを算出する。もし、d1とd2がどちらも0であった場合は、w= 0.5とする。
w = d1 /(d1+d2) ・・・(11)
また、h2が角度θ1〜θ2の範囲外である場合(ステップS42;No)、重み係数算出部62によって重み係数がW=0として算出される(ステップS46)。こうすることで、第一のWBゲイン係数の算出において、他の色物体と白色物体と誤認識して不適切なゲイン係数を算出した場合、また第二のWBゲイン算出において顔領域を誤検出して不適切なゲイン係数を算出してしまった場合にも適切なホワイトバランス処理により対応することが可能となる。
一方、h1が角度θ1〜θ2の範囲外であれば(S41;No)、h2が角度θ1〜θ2の範囲内であるか評価する(ステップS45)。h2が角度θ1〜θ2の範囲内である場合(ステップS45;Yes)、重み係数算出部62によって重み係数がW=1として算出される(ステップS47)。h2が角度θ1〜θ2の範囲外である場合(ステップS45;No)、重み係数算出部62によって重み係数がw=―1として算出される(ステップS48)。この場合、第一のWBゲイン係数および第二のWBゲイン係数はいずれも適切ではないと判断し、既知の光源(例えば、デーライト光源であるD=50)に相当する所定のWBゲイン(既知の設定値)をWBゲイン合成部110において、最終WBゲインとして算出してもよい。
次に、フローチャートステップS35について説明する。前述したとおり、重み係数算出部62は、重み係数wを設定する。
次に、フローチャートのステップS36について説明する。WBゲイン合成部110は、(12)式、(13)式、(14)式のように、重み係数wの値に応じて第一のWBゲイン係数(Gain1_R、Gain2_G,Gain3_B)と第二のWBゲイン係数(Gain2_R、Gain2_G,Gain2_B)を重み付け平均し、最終的なWBゲイン係数(Gain_R、Gain_G,Gain_B)を算出する。
Gain_R=Gain1_R×(1−w)+Gain2_R×w ・・・(12)
Gain_G=Gain1_G×(1−w)+Gain2_G×w ・・・(13)
Gain_B=Gain1_B×(1−w)+Gain2_B×w ・・・(14)
<第四の実施形態>
次いで、本発明の第四の実施形態について説明する。ホワイトバランス補正のためのWBゲイン係数を算出するまでについての電気的構成を示すブロック図である。
図21を構成する各回路は、画像入力コントローラ61、特定被写体検出部66、WBゲイン算出部80(80A、80B)、撮像条件制御部82、重み係数算出部62、WBゲイン合成部110から成る。画像入力コントローラ61、特定被写体検出部66、WBゲイン算出部80(80A、80B)は、前述した第三の実施形態と同様の機能を有する。
撮像条件制御部82は、撮像条件として、少なくともフラッシュ光のON/OFFに関する情報を算出する。
重み係数算出部62は、撮像条件を考慮して、輝度重み係数を算出する。
WBゲイン合成部110は、WBゲイン算出部80AおよびWBゲイン算出部80Bによって算出された第一のWBゲイン係数および第二のWBゲイン係数を、輝度重み係数を用いて合成し、最終WBゲイン係数を算出する。
図22は、ホワイトバランスのゲイン係数が合成されるまでの処理の流れを示すフローチャートである。
まずフローチャート(図22)のステップS51について説明する。第一のWBゲイン算出部80Aは、第三の実施形態で説明した手法を用いて、第一のWBゲイン係数を算出する
次に、フローチャートのステップS52について説明する。特定被写体検出部66は、画像入力コントローラ61から読出された画像データによって表される被写体の中から特定被写体(例えば、顔領域)を検出し、検出した顔領域から得られるRGB値等を算出する(ステップS52)。具体的には、第一の実施形態で説明した手法を用いる。
次に、フローチャートのステップS53について説明する。顔領域が検出されない場合(S53;No)、第一のWBゲイン係数をWBゲイン合成部110にて合成することなく、最終のWBゲイン係数として算出する。顔領域が検出された場合(S53;Yes)、次のステップS54へと進む。
次に、フローチャートのステップS54について説明する。前述した特定被写体検出部66の検出された特定被写体(顔領域)の情報を利用する第一の実施形態または第二の実施形態で算出した手法により最終的に算出されたWBゲイン係数を、第二のWBゲイン係数として算出する。
次に、フローチャートのステップS55について説明する。フラッシュライト24が、フラッシュ発光されなかった場合は(ステップS55;No)、第二のWB係数を最終WBゲインとして算出する。フラッシュライト24がフラッシュ発光した場合は(ステップS55;Yes)、ステップ56に進む。
フラッシュライト24が発光されたか否かについて、撮像条件制御部82によりフラッシュライト24が制御され、かつ撮像条件制御部82がその制御情報(フラッシュライト24がフラッシュ発光したか否かの制御情報含む)が記録している。
さらに撮像制御部82は、画像データの全領域のフラッシュ光割合をratio1、顔領域のフラッシュ光割合をratio2として算出することで、フラッシュ発光割合を算出する。
また、撮像制御部82は、特定被写体検出部66によって検出された顔領域から算出される輝度値からratio2を算出する
具体的には、図24のように、画像データ領域をブロック分割し、フラッシュ撮影時にフラッシュ非発光時の各ブロックの輝度とフラッシュ発光時の各ブロックの輝度を取得し、フレームメモリ68に記録しておく。
特定被写体検出部66によって検出された顔領域に含まれる分割ブロックで構成されるエリアであるフラッシュ割合算出エリアを用いて、ratio2を算出する。
調光時に得られたプレ画像から取得されるフラッシュ発光前のフラッシュ割合算出エリアのブロックにおける輝度平均値をY1として算出する。また、フラッシュ発光時のフラッシュ割合算出エリアのブロックにおける輝度平均値からY1を減算した輝度値をY2として算出する。フラッシュ割合ratio2を(15)式のように算出する。画像データ全領域のフラッシュ割合ratio1も同様に算出する。
Ratio2 = 100 × Y2 / (Y1 + Y2) ・・・(15)
また、図26は画像データ領域をブロック分割したものと、撮像された人物を畳み重ねて表示されたものを示すものである。顔エリアから少し狭めたフラッシュ割合算出エリアを用いることで、より肌を占める割合が多いことがわかる(図26参照)。それにより肌に関する輝度値を最適に取得することができる。
なお、顔領域に含まれる分割ブロックが存在しない場合、顔領域との重なる面積が最も大きい分割ブロックのエリアをフラッシュ割合算出エリアとすることも可能である。
次に、フローチャートのステップS57について説明する。WBゲイン合成部110は、重み係数算出部62により算出されたratio1とratio2の比に応じて、第二のWBゲインに対する輝度重み係数wを算出する。図25は、ratio2/ratio1と第二のWBゲイン係数に対する輝度重み係数wの関係を表わしたルックアップテーブルである。このルックアップテーブルを利用することで、輝度重み係数wを算出することができる。ratio1に対してratio2が十分大きい場合は、顔の背景とでフラッシュ割合に差があるため、第二のWBゲイン係数にあまり大きな重みを設定すると背景の色が破綻する恐れがある。一方で、ratio1とratio2が同程度の場合は、信頼度の高い第二のWBゲイン係数の重みを大きくするように設定することが可能となる。
以上により、輝度重み係数wを算出し、(16)(17)(18)式のように、重み
係数算出部62により算出された輝度重み係数wの値に応じて、第一のWBゲイン係数(Gain1_R、Gain2_G,Gain3_B)と第二のWBゲイン係数(Gain2_R、Gain2_G,Gain2_B)を重み付け平均し、最終的なWBゲイン係数(Gain_R、Gain_G,Gain_B)を算出する。
Gain_R=Gain1_R×(1−w)+Gain2_R×w ・・・(16)
Gain_G=Gain1_G×(1−w)+Gain2_G×w ・・・(17)
Gain_B=Gain1_B×(1−w)+Gain2_B×w ・・・(18)
以上、第一から第四の実施形態まで説明したが、それぞれの実施形態で算出された最終のWBゲイン係数を用いて、WB補正部112により画像データに対してホワイトバランス補正が可能となる。
なお、本発明は特定の色の最適例として、肌色を用いて説明したが、肌色に限定されるものではない。