(57)【要約】【課題】  様々な被写体について画像から精度良く光源色を推定し、精度の良いホワイトバランスゲインを得ることが可能な画像処理装置を提供する。【解決手段】  入力画像から抽出された、白抽出範囲に含まれる色を有する白画素の値に基づいて得られるホワイトバランスゲインと、入力画像に含まれる鏡面反射成分に基づいてえられるホワイトバランスゲインとを、混合率に従って混合する。混合率は、例えば白画素の抽出信頼度に応じて決定する。【選択図】  図３
2014007530.tif 000002
【特許請求の範囲】
【請求項１】
入力画像から、所定の色空間において予め定められた白抽出範囲に含まれる色を有する画素を抽出する白抽出手段と、
前記抽出された画素の値に基づいて、前記入力画像に対する第１のホワイトバランスゲインを算出する第１の算出手段と、
前記入力画像に含まれる鏡面反射成分を抽出する鏡面反射成分抽出手段と、
前記抽出された鏡面反射成分に基づいて、前記入力画像に対する第２のホワイトバランスゲインを算出する第２の算出手段と、
前記白抽出手段による画素の抽出の信頼度である白抽出信頼度を、予め定めた条件に基づいて算出する第１の信頼度算出手段と、
前記第１のホワイトバランスゲインと、前記第２のホワイトバランスゲインとを、前記白抽出信頼度が高いほど前記第１のホワイトバランスゲインに大きな重みを与えて加重加算し、前記入力画像に用いる第３のホワイトバランスゲインを算出する混合手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記鏡面反射成分抽出手段により抽出された鏡面反射成分に基づいて、前記入力画像が鏡面反射成分を有するか否かを判定する判定手段をさらに有し、
前記混合手段は、前記判定手段によって前記入力画像が鏡面反射成分を有さないと判定された場合、前記第２のホワイトバランスゲインの代わりに予め用意されたホワイトバランスゲインを用いて前記第３のホワイトバランスゲインを算出することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記第１の信頼度算出手段が、前記白抽出信頼度を、
前記入力画像の画素数に対する前記白抽出手段により抽出された画素の数の割合が大きいほど高い第１の白抽出信頼度と、
前記白抽出手段により抽出された画素の値の分布の広がりが大きいほど低い第２の白抽出信頼度と、
前記白抽出手段により抽出された画素の数に対する、入力画像に含まれる予め定められた白と誤判定しやすい色を有する画素の数の割合が大きいほど低い第３の白抽出信頼度と、
の少なくとも１つから算出することを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記鏡面反射成分抽出手段により抽出された鏡面反射成分の信頼度を算出する第２の信頼度算出手段をさらに有し、
前記混合手段は、
前記鏡面反射成分の信頼度が予め定めた閾値以上の場合に、前記白抽出信頼度と前記鏡面反射成分の信頼度の合計に対する前記白抽出信頼度の割合に応じた重みを前記第１のホワイトバランスゲインに与え、前記白抽出信頼度と前記鏡面反射成分の信頼度の合計に対する前記鏡面反射成分の信頼度の割合に応じた重みを前記第２のホワイトバランスゲインに与えて加重加算し、前記第３のホワイトバランスゲインを算出する、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の画像処理装置。
【請求項５】
前記鏡面反射成分抽出手段により抽出された鏡面反射成分の信頼度を算出する第２の信頼度算出手段をさらに有し、
前記混合手段は、
前記鏡面反射成分の信頼度が前記白抽出信頼度より高い場合には前記第２のホワイトバランスゲインを前記第３のホワイトバランスゲインとし、前記白抽出信頼度が前記鏡面反射成分の信頼度より高い場合には前記第１のホワイトバランスゲインを前記第３のホワイトバランスゲインとする、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載の画像処理装置。
【請求項６】
前記混合手段は、
前記鏡面反射成分の信頼度が予め定めた閾値未満の場合に、前記第１のホワイトバランスゲインと、予め用意されたホワイトバランスゲインとを、前記白抽出信頼度が高いほど前記第１のホワイトバランスゲインに大きな重みを与えて加重加算して前記第３のホワイトバランスゲインを算出する、
ことを特徴とする請求項４または請求項５に記載の画像処理装置。
【請求項７】
前記第２の信頼度算出手段が、前記鏡面反射成分の信頼度を、
前記入力画像のうち、鏡面反射成分が存在すると判定された領域の割合が大きいほど高い第１の鏡面反射信頼度と、
前記入力画像のうち、輪郭が含まれると判定された領域の割合が大きいほど低い第２の鏡面反射信頼度と、
前記鏡面反射成分抽出手段により抽出された鏡面反射成分の値の分布の広がりが大きいほど低い第３の鏡面反射信頼度と、
の少なくとも１つから算出することを特徴とする請求項４乃至請求項６のいずれか１項に記載の画像処理装置。
【請求項８】
画像処理装置の制御方法であって、
前記画像処理装置の白抽出手段が、入力画像から、所定の色空間において予め定められた白抽出範囲に含まれる色を有する画素を抽出する白抽出ステップと、
前記画像処理装置の第１の算出手段が、前記抽出された画素の値に基づいて、前記入力画像に対する第１のホワイトバランスゲインを算出する第１の算出ステップと、
前記画像処理装置の鏡面反射成分抽出手段が、前記入力画像に含まれる鏡面反射成分を抽出する鏡面反射成分抽出ステップと、
前記画像処理装置の第２の算出手段が、前記抽出された鏡面反射成分に基づいて、前記入力画像に対する第２のホワイトバランスゲインを算出する第２の算出ステップと、
前記画像処理装置の第１の信頼度算出手段が、前記白抽出手段による画素の抽出の信頼度である白抽出信頼度を、予め定めた条件に基づいて算出する第１の信頼度算出ステップと、
前記画像処理装置の混合手段が、前記第１のホワイトバランスゲインと、前記第２のホワイトバランスゲインとを、前記白抽出信頼度が高いほど前記第１のホワイトバランスゲインに大きな重みを与えて加重加算し、前記入力画像に用いる第３のホワイトバランスゲインを算出する混合ステップと、
を有することを特徴とする画像処理装置の制御方法。
【請求項９】
コンピュータを、請求項１乃至請求項７のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置およびその制御方法に関し、特には画像から光源色を推定する技術に関する。
【背景技術】
【０００２】
従来、デジタルカメラに用いられるオートホワイトバランス制御機能は、外部センサを使用せず、撮像素子の出力を用いてホワイトバランスを調整するものが主流となっている。例えば特許文献１には、撮像素子の出力を用いてホワイトバランスを調整する手法として、入力画像中から白（無彩色）であると思われる色を抽出し、抽出した色が白になるようなホワイトバランスゲインを算出する方法が開示されている。
【０００３】
また、被写体物体光を鏡面反射成分と拡散反射成分に分離する二色性反射モデルを利用したものが知られている。
【０００４】
また、特許文献２には、明るさの異なる近接画素間の差分を算出することで、被写体を照射する光源色を特定する方法が開示されている。この方法は、高輝度な第１の画素（物体色を反映する拡散反射成分と光源色を反映する鏡面反射成分の両方を含む）から第１の画素よりも低輝度な画素（物体色のみを含む拡散反射成分）の差分を算出することで、光源色の成分を抽出する原理に基づいている。
【０００５】
具体的には、高輝度の第１の画素のＲＧＢ値と、第１の画素よりも低輝度な第２の画素のＲＧＢ値の差分を算出する。この差分ＲＧＢ値は光源色と同じベクトル成分を持つＲＧＢ値であるから、差分ＲＧＢ値の成分比からホワイトバランスゲインを算出することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−６４２１９号公報
【特許文献２】特許第４４４７５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載される方法では、白い被写体が画像中に存在しない場合や、白に近いが白ではない被写体が多く含まれる場合などにおいては、光源色の推定精度、すなわちホワイトバランス調整の精度が低下する。
また、特許文献２に記載される方法は、輝度の差（ダイナミックレンジ）が小さい画像について、やはりホワイトバランス調整の精度が低下する。
【０００８】
本発明はこのような従来技術の課題に鑑みなされたものであり、様々な被写体について画像から精度良く光源色を推定し、精度の良いホワイトバランスゲインを得ることが可能な画像処理装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の目的は、入力画像から、所定の色空間において予め定められた白抽出範囲に含まれる色を有する画素を抽出する白抽出手段と、抽出された画素の値に基づいて、入力画像に対する第１のホワイトバランスゲインを算出する第１の算出手段と、入力画像に含まれる鏡面反射成分を抽出する鏡面反射成分抽出手段と、抽出された鏡面反射成分に基づいて、入力画像に対する第２のホワイトバランスゲインを算出する第２の算出手段と、白抽出手段による画素の抽出の信頼度である白抽出信頼度を、予め定めた条件に基づいて算出する第１の信頼度算出手段と、第１のホワイトバランスゲインと、第２のホワイトバランスゲインとを、白抽出信頼度が高いほど第１のホワイトバランスゲインに大きな重みを与えて加重加算し、入力画像に用いる第３のホワイトバランスゲインを算出する混合手段と、を有することを特徴とする画像処理装置によって達成される。
【発明の効果】
【００１０】
本発明によれば、様々な被写体について画像から精度良く光源色を推定し、精度の良いホワイトバランスゲインを得ることが可能である。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る画像処理装置の一例としてのデジタルカメラの構成例を示すブロック図。
【図２】図１の画像処理部の構成例を示すブロック図。
【図３】本発明の第１の実施形態におけるホワイトバランスゲイン算出処理を説明するためのフローチャート。
【図４】本発明の実施形態における白抽出範囲の例を示す図。
【図５】本発明の実施形態における白抽出信頼度１〜３の特性の例を示す図。
【図６】図３のＳ３０４における鏡面反射成分抽出処理を説明するためのフローチャート。
【図７】本発明の第１の実施形態における入力画像の例を示す図。
【図８】本発明の第１の実施形態における差分およびカウント値の格納方法を模式的に示す図。
【図９】本発明における光源色の推定方法を説明するための図。
【図１０】本発明の第２の実施形態におけるホワイトバランスゲイン算出処理を説明するためのフローチャート。
【図１１】図１０のＳ１００１における鏡面反射成分・輪郭成分抽出処理を説明するためのフローチャート。
【図１２】本発明の第２の実施形態における鏡面反射信頼度１〜３の特性の例を示す図。
【図１３】本発明の第２の実施形態の変形例における被写体認識の例を説明するための図。
【発明を実施するための形態】
【００１２】
本発明の例示的な実施形態を、添付図面に基づいて詳細に説明する。以下の実施形態では、本発明に係る画像処理装置の一例としてのデジタルカメラを説明するが、本発明において撮影に係る構成は必須ではなく、画像データを取得可能な任意の装置で本発明を実施可能である。
【００１３】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るデジタルカメラ１００の構成例を示すブロック図である。
図１において、レンズ群１０１は、フォーカスレンズを含むズームレンズである。絞り機能を備えるシャッタ１０２が、レンズ群１０１と撮像部１０３との間に設けられている。撮像部１０３は、レンズ群１０１によって撮像面に形成される光学像を画素単位の電気信号に変換するＣＣＤ／ＣＭＯＳイメージセンサを代表とする撮像素子を有する。Ａ／Ｄ変換器１０４は、撮像部１０３が出力するアナログ信号をデジタル信号（画像データ）に変換する。
【００１４】
画像処理部１０５は、Ａ／Ｄ変換器１０４から出力される画像データに対し、色補間（デモザイク）、ホワイトバランス調整、γ補正、輪郭強調、ノイズリダクション、色補正などの各種画像処理を行う。画像メモリ１０６は画像データを一時的に記憶する。メモリ制御部１０７は、画像メモリ１０６の読み書きを制御する。Ｄ／Ａ変換器１０８は、画像データをアナログ信号に変換する。表示部１０９はＬＣＤや有機ＥＬディスプレイ等の表示装置を有し、各種ＧＵＩやライブビュー画像、記録媒体１１２から読み出して再生した画像などを表示する。コーデック部１１０は、画像メモリ１０６に記憶されている画像データを記録媒体に記録するために予め定められた方法で符号化したり、画像ファイルに含まれる符号化画像データを例えば表示のために復号したりする。
【００１５】
インタフェース（Ｉ／Ｆ）１１１は、例えば半導体メモリカードやカード型ハードディスクなどの着脱可能な記録媒体１１２を、デジタルカメラ１００と機械的および電気的に接続する。システム制御部５０は例えばＣＰＵやＭＰＵなどのプログラマブルなプロセッサであってよい。システム制御部５０は、例えば不揮発性メモリ１２４や内蔵する不揮発性メモリに記録されたプログラムを実行して必要なブロックや回路を制御することにより、後述する光源推定処理を始めとしたデジタルカメラ１００の機能を実現する。
【００１６】
操作部１２０は、ユーザがデジタルカメラ１００に各種の指示を入力するためのボタンやスイッチなどをまとめて記載したものである。電源スイッチ１２１は操作部１２０に含まれるスイッチ群の１つであるが、便宜上異なるブロックで記載している。電源制御部１２２は、電池検出回路、ＤＣ−ＤＣコンバータ、通電するブロックを切り替えるスイッチ回路等により構成され、例えば充電池である電源部１２３について、装着の有無、種類、電池残量等の情報を検出する。また、電源制御部１２２は、電源部１２３に関する検出結果及びシステム制御部５０の指示に基づいてＤＣ−ＤＣコンバータを制御し、必要な電圧を必要な期間、記録媒体１１２を含むデジタルカメラ１００の各部へ供給する。
【００１７】
不揮発性メモリ１２４は電気的に消去・記録可能な、例えばＥＥＰＲＯＭ等であってよい。不揮発性メモリ１２４は、各種の設定値、ＧＵＩデータをはじめ、システム制御部５０がＭＰＵやＣＰＵである場合にはプログラムが記録される。
【００１８】
システムタイマ１２５は各種制御に用いる時間や、内蔵時計の時刻を計測する。システムメモリ１２６は、システム制御部５０の動作用の定数や変数を保存したり、不揮発性メモリ１２４から読みだしたプログラム等を展開するために用いられる、例えば揮発性メモリである。
【００１９】
次に、デジタルカメラ１００における撮影時の動作について説明する。
例えば撮像部１０３は、シャッタ１０２が開いている際にレンズ群１０１が撮像面に形成する被写体像を撮像素子によって光電変換し、アナログ画像信号としてＡ／Ｄ変換器１０４へ出力する。Ａ／Ｄ変換器１０４は撮像部１０３から出力されるアナログ画像信号をデジタル画像信号（画像データ）に変換し画像処理部１０５に出力する。
【００２０】
画像処理部１０５は、Ａ／Ｄ変換器１０４からの画像データ、又は、メモリ制御部１０７からの画像データに対し、色補間（デモザイク）、γ補正、輪郭強調、ノイズリダクション、色補正などの各種画像処理を行う。
【００２１】
また、画像処理部１０５では、撮影で得られた画像データを用いて輝度やコントラストなどに関する所定の演算処理を行い、得られた演算結果に基づいてシステム制御部５０が測距制御、露光制御を行う。このように、本実施形態のデジタルカメラ１００では、ＴＴＬ（スルー・ザ・レンズ）方式のＡＦ（オートフォーカス）処理、ＡＥ（自動露出）処理を行う。画像処理部１０５ではさらに、撮影で得られた画像データを用いて、撮影時に被写体を照明した光源色を推定し、推定した光源色に基づくオートホワイトバランス（ＡＷＢ）調整も行う。光源色の推定処理の詳細については後述する。
【００２２】
画像処理部１０５から出力された画像データは、メモリ制御部１０７を介して画像メモリ１０６に書き込まれる。画像メモリ１０６は、撮像部１０３から出力された画像データや、表示部１０９に表示するための画像データを格納する。
【００２３】
また、Ｄ／Ａ変換器１０８は、画像メモリ１０６に格納されている画像表示用のデータをアナログ信号に変換して表示部１０９に供給する。表示部１０９は、ＬＣＤ等の表示装置に、Ｄ／Ａ変換器１０８からのアナログ信号に応じた表示を行う。
【００２４】
コーデック部１１０は、画像メモリ１０６に記録された画像データをＪＰＥＧやＭＰＥＧなどの規格に基づき符号化する。システム制御部５０は符号化した画像データに対して予め定められたヘッダなどを付与して画像ファイルを形成し、インタフェース１１１を介して記録媒体１１２に記録する。
【００２５】
なお、現在のデジタルカメラでは、撮影スタンバイ状態においては動画撮影を行い、撮影された動画を表示部１０９に表示し続けることにより表示部１０９を電子ビューファインダ（ＥＶＦ）として機能させるのが一般的である。この場合、シャッタ１０２は開いた状態とし、撮像部１０３のいわゆる電子シャッタを用いて例えば３０フレーム／秒の撮影を行う。
【００２６】
そして、操作部１２０に含まれるシャッタボタンが半押しされると上述のＡＦ，ＡＥ制御が行われ、全押しされると本撮影により記録用の静止画撮影が実行され、記録媒体１１２に記録される。また、動画撮影ボタンなどにより動画撮影が指示された場合は、記録媒体１１２への動画記録を開始する。
【００２７】
図２は、画像処理部１０５の機能構成例を示すブロック図である。
図１のＡ／Ｄ変換器１０４から出力された画像データは、輝度・色信号生成部２００に入力される。画像データは、撮像素子に設けられたカラーフィルタを構成する色成分の１つに対応した値を有する。一般的に用いられるベイヤー配列の原色カラーフィルタが用いられる場合、画像データは、Ｒ画素，Ｇ画素，Ｂ画素のデータから構成される。
【００２８】
輝度・色信号生成部２００はこのような画像データに対してデモザイク処理を行い、各画素について輝度信号Ｙおよび色信号Ｒ，Ｇ，Ｂを生成する。輝度・色信号生成部２００は、生成した色信号Ｒ，Ｇ，Ｂをホワイトバランス（ＷＢ）増幅部２０１へ、輝度信号Ｙを輝度γ処理部２０５へ出力する。また、輝度・色信号生成部２００は、色信号Ｒ，Ｇ，Ｂを、画像データ（ＲＢＧ）として、メモリ制御部１０７を介して画像メモリ１０６に出力する。
【００２９】
また、輝度・色信号生成部２００で生成した色信号Ｒ，Ｇ，Ｂは色空間変換処理部２０７にも入力される。色空間変換処理部２０７では、以下の式を用いて、色信号Ｒ，Ｇ，Ｂを色空間信号CxおよびCyに変換し、画像信号Cx, Cyを画像データ（ＣｘＣｙ）としてメモリ制御部１０７を介して画像メモリ１０６に出力する。
Cx = (R - B) / Y
Cy = (R + B -2G) / Y
Y = (R + G + B) / 2
【００３０】
ＷＢ増幅部２０１は、後述する処理によりシステム制御部５０が算出するホワイトバランスゲイン値に基づき、色信号Ｒ，Ｇ，Ｂにゲインを適用し、ホワイトバランスを調整する。色γ処理部２０２では、色信号Ｒ，Ｇ，Ｂにガンマ補正を行う。色差信号生成部２０３では、色信号Ｒ，Ｇ，Ｂから色差信号Ｒ−Ｙ、Ｂ−Ｙ信号を生成し色補正部２０４に出力する。色補正部２０４では色差信号Ｒ−Ｙ、Ｂ−Ｙにゲインを適用するなどにより、色相や彩度を調整する。色補正部２０４は、補正後の色差信号Ｒ−Ｙ、Ｂ−Ｙをメモリ制御部１０７を介して画像メモリ１０６に出力する。
【００３１】
一方、輝度γ処理部２０５では輝度信号Ｙに対してガンマ補正を行い、輪郭強調処理部２０６および輪郭信号生成部２０８へ出力する。輪郭強調処理部２０６は輝度信号Ｙに対して輪郭強調処理を行い、メモリ制御部１０７を介して画像メモリ１０６に出力する。輪郭強調処理部２０６の出力する輝度信号Ｙと、色補正部２０４が出力する色差信号Ｒ−Ｙ，Ｂ−Ｙが、コーデック部１１０によって符号化され、最終的に記録媒体１１２に記録される。
【００３２】
また、輪郭信号生成部２０８は、輝度γ処理部２０５の出力画像に対してバンドパスフィルタを施し、画像の輪郭信号を生成する。輪郭信号生成部２０８は生成した輪郭画像信号をメモリ制御部１０７を介して画像メモリ１０６に出力する。なお、輪郭信号生成部２０８は第１の実施形態には不要である。
【００３３】
次に、本実施形態における光源推定処理について、図３のフローチャートを用いて説明する。光源推定処理は、システム制御部５０が画像処理部１０５の輝度・色信号生成部２００が画像メモリ１０６に出力した信号から光源色の成分を推定する処理である。
なお、図３に示す処理を行う前に、システム制御部５０は画像メモリ１０６から画像データ（ＲＧＢ）および画像データ（ＣｘＣｙ）を取得し、システムメモリ１２６に展開しておく。
【００３４】
Ｓ３０１でシステム制御部５０は、入力画像から白色（無彩色）に近い信号を抽出する。この処理について図４を用いて説明する。図４（ａ）はCxCy色空間を示している。図４（ａ）において白抽出範囲４０１は白色とみなす色領域を示しており、白丸４０２のそれぞれは画像データ（ＣｘＣｙ）を示している。Cx_baseおよびCy_baseは、白抽出範囲４０１の水平方向および垂直方向における最大幅である。
【００３５】
システム制御部５０は、入力画像の全ての画素に対して、白抽出範囲４０１に含まれる色を有するか否かを判定する。白抽出範囲に含まれる画素値(Cx, Cy)は、例えばシステムメモリ１２６であってよいバッファに加算される。
また、システム制御部５０は、白抽出範囲に含まれる画素値(Cx, Cy)を有する画素数をカウントしておく（白画素カウント）。
【００３６】
さらにシステム制御部５０は、白色（無彩色）の被写体として誤って抽出しやすい色が画像中にどの程度含まれるのかもカウントする。これについて図４（ｂ）を用いて説明する。図４（ｂ）は図４（ａ）と同様にCxCy色空間と白抽出範囲４０１の関係を示している。図４（ｂ）において、色の領域４０４、４０５、４０６の画素は、白色（無彩色）である可能性も、有彩色である可能性もある。例えば、太陽光下における薄い青色の物体色と、日蔭にある無彩色の被写体の画素は、いずれも色の領域４０４に含まれる可能性がある。システム制御部５０は、このような、白色（無彩色）でないにもかかわらず白色と見なされる可能性のある色の領域４０４、４０５、４０６に含まれる色を有する画素の数をカウントしておく。なお、白色（無彩色）の被写体として誤って抽出される可能性のある色が分布する領域は、予め設定しておくことができる。
【００３７】
Ｓ３０２でシステム制御部５０は、Ｓ３０１における抽出結果に基づいて、ホワイトバランスゲインを算出する。まずシステム制御部５０は、抽出した画素値(Cx, Cy)の合計値を、白画素カウント値で除算し、ホワイトバランスゲインを算出する。この演算は、白抽出範囲４０１に含まれる色を有する画素値の平均の算出である。図４（ａ）の黒丸４０３は、算出された平均値の例を示す。
次にシステム制御部５０は、算出した平均値(Cx,Cy)の色空間を変換し、RGB色空間の値に変換する。このRGB値を白抽出平均RGB値(wR,wG,wB)とよぶ。
【００３８】
そして、第１の算出手段としてのシステム制御部５０は、白抽出平均RGB値(wR,wG,wB)からホワイトバランスゲイン（第１のホワイトバランスゲイン）を算出する。ＧのホワイトバランスゲインwG-Gainを所定の固定値とすると、ＲとＢのホワイトバランスゲイン(wR-Gain, wB-Gain)を、以下の式によって算出する。
wR-Gain = (wG / wR) * wG-Gain
wB-Gain = (wG / wB) * wG-Gain
このように、wR-Gain,wB-Gainは白抽出に基づくホワイトバランスゲイン（第１のホワイトバランスゲイン）を示している。
【００３９】
Ｓ３０３で第１の信頼度算出手段としてのシステム制御部５０は、白抽出に基づくホワイトバランスゲインの信頼度（白抽出信頼度）を算出する。白抽出信頼度の算出方法について図５を用いて説明する。白抽出信頼度は、白抽出信頼度１〜３を積算することで求める。まず、白抽出信頼度１〜３の算出方法について説明する。
【００４０】
（白抽出信頼度１の算出）
第１の白抽出信頼度としての白抽出信頼度１は、白抽出範囲４０１に含まれる色を有する画素数の、画像全体の画素数に対する割合に依存する。システム制御部５０は、Ｓ３０１で得られた白画素カウントが、入力画像の画素数の何パーセントに当たるのかを算出し、これを白画素割合とする。そして、例えば図５（ａ）に示す、白画素の割合と白抽出信頼度１との関係に基づき、白抽出信頼度１を算出する。本実施形態では、白画素割合の増加に従って白抽出信頼度１が線形的に増加するものとする。
【００４１】
（白抽出信頼度２の算出）
第２の白抽出信頼度としての白抽出信頼度２は、白抽出範囲４０１に含まれる色を有する画素値の分布の広がり度から算出する。具体的には、入力画像から検出された、白抽出範囲４０１に含まれる画素値(Cx,Cy)の最小値、最大値の差から白分布の広がり度を算出する。Ｓ３０１でシステム制御部５０は、白抽出範囲４０１に含まれる画素値のうち、Cxの最大値Cx_maxと最小値Cx_min、Cyの最大値Cy_maxと最小値Cy_minをそれぞれ検出しておく。そして、システム制御部５０は、白抽出のCxおよびCy方向の広がり度を
白抽出のCx広がり度 = (Cx_max - Cx_min)/Cx_base
白抽出のCy広がり度 = (Cy_max - Cy_min)/Cy_base
として算出する。ここで、Cx_baseおよびCy_baseは図４（ａ）に示すように、白抽出範囲４０１で取り得る最大幅を示す。
【００４２】
そして、システム制御部５０は、算出した白抽出のCx広がり度とCy広がり度とを加算し、白抽出広がり度とする。そして、例えば図５（ｂ）に示す白抽出広がり度と白抽出信頼度２との関係から、白抽出信頼度２を算出する。本実施形態では、白抽出広がり度が増えるに従って白抽出信頼度２が線形的に減少し、その後は一定値となるものとする。
【００４３】
白画素として抽出された画素値が白抽出範囲４０１内で広範囲に分布している場合、ということは、抽出した色のばらつきが大きく、安定していないとことを意味している。そのため、色の広がり度が高い場合は白抽出信頼度を低下させている。
【００４４】
（白抽出信頼度３の算出）
第３の白抽出信頼度としての白抽出信頼度３は、白と誤判定しやすい色を有する画素数の、白と判定された画素数に対する割合から算出する。前述の通り、Ｓ３０１でシステム制御部５０は、白と誤判定しやすい色の領域４０４〜４０６に含まれる色を有する画素数をカウントしている。そしてシステム制御部５０は、例えば図５（ｃ）に示す、
白と誤判定しやすい色の領域４０４〜４０６に含まれる色を有する画素数／白抽出範囲４０１に含まれる色を有する画素数
で得られる割合と、白抽出信頼度３との関係に基づいて、白抽出信頼度３を算出する。白と誤判定しやすい色の割合が増える従って白抽出信頼度２が線形的に減少し、その後は一定値となるものとする。
【００４５】
白と誤判定しやすい色を有する画素の割合が多いということは、白と判定すべきかあいまいな色が多いということであり、判定の信頼性が低くなる。そこで、白と誤判定しやすい色の画素が多い場合は、白抽出信頼度を低下させている。
【００４６】
上述のようにして白抽出信頼度１〜３を算出した後、システム制御部５０は、以下のように白抽出信頼度１〜３の積によって最終的な白抽出信頼度を算出する。
白抽出信頼度＝白抽出信頼度１×白抽出信頼度２×白抽出信頼度３
【００４７】
図３に戻り、Ｓ３０４で鏡面反射成分抽出手段としてのシステム制御部５０は鏡面反射成分の抽出を行う。
Ｓ３０４における鏡面反射成分抽出処理の詳細を、図６に示すフローチャートを用いて説明する。
【００４８】
図６において、Ｓ６０１およびＳ６０７は、Ｓ６０２〜Ｓ６０６の処理が、対象画素をラスタスキャンしながら全画素に対して実施されることを示している。
【００４９】
Ｓ６０２でシステム制御部５０は、処理対象画素が飽和していないか確認する。具体的には、システム制御部５０は、ＲＧＢ成分のそれぞれを所定の閾値と比較し、閾値より大きい成分があれば画素が飽和していると判断し、現在の処理対象画素の処理をスキップして、次の画素について飽和の確認を行う。一方、ＲＧＢ成分がいずれも閾値以下であれば画素は飽和していないと判断してシステム制御部５０は処理をＳ６０３に進める。
【００５０】
Ｓ６０３でシステム制御部５０は、処理対象画素と比較画素の差分を算出する。処理対象画素および比較画素について、図７（ａ）を用いて説明する。図７（ａ）において７００は入力画像を示しており、７０１は入力画像７００の一部を拡大した状態を模式的に示している。７０１におけるメッシュは画素の境界を示している。７０２は現在の処理における処理対象画素を示し、図６の処理は、処理対象画素７０２の位置を順次ラスタスキャンしながら各画素について実施される。７０３、７０４、７０５は処理対象画素７０２に対する比較画素を示しており、本実施形態では処理対象画素７０２から所定の方向に所定の距離（画素数）離れた位置の複数の画素を比較画素とする。
【００５１】
処理対象画素と比較画素とが満たすべき位置関係は予め定めておくことができるが、基本的には処理対象画素に近接した複数の位置にある画素を比較画素とする。ここでは、一例として処理対象画素を左上角の画素として有する４×４画素のブロックにおける残り３つの角の画素を比較画素としている。処理対象画素と比較画素との距離が短すぎると画素間の差が少なくなる可能性が高くなり、また距離が長すぎると同一物体に対応しない可能性が高くなる。従って、例えば数〜１０画素程度の範囲で実験的に距離を定める。なお、処理対象画素と比較画素との位置関係は、処理対象画素の位置が入力画像の端部となる場合などにおいて適宜変更されてよい。
【００５２】
Ｓ６０３でシステム制御部５０は、処理対象画素７０２と比較画素７０３との差分を算出する。即ち、システム制御部５０は、処理対象画素７０２のＲＧＢ値（R1, G1, B1）と比較画素７０３のＲＧＢ値（R2, G2, B2）との色成分ごとの差分（subR, subG, subB）を算出する。
【００５３】
Ｓ６０４でシステム制御部５０は、Ｓ６０３で算出した差分（subR, subG, subB）の大きさＳが所定の閾値Ｔ１よりも大きい（Ｔ１＜Ｓ）か否かを判定する。差分（subR, subG, subB）の大きさＳは次の式から算出する。
Ｓ＝√{(subR)2+(subG)2+(subB)2}
システム制御部５０は、差分の大きさＳが閾値Ｔ１よりも大きい場合にはＳ６０５に、閾値Ｔ１以下の場合はＳ６０６に、それぞれ処理を進める。
【００５４】
Ｓ６０５で、システム制御部５０は、処理対象画素と比較画素の差分（subR, subG, subB）を、システムメモリ１２６に保存（加算）し、差分合計値sumSを算出する。差分（subR, subG, subB）の保存形式の例を図８（ａ）に示す。本実施形態では、差分の大きさＳが閾値Ｔ１より大きい場合に、図８（ａ）に示すように、差分（subR, subG, subB）を処理対象画素が属するブロックごとに合計し、差分合計値sumSを得る。
【００５５】
なお、ここでのブロックとは入力画像の分割領域を指し、図７（ａ）は、入力画像７００を水平方向８×垂直方向８に６４分割した例を示している。このように、入力画像の部分領域ごとに、その部分領域に含まれる画素に対して算出された差分（subR, subG, subB）を、各ブロックで合計し、ブロックを代表する差分値（ブロック差分値）とする。また、差分（subR, subG, subB）を加算するごとに、差分合計値sumSに対応付けられたカウント値CountSを１加算する。従って、カウント値CountSはブロック差分値の算出に用いられた差分値の数を示す。
【００５６】
なお、Ｓ６０４、Ｓ６０５において、差分の大きさＳが閾値Ｔ１より大きい場合だけ、差分（subR, subG, subB）を合計する理由は、光源色の特徴を示す度合が大きいと思われる差分値だけを抽出するためである。これについて図７（ｂ）、図９を用いてより具体的に説明する。
【００５７】
図７（ｂ）は鏡面反射を含む被写体の画像と、処理対象画素７０６および比較画素７０７〜７０９とを示している。ここで、輝度の高い比較画素７０７、７０９は鏡面反射成分を比較的多く含み、処理対象画素７０６および比較画素７０８は、ほぼ拡散反射成分のみからなる画素であるとする。
【００５８】
図９（ａ）は、画素が含む鏡面反射成分と拡散反射成分との関係の例をＲＧＢ色空間で模式的に示している。ＲＧＢ空間において、ある画素のＲＧＢ値は原点からＲＧＢ値に対応する座標へのベクトルで表すことができる。ベクトル９０１はＲＧＢ値が物体色（拡散反射成分）のみからなる場合を、ベクトル９０２は、ＲＧＢ値が物体色（拡散反射成分）と光源色（鏡面反射成分）とからなる場合を示すものとする。この場合、得たい光源色（鏡面反射成分）のＲＧＢ値を示すベクトル９０３は、ベクトル９０２と９０１との差分ベクトルとして求めることができる。なお、ベクトルの始点はいずれも座標原点であるため、実際には座標間の差として求まるＲＧＢ値が光源のＲＧＢ値となる。従って、物体色のみからなる画素のＲＧＢ値と、物体色と光源色からなる画素のＲＧＢ値との差分を、光源色のＲＧＢ値として得ることができる。図７（ｂ）の例では、処理対象画素７０６と、比較画素７０７または７０９とのＲＧＢ値の差分が、光源色のＲＧＢ値の推定値として求められる。
【００５９】
一方、図７（ｂ）における処理対象画素７０６と比較画素７０８はどちらも拡散反射成分が支配的であるため、これら画素のＲＧＢ値は図９（ａ）の例ではベクトル９０１に近い。例えば、図９（ｂ）において、処理対象画素７０６と比較画素７０８のＲＧＢ値がそれぞれベクトル９１１、９１２であるとすると、ＲＧＢ値の差分は非常に小さい値となる。図示しないが、同様に比較画素７０９と７０９とはどちらも拡散反射成分と鏡面反射成分を持っており、ＲＧＢ値はいずれもベクトル９０２と似たベクトルで表されるため、やはりＲＧＢ値の差分は非常に小さい値となる。
【００６０】
比較画素７０７のＲＧＢ値が図９（ｂ）のベクトル９１３で表されるとすると、処理対象画素７０６のＲＧＢ値に対応するベクトル９１１と、比較画素７０７のＲＧＢ値に対応するベクトル９１３の差分は大きくなる。この差分は光源色のＲＧＢ値に近いベクトルであるため、抽出したい差分である。
【００６１】
このように、画素のＲＧＢ値の差分の大きさＳが小さい場合は、両者が類似した反射成分を持つ場合が多いと考えられ、差分値における光源の特性の寄与は少ないと考えられるため、本実施形態では光源色の推定には使用しない。このため前述のように閾値Ｔ１を設け、差分の大きさＳが閾値Ｔ１より大きい場合だけ、差分（subR, subG, subB）をシステムメモリ１２６で合計し、差分合計値sumS(R, G, B)を求めている。
【００６２】
システム制御部５０は、差分合計値sumSを６４個のブロックのそれぞれについて算出する。また、ブロック１の差分合計値をsumS1(R1, G1, B1)、ブロック２の差分合計値をsumS2(R2, G2, B2)、・・・、ブロック６４の差分合計値をsumS64(R64, G64, B64)とする。また、差分合計値sumSに差分を加算した際、システム制御部５０は差分カウント値countSに１を加算する。ブロックごとの差分合計値sumS1〜sumS64と差分カウント値countSを図８に示す。
【００６３】
図６に戻り、Ｓ６０６でシステム制御部５０は、全ての比較画素７０３〜７０５についてＳ６０２〜Ｓ６０５の処理を行ったか確認する。図７に示した通り、本実施形態では１つの処理対象画素７０２に対して比較画素は７０３、７０４、７０５の３つある。そのため全ての処理対象画素に対して、差分算出（Ｓ６０３）を行い、差分の大きさＳが所定の閾値Ｔ１よりも大きい場合に、差分（subR, subG, subB）をシステムメモリ１２６で加算して、差分カウント値に１を加える。
【００６４】
以上説明したＳ６０２〜Ｓ６０６の処理を、処理対象画素をラスタスキャンしながら入力画像の全画素に対して行う。
【００６５】
Ｓ６０７までの処理により、入力画像の全画素について差分値の集計が完了すると、システム制御部５０は、Ｓ６０８〜Ｓ６１３で８×８＝６４個のブロックのそれぞれについて平均差分値を算出する。
【００６６】
まずＳ６０９でシステム制御部５０は、処理対象のブロックの差分カウント値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）を算出する。この、入力画像全体の平均差分値（aveR, aveG, aveB）は、図７を用いて説明したとおり、鏡面反射成分の平均値を示している。
【００７１】
図３に戻り、Ｓ３０５でシステム制御部５０は、入力画像が鏡面反射成分を含むか否かを判定する。ここでは、前述の鏡面反射ブロック数blkCountSを参照し、鏡面反射ブロック数blkCountSが所定の閾値以上の場合に、入力画像が鏡面反射成分を含むと判定するものとする。システム制御部５０は、入力画像が鏡面反射成分を含むと判定した場合はＳ３０６に、鏡面反射成分を含まないと判定した場合はＳ３０７に、それぞれ処理を進める。
【００７２】
Ｓ３０６で第２の算出手段としてのシステム制御部５０は、鏡面反射成分に基づきホワイトバランスゲイン（第２のホワイトバランスゲイン）を算出する。ここでは、ＧのホワイトバランスゲインsG-Gainを所定の固定値とすると、ＲとＢのホワイトバランスゲインsR-Gain, sB-Gainを、以下の式によって算出する。
sR-Gain = (aveG / aveR) * sG-gain
sB-Gain = (aveG / aveB) * sG-gain
【００７３】
Ｓ３０７でシステム制御部５０は、ホワイトバランスゲインに、予め不揮発性メモリ１２４に用意した太陽光のホワイトバランスゲインを設定する。
pG-Gain = 太陽光Gゲイン
pR-Gain = 太陽光Rゲイン
pB-Gain = 太陽光Bゲイン
【００７４】
Ｓ３０８で混合手段としてのシステム制御部５０は、Ｓ３０３で算出した白抽出信頼度に基づいて、ホワイトバランスゲインのＭＩＸ率を算出する。ホワイトバランスゲインのＭＩＸ率とは、白抽出に基づくホワイトバランスゲインと、他の情報に基づくホワイトバランスゲインとを混合する割合を示している。本実施形態では、ホワイトバランスゲインＭＩＸ率に、Ｓ３０３で算出した白抽出信頼度（０〜１）を設定する。例えば、前述の白抽出信頼度が０．８の場合、ホワイトバランスゲインＭＩＸ率を０．８にする。
【００７５】
Ｓ３０９でシステム制御部５０は、Ｓ３０８で算出したホワイトバランスゲインＭＩＸ率に基づき、白抽出結果に基づくホワイトバランスゲインと他の情報に基づくホワイトバランスゲインを混合する。ここで、他の情報に基づくホワイトバランスゲインは、鏡面反射に基づくホワイトバランスゲインもしくは、太陽光に基づくホワイトバランスゲインである。
【００７６】
具体的には、Ｓ３０５で入力画像が鏡面反射成分を含むと判定された場合、システム制御部５０は、白抽出に基づくホワイトバランスゲイン(wR-Gain,wG-Gain,wB-Gain)と、鏡面反射に基づくホワイトバランスゲイン(sR-Gain,sG-Gain,sB-Gain)とを混合する。式で表すと以下のように加重加算して、第３のホワイトバランスゲインとしての最終的なホワイトバランスゲイン(R-Gain,G-gain,B-Gain)を算出する。
R-Gain = ＭＩＸ率 × wR-Gain + （１−ＭＩＸ率） × sR-Gain
G-Gain = ＭＩＸ率 × wG-Gain + （１−ＭＩＸ率） × sG-Gain
B-Gain = ＭＩＸ率 × wB-Gain + （１−ＭＩＸ率） × sB-Gain
【００７７】
一方、Ｓ３０５で入力画像が鏡面反射成分を含まないと判定された場合、システム制御部５０は、白抽出に基づくホワイトバランスゲイン(wR-Gain,wG-Gain,wB-Gain)と太陽光に基づくホワイトバランスゲイン(pR-Gain,pG-Gain,pB-Gain)とを混合する。式で表すと以下のように加重加算して、第３のホワイトバランスゲインとしての最終的なホワイトバランスゲイン(R-Gain,G-Gain,B-Gain)を算出する。
R-Gain = ＭＩＸ率 × wR-Gain + （１−ＭＩＸ率） × pR-Gain
G-Gain = ＭＩＸ率 × wG-Gain + （１−ＭＩＸ率） × pG-Gain
B-Gain = ＭＩＸ率 × wB-Gain + （１−ＭＩＸ率） × pB-Gain
【００７８】
なお、Ｇに対するホワイトバランスゲインが固定値「１」である場合（すなわち、Ｇ成分は増減させない場合）には、上述の説明におけるＧ成分についてのホワイトバランスゲイン算出は不要である。
【００７９】
Ｓ３１０でシステム制御部５０は、算出したホワイトバランスゲインを、ＷＢ増幅部２０１（図２）に設定する。ＷＢ増幅部２０１は設定されたホワイトバランスゲインに基づき入力ＲＧＢ値の増幅処理を行う。
【００８０】
以上、説明したように、本実施形態では、画像から抽出した白画素に基づき算出したホワイトバランスゲインと、画像の鏡面反射成分に基づき算出したホワイトバランスゲインとを求める。そして、白画素の抽出信頼度に応じて、２つのホワイトバランスゲインを混合して最終的なホワイトバランスゲインを算出する。
【００８１】
そのため、白画素の抽出信頼度が低くなる場合であっても、入力画像が鏡面反射成分を含む場合には、鏡面反射成分に基づくホワイトバランスゲインを考慮することにより、ホワイトバランスゲインの精度を向上させることができる。
【００８２】
なお、本実施形態では、白（無彩色）と判定した画素の数、白と判定した画素値の分布の広がり、白と誤判定しやすい色を有する画素の割合という３つの条件のそれぞれで信頼度を求め、３つの信頼度の積を最終的な白抽出信頼度とした。しかし、他の方法で白抽出の信頼度を求めてもよい。例えば、３つの信頼度の１つだけを最終的な白抽出信頼度としてもよいし、３つのうち最も高い信頼度を採用してもよい。また、積算に限らず、加算など、他の演算を用いてもよい。
【００８３】
また、他の情報を用いて白抽出信頼度を算出してもよい。例えば、被写体の明るさ情報に基づき白抽出の信頼度を算出することもできる。例えば、被写体の明るさが非常に明るい場合、屋外の撮影で得られた画像と判断し、図４（ａ）に示した白抽出範囲４０１を図４（ｂ）の４０７に示すように、太陽光に対応した非常に狭い範囲とする。白抽出範囲を４０７のように非常に狭くした場合は、白として抽出される画素値の範囲が狭く、白抽出が誤っている可能性は低くなる。そこで、画像の平均輝度や、顔のような主被写体の輝度が十分高いと判定される場合は高く、暗い場合は低くなる白抽出信頼度を算出してもよい。
【００８４】
また、本実施形態では、入力画像を水平，垂直の両方向に８分割して６４個のブロックに分割する例について説明したが、ブロックの分割方法や分割数に制限はない。例えば６４以上のブロックに分割しても、画像全体を１つのブロックとして扱ってもよい。また、ブロックの大きさも同一としなくてもよい。
【００８５】
また、本実施形態は、CxCy色空間の画像信号を用いて白抽出を行ったが、他の色空間の画像信号を用いてもよく、例えばL*a*b*色空間など別の色空間の画像信号を用いてもよい。
【００８６】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。第１の実施形態は、白抽出の信頼度に基づき、白抽出に基づくホワイトバランスゲインと他の情報に基づくホワイトバランスゲインのＭＩＸ率を算出した。これに対して第２の実施形態は、鏡面反射成分の有無の判定についても信頼度を算出し、白抽出の信頼度と鏡面反射成分判定の信頼度の両方に基づきホワイトバランスゲインのＭＩＸ率を算出することを特徴とする。
【００８７】
本実施形態においても第１の実施形態で説明したデジタルカメラ１００において実施可能であるため、デジタルカメラ１００の構成についての説明は省略し、本実施形態に特有な光源色の推定処理について、図１０のフローチャートを用いて説明する。
【００８８】
図１０においてＳ３０１〜Ｓ３０３は第１の実施形態で説明した図３の同符号の処理と同様の処理であるため、詳細な説明は省略する。
システム制御部５０は、白抽出に基づくホワイトバランスゲインを算出し（Ｓ３０１，３０２）、白抽出の信頼度を算出する（Ｓ３０３）。
【００８９】
続くＳ１００１でシステム制御部５０は、鏡面反射成分および輪郭信号成分を抽出する。鏡面反射成分および輪郭信号成分の抽出処理の詳細を、図１１のフローチャートに従って説明する。
【００９０】
図１１において、Ｓ６０１〜６０６は第１の実施形態の図６の同符号の処理と同様であるため詳細な説明は省略する。システム制御部５０は、入力画像全画素に対してラスタスキャンし、処理対象画素と比較画素の差分を計算し、差分の大きさＳが閾値Ｔ１以上の差分を、ブロックごとに、かつＲＧＢ成分単位で差分値sumSに加算する。
【００９１】
Ｓ１１０１でシステム制御部５０は、処理対象画素の位置に対応する輪郭信号の画素値を画像メモリ１０６から取得し、所定の閾値Ｔ３と比較する。輪郭信号の画素値が閾値Ｔ３よりも大きい場合、システム制御部５０は処理対象画素が輪郭画素であると判定し、処理をＳ１１０２に進める。一方、輪郭信号の画素値が閾値Ｔ３以下の場合、システム制御部５０は処理対象画素が輪郭画素ではないと判定し、処理をＳ６０７に進める。
【００９２】
Ｓ１１０２でシステム制御部５０は、輪郭信号の画素値をブロックごとに加算し、ブロックごとの輪郭合計値sumEを算出する。また、ブロックごとの輪郭カウント値countEに１を加える。ブロックごとの輪郭合計値sumEおよび輪郭カウント値countEの例を図８（ｂ）に示す。
システム制御部５０はＳ６０１からＳ６０７の処理を全画素に対して行い、図８（ｂ）に示す情報(差分合計値、差分カウント値、輪郭合計値、輪郭カウント値)を得る。
【００９３】
Ｓ６０８からＳ６１２においてシステム制御部５０は、第１の実施形態（図６の同符号の処理）と同様にブロック単位で処理を行い、鏡面反射成分を持つブロックの平均差分値(blkR, blkG, blkB)を算出する。
【００９４】
Ｓ１１０３でシステム制御部５０は、ブロック平均差分値(blkR, blkG, blkB)の最大値、最小値を算出する。具体的には、システム制御部５０は、まずブロック平均差分値(blkR, blkG, blkB)をCxCy色空間の値（blkCx,blkCy）に変換する。そしてシステム制御部５０はblkCx,blkCyを、Cx,Cy方向それぞれの最大値Cx_maxS, Cy_maxS、最小値Cx_minS, Cy_minSと比較する。
【００９５】
ブロック平均差分値（blkCx,blkCy）の成分ごとに、最大値よりも大きいか、もしくは最小値よりも小さい場合に、Cx_maxS, Cy_maxS, Cx_minS, Cy_minSの値を更新する。例えばCx_maxS＝80, Cy_maxS = 80, Cx_minS = 20, Cy_minS = 20とする。この場合、処理対象ブロックのブロック平均差分値(blkCx, blkCy) = (90, 60)であれば、システム制御部５０はCx_maxSを90に更新する。
【００９６】
Ｓ１１０４でシステム制御部５０は、処理対象ブロックのブロック輪郭カウント値countEが閾値Ｔ４よりも大きいか判定し、閾値Ｔ４よりも大きい場合はＳ１１０５で輪郭ブロック数blkCountEに１を加算する。一方、ブロック輪郭カウント値countEが閾値Ｔ４以下ならば、システム制御部５０は次のブロックの処理に移る。
【００９７】
システム制御部５０は、Ｓ６０８とＳ６１３の間の処理を全ブロックに対して実行し、画像全体に含まれる輪郭ブロック数blkCountEを得る。また、システム制御部５０は、第１の実施形態と同様に、鏡面反射ブロック数blkCountSと鏡面反射ブロックの合計値(sumBlkR,sumBlkG,sumBlkB)を得る。
【００９８】
Ｓ６１４でシステム制御部５０は、鏡面反射ブロックの合計値(sumBlkR,sumBlkG,sumBlkB)の各成分を鏡面反射ブロック数blkCountSで除算し、全ブロックの平均差分値（aveR, aveG, aveB）を算出する。
【００９９】
Ｓ１１０６でシステム制御部５０は、全ブロック数（８×８＝６４ブロック）に対する鏡面反射ブロック数blkCountSの割合を算出する。具体的には下記の式で算出する。
鏡面反射ブロック割合  ＝  blkCountS ／ ６４
【０１００】
Ｓ１１０７でシステム制御部５０は、全ブロック数（８×８＝６４ブロック）に対する輪郭ブロック数blkCountEの割合を算出する。具体的には、下記の式で算出する。
輪郭ブロック割合      ＝  blkCountE ／ ６４
【０１０１】
このようにして、鏡面反射成分を含むと判定されたブロック数、鏡面反射成分を含むと判定されたブロックの割合、輪郭を含むと判定されたブロックの割合、鏡面反射成分の色（鏡面反射ブロックの平均差分値）、鏡面反射成分の最大値、最小値を得る。
【０１０２】
図１０に戻り、Ｓ３０５でシステム制御部５０は、入力画像が鏡面反射成分を含むか否かを判定する。ここでは、システム制御部５０は、鏡面反射ブロック数blkCountSが所定の閾値以上である場合に入力画像が鏡面反射成分を含むと判定する。システム制御部５０は、入力画像が鏡面反射成分を含むと判定した場合は処理をＳ３０６に進め、入力画像が鏡面反射成分を含まないと判定した場合は処理をＳ３０７に進める。
【０１０３】
Ｓ３０６でシステム制御部５０は、鏡面反射成分に基づきホワイトバランスゲイン（第２のホワイトバランスゲイン）を算出する。一方、Ｓ３０５〜３０６の処理は第１の実施形態の同符号の処理と同様である。
Ｓ１００２で第２の信頼度算出手段としてのシステム制御部５０は、抽出された鏡面反射成分の信頼度（鏡面反射信頼度）を算出する。本実施形態における鏡面反射信頼度の算出方法について図１２を用いて説明する。本実施形態においては、まず鏡面反射信頼度１〜３を算出し、鏡面反射信頼度１〜３の積を最終的な鏡面反射信頼度とする。
【０１０４】
（鏡面反射信頼度１の算出）
第１の鏡面反射信頼度としての鏡面反射信頼度１は、画像全体のブロック数に対する鏡面反射ブロックの割合、すなわち、画像全体のうち、鏡面反射成分が存在すると判定された領域の割合に依存する。例えば図１２（ａ）に示す、鏡面反射ブロックの割合と鏡面反射信頼度１との関係に基づき、鏡面反射信頼度１を算出する。本実施形態では、鏡面反射ブロックの割合が０〜０．５までは鏡面反射信頼度１が線形的に０〜１．０まで増加し、その後は１．０を維持するものとする。システム制御部５０は、例えば図１２（ａ）に示す鏡面反射ブロックの割合と鏡面反射信頼度１との関係をテーブルや関数等の形式で保存しておき、図１１のＳ１１０６で算出した鏡面反射ブロック割合を用いて鏡面反射信頼度１を算出することができる。
【０１０５】
（鏡面反射信頼度２の算出）
第２の鏡面反射信頼度としての鏡面反射信頼度２は、画像全体のブロック数に対する輪郭ブロックの割合、すなわち、画像全体のうち、輪郭が含まれると判定された領域の割合に依存する。例えば図１２（ｂ）に示す、輪郭ブロックの割合と鏡面反射信頼度２との関係に基づき、鏡面反射信頼度２を算出する。本実施形態では、輪郭ブロックの割合が０の時に鏡面反射信頼度２が１．０であり、輪郭ブロックの割合が増加するに従って鏡面反射信頼度２は線形に減少し、下限値（ここでは０．２）に達すると下限値を維持するものとする。システム制御部５０は、例えば図１２（ｂ）に示す輪郭ブロックの割合と鏡面反射信頼度２との関係をテーブルや関数等の形式で保存しておき、図１１のＳ１１０７で算出した輪郭ブロック割合を用いて鏡面反射信頼度２を算出することができる。輪郭が多い画像は、処理対象画素と比較画素の差分が大きくなる。これは、輪郭が多い画像は被写体が模様を有する場合が多く、差分が大きくなりやすいが、本来抽出したい鏡面反射に起因する差分との区別がつかないため、輪郭が多い画像に関しては、鏡面反射信頼度２を低下させる。
【０１０６】
（鏡面反射信頼度３の算出）
第３の鏡面反射信頼度としての鏡面反射信頼度３は、鏡面反射成分の色の分布の広がり度に基づき算出する。具体的には、図１１のＳ１１０３で算出した鏡面反射ブロックの色の最大値(Cx_maxS, Cy_maxS)、最小値(Cx_minS,Cy_minS)から鏡面反射に基づく色の広がり度を算出する。システム制御部５０は、鏡面反射ブロックの色の最大値と最小値の差分から鏡面反射広がり度を
鏡面反射Cx広がり度 = (Cx_maxS - Cx_minS) / Cx_base
鏡面反射Cy広がり度 = (Cy_maxS - Cy_minS) / Cy_base
として算出する。ここで、Cx_baseおよびCy_baseは図４（ａ）に示すように、白抽出範囲４０１で取り得る最大幅を示す。
【０１０７】
そして、システム制御部５０は、算出した鏡面反射のCx広がり度とCy広がり度とを加算し、鏡面反射広がり度とする。そして、例えば図１３（ｃ）に示す鏡面反射広がり度と鏡面反射信頼度３との関係から、鏡面反射信頼度３を算出する。本実施形態では、本実施形態では、鏡面反射広がり度が０の時に鏡面反射信頼度２が１．０であり、鏡面反射広がり度が増加するに従って鏡面反射信頼度３は線形に減少し、下限値（ここでは０．２）に達すると下限値を維持するものとする。
【０１０８】
鏡面反射成分の色の最大値と最小値の差が大きい場合、鏡面反射成分の色のばらつきが大きく、安定したデータが抽出できていないことを意味するため、鏡面反射広がり度が高い場合は鏡面反射信頼度を低下させている。
【０１０９】
上述のようにして鏡面反射信頼度１〜３を算出した後、システム制御部５０は、以下のように鏡面反射信頼度１〜３の積によって最終的な鏡面反射信頼度を算出する。
鏡面反射信頼度＝鏡面反射信頼度１×鏡面反射信頼度２×鏡面反射信頼度３
【０１１０】
図１０に戻り、Ｓ１００３でシステム制御部５０は、鏡面反射信頼度が所定の閾値（例えば０．４）以上か判定する。システム制御部５０は、鏡面反射信頼度が閾値以上と判定されれば処理をＳ１００４に、閾値未満と判定されれば処理をＳ３０７に、それぞれ進める。
【０１１１】
Ｓ１００４で混合手段としてのシステム制御部５０は、白抽出信頼度および鏡面反射信頼度から、ホワイトバランスゲインのＭＩＸ率１を算出する。ＭＩＸ率１を式で表すと以下のようになる。
ＭＩＸ率１  ＝  白抽出信頼度  ／（白抽出信頼度＋鏡面反射信頼度）
つまり、ＭＩＸ率１は、白抽出信頼度と鏡面反射信頼度の合計に対する白抽出信頼度の割合に応じた重みである。また、（１−ＭＩＸ率）は、白抽出信頼度と鏡面反射信頼度の合計に対する鏡面反射信頼度の割合に応じた重みである。
【０１１２】
Ｓ１００５でシステム制御部５０は、ＭＩＸ率１に基づき、白抽出に基づくホワイトバランスゲイン（wR-Gain, wG-Gain, wB-Gain）と、鏡面反射に基づくホワイトバランスゲイン（sR-Gain, sG-Gain, sB-Gain）の結果を混合し、最終的なホワイトバランスゲインを算出する。
最終的なホワイトバランスの算出式を以下に示す。
R-Gain  ＝  wR-Gain × ＭＩＸ率１ + sR-Gain × (１− ＭＩＸ率１)
G-Gain  ＝  wG-Gain × ＭＩＸ率１ + sG-Gain × (１− ＭＩＸ率１)
B-Gain  ＝  wB-Gain × ＭＩＸ率１ + sB-Gain × (１− ＭＩＸ率１)
【０１１３】
なお、Ｇに対するホワイトバランスゲインが固定値「１」である場合（すなわち、Ｇ成分は増減させない場合）には、Ｇ-Gainの算出は不要である。
【０１１４】
一方、Ｓ３０７でシステム制御部５０は、ホワイトバランスゲイン値に、予め不揮発性メモリ１２４に用意した太陽光のホワイトバランスゲイン値を設定する。この処理は第１の実施形態の同符号と同じである。
【０１１５】
Ｓ１００６でシステム制御部５０は、白抽出信頼度からホワイトバランスゲインのＭＩＸ率２を算出する。なお、ＭＩＸ率２には、白抽出信頼度の値を設定する（ＭＩＸ率２＝白抽出信頼度）。
【０１１６】
Ｓ１００７でシステム制御部５０は、白抽出に基づくホワイトバランスゲイン（wR-Gain, wG-Gain, wB-Gain）と太陽光のゲイン（pR-Gain, pG-Gain, pB-Gain）の混合処理を行う。
【０１１７】
最終的なホワイトバランスの算出式を以下に示す。
R-Gain  ＝  wR-Gain × ＭＩＸ率２ + pR-Gain × (１− ＭＩＸ率２)
G-Gain  ＝  wG-Gain × ＭＩＸ率２ + pG-Gain × (１− ＭＩＸ率２)
B-Gain  ＝  wB-Gain × ＭＩＸ率２ + pB-Gain × (１− ＭＩＸ率２)
【０１１８】
なお、ここでも、Ｇに対するホワイトバランスゲインが固定値「１」である場合（すなわち、Ｇ成分は増減させない場合）には、Ｇ-Gainの算出は不要である。
【０１１９】
Ｓ１００８でシステム制御部５０は、算出した最終ホワイトバランスゲインを、ＷＢ増幅部２０１（図２）に設定する。ＷＢ増幅部２０１は設定されたホワイトバランスゲインに基づき入力ＲＧＢ値の増幅処理を行う。
【０１２０】
以上説明したように、本実施形態では、第１の実施形態の構成に加えて、鏡面反射の信頼度を算出し、白抽出の信頼度と鏡面反射の信頼度の二つを用いて、ホワイトバランスゲインのＭＩＸ率を算出する構成とした。
このような構成をとることで、信頼性の高いホワイトバランスゲインを重視したホワイトバランスゲインが生成されるため、さらに精度の高いホワイトバランス制御が可能となる。
【０１２１】
なお、本実施形態では、２つのホワイトバランスゲインのＭＩＸ率を算出し、２つのホワイトバランスゲインを混合する構成について説明したが、２つのゲインの値を必ずしも混合する構成をとる必要はない。例えば、白抽出信頼度と鏡面反射信頼度を比較し、信頼度が高い方のホワイトバランスゲインを最終ホワイトバランスゲインに設定する構成をとることも可能である。
【０１２２】
また、本実施形態では、２つのホワイトバランスゲインを混合する構成について説明したが、太陽光に基づくホワイトバランスゲインも含めて３つ以上のホワイトバランスゲインを混合する構成をとってもかまわない。例えば、白抽出信頼度と鏡面反射信頼度の合計値が１に満たない時は太陽光に基づくホワイトバランスゲインも混合する構成をとることも可能である。この時の最終ホワイトバランスゲインは、α＝1-（白抽出信頼度＋鏡面反射信頼度)とすると、
R-Gain = 白抽出信頼度× wR-Gain + 鏡面反射信頼度× sR-Gain + α× pR-Gain
G-Gain = 白抽出信頼度× wG-Gain + 鏡面反射信頼度× sG-Gain + α× pG-Gain
B-Gain = 白抽出信頼度× wB-Gain + 鏡面反射信頼度× sB-Gain + α× pB-Gain
で表される。
【０１２３】
また、本実施形態では、鏡面反射信頼度が低い場合に鏡面反射に基づくホワイトバランスゲインの代わりに太陽光のホワイトバランスゲインを混合する構成としたが、他のホワイトバランスゲインを混合してもよい。例えば、入力画像が全体的に赤を帯びている場合は白熱灯のホワイトバランスゲイン、青を帯びている場合は日陰のホワイトバランスゲインを鏡面反射に基づくホワイトバランスゲインの代わりに混合してもよい。
【０１２４】
また、本実施形態では、鏡面反射ブロックの割合、輪郭ブロックの割合、鏡面反射成分の色の広がり度に基づいて鏡面反射信頼度を算出したが、他の方法を用いて算出してもよい。具体的には、鏡面反射の量、輪郭特徴、鏡面反射の色特徴の何れかの基づき信頼度を算出する構成であれば、どのような方法で鏡面反射の信頼度を算出してもよい。例えば、鏡面反射成分の量だけで信頼度を算出してもよい。
【０１２５】
また、本実施形態では、鏡面反射成分の色の広がり度を、鏡面反射成分の色の最大値と最小値の差分に基づき決定したが、鏡面反射成分の色の分散値から算出してもよい。この場合、分散値が大きければ鏡面反射成分がばらついていると見なして信頼度を低くする。
【０１２６】
また、本実施形態では、輪郭ブロックの数を直接用いて、鏡面反射信頼度を算出したが、輪郭情報を鏡面反射ブロックか否かの判定に利用してもよい。この場合、輪郭ブロックと判断したブロックは、鏡面反射ブロックと見なさないように制御する。例えば、図１１のＳ６０９の判定において、鏡面反射ブロックとして加算する条件として「差分カウント値countSが閾値Ｔ２より大きい」だけでなく「輪郭カウント値countEが閾値Ｔ５より少ない」を追加する。これにより、輪郭ブロックが多い場合は、鏡面反射ブロックが少なくなるため、結果的に輪郭ブロックの数を鏡面反射信頼度に反映させることが可能となる。
【０１２７】
また、鏡面反射の量、輪郭特徴、鏡面反射の色特徴以外の情報として、被写体認識を行い被写体認識結果によって鏡面反射信頼度を決定してもよい。
図１１に示す鏡面反射信頼度算出処理において、被写体認識処理を実行する。ここでは、説明の簡略化のため、被写体認識処理では鏡面反射成分を持たない青空を認識するものとする。図１３は青空を含む被写体画像を８×８個の６４ブロックに分割している様子を示している。
【０１２８】
システム制御部５０は例えば画像処理部１０５を用いてブロック単位で青空評価値を算出し、青空のブロックであるか否かを判定する。青空評価値の算出は、画像中の位置と色によって算出する。例えば、画像の上部にある程、また、所定の色相（青色）の彩度が高いブロックほど青空評価値を高くする。そして、システム制御部５０は青空評価値が所定の閾値を超えたブロックを青空ブロックと判定し、その総数を求める。図１３において斜線が付加されたブロック１３０１は、青空ブロックと判定されたブロックである。
【０１２９】
青空ブロックの画像全体に対する割合（青空ブロックの総数／６４）が所定の閾値（例えば０．７）を超える場合は鏡面反射している被写体の割合が少ないと考えられる。そのため、システム制御部５０は、１．０未満の所定値（一定値または、青空ブロックの割合の増加に応じて減少する値）を最終的な鏡面反射信頼度として用いる。
【０１３０】
このように、鏡面反射を持たない青空中心の被写体の場合は、鏡面反射の信頼度を下げ、白抽出や太陽光に基づくホワイトバランスゲインを重視するように制御する。これにより、より精度良く、鏡面反射の信頼度を求めることが可能である。
【０１３１】
なお、被写体認識結果のみによって鏡面反射信頼度を求めてもよいが、第２の実施形態の構成のように被写体認識結果と他の情報と組み合わせて鏡面反射信頼度を算出してもよい。例えば被写体認識の結果、青空ブロックと認識されたブロックは、鏡面反射ブロックとみなさないように制御することができる。
【０１３２】
例えば、図１１のＳ６０９の判定において、鏡面反射ブロックとして加算する条件として「差分カウント値countSが閾値Ｔ２より大きい」だけでなく「青空ブロックでない」を追加する。これにより、鏡面反射ブロックに青空ブロックがある場合には鏡面反射ブロック数blkCountSが小さくなるため、青空ブロックが多い場合は、結果的に鏡面反射信頼度が低くなる。
【０１３３】
なお、ここでは被写体認識として青空を認識する例を元に説明したが、被写体認識情報によって鏡面反射信頼度を算出する構成であれば、どのような被写体を認識してもかまわない。例えば、被写体認識処理により布や金属、人物の顔などを認識し、鏡面反射が生じにくい布の場合は、鏡面反射信頼度を低くし、鏡面反射が生じやすい金属や人物の顔の場合は、鏡面反射信頼度を高くしてもよい。
【０１３４】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014007530.tif 000003
【図２】
2014007530.tif 000004
【図３】
2014007530.tif 000005
【図５】
2014007530.tif 000006
【図６】
2014007530.tif 000007
【図８】
2014007530.tif 000008
【図９】
2014007530.tif 000009
【図１０】
2014007530.tif 000010
【図１１】
2014007530.tif 000011
【図１２】
2014007530.tif 000012
【図４】
2014007530.tif 000013
【図７】
2014007530.tif 000014
【図１３】
2014007530.tif 000015