(57)【要約】【課題】鏡面反射領域を精度よく特定して鏡面反射成分に基づいたホワイトバランス処理を行うことができるようにする。【解決手段】顔検出結果から得られた顔領域の位置、サイズ、角度、及び目、口など器官の位置などの情報、または人体検出結果から得られた人体領域の位置、サイズ、角度、頭部や肩などの部位の位置及び部位のサイズ情報を基に鏡面反射成分を抽出する候補領域を求め、これらの候補領域から鏡面反射成分を抽出する。このとき、ＲＧＢのうち一つ以上の成分が閾値よりも大きい画素、および想定色との差分が閾値Ｔ１以上である画素については、径面反射成分の算出に用いないようにする。【選択図】図１７
2015198438.tif 000002
【特許請求の範囲】
【請求項１】
入力画像からオブジェクトを検出する検出手段と、
前記検出手段によって検出されたオブジェクトの情報に基づいて前記オブジェクトにおける鏡面反射成分を抽出する領域を特定する特定手段と、
前記特定手段によって特定された領域から前記鏡面反射成分を抽出する抽出手段と、
前記抽出手段によって抽出された鏡面反射成分に基づくホワイトバランスゲインにより前記入力画像に対してホワイトバランス処理を行う処理手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記オブジェクトは人物の顔であり、
前記特定手段は、前記検出手段により検出された顔の領域の位置、サイズ、角度、及び器官の位置を含む情報に基づいて前記領域を特定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記オブジェクトは人体であり、
前記特定手段は、前記検出手段により検出された人体の領域の位置、サイズ、角度、部位の位置及び部位のサイズ情報に基づいて前記領域を特定することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記抽出手段は、前記特定手段によって特定された領域における、ＲＧＢの各成分の何れかが閾値よりも大きい画素を鏡面反射成分の抽出に用いないようにすることを特徴とする請求項１〜３の何れか１項に記載の画像処理装置。
【請求項５】
前記抽出手段は、前記特定手段によって特定された領域における、所定の色との差分が閾値以上である画素を鏡面反射成分の抽出に用いないようにすることを特徴とする請求項１〜４の何れか１項に記載の画像処理装置。
【請求項６】
前記特定手段によって特定された領域から、さらに輝度ヒストグラムに基づいて鏡面反射成分を抽出する領域を選択する選択手段を備え、
前記抽出手段は、前記選択手段によって選択された領域から前記鏡面反射成分を抽出することを特徴とする請求項１〜５の何れか１項に記載の画像処理装置。
【請求項７】
前記選択手段は、前記特定手段によって特定された複数の領域ごとに前記輝度ヒストグラムのピークを算出して鏡面反射成分を抽出する領域を選択することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記選択手段は、さらにストロボの発光の有無に基づいて鏡面反射成分を抽出する領域を選択することを特徴とする請求項６又は７に記載の画像処理装置。
【請求項９】
前記処理手段は、前記特定手段によって特定された領域から抽出された鏡面反射成分に基づいて重み付けされたホワイトバランスゲインにより前記入力画像に対してホワイトバランス処理を行うことを特徴とする請求項１〜８の何れか１項に記載の画像処理装置。
【請求項１０】
前記処理手段は、前記検出手段によって検出されたオブジェクトの領域に対して前記抽出手段によって抽出された鏡面反射成分に基づくホワイトバランスゲインを用い、それ以外の領域に対して白抽出範囲の画素の平均に基づくホワイトバランスゲインを用いることを特徴とする請求項１〜９の何れか１項に記載の画像処理装置。
【請求項１１】
入力画像からオブジェクトを検出する検出工程と、
前記検出工程において検出されたオブジェクトの情報に基づいて前記オブジェクトにおける鏡面反射成分を抽出する領域を特定する特定工程と、
前記特定工程において特定された領域から前記鏡面反射成分を抽出する抽出工程と、
前記抽出工程において抽出された鏡面反射成分に基づくホワイトバランスゲインにより前記入力画像に対してホワイトバランス処理を行う処理工程と、
を備えることを特徴とする画像処理方法。
【請求項１２】
入力画像からオブジェクトを検出する検出工程と、
前記検出工程において検出されたオブジェクトの情報に基づいて前記オブジェクトにおける鏡面反射成分を抽出する領域を特定する特定工程と、
前記特定工程において特定された領域から前記鏡面反射成分を抽出する抽出工程と、
前記抽出工程において抽出された鏡面反射成分に基づくホワイトバランスゲインにより前記入力画像に対してホワイトバランス処理を行う処理工程と、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に、ホワイトバランス処理を行うために用いて好適な画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、２色性反射モデルに基づいて光源色を推定する処理を行う画像処理装置が知られている。ここで、２色性反射モデルとは、物体からの反射光が、物体色に依存する乱反射成分と、光源色に依存する鏡面反射成分とからなるようにしたモデルである。このモデルを用いて鏡面反射成分を推定することにより、ホワイトバランスゲインを算出することができる。例えば特許文献１には、入力画像中の近接した位置にあり、かつ輝度差のある２点Ａ，Ｂの画素値の差分を取ることによって、被写体物体からの反射光から鏡面反射成分のみを抽出して、光源色を推定する画像処理装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−１３４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された光源色を推定する方法では、近接した画素は同一物体に属するものと仮定して画素値の差分を算出している。したがって、この方法では、画素値が同一または類似する被写体物体が重なっていると、入力画像中の被写体物体の境界領域において、異なる被写体物体に属する画素間で画素値の差分を算出してしまう可能性がある。同一物体に属する画素間での画素値の差分が光源色に対応した鏡面反射成分であるのに対し、異なる（色の）被写体間で算出された差分値は被写体物体色の差に依存しており、光源色には対応していない。このような場合に従来の方法では、光源色を精度よく推定することができない。
【０００５】
本発明は前述の問題点に鑑み、鏡面反射領域を精度よく特定して鏡面反射成分に基づいたホワイトバランス処理を行うことができるようにすることを目的としている。
【課題を解決するための手段】
【０００６】
本発明に係る画像処理装置は、入力画像からオブジェクトを検出する検出手段と、前記検出手段によって検出されたオブジェクトの情報に基づいて前記オブジェクトにおける鏡面反射成分を抽出する領域を特定する特定手段と、前記特定手段によって特定された領域から前記鏡面反射成分を抽出する抽出手段と、前記抽出手段によって抽出された鏡面反射成分に基づくホワイトバランスゲインにより前記入力画像に対してホワイトバランス処理を行う処理手段と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、鏡面反射領域を精度よく特定し、精度よく特定された鏡面反射成分に基づいて適切なホワイトバランス処理を行うことができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係るデジタルカメラの構成例を示すブロック図である。
【図２】画像処理部の中の色信号などを抽出する構成例を示すブロック図である。
【図３】顔検出部によって検出される顔情報の一例を示す図である。
【図４】人体検出部によって検出される人体情報の一例を示す図である。
【図５】白抽出範囲の画素の平均値に基づいてホワイトバランスゲインを算出する処理手順の一例を示すフローチャートである。
【図６】入力画像の全画素から鏡面反射成分を抽出する詳細な処理手順の一例を示すフローチャートである。
【図７】処理対象画素と比較画素との差分を算出する方法を説明するための図である。
【図８】ブロックごとの差分合計値及び差分カウントの一例を示す図である。
【図９】画素の関係をＲＧＢ色空間で示した図である。
【図１０】ＣｘＣｙ色空間における白抽出範囲の一例を示す図である。
【図１１】顔が検出された場合の鏡面反射成分を抽出する候補領域を説明するための図である。
【図１２】人体が検出された場合の鏡面反射成分を抽出する候補領域を説明するための図である。
【図１３】候補領域グループの一例を説明するための図である。
【図１４】抽出用領域を選択する処理手順の一例を示すフローチャートである。
【図１５】輝度ヒストグラムの一例を示す図である。
【図１６】候補領域または抽出用領域に基づいてホワイトバランスゲインを算出する処理手順の一例を示すフローチャートである。
【図１７】重み付きＣｘ，Ｃｙ値を算出する方法を説明するための図である。
【図１８】領域によって異なるホワイトバランス処理を行う処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
以下、本発明の好ましい実施形態について、添付の図面に基づいて詳細に説明する。本実施形態では、画像処理装置としてデジタルカメラに適用した例について説明する。また、本実施形態では、オブジェクトとして人物の顔及び人体を検出する例について説明する。
【００１０】
図１は、本実施形態に係るデジタルカメラ１００の構成例を示すブロック図である。
図１において、撮影レンズ１０３はフォーカスレンズを含むレンズであり、シャッター１０１は絞り機能を備えている。撮像部２２は光学像を電気信号に変換するＣＣＤやＣＭＯＳ素子等で構成されている。Ａ／Ｄ変換器２３は、アナログ信号をデジタル信号に変換するための回路であり、撮像部２２から出力されるアナログ信号をデジタル信号に変換するために用いられる。バリア１０２は、デジタルカメラ１００の、撮影レンズ１０３を含む撮像ユニットを覆うことにより、撮影レンズ１０３、シャッター１０１、及び撮像部２２を含む撮像系の汚れや破損を防止する。
【００１１】
画像処理部２４は、Ａ／Ｄ変換器２３から出力されるデータ、又は、メモリ制御部１５から出力されるデータに対し所定の画素補間、縮小といったリサイズ処理や色変換処理を行う。また、画像処理部２４では、撮像して得られた画像データを用いて所定の演算処理が行われ、得られた演算結果に基づいてシステム制御部５０が露光制御及び測距制御を行う。これにより、ＴＴＬ（スルー・ザ・レンズ）方式のＡＦ（オートフォーカス）処理、ＡＥ（自動露出）処理、ＥＦ（フラッシュプリ発光）処理が行われる。画像処理部２４では更に、撮像して得られた画像データを用いて所定の演算処理を行い、得られた演算結果に基づいてＴＴＬ方式のＡＷＢ（オートホワイトバランス）処理も行っている。
【００１２】
Ａ／Ｄ変換器２３から出力される出力データは、画像処理部２４及びメモリ制御部１５を介して、或いは、メモリ制御部１５を介してメモリ３２に直接書き込まれる。メモリ３２は、撮像部２２によって得られ、Ａ／Ｄ変換器２３によりデジタルデータに変換された画像データや、表示部２８に表示するための画像データを格納する。メモリ３２は、所定枚数の静止画像や所定時間の動画像および音声のデータを格納するのに十分な記憶容量を備えている。また、メモリ３２は画像表示用のメモリ（ビデオメモリ）を兼ねている。
【００１３】
Ｄ／Ａ変換器１３は、メモリ３２に格納されている画像表示用のデータをアナログ信号に変換して表示部２８に供給する。こうして、メモリ３２に書き込まれた表示用の画像データはＤ／Ａ変換器１３を介して表示部２８により表示される。表示部２８は、ＬＣＤ等の表示器上に、Ｄ／Ａ変換器１３から出力されたアナログ信号に応じた表示を行う。
【００１４】
不揮発性メモリ５６は、電気的に消去・記録可能なメモリであり、例えばＥＥＰＲＯＭ等が用いられる。不揮発性メモリ５６には、システム制御部５０の動作用の定数、プログラム等が記憶されている。この不揮発性メモリ５６に記憶されているプログラムとは、本実施形態にて後述する各種フローチャートを実行するためのプログラムのことである。
【００１５】
システム制御部５０は、デジタルカメラ１００全体を制御する。前述した不揮発性メモリ５６に記憶されたプログラムを実行することにより、後述する本実施形態の各処理を実現する。また、システム制御部５０はメモリ３２、Ｄ／Ａ変換器１３、表示部２８等を制御することにより表示制御も行う。システムメモリ５２は例えばＲＡＭが用いられ、システムメモリ５２には、システム制御部５０の動作用の定数、変数、不揮発性メモリ５６から読み出されたプログラム等を展開する。コーデック部３３は、メモリ３２に格納された画像データを圧縮符号化するとともに、記録媒体１５０に記録された圧縮画像データを復号する。
【００１６】
モード切替スイッチ６０、シャッターボタン６１、第１シャッタースイッチ６２、第２シャッタースイッチ６４、及び操作部７０はシステム制御部５０に各種の動作指示を入力するための操作手段である。モード切替スイッチ６０は、システム制御部５０の動作モードを静止画記録モード、動画記録モード、再生モード等のいずれかに切り替える。
【００１７】
シャッターボタン６１は撮影指示を行うための操作手段であり、第１シャッタースイッチ６２および第２シャッタースイッチによって構成されている。第１シャッタースイッチ６２は、デジタルカメラ１００に設けられたシャッターボタン６１の操作途中、いわゆる半押し（撮影準備指示）でＯＮとなり第１シャッタースイッチ信号ＳＷ１を発生する。第１シャッタースイッチ信号ＳＷ１がシステム制御部５０に入力されると、ＡＦ（オートフォーカス）処理、ＡＥ（自動露出）処理、ＡＷＢ（オートホワイトバランス）処理、ＥＦ（フラッシュプリ発光）処理等の動作が開始される。
【００１８】
第２シャッタースイッチ６４は、シャッターボタン６１の操作完了、いわゆる全押し（撮影指示）でＯＮとなり、第２シャッタースイッチ信号ＳＷ２を発生する。第２シャッタースイッチ信号ＳＷ２がシステム制御部５０に入力されると、撮像部２２からの信号読み出しから記録媒体１５０に画像データを書き込むまでの一連の撮影処理の動作が開始される。
【００１９】
操作部７０の各操作部材は、表示部２８に表示される種々の機能アイコンを選択操作することなどにより、場面ごとに適宜機能が割り当てられ、各種機能ボタンとして作用する。機能ボタンとしては、例えば終了ボタン、戻るボタン、画像送りボタン、ジャンプボタン、絞込みボタン、属性変更ボタン等がある。例えば、メニューボタンが押されると各種の設定可能なメニュー画面が表示部２８に表示される。利用者は、表示部２８に表示されたメニュー画面と、４方向ボタンやＳＥＴボタンとを用いて直感的に各種設定を行うことができる。
【００２０】
電源制御部８０は、電池検出回路、ＤＣ−ＤＣコンバータ、通電するブロックを切り替えるスイッチ回路等により構成され、電池の装着の有無、電池の種類、電池残量の検出を行う。また、電源制御部８０は、その検出結果及びシステム制御部５０の指示に基づいてＤＣ−ＤＣコンバータを制御し、必要な電圧を必要な期間、記録媒体１５０を含む各部へ供給する。
【００２１】
電源部３０は、アルカリ電池やリチウム電池等の一次電池やＮｉＣｄ電池やＮｉＭＨ電池、Ｌｉ電池等の二次電池、ＡＣアダプター等からなる。インターフェース１８はメモリカードやハードディスク等の記録媒体１５０と接続するためのインターフェースである。記録媒体１５０は、メモリカード等の記録媒体であり、半導体メモリや磁気ディスク等から構成される。電源スイッチ７２は、電源オン、電源オフを切り替えるためのスイッチである。
【００２２】
顔検出部１０４は、メモリ３２から画像データを読み出して被写体の顔情報を検出する。人体検出部１０５は、メモリ３２から画像データを読み出して被写体の人体情報を検出する。また、本実施形態に係るデジタルカメラ１００では、中央１点ＡＦや顔ＡＦを用いた撮影が可能である。中央１点ＡＦとは、撮影画面内の中央位置１点に対してＡＦを行うことである。顔ＡＦとは顔検出機能によって検出された撮影画面内の顔に対してＡＦを行うことである。
【００２３】
次に、システム制御部５０の制御により行われる顔検出処理について説明する。顔検出部１０４は、当該画像データに水平方向バンドパスフィルタを作用させ、さらに、処理された画像データに垂直方向バンドパスフィルタを作用させる。これらの水平方向及び垂直方向のバンドパスフィルタにより、画像データからエッジ成分が検出される。
【００２４】
その後、顔検出部１０４は、検出されたエッジ成分に関してパターンマッチングを行い、目、鼻、口、及び耳の候補群を抽出する。そして、顔検出部１０４は、抽出された目の候補群の中から、予め設定された条件（例えば２つの目の距離、傾き等）を満たすものを目の対と判断し、目の対があるもののみ目の候補群として絞り込む。そして、顔検出部１０４は、絞り込まれた目の候補群とそれに対応する顔を形成する他のパーツ（鼻、口、耳）とを対応付け、また、予め設定した非顔条件フィルタを通すことにより顔を検出する。顔検出部１０４は、顔の検出結果に応じて顔情報を出力し、処理を終了する。このとき、顔情報をシステムメモリ５２に記憶する。顔情報については後述する。
【００２５】
続いて、システム制御部５０の制御により行われる人体検出処理について説明する。システム制御部５０は、人体検出の対象となる画像データを人体検出部１０５に送る。そして、人体検出部１０５は、当該画像データに水平方向バンドパスフィルタを作用させ、さらに、処理された画像データに垂直方向バンドパスフィルタを作用させる。これらの水平方向及び垂直方向のバンドパスフィルタにより、画像データよりエッジ成分が検出される。
【００２６】
その後、人体検出部１０５は、検出されたエッジ成分に関してパターンマッチングを行い、人体の輪郭形状に相当するか否かを判断することにより、人体を検出する。人体検出部１０５は、人体の検出結果に応じて人体情報を出力し、処理を終了する。このとき、人体情報をシステムメモリ５２に記憶する。人体情報については後述する。
【００２７】
次に、顔情報について説明する。図３は、顔検出部１０４によって検出される顔情報の一例を示す図である。図３において、顔位置情報３０１は、システム制御部５０によって顔検出部１０４に送られた顔検出対象の画像データにおける、顔の始点となる水平方向および垂直方向の画素情報である。顔水平サイズ情報３０２は、システム制御部５０によって顔検出部１０４に送られた顔検出対象の画像データにおける、顔の水平方向の大きさを示す画素情報である。顔垂直サイズ情報３０３は、システム制御部５０によって顔検出部１０４に送られた顔検出対象の画像データにおける、顔の垂直方向の大きさを示す画素情報である。
【００２８】
顔ヨー方向角度３０４は、顔の水平方向の回転を示す角度情報である。顔ロール方向角度３０５は、顔の垂直方向の回転を示す角度情報である。顔ピッチ方向角度３０６は、顔の傾きを示す角度情報である。
【００２９】
続いて、人体情報について説明する。図４は、人体検出部１０５によって検出される人体情報の一例を示す図である。図４において、人体位置情報４１１は、システム制御部５０によって人体検出部１０５に送られた人体検出対象の画像データにおける、人体の始点となる水平方向および垂直方向の画素情報である。人体水平サイズ情報４１２は、人体検出対象の画像データにおける、人体の水平方向の大きさを示す画素情報であり、人体垂直サイズ情報４１３は、人体検出対象の画像データにおける、人体の垂直方向の大きさを示す画素情報である。
【００３０】
人体ヨー方向角度４１４は、人体の水平方向の回転を示す角度情報であり、人体ロール方向角度４１５は、人体の垂直方向の回転を示す角度情報である。また、人体ピッチ方向角度４１６は、人体の傾きを示す角度情報である。人体検出角度情報４２０は、人体ヨー方向角度４１４、人体ロール方向角度４１５、及び人体ピッチ方向角度４１６の集合である。
【００３１】
次に、画像処理部２４の詳細について、図２を参照しながら説明する。
図２は、画像処理部２４の中の色信号などを抽出する構成例を示すブロック図である。
図２において、画像処理部２４は、輝度・色信号生成部２００、ＷＢ増幅部２０１、色γ処理部２０２、色差信号生成部２０３、色補正部２０４、輝度γ処理部２０５、輪郭強調処理部２０６、及び色空間変換処理部２０７を備えている。
【００３２】
以下、図２を参照しながら画像処理部２４における処理について説明する。まず、Ａ／Ｄ変換器２３から画像処理部２４の輝度・色信号生成部２００にベイヤー配列の画像データが入力される。輝度・色信号生成部２００は、入力されたベイヤーＲＧＢの画像信号から全画素に対応した輝度信号Ｙおよび色信号Ｒ、Ｇ、Ｂを生成し、生成した色信号Ｒ、Ｇ、ＢをＷＢ増幅部２０１へ出力し、輝度信号Ｙを輝度γ処理部２０５へ出力する。また、輝度・色信号生成部２００は、ＲＧＢの画像信号を、メモリ制御部１５を介してメモリ３２に出力する。さらに、輝度・色信号生成部２００は、色空間変換処理部２０７にもＲＧＢの画像信号を出力する。
【００３３】
色空間変換処理部２０７は、ＲＧＢの画像信号を色空間信号Ｃｘ、Ｃｙに変換し、生成した画像信号（Ｃｘ，Ｃｙ）をメモリ３２に出力する。ここで、色空間信号Ｃｘ、Ｃｙは下記の式（１）から算出される。
Ｃｘ＝（Ｒ−Ｂ）／Ｙ
Ｃｙ＝（Ｒ＋Ｂ−２Ｇ）／Ｙ      ・・・式（１）
Ｙ＝（Ｒ＋Ｇ＋Ｂ）／２
【００３４】
ＷＢ増幅部２０１は、後述する処理によりシステム制御部５０が算出するホワイトバランスゲイン値に基づき、ＲＧＢの色信号Ｒ、Ｇ、Ｂにゲインをかけ、ホワイトバランスを調整する。色γ処理部２０２は、色信号Ｒ、Ｇ、Ｂにガンマ補正を行う。色差信号生成部２０３は、色信号Ｒ、Ｇ、Ｂから色差信号Ｒ−Ｙ、Ｂ−Ｙを生成し、色補正部２０４に出力する。そして、色補正部２０４は、色差信号Ｒ−Ｙ、Ｂ−Ｙに対してゲインを加えるなどして色相や彩度を調整し、調整後の色差信号Ｒ−Ｙ、Ｂ−Ｙをメモリ３２に出力する。
【００３５】
一方、輝度γ処理部２０５は、輝度信号Ｙに対してガンマ補正を行い、輪郭強調処理部２０６へ出力する。輪郭強調処理部２０６は、輝度信号に対して輪郭強調処理を行い、処理後の輝度信号Ｙをメモリ３２に出力する。以上の手順によりメモリ３２に出力された輝度信号Ｙ及び色差信号Ｒ−Ｙ、Ｂ−Ｙは、コーデック部３３によって圧縮符号化され、記録媒体１５０に画像データとして記録される。
【００３６】
（顔検出処理及び人体検出処理により人物が検出されなかった場合のゲイン算出処理）
次に、システム制御部５０により、画像処理部２４の輝度・色信号生成部２００から出力された画像信号を解析し、光源色の成分を推定してホワイトバランスゲインを算出する処理について詳細に説明する。
図５は、システム制御部５０によりホワイトバランスゲインを算出する処理手順の一例を示すフローチャートである。なお、図５に示す処理を行う前に、システム制御部５０によりメモリ３２からＲＧＢの画像信号および色空間信号Ｃｘ、Ｃｙを取得し、システムメモリ５２に展開されているものとする。
【００３７】
まず、図５のステップＳ５０１において、鏡面反射成分を抽出する。ここで、鏡面反射成分を抽出する詳細な処理手順について図６のフローチャートを参照しながら説明する。
【００３８】
図６は、図５のステップＳ５０１における鏡面反射成分を抽出する詳細な処理手順の一例を示すフローチャートである。
図６のステップＳ６０１においては、ステップＳ６０２〜Ｓ６０８の処理に関して、入力画像の全画素に対して、処理対象画素をラスタスキャンしながらループ処理を行う。
【００３９】
まず、ステップＳ６０２において、ラスタスキャンした処理対象の画素が飽和していないか否かを確認する。具体的にはＲＧＢの各成分の何れかが所定の閾値よりも大きいか（飽和しているか）否かを確認する。この確認の結果、ＲＧＢ何れの成分も閾値以下である場合はステップＳ６０３に進む。一方、ＲＧＢのうち一つ以上の成分が閾値よりも大きい場合は、当画素の処理をスキップして次の画素の処理に進む。
【００４０】
続いてステップＳ６０３において、処理対象画素と想定色との差分を算出する。ここで想定色とは、例えば顔の頬部分の画像信号である場合には肌色（Ｒｓ，Ｇｓ，Ｂｓ）である。以下、肌色を想定色とした例について説明する。ステップＳ６０３では、処理対象画素との差分値（subRs，subGs，subBs）を算出する。
【００４１】
次に、ステップＳ６０４において、ステップＳ６０３で算出した差分値（subRs，subGs，subBs）の大きさＳｓが所定の閾値Ｔ１よりも小さいか否かを判定する。差分値の大きさＳｓについては、以下の式（２）から算出する。この判定の結果、差分値の大きさＳｓが閾値Ｔ１よりも小さい場合はステップＳ６０５に進み、閾値以上（閾値Ｔ１以上）である場合は当画素の処理をスキップして次の画素の処理に進む。
【００４２】
【数１】
2015198438.tif 000003
【００４３】
次のステップＳ６０５においては、処理対象画素と比較画素との差分を算出する。ここで、処理対象画素および比較画素について、図７（ａ）を参照しながら説明する。図７（ａ）は、入力画像７００の一部の画像７０１を拡大した図である。なお、画像７０１におけるメッシュは画素の境界を示している。ステップＳ６０１〜Ｓ６０８のループ処理では、画像７０１中の処理対象画素７０２を順次ラスタスキャンしながら処理を行う。画素７０３〜７０５は比較画素を示しており、本実施形態では、処理対象画素７０２から所定の位置だけ離れた位置の画素を比較画素とする。
【００４４】
ステップＳ６０５では、例えば処理対象画素７０２と比較画素７０３との差分を算出する。具体的には、処理対象画素７０２のＲＧＢ値（Ｒ１，Ｇ１，Ｂ１）と比較画素７０３のＲＧＢ値（Ｒ２，Ｇ２，Ｂ２）との差分値（subR，subG，subB）を算出する。
【００４５】
次のステップＳ６０６においては、ステップＳ６０５で算出した差分値（subR，subG，subB）の大きさＳが所定の閾値Ｔ２よりも大きいか否かを判定する。差分値の大きさＳについては、以下の式（３）から算出する。この判定の結果、差分値Ｓが閾値Ｔ２よりも大きい場合はステップＳ６０７に進み、閾値Ｔ２以下である場合はステップＳ６０８に進む。
【００４６】
【数２】
2015198438.tif 000004
【００４７】
ステップＳ６０７においては、処理対象画素と比較画素との差分値の大きさＳをブロック毎に、システムメモリ５２の差分値合計用バッファに記録（加算）する。ここでブロックとは、図７（ａ）に示すような８×８のメッシュで分割されたブロックを指す。
【００４８】
また、図８には、ブロックごとの差分合計値及び差分カウントの一例を示す。図８に示すように、各画素に関して算出された差分値の大きさＳを処理対象画素が属するブロック毎に差分合計値に加算し、ブロック毎の差分合計値sumSを得る。また、差分合計値sumSに加算した画素数のカウントとして、差分カウント値countSを算出する。差分カウント値countSは差分合計値sumSに差分値を加算した場合に１を加算して生成する。この差分カウント値countSについてもブロック単位で算出する。
【００４９】
なお、差分値の大きさＳが閾値範囲内（＞Ｔ２）の場合のみ差分値の大きさを格納する理由は、より光源の鏡面反射成分を示す差分値だけを抽出するためである。これについて、図７（ｂ）および図９を参照しながらより具体的に説明する。
【００５０】
図７（ｂ）は、鏡面反射を含む被写体の一例を示す図である。図７（ｂ）において、処理対象画素７０６、及び比較画素７０７〜７０９が示されている。ここで、処理対象画素７０６および比較画素７０８は拡散反射成分が支配的な画素であり、比較画素７０７、７０９は鏡面反射成分と拡散反射成分とを含んでいる画素であるものとする。
【００５１】
図９（ａ）は、図７（ｂ）に示す画素の関係をＲＧＢ色空間で示した図である。このＲＧＢ空間において、ある画素のＲＧＢ値はベクトルで表すことができる。ベクトル９０１は、図７（ｂ）の処理対象画素７０６のような、物体色（拡散反射成分）を示しており、ベクトル９０２は、図７（ｂ）の比較画素７０７のような物体色（拡散反射成分）＋光源色（鏡面反射成分）を示している。ここで、得たい光源色のベクトル９０３で表される鏡面反射成分は、ベクトル９０２とベクトル９０１との差分をとることによって得ることができる。図７（ｂ）に示す例では、処理対象画素７０６と比較画素７０７、７０９との差分をとることによって光源色のベクトルを得ることが可能である。
【００５２】
一方、図７（ｂ）に示す処理対象画素７０６及び比較画素７０８はどちらも拡散反射成分が支配的であり、いずれもベクトル９０１に近い成分となる。図９（ｂ）において、ベクトル９１１が処理対象画素７０６に対応しており、ベクトル９１２が比較画素７０８に対応しているものとする。これらの差分をとると、差分値は非常に小さい値となる。同様に比較画素７０７、７０９の場合を考えると、どちらも拡散反射成分と鏡面反射成分とを持っており、いずれもベクトル９０２に近い成分となる。これらの差分をとっても差分値は非常に小さい値となる。
【００５３】
一方、比較画素７０７に対応するベクトルを図９（ｂ）のベクトル９１３とすると、ベクトル９１１とベクトル９１３との差分は大きくなる。この差分は光源色の成分に近いベクトルを持っており、抽出したい差分である。
【００５４】
このように、画素間の差分値が非常に小さくなるような場合は、同じ反射成分しか持っていない場合が多いと考えられ、これらの差分値は光源の特性を表していないため、本実施形態では使用しないようにする。このため前述のように閾値Ｔ２を設け、差分値の大きさＳが閾値Ｔ２＜Ｓを満たしているときのみ、差分値の大きさＳをシステムメモリ５２の差分合計値sumSに加算する。差分合計値は８×８ブロック毎に保持しており、１番目のブロックの差分合計値をsumS1、２番目のブロックの差分合計値をsumS2・・・、６４番目のブロックの差分合計値をsumS64とする。
【００５５】
図６の説明に戻り、ステップＳ６０８においては、全ての比較画素についてＳ６０５〜Ｓ６０７の処理を行ったか否かを確認する。図７に示したように、本実施形態では１つの処理対象画素７０２に対して３つの比較画素７０３〜７０５が存在する。そのため、全ての比較画素に対して処理を行うまで繰り返す。以上のようにステップＳ６０２からステップＳ６０８までの処理を、処理対象画素をラスタスキャンしながら全画素に対して行う。
【００５６】
次に、ステップＳ６０９において、８×８＝６４個の全ブロックに対するループ処理を開始する。まず、ステップＳ６１０において、処理対象のブロックの差分カウント値countSを参照し、差分カウント値countSが所定の閾値Ｔ３より大きいか否かを判定する。この判定の結果、差分カウント値countSが閾値Ｔ３より大きい場合は、処理対象ブロックが鏡面反射を含んでいると判断できるため、ステップＳ６１１に進む。一方、差分カウント値countSが閾値Ｔ３以下の場合は、鏡面反射成分を含んでいないブロックであると判断できるため、処理をスキップして次のブロックの処理に移行する。
【００５７】
次に、ステップＳ６１１においては、ブロック毎の平均差分値（blkR，blkG，blkB）を算出する。具体的には、差分合計値sumSの値をＲＧＢ毎に差分カウント値countSで除算するによってブロック単位の平均差分値（blkR，blkG，blkB）が算出される。
【００５８】
続いてステップＳ６１２においては、ステップＳ６１１で算出したブロック毎の平均差分値（blkR，blkG，blkB）をブロック合計値（sumBlkR，sumBlkG，sumBlkB）に加算する。ブロック合計値は、後述する画像全体の平均差分値を算出するために利用される値である。そして、ステップＳ６１３において、鏡面反射ブロック数blkCountSに１を加算する。ここで、鏡面反射ブロック数blkCountSとは、入力画像全体における鏡面反射成分を持つブロックの数を示している。以上のように８×８＝６４個の全ブロックに対して処理が終了するまで前述のステップＳ６１０〜Ｓ６１３の処理を繰り返す。
【００５９】
次に、ステップＳ６１４においては、入力画像全体の平均差分値（aveR，aveG，aveB）を算出する。具体的には、前述のブロック合計値（sumBlkR，sumBlkG，sumBlkB）を鏡面反射ブロック数blkCountSで除算することによって算出される。この入力画像全体の平均差分値（aveR，aveG，aveB）は、鏡面反射成分の平均値を示している。
【００６０】
図５の説明に戻り、次のステップＳ５０２においては、被写体の明るさ（ＥＶ値）に基づいて白抽出範囲（白（無彩色）と見なす範囲）を決定する。図１０は、ＣｘＣｙ空間における白抽出範囲の一例を示す図であり、特に図１０（ａ）及び図１０（ｂ）は、明るさに基づいた白抽出範囲の一例を示す図である。
【００６１】
図１０（ａ）における領域１００１は被写体が暗い場合の白抽出範囲を示している。被写体が暗い場合は、白熱灯や蛍光灯などの人工照明、あるいは日陰など様々な色温度の光源が想定されるため、白抽出範囲を広く設定する。一方、図１０（ｂ）における領域１００２は、被写体が明るい場合の白抽出範囲を示している。被写体が明るい場合は、日中の太陽光などを含む可能性が高くなるため、領域１００２で示すような日中太陽光付近に限定した狭い範囲に白抽出範囲を設定する。ステップＳ５０２では、被写体の明るさに基づいて、図１０（ａ）または図１０（ｂ）に示す白抽出範囲に切り替える処理を行う。なお、本実施形態では、被写体の明るさに基づいて２段階に白抽出範囲を切り替えているが、３段階以上の多段階で切り替えてもよい。
【００６２】
次に、ステップＳ５０３においては、被写体が鏡面反射成分を含むか否かを判定する。具体的には、図６のステップＳ６１３において算出した鏡面反射成分の鏡面反射ブロック数blkCountSが閾値Ｔ４よりも大きいか否かを判定する。この判定の結果、閾値Ｔ４よりも大きい場合は鏡面反射成分を所定面積よりも多く含むと判定し、ステップＳ５０４に進む。一方、ステップＳ５０３の判定の結果、閾値Ｔ４以下の場合はステップＳ５０５へ進む。
【００６３】
ステップＳ５０４においては、鏡面反射成分の色に基づいてステップＳ５０２で決定した白抽出範囲を補正する。この処理について、図１０（ｃ）を参照しながら説明する。図１０（ｃ）は、白抽出範囲と鏡面反射色の状態とを示した図である。以下、ステップＳ５０２で図１０（ａ）に示す白抽出範囲に決定した場合を例に説明する。被写体が暗い場合、前述の通り白抽出範囲は広い領域１００１の範囲となる。
【００６４】
この処理では、図６のステップＳ６１４において算出した鏡面反射成分の平均値（aveR，aveG，aveB）に基づいて白抽出範囲の領域１００１を補正する。まず、鏡面反射成分の平均値（aveR，aveG，aveB）をＣｘ，Ｃｙ空間に変形する。次に、図１０（ｃ）に示すように、Ｃｘ、Ｃｙ空間上の鏡面反射成分の平均値１００３を基準にＣｘ方向に±ｄ１の距離、及びＣｙ方向に±ｄ２の距離をとった範囲を鏡面反射成分に基づく白抽出範囲の領域１００４とする。そして、明るさに基づいて算出した白抽出範囲の領域１００１と鏡面反射成分に基づく白抽出範囲の領域１００４との両方を満たす範囲を最終的な白抽出範囲とする。図１０（ｃ）に示す例では、鏡面反射成分に基づく白抽出範囲の領域１００４が、明るさに基づく白抽出範囲の領域１００１に全て含まれるため、領域１００４を最終的な白抽出範囲として出力する。
【００６５】
次に、ステップＳ５０５においては、白抽出処理を行う。この処理では、まず、入力画像の全ての画素に対して、その画素の色が白抽出範囲の領域１００４に入るか否かを判定する。そして、白抽出範囲に入ると判定した画素の画素値（Ｃｘ，Ｃｙ）を、白抽出信号合計値に加算する。また、このとき、白抽出範囲に入った画素の数を白画素カウント値としてカウントする。
【００６６】
ステップＳ５０６においては、白抽出した結果に基づいてホワイトバランスゲインを算出する。具体的には、まず、前述の白抽出信号合計値を白画素カウント値で除算する。この処理により、例えば白抽出範囲の領域１００４に含まれる画素の平均値（aveCx，aveCy）を算出することになる。図１０（ｃ）に示す平均値１００５は、Ｃｘ，Ｃｙの平均値の例を示している。そして、算出した平均値（aveCx，aveCy）をＲＧＢ値に変換する。このＲＧＢ値を白抽出平均ＲＧＢ値（wR,wG,wB）とする。
【００６７】
最後に、白抽出平均ＲＧＢ値（wR,wG,wB）からホワイトバランスゲインを算出する。ここで、Ｇのホワイトバランスゲインを固定とすると、Ｒ及びＢのホワイトバランスゲイン（wR-Gain, wB-Gain）は、以下の式（４）により算出される。
wR-Gain＝wG／wR
wB-Gain＝wG／wB            ・・・（４）
【００６８】
次に、ステップＳ５０７においては、算出したホワイトバランスゲインを、図２のＷＢ増幅部２０１に設定する。これにより、ＷＢ増幅部２０１は、設定されたホワイトバランスゲインに基づいて、入力されたＲＧＢ値の増幅処理を行う。
【００６９】
（顔検出処理により顔が検出された場合の候補領域）
顔検出部１０４により顔が検出された場合には、画像信号全体ではなく、顔検出結果を用いて鏡面反射成分を抽出する。次に、顔検出結果を用いて鏡面反射成分を抽出する際の候補領域について説明する。
【００７０】
図１１は、顔が検出された場合の鏡面反射成分を抽出する候補領域を説明するための図である。
図１１において、顔検出部１０４により入力画像１１００から顔領域１１０１が検出されている。候補領域１１０２〜１１０６は、図３に示したような顔検出結果から得られた顔領域の位置、サイズ、角度、及び目、口など器官の位置などの情報を基に決定される。候補領域１１０３、１１０４は、目の位置、及び顔の角度から求められ、候補領域１１０５は、鼻の位置、または目、口の位置と顔の角度とから相対的に求められる。また、候補領域１１０６は、顔領域の位置及びサイズから相対的に求められ、候補領域１１０７、１１０８は目の位置及びサイズから求められる。
【００７１】
これらの候補領域１１０２〜１１０８を、前述した複数のブロック領域として適用することにより鏡面反射成分を同様に求めることができる。図１１に示す例では、７つの候補領域として説明したが、これらの領域に限定されるものでは無く、鏡面反射成分を含むと予測できる他の候補領域を定義し、より多くの候補領域を扱う場合も同様に適用することができる。
【００７２】
以上のように、顔検出結果から得られた顔領域の位置、サイズ、および目、口など器官の位置を基に候補領域を決定し、これに基づいて鏡面反射成分を求めることができる。
【００７３】
（人体検出処理により人体が検出された場合の候補領域）
人体検出部１０５により人体が検出された場合には、画像信号全体ではなく、人体検出結果を用いて鏡面反射成分を抽出する。次に、人体検出結果を用いて鏡面反射成分を抽出する際の候補領域について説明する。
【００７４】
図１２は、人体が検出された場合の鏡面反射成分を抽出する候補領域を説明するための図である。
図１２において、人体検出部１０５により入力画像１２００から人体領域１２０１が検出されている。候補領域１２０２〜１２０４は、図４に示したような人体検出結果から得られた人体領域の位置、サイズ、角度、頭部や肩などの部位の位置及び部位のサイズ情報を基に決定される。候補領域１２０２は人体の頭部の位置、サイズ、及び角度から相対的に求められ、候補領域１２０３、１２０４は人体領域のサイズ、角度、及び肩の位置から相対的に求められる。
【００７５】
これらの候補領域１２０２〜１２０４を、前述した複数のブロック領域として適用することにより鏡面反射成分を同様に求めることができる。図１２に示す例では、３つの候補領域を例として説明したが、これらの領域に限定されるものでは無く、鏡面反射成分を含むと予測できる他の候補領域を定義し、より多くの候補領域を扱う場合も同様に適用することができる。
【００７６】
以上のように、人体検出結果から得られた人体領域の位置、サイズ、及び頭部、肩など器官の位置を基に候補領域を決定し、これに基づいて鏡面反射成分を求めることができる。さらに、顔検出処理と人体検出処理との両方を行った場合には、顔検出結果から決定される候補領域１１０２〜１１０８、及び人体検出結果から決定される候補領域１２０２〜１２０４をブロック領域として適用してもよい。さらに、その他の多くの候補領域の場合も同様に適用してもよい。
【００７７】
（候補領域から鏡面反射成分を求める領域の選択）
ここで、顔検出処理または人体検出処理によって求められた候補領域をそのまま鏡面反射成分を抽出する際の複数のブロック領域として適用せず、さらに領域を絞り込むようにしてもよい。次に、前述した候補領域をグループ分けし、鏡面反射成分を求める領域（以下、抽出用領域）を選択する場合について、図１３を参照しながら説明する。
【００７８】
図１３において、候補領域１３０１〜１３０４は第１の候補領域グループに属し、候補領域１３０５〜１３０８は第２の候補領域グループに属している。また、候補領域１３０９〜１３１１は第３の候補領域グループに属し、候補領域１３１２〜１３１４は第４の候補領域グループに属している。これらのグループは推定光源方向が同じ場合によりよく鏡面反射する領域ごとに同一グループとしており、予めグループ分けしておくものとする。また、候補領域１３０１〜１３１４は、顔の位置、サイズ、および顔の角度（例えば角度（θｆｐ）１３１５）といった情報から相対的に定義されている。
【００７９】
図１４は、システム制御部５０により、候補領域グループのうち、どの候補領域グループに属する候補領域を抽出用領域とするかを選択する処理手順の一例を示すフローチャートである。
まず、ステップＳ１４０１において、全候補領域グループの候補選択フラグＧｒＦｌａｇＮを０（Ｎはグループ番号）に初期化する。そして、ステップＳ１４０２において、入力画像がストロボ撮影によって撮影された画像であるか否かを判定する。具体的には、入力画像を撮影するときに、システム制御部５０の制御によりストロボを発光したか否かを判別することにより、その入力画像がストロボ撮影によるものかどうかを判定することができる。
【００８０】
この判定の結果、入力画像がストロボ撮影である場合は、ステップＳ１４０３に進み、予め定義された候補領域グループの候補選択フラグＧｒＦｌａｇＮを１に設定する。図１３に示す例では、第２の候補領域グループの候補選択フラグＧｒＦｌａg２を１とする。すなわち、図１３に示す候補領域１３０５〜１３０８は、ストロボ撮影では鏡面反射の候補領域に適していると判断する。一方、ステップＳ１４０２の判定の結果、入力画像がストロボ撮影でない場合は、ステップＳ１４０４に進む。
【００８１】
次に、ステップＳ１４０４においては、後述するステップＳ１４０５〜Ｓ１４０８の処理に関して全ての候補領域グループについてループ処理を行う。また、次のステップＳ１４０５においては、後述するステップＳ１４０６〜Ｓ１４０７の処理に関して、処理対象となる候補領域グループに属する全ての候補領域についてループ処理を行う。
【００８２】
まず、ステップＳ１４０６においては、候補領域内の輝度ヒストグラムを取得する。具体的には、輝度・色信号生成部２００によって生成された候補領域内の全画素の輝度信号Ｙから輝度ヒストグラムを生成する。次に、ステップＳ１４０７において、輝度ヒストグラムの結果から輝度ヒストグラムにおけるピークの輝度Ｙｐを求める。以上の処理を候補領域グループに属する全ての候補領域について行う。
【００８３】
図１５は、輝度ヒストグラムの一例を示す図である。ここで、図１５（ａ）及び図１５（ｂ）は、それぞれ２つの違う候補領域の輝度ヒストグラムを示している。図１５（ａ）における輝度ヒストグラムのピークの輝度値はＹｐ１であり、図１５（ｂ）における輝度ヒストグラムのピークの輝度値はＹｐ２である。図１５に示す例では、Ｙｐ１＞Ｙｐ２であり、図１５（ａ）の候補領域の方が図１５（ｂ）の候補領域よりも輝度ヒストグラムのピークの輝度値が大きい。
【００８４】
次に、ステップＳ１４０８において候補領域グループ内の全候補領域の輝度ヒストグラムのピークの平均輝度値Ｙｐａｖｅを求める。以上の処理を全ての候補領域グループについて行う。
【００８５】
次に、ステップＳ１４０９においては、ステップＳ１４０８で候補領域グループごとに求めた候補領域グループ内のピークの平均輝度値Ｙｐａｖｅを比較する。そして、比較した中で最大の平均輝度値Ｙｐａｖｅを有する候補領域グループの候補選択フラグをＧｒＦｌａgＮ＝１と設定する。そして、ステップＳ１４１０において、ＧｒＦｌａgＮ＝１となった候補領域グループ内の全候補領域を、鏡面反射成分の抽出用領域として選択する。
【００８６】
なお、図１４に示した処理手順では、輝度ヒストグラムに基づいて抽出用領域を選択したが、各候補領域グループの候補領域ごとに輝度平均を求め、この輝度平均に基づいて候補領域を選択してもよい。また、図１３に示した例では、顔検出結果から顔を中心とした候補領域について説明したが、人体検出結果から人体を中心とした候補領域についても同様な処理を行うことができる。
【００８７】
（顔検出処理または人体検出処理により人物が検出された場合のゲイン算出処理）
次に、前述した候補領域または抽出用領域に基づいてホワイトバランスゲインを算出する処理について、図１６のフローチャートを参照しながら説明する。
図１６は、システム制御部５０により候補領域または抽出用領域に基づいてホワイトバランスゲインを算出する処理手順の一例を示すフローチャートである。なお、図１６に示す処理手順では顔検出処理が行われた場合を例としているが、人体検出処理でも同様に適用することができる。
【００８８】
まず、図１６のステップＳ１６０１において、鏡面反射成分を抽出する。この処理の基本的な流れは、図６に示した手順と同様である。但し、図６に示した手順と異なる点は、入力画像の全画素を対象とするのではなく、図１１または図１２に示したすべての候補領域の中の全画素を対象とする点である。また、ステップＳ６０７、Ｓ６０９〜Ｓ６１４において、ブロック単位ではなく、候補領域の単位で処理を行う。また、顔検出処理または人体検出処理によって求められた候補領域ではなく、図１４に示した手順によって選択された抽出用領域を適用してもよい。
【００８９】
次のステップＳ１６０２及びＳ１６０３においては、それぞれ図５のステップＳ５０２及びＳ５０３と同様である。ステップＳ１６０３の判定の結果、被写体が鏡面反射成分を含む場合はステップＳ１６０４に進み、鏡面反射成分を含まない場合はステップＳ１６０６へ進む。
【００９０】
ステップＳ１６０４においては、顔検出部１０４による顔検出結果から顔のサイズを取得する。そして、ステップＳ１６０５において、取得した顔のサイズに基づいて白抽出重みを求める。ここで、白抽出重みについて図１７を参照しながら説明する。
【００９１】
図１７（ａ）は、ＣｘＣｙ空間における鏡面反射成分の平均値（aveR，aveG，aveB）を説明するための図であり、図１７（ｂ）は、Ｃｘ軸に対する重みを説明するための図である。図１７（ａ）において、領域１７０１はステップＳ１６０２で決定した白抽出範囲を示している。１７０２は、図６のステップＳ６１４において算出した鏡面反射成分の平均値（aveR，aveG，aveB）をＣｘＣｙ空間に変換した値である。
【００９２】
ステップＳ１６０５では、鏡面反射成分の平均値（aveR，aveG，aveB）をＣｘＣｙ空間上に変換し、ステップＳ１６０４で取得した顔のサイズに基づいて白抽出重みを決定する。具体的には、図１７（ｂ）の線１７０４〜１７０６に示すように、鏡面反射成分の平均値１７０２のＣｘ値付近では重みを高く（２．０〜３．０）設定するように制御する。そして、鏡面反射成分の平均値１７０２からＣｘ方向に離れると重みを低く（１．０）設定するように制御する。また、顔のサイズが大きいほど重みを高くするように制御する。
【００９３】
一方、ステップＳ１６０６においては、白抽出重みを一定とするように設定する。例えば図１７（ｃ）に示すように、Ｃｘ方向に対して重みを一定値（１．０）に設定する。
【００９４】
次に、ステップＳ１６０７においては、ステップＳ１６０５またはＳ１６０６で算出した重みに基づいて白抽出処理を行う。具体的には、入力画像の全ての画素に対して、その画素の色が白抽出範囲の領域１７０１の範囲に入るか否かを判定する。そして、白抽出範囲に入ると判定した画素の画素値（Ｃｘ，Ｃｙ）に関し、ステップＳ１６０５またはＳ１６０６で算出したＣｘ値の白抽出重みを参照して重み値ｗ（Ｃｘ）を取得し、重み付きＣｘ，Ｃｙを算出する。具体的には以下の式（５）により重み付きＣｘ，Ｃｙを算出する。
重み付きＣｘ＝ｗ（Ｃｘ）×Ｃｘ
重み付きＣｙ＝ｗ（Ｃｘ）×Ｃｙ            ・・・（５）
【００９５】
そして、以上の式により算出した重み付きＣｘ，Ｃｙ値を白抽出信号合計値に加算する。また、一画素毎に算出した重み値ｗ（Ｃｘ）を白画素カウント値に加算する。例えば重みが３．０の場合は３を白画素カウント値に加算する。
【００９６】
ステップＳ１６０８においては、白抽出した結果に基づいてホワイトバランスゲインを算出する。具体的には、まず、前述の白抽出信号合計値を白画素カウント値で除算する。この処理により、白抽出範囲の領域１７０１に含まれる画素の重み付き平均値を算出することになる。図１７（ａ）に示す平均値１７０３は、Ｃｘ，Ｃｙの平均値の例を示している。そして、算出した平均値をＲＧＢ値に変換することによって、ホワイトバランスゲインを算出する。この処理は図５のステップＳ５０６と同様の処理であるため、説明は省略する。
【００９７】
次に、ステップＳ１６０９においては、算出したホワイトバランスゲインを、図２のＷＢ増幅部２０１に設定する。これにより、ＷＢ増幅部２０１は、設定されたホワイトバランスゲインに基づいて、入力されたＲＧＢ値の増幅処理を行う。
【００９８】
なお、本実施形態では、顔のサイズに基づいて重み値を変更したが、このような方法に限定するものではなく、どのような重み付けを行ってもよい。例えば、検出された顔の数が複数である場合は個々の顔の重みを顔の数の分低くするようにしてもよい。また、顔の向きや角度によって重み値を変更してもよい。さらに、本実施形態では、Ｃｘ方向のみに重み付けをしたが、鏡面反射成分の色を用いてＣｙ方向に対して重みを付けるようにしてもよい。
【００９９】
以上のように本実施形態によれば、入力画像中の鏡面反射領域を精度よく特定して鏡面反射成分を抽出し、鏡面反射成分に基づくホワイトバランス処理を行うことができる。これにより、精度の高いホワイトバランス制御が可能な画像処理装置を提供することができる。
【０１００】
（第２の実施形態）
本実施形態においては、顔検出された領域とそれ以外の領域とでそれぞれ別のホワイトバランスゲインによってホワイトバランス処理を行う例について説明する。本実施形態では、図１６のステップＳ１６０８及びＳ１６０９の処理の代わりに、後述する図１８の処理手順によりホワイトバランス処理を行う。なお、デジタルカメラの構成など基本的な点については第１の実施形態と同様であるため、説明は省略する。以下、第１の実施形態と異なる点についてのみ説明する。また、本実施形態では、顔検出部１０４により顔が検出されている場合の例について説明する。
【０１０１】
図１８は、本実施形態において、ホワイトバランス処理を行う処理手順の一例を示すフローチャートである。
ステップＳ１８０１においては、システム制御部５０は、白抽出信号合計値を白画素カウント値で除算することによって白抽出範囲の画素の平均値（aveCx，aveCy）を取得する。具体的には、図５のステップＳ５０１〜Ｓ５０６に示した手順により、白抽出範囲の領域に含まれる画素の平均値（aveCx，aveCy）を算出する。続いてステップＳ１８０２において、システム制御部５０は、図１６のステップＳ１６０７で算出した重み付きＣｘ，Ｃｙ値を取得する。
【０１０２】
次に、ステップＳ１８０３においては、後述するステップＳ１８０４〜Ｓ１８０８の処理を、入力画像内の全画素に対してループ処理を行う。まず、ステップＳ１８０４において、システム制御部５０は、処理対象となる画素が顔検出処理により検出された顔領域か否かを判定する。本実施形態においては、例えば図３に示す顔水平サイズ情報３０２及び顔垂直サイズ情報３０３に基づいてその画素が顔領域か否かを判定する。この判定の結果、顔領域である場合はＳ１８０５へ進み、システム制御部５０は、その画素に関し、白として鏡面反射成分から算出した重み付きＣｘ，Ｃｙ値を選択する。一方、ステップＳ１８０４の判定の結果、その画素が顔領域でない場合は、ステップＳ１８０６へ進み、システム制御部５０は、その画素に関し、白として白抽出範囲の画素の平均値（aveCx，aveCy）を選択する。
【０１０３】
次に、ステップＳ１８０７においては、システム制御部５０は、ステップＳ１８０５またはＳ１８０６で選択した値に基づいてホワイトバランスゲインを算出する。重み付きＣｘ，Ｃｙ値を選択した場合には、図１６のステップＳ１６０８と同様の手順によりホワイトゲインを算出する。また、白抽出範囲の画素の平均値（aveCx，aveCy）を選択した場合には、図５のステップＳ５０６と同様の手順によりホワイトバランスゲインを算出する。
【０１０４】
ステップＳ１８０８においては、システム制御部５０は、Ｓ１８０７で算出したホワイトバランスゲインを図２のＷＢ増幅部２０１に設定する。そして、ＷＢ増幅部２０１は、設定されたホワイトバランスゲインによって該当画素にホワイトバランス処理を行う。以上の処理を画素毎に行う。
【０１０５】
以上のように本実施形態によれば、画像の領域ごとに適したより精度の高いホワイトバランス処理を施すことができる。
【０１０６】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１０７】
２４  画像処理部
５０  システム制御部
１０４  顔検出部
１０５  人体検出部
【図１】
2015198438.tif 000005
【図２】
2015198438.tif 000006
【図３】
2015198438.tif 000007
【図４】
2015198438.tif 000008
【図５】
2015198438.tif 000009
【図６】
2015198438.tif 000010
【図７】
2015198438.tif 000011
【図８】
2015198438.tif 000012
【図９】
2015198438.tif 000013
【図１０】
2015198438.tif 000014
【図１１】
2015198438.tif 000015
【図１２】
2015198438.tif 000016
【図１３】
2015198438.tif 000017
【図１４】
2015198438.tif 000018
【図１５】
2015198438.tif 000019
【図１６】
2015198438.tif 000020
【図１７】
2015198438.tif 000021
【図１８】
2015198438.tif 000022