(57)【要約】【課題】  入力画像から精度良くホワイトバランスゲインを得ることが可能な画像処理装置およびその制御方法を提供する。【解決手段】  入力画像から、鏡面反射成分を抽出する。そして、抽出された鏡面反射成分に基づいて、白抽出の方法やホワイトバランスゲインの値などを補正する。例えば、白抽出範囲を鏡面反射成分を考慮した範囲に補正したり、白抽出範囲内の画素値に対して、鏡面反射成分との関係に応じた重み付けしたり、ホワイトバランスゲインのとりうる範囲を鏡面反射成分の色温度に応じて補正したりする。【選択図】  図８
2015005927.tif 000002
【特許請求の範囲】
【請求項１】
所定の色空間における白抽出範囲を設定する設定手段と、
入力画像に含まれる鏡面反射成分を抽出する第１の抽出手段と、
前記抽出された鏡面反射成分に基づいて、前記白抽出範囲を補正する補正手段と、
前記入力画像から、前記補正された前記白抽出範囲に含まれる色を有する画素を抽出する第２の抽出手段と、
前記抽出された画素の値に基づいて、前記入力画像に対するホワイトバランスゲインを算出する算出手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記補正手段は、前記鏡面反射成分の前記色空間における座標に基づいて、前記設定手段が設定した範囲より小さくなるように前記白抽出範囲を補正することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記補正手段は、前記鏡面反射成分の前記色空間における座標を含む領域と、前記設定手段が設定した前記白抽出範囲とが重複する領域に、前記白抽出範囲を補正することを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記補正手段は、前記入力画像に前記鏡面反射成分が含まれると判定される場合に前記補正を行い、前記入力画像に前記鏡面反射成分が含まれないと判定された場合には前記補正を行わないことを特徴とする請求項１から請求項３のいずれか１項に記載の画像処理装置。
【請求項５】
所定の色空間における白抽出範囲を設定する設定手段と、
入力画像に含まれる鏡面反射成分を抽出する第１の抽出手段と、
前記入力画像から、前記白抽出範囲に含まれる色を有する画素を抽出する第２の抽出手段と、
前記第２の抽出手段によって抽出された画素の色に、前記抽出された鏡面反射成分との関係に基づく重み付けを行う補正手段と、
前記重み付けされた画素の色に基づいて、前記入力画像に対するホワイトバランスゲインを算出する算出手段と、
を有し、
前記補正手段は、前記色空間において前記鏡面反射成分との距離が小さい画素の色ほど大きな重み付けを行うことを特徴とする画像処理装置。
【請求項６】
前記第１の抽出手段が、前記入力画像の部分領域ごとに前記鏡面反射成分を抽出し、
前記第２の抽出手段が、前記部分領域ごとに前記画素の抽出を行い、
前記補正手段が、前記部分領域ごとに前記重み付けを行う、
ことを特徴とする請求項５記載の画像処理装置。
【請求項７】
前記補正手段は、前記部分領域のうち、平均色が前記白抽出範囲に含まれ、かつ鏡面反射成分が含まれる部分領域に対して、前記抽出された鏡面反射成分との関係に基づく重み付けを行うことを特徴とする請求項６記載の画像処理装置。
【請求項８】
前記補正手段は、前記部分領域のうち、平均色が前記白抽出範囲に含まれるが、鏡面反射成分が含まれない部分領域に対しては、前記抽出された鏡面反射成分との関係に基づく重み付けによる重みの範囲の中間値で一律に重み付けを行うことを特徴とする請求項７記載の画像処理装置。
【請求項９】
前記補正手段は、前記部分領域のうち、平均色が前記白抽出範囲に含まれない部分領域に対しては前記重み付けを行わないことを特徴とする請求項６から請求項８のいずれか１項に記載の画像処理装置。
【請求項１０】
入力画像から、所定の色空間における白抽出範囲に含まれる色を有する画素を抽出する第１の抽出手段と、
前記抽出された画素の値に基づいて、前記入力画像に対するホワイトバランスゲインを算出する算出手段と、
前記入力画像に含まれる鏡面反射成分を抽出する第２の抽出手段と、
前記入力画像の明るさと、前記抽出された鏡面反射成分とに基づいて、ホワイトバランスゲインの限界値を決定する決定手段と、
前記算出手段が算出したホワイトバランスゲインを、前記限界値の範囲内となるように補正する補正手段と、
を有することを特徴とする画像処理装置。
【請求項１１】
前記決定手段は、前記入力画像が明るいほど前記限界値の範囲が狭くなるように前記限界値を決定することを特徴とする請求項１０記載の画像処理装置。
【請求項１２】
前記決定手段は、前記鏡面反射成分の色温度が高いほど高色温度側の限界値が小さく、前記鏡面反射成分の色温度が低いほど低色温度側の限界値が大きくなるように、前記入力画像の明るさに基づく限界値を補正し、
前記補正手段は、前記補正された限界値の範囲内となるように前記算出手段が算出したホワイトバランスゲインを補正することを特徴とする請求項１１記載の画像処理装置。
【請求項１３】
設定手段が、所定の色空間における白抽出範囲を設定する設定工程と、
第１の抽出手段が、入力画像に含まれる鏡面反射成分を抽出する第１の抽出工程と、
補正手段が、前記抽出された鏡面反射成分に基づいて、前記白抽出範囲を補正する補正工程と、
第２の抽出手段が、前記入力画像から、前記補正された前記白抽出範囲に含まれる色を有する画素を抽出する第２の抽出工程と、
算出手段が、前記抽出された画素の値に基づいて、前記入力画像に対するホワイトバランスゲインを算出する算出工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項１４】
設定手段が、所定の色空間における白抽出範囲を設定する設定工程と、
第１の抽出手段が、入力画像に含まれる鏡面反射成分を抽出する第１の抽出工程と、
第２の抽出手段が、前記入力画像から、前記白抽出範囲に含まれる色を有する画素を抽出する第２の抽出工程と、
補正手段が、前記第２の抽出手段によって抽出された画素の色に、前記抽出された鏡面反射成分との関係に基づく重み付けを行う補正工程と、
算出手段が、前記重み付けされた画素の色に基づいて、前記入力画像に対するホワイトバランスゲインを算出する算出工程と、
を有し、
前記補正工程において前記補正手段は、前記色空間において前記鏡面反射成分との距離が小さい画素の色ほど大きな重み付けを行うことを特徴とする画像処理装置の制御方法。
【請求項１５】
第１の抽出手段が、入力画像から、所定の色空間における白抽出範囲に含まれる色を有する画素を抽出する第１の抽出工程と、
算出手段が、前記抽出された画素の値に基づいて、前記入力画像に対するホワイトバランスゲインを算出する算出工程と、
第２の抽出手段が、前記入力画像に含まれる鏡面反射成分を抽出する第２の抽出工程と、
決定手段が、前記入力画像の明るさと、前記抽出された鏡面反射成分とに基づいて、ホワイトバランスゲインの限界値を決定する決定工程と、
補正手段が、前記算出手段が算出したホワイトバランスゲインを、前記限界値の範囲内となるように補正する補正工程と、
を有することを特徴とする画像処理装置の制御方法。
【請求項１６】
コンピュータを、請求項１から請求項１０のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置およびその制御方法に関し、特には画像のホワイトバランスを調節する技術に関する。
【背景技術】
【０００２】
従来、デジタルカメラに用いられるオートホワイトバランス制御機能は、外部センサを使用せず、撮像素子の出力を用いてホワイトバランスを調整するものが主流となっている。例えば特許文献１には、撮像素子の出力を用いてホワイトバランスを調整する手法として、入力画像中から白（無彩色）であると思われる色を抽出し、抽出した色が白になるようなホワイトバランスゲインを算出する方法（白抽出方式）が開示されている。
【０００３】
また、被写体物体光を鏡面反射成分と拡散反射成分に分離する二色性反射モデルを利用したものが知られている。
【０００４】
また、特許文献２には、明るさの異なる近接画素間の差分を算出することで、被写体を照射する光源色を特定する方法が開示されている。この方法は、高輝度な第１の画素（物体色を反映する拡散反射成分と光源色を反映する鏡面反射成分の両方を含む）から第１の画素よりも低輝度な画素（物体色のみを含む拡散反射成分）の差分を算出することで、光源色の成分を抽出する原理に基づいている。
【０００５】
具体的には、高輝度の第１の画素のＲＧＢ値と、第１の画素よりも低輝度な第２の画素のＲＧＢ値の差分を算出する。この差分ＲＧＢ値は光源色と同じベクトル成分を持つＲＧＢ値であるから、差分ＲＧＢ値の成分比からホワイトバランスゲインを算出することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平５−８３７２８号公報
【特許文献２】特開２００７−１３４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載される方法では、特に被写体が暗い場合など、条件によっては誤った色を白として抽出してしまい、ホワイトバランスの精度が低下するという課題があった。また、特許文献２の技術では、大まかな光源色は推定可能であるが、高精度で光源の色温度を推定することが困難であるという課題があった。
【０００８】
本発明はこのような従来技術の課題に鑑みなされたものであり、入力画像から精度良くホワイトバランスゲインを得ることが可能な画像処理装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の目的は、所定の色空間における白抽出範囲を設定する設定手段と、入力画像に含まれる鏡面反射成分を抽出する第１の抽出手段と、抽出された鏡面反射成分に基づいて、白抽出範囲を補正する補正手段と、入力画像から、補正された白抽出範囲に含まれる色を有する画素を抽出する第２の抽出手段と、抽出された画素の値に基づいて、入力画像に対するホワイトバランスゲインを算出する算出手段と、を有することを特徴とする画像処理装置によって達成される。
【発明の効果】
【００１０】
本発明によれば、入力画像から精度良くホワイトバランスゲインを得ることが可能な画像処理装置およびその制御方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係る画像処理装置の一例としてのデジタルカメラの構成例を示すブロック図
【図２】図１の画像処理部の構成例を示すブロック図
【図３】第１の実施形態におけるホワイトバランスゲイン算出処理を説明するためのフローチャート
【図４】図３のＳ３０１における鏡面反射成分抽出処理を説明するためのフローチャート
【図５】第１の実施形態における入力画像の例を示す図
【図６】第１の実施形態における差分およびカウント値の格納方法を模式的に示す図
【図７】第１の実施形態における光源色の推定方法を説明するための図
【図８】第１の実施形態における白抽出範囲の設定および補正の例を示す図
【図９】第２の実施形態におけるホワイトバランスゲイン算出処理を説明するためのフローチャート
【図１０】図９のＳ９０４およびＳ９０５において決定される重みの例を示す図
【図１１】第３の実施形態におけるホワイトバランスゲイン算出処理を説明するためのフローチャート
【図１２】第３の実施形態における鏡面反射成分のブロック平均色と、画素のブロック平均色との関係例と重みの例を示す図
【図１３】第４の実施形態におけるホワイトバランスゲイン算出処理を説明するためのフローチャート
【図１４】第４の実施形態におけるホワイトバランスゲインの限界値の例を示す図
【図１５】第４の実施形態における、鏡面反射成分の色温度に応じたホワイトバランスゲインの限界値の制御例を示す図
【発明を実施するための形態】
【００１２】
本発明の例示的な実施形態を、添付図面に基づいて詳細に説明する。以下の実施形態では、本発明に係る画像処理装置の一例としてのデジタルカメラを説明するが、本発明において撮影に係る構成は必須ではなく、画像データを取得可能な任意の装置で本発明を実施可能である。
【００１３】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るデジタルカメラ１００の構成例を示すブロック図である。
図１において、レンズ群１０１は、フォーカスレンズを含むズームレンズである。絞り機能を備えるシャッタ１０２が、レンズ群１０１と撮像部１０３との間に設けられている。撮像部１０３は、レンズ群１０１によって撮像面に形成される光学像を画素単位の電気信号に変換するＣＣＤ／ＣＭＯＳイメージセンサを代表とする撮像素子を有する。Ａ／Ｄ変換器１０４は、撮像部１０３が出力するアナログ信号をデジタル信号（画像データ）に変換する。
【００１４】
画像処理部１０５は、Ａ／Ｄ変換器１０４から出力される画像データに対し、色補間（デモザイク）、ホワイトバランス調整、γ補正、輪郭強調、ノイズリダクション、色補正などの各種画像処理を行う。画像メモリ１０６は画像データを一時的に記憶する。メモリ制御部１０７は、画像メモリ１０６の読み書きを制御する。Ｄ／Ａ変換器１０８は、画像データをアナログ信号に変換する。表示部１０９はＬＣＤや有機ＥＬディスプレイ等の表示装置を有し、各種ＧＵＩやライブビュー画像、記録媒体１１２から読み出して再生した画像などを表示する。コーデック部１１０は、画像メモリ１０６に記憶されている画像データを記録媒体に記録するために予め定められた方法で符号化したり、画像ファイルに含まれる符号化画像データを例えば表示のために復号したりする。
【００１５】
インタフェース（Ｉ／Ｆ）１１１は、例えば半導体メモリカードやカード型ハードディスクなどの着脱可能な記録媒体１１２を、デジタルカメラ１００と機械的および電気的に接続する。システム制御部５０は例えばＣＰＵやＭＰＵなどのプログラマブルなプロセッサであってよい。システム制御部５０は、例えば不揮発性メモリ１２４や内蔵する不揮発性メモリに記録されたプログラムを実行して必要なブロックや回路を制御することにより、後述する光源推定処理を始めとしたデジタルカメラ１００の機能を実現する。
【００１６】
操作部１２０は、ユーザがデジタルカメラ１００に各種の指示を入力するためのボタンやスイッチなどをまとめて記載したものである。電源スイッチ１２１は操作部１２０に含まれるスイッチ群の１つであるが、便宜上異なるブロックで記載している。電源制御部１２２は、電池検出回路、ＤＣ−ＤＣコンバータ、通電するブロックを切り替えるスイッチ回路等により構成され、例えば充電池である電源部１２３について、装着の有無、種類、電池残量等の情報を検出する。また、電源制御部１２２は、電源部１２３に関する検出結果及びシステム制御部５０の指示に基づいてＤＣ−ＤＣコンバータを制御し、必要な電圧を必要な期間、記録媒体１１２を含むデジタルカメラ１００の各部へ供給する。
【００１７】
不揮発性メモリ１２４は電気的に消去・記録可能な、例えばＥＥＰＲＯＭ等であってよい。不揮発性メモリ１２４は、各種の設定値、ＧＵＩデータをはじめ、システム制御部５０がＭＰＵやＣＰＵである場合にはプログラムが記録される。
【００１８】
システムタイマ１２５は各種制御に用いる時間や、内蔵時計の時刻を計測する。システムメモリ１２６は、システム制御部５０の動作用の定数や変数を保存したり、不揮発性メモリ１２４から読みだしたプログラム等を展開するために用いられる、例えば揮発性メモリである。
【００１９】
次に、デジタルカメラ１００における撮影時の動作について説明する。
例えば撮像部１０３は、シャッタ１０２が開いている際にレンズ群１０１が撮像面に形成する被写体像を撮像素子によって光電変換し、アナログ画像信号としてＡ／Ｄ変換器１０４へ出力する。Ａ／Ｄ変換器１０４は撮像部１０３から出力されるアナログ画像信号をデジタル画像信号（画像データ）に変換し画像処理部１０５に出力する。
【００２０】
画像処理部１０５は、Ａ／Ｄ変換器１０４からの画像データ、又は、メモリ制御部１０７からの画像データに対し、色補間（デモザイク）、γ補正、輪郭強調、ノイズリダクション、色補正などの各種画像処理を行う。
【００２１】
また、画像処理部１０５では、撮影で得られた画像データを用いて輝度やコントラストなどに関する所定の演算処理を行い、得られた演算結果に基づいてシステム制御部５０が測距制御、露光制御を行う。このように、本実施形態のデジタルカメラ１００では、ＴＴＬ（スルー・ザ・レンズ）方式のＡＦ（オートフォーカス）処理、ＡＥ（自動露出）処理を行う。画像処理部１０５ではさらに、撮影で得られた画像データを用いて、撮影時に被写体を照明した光源色を推定し、推定した光源色に基づくオートホワイトバランス（ＡＷＢ）調整も行う。
【００２２】
画像処理部１０５から出力された画像データは、メモリ制御部１０７を介して画像メモリ１０６に書き込まれる。画像メモリ１０６は、撮像部１０３から出力された画像データや、表示部１０９に表示するための画像データを格納する。
【００２３】
また、Ｄ／Ａ変換器１０８は、画像メモリ１０６に格納されている画像表示用のデータをアナログ信号に変換して表示部１０９に供給する。表示部１０９は、ＬＣＤ等の表示装置に、Ｄ／Ａ変換器１０８からのアナログ信号に応じた表示を行う。
【００２４】
コーデック部１１０は、画像メモリ１０６に記録された画像データをＪＰＥＧやＭＰＥＧなどの規格に基づき符号化する。システム制御部５０は符号化した画像データに対して予め定められたヘッダなどを付与して画像ファイルを形成し、インタフェース１１１を介して記録媒体１１２に記録する。
【００２５】
なお、現在のデジタルカメラでは、撮影スタンバイ状態においては動画撮影を行い、撮影された動画を表示部１０９に表示し続けることにより表示部１０９を電子ビューファインダ（ＥＶＦ）として機能させるのが一般的である。この場合、シャッタ１０２は開いた状態とし、撮像部１０３のいわゆる電子シャッタを用いて例えば３０フレーム／秒の撮影を行う。
【００２６】
そして、操作部１２０に含まれるシャッタボタンが半押しされると上述のＡＦ，ＡＥ制御が行われ、全押しされると本撮影により記録用の静止画撮影が実行され、記録媒体１１２に記録される。また、動画撮影ボタンなどにより動画撮影が指示された場合は、記録媒体１１２への動画記録を開始する。
【００２７】
図２は、画像処理部１０５の機能構成例を示すブロック図である。
図１のＡ／Ｄ変換器１０４から出力された画像データは、輝度・色信号生成部２００に入力される。画像データは、撮像素子に設けられたカラーフィルタを構成する色成分の１つに対応した値を有する。一般的に用いられるベイヤー配列の原色カラーフィルタが用いられる場合、画像データは、Ｒ画素，Ｇ画素，Ｂ画素のデータから構成される。
【００２８】
輝度・色信号生成部２００はこのような画像データに対してデモザイク処理を行い、各画素について輝度信号Ｙおよび色信号Ｒ，Ｇ，Ｂを生成する。輝度・色信号生成部２００は、生成した色信号Ｒ，Ｇ，Ｂをホワイトバランス（ＷＢ）増幅部２０１へ、輝度信号Ｙを輝度γ処理部２０５へ出力する。また、輝度・色信号生成部２００は、色信号Ｒ，Ｇ，Ｂを、画像データ(R, G, B)として、メモリ制御部１０７を介して画像メモリ１０６に出力する。
【００２９】
また、輝度・色信号生成部２００で生成した色信号Ｒ，Ｇ，Ｂは色空間変換処理部２０７にも入力される。色空間変換処理部２０７では、以下の式を用いて、色信号Ｒ，Ｇ，Ｂを色度Ｃｘ，Ｃｙに変換し、画像データ(Cx, Cy)としてメモリ制御部１０７を介して画像メモリ１０６に出力する。
Cx = (R - B) / Y
Cy = (R + B -2G) / Y
Y = (R + G + B) / 2
【００３０】
ＷＢ増幅部２０１は、後述する処理によりシステム制御部５０が算出するホワイトバランスゲイン値に基づき、色信号Ｒ，Ｇ，Ｂにゲインを適用し、ホワイトバランスを調整する。色γ処理部２０２では、色信号Ｒ，Ｇ，Ｂにガンマ補正を行う。色差信号生成部２０３では、色信号Ｒ，Ｇ，Ｂから色差信号Ｒ−Ｙ、Ｂ−Ｙ信号を生成し色補正部２０４に出力する。色補正部２０４では色差信号Ｒ−Ｙ、Ｂ−Ｙにゲインを適用するなどにより、色相や彩度を調整する。色補正部２０４は、補正後の色差信号Ｒ−Ｙ、Ｂ−Ｙをメモリ制御部１０７を介して画像メモリ１０６に出力する。
【００３１】
一方、輝度γ処理部２０５では輝度信号Ｙに対してガンマ補正を行い、輪郭強調処理部２０６へ出力する。輪郭強調処理部２０６は輝度信号Ｙに対して輪郭強調処理を行い、メモリ制御部１０７を介して画像メモリ１０６に出力する。輪郭強調処理部２０６の出力する輝度信号Ｙと、色補正部２０４が出力する色差信号Ｒ−Ｙ，Ｂ−Ｙが、コーデック部１１０によって符号化され、最終的に記録媒体１１２に記録される。
【００３２】
システム制御部５０は、画像処理部１０５から画像メモリ１０６に出力された画像データ（ＲＧＢ）および画像データ（ＣｘＣｙ）を読み出してシステムメモリ１２６に展開する。そして、システム制御部５０はこれらの画像データを解析して光源色の成分を推定し、推定した光源色に応じたホワイトバランスゲインを算出する。
【００３３】
このホワイトバランスゲインの算出処理について図３のフローチャートを用いて詳細に説明する。まず、Ｓ３０１で第１の抽出手段としてのシステム制御部５０は、鏡面反射成分の抽出を行う。Ｓ３０１における処理の詳細を、図４に示すフローチャートを用いて説明する。
【００３４】
図４において、Ｓ４０１およびＳ４０７は、Ｓ４０２〜Ｓ４０６の処理が、対象画素をラスタスキャンしながら全画素に対して実施されることを示している。
【００３５】
Ｓ４０２でシステム制御部５０は、処理対象画素が飽和していないか確認する。具体的には、システム制御部５０は、ＲＧＢ成分のそれぞれを所定の閾値と比較し、閾値より大きい成分があれば画素が飽和していると判断し、現在の処理対象画素の処理をスキップして、次の画素について飽和の確認を行う。一方、ＲＧＢ成分がいずれも閾値以下であれば画素は飽和していないと判断してシステム制御部５０は処理をＳ４０３に進める。
【００３６】
Ｓ４０３でシステム制御部５０は、処理対象画素と比較画素の差分を算出する。処理対象画素および比較画素について、図５（ａ）を用いて説明する。図５（ａ）において５００は入力画像を示しており、５０１は入力画像５００の一部を拡大した状態を模式的に示している。５０１におけるメッシュは画素の境界を示している。５０２は現在の処理における処理対象画素を示し、図４の処理は、処理対象画素５０２の位置を順次ラスタスキャンしながら各画素について実施される。５０３、５０４、５０５は処理対象画素５０２に対する比較画素を示しており、本実施形態では処理対象画素５０２から所定の方向に所定の距離（画素数）離れた位置の複数の画素を比較画素とする。
【００３７】
処理対象画素と比較画素とが満たすべき位置関係は予め定めておくことができるが、基本的には処理対象画素に近接した複数の位置にある画素を比較画素とする。ここでは、一例として処理対象画素を左上角の画素として有する４×４画素のブロックにおける残り３つの角の画素を比較画素としている。処理対象画素と比較画素との距離が短すぎると画素間の差が少なくなる可能性が高くなり、また距離が長すぎると同一物体に対応しない可能性が高くなる。従って、例えば数〜１０画素程度の範囲で実験的に距離を定める。なお、処理対象画素と比較画素との位置関係は、処理対象画素の位置が入力画像の端部となる場合などにおいて適宜変更されてよい。
【００３８】
Ｓ４０３でシステム制御部５０は、処理対象画素５０２と比較画素５０３との差分を算出する。即ち、システム制御部５０は、処理対象画素５０２のＲＧＢ値（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が閾値Ｔ３よりも大きい場合は入力画像が鏡面反射成分を所定量以上含むと判定して処理をＳ３０４に進める。鏡面反射ブロック数blkCountSが閾値Ｔ３以下であればシステム制御部５０は入力画像が鏡面反射成分の含有量が少ないと判定し、Ｓ３０４をスキップして処理をＳ３０５へ進める。
【００６１】
Ｓ３０４でシステム制御部５０は、鏡面反射成分に基づき、Ｓ３０２で設定した白抽出範囲を補正する。この処理について図８（ｃ）に基づいて説明する。図８（ｃ）は白抽出範囲と鏡面反射色との関係例を示した図である。
ここでは、被写体が暗い場合を例に説明する。前述したように、被写体が暗い場合には広い白抽出範囲８０１（図８（ａ））が設定されている。本実施形態においてシステム制御部５０は、Ｓ３０１で算出した、鏡面反射成分の平均値を示す平均差分値（aveR, aveG, aveB）に基づき白抽出範囲８０１を補正する。
【００６２】
まずシステム制御部５０は、ＲＧＢ形式の平均差分値（aveR, aveG, aveB）を、ＣｘＣｙ平面の値（色度座標）に変換する。図８（ｃ）において、座標８０３が変換後の平均差分値を示している。そして、システム制御部５０は、座標８０３を基準としてＣｙ方向に±ｄ２の範囲を黒体放射軸に沿ってＣｘ方向に±ｄ１の範囲移動した範囲を、鏡面反射成分に基づく白抽出範囲８０４とする。そして、システム制御部５０は、明るさに基づき算出した白抽出範囲８０１と鏡面反射成分に基づく白抽出範囲と重複する領域を補正後の白抽出範囲とする。図８（ｃ）の例では、鏡面反射に基づく白抽出範囲８０４が、明るさに基づく白抽出範囲８０１に全て含まれるため、鏡面反射に基づく白抽出範囲８０４がそのまま補正後の白抽出範囲となる。白抽出範囲の補正が終わると、システム制御部５０は処理をＳ３０５に進める。
【００６３】
なお、ｄ１およびｄ２の値は、例えば、鏡面反射成分の分布範囲に基づいて決定することができる。例えば、差分カウント値countSが閾値Ｔ２より大きいブロックについての平均差分値(blkR, blkG, blkB)が所定割合（例えば８０％）以上含まれる範囲となるような値として設定することができる。
【００６４】
Ｓ３０５で第２の抽出手段としてのシステム制御部５０は、入力画像の全ての画素に対して、白抽出範囲８０４に含まれる色を有するか否かを判定する。白抽出範囲に含まれる画素値(Cx, Cy)は、例えばシステムメモリ１２６であってよいバッファに加算される。
また、システム制御部５０は、白抽出範囲に含まれる画素値(Cx, Cy)を有する画素数を変数である白画素カウントに加算する。
【００６５】
Ｓ３０６でシステムは、Ｓ３０５における白抽出処理の結果に基づきホワイトバランスゲインを算出する。まずシステム制御部５０は、抽出した画素値(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は白抽出に基づくホワイトバランスゲイン（第１のホワイトバランスゲイン）を示している。
【００６７】
Ｓ３０７でシステム制御部５０は、算出したホワイトバランスゲインを、ＷＢ増幅部２０１（図２）に設定する。ＷＢ増幅部２０１は設定されたホワイトバランスゲインに基づき入力ＲＧＢ値の増幅処理を行う。
【００６８】
以上説明したように、本実施形態は、被写体の明るさに応じて設定される白抽出範囲を、入力画像から抽出した鏡面反射成分に基づいて補正することにより、特に被写体が暗い場合における白抽出の精度を向上させることができる。その結果、ホワイトバランス調整の精度を向上させることができる。
【００６９】
なお、本実施形態では、鏡面反射成分の平均値（平均色）に基づいて白抽出範囲を補正したが、平均値以外の鏡面反射成分の情報を用いて白抽出範囲を補正してもよい。例えば、鏡面反射成分（Ｃｘ，Ｃｙ）の分布から標準偏差を算出し標準偏差の定数倍の範囲を鏡面反射成分に基づく白抽出範囲としてもよい。また、鏡面反射成分のＣｘ最大値、Ｃｘ最小値、Ｃｙ最大値、Ｃｘ最大値を求め、（Ｃｘ最大値，Ｃｙ最大値）と（Ｃｘ最小値，Ｃｙ最小値）と黒体放射軸によって定まる範囲を鏡面反射成分に基づく白抽出範囲としてもよい。
【００７０】
また、本実施形態では、入力画像がある程度の鏡面反射成分を有する場合は常に鏡面反射成分に基づく白抽出範囲の補正を行う構成を説明した。しかし、被写体の明るさに応じた白抽出範囲に基づくホワイトバランス調整の信頼度が低下する条件を満たした場合にのみ、鏡面反射成分に基づく白抽出範囲の補正を行ってもよい。例えば、被写体の明るさが所定値未満の場合のみ鏡面反射成分に基づく白抽出範囲の補正を行う構成としてもよい。
【００７１】
また、本実施形態では、鏡面反射成分を処理対象画素と比較画素の差分から算出する方法について述べたが、他のいかなる方法を用いて鏡面反射成分を抽出してもよい。
【００７２】
また、本実施形態では、入力画像を水平，垂直の両方向に８分割して６４個のブロックに分割する例について説明したが、ブロックの分割方法や分割数に制限はない。例えば６４以上のブロックに分割しても、画像全体を１つのブロックとして扱ってもよい。また、ブロックの大きさも同一としなくてもよい。
【００７３】
また、本実施形態は、ＣｘＣｙ平面の値（色度）を用いて白抽出を行ったが、他の色空間（表色系）、例えばL*a*b*色空間など別の色空間での値を用いてもよい。
【００７４】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。第１の実施形態は、鏡面反射成分の色情報に基づき白抽出の範囲を制御する構成について述べた。第２の実施形態では、白抽出範囲の補正は行わずに、抽出した白色（無彩色）画素値に鏡面反射成分の色に基づく重み付けを行うことを特徴とする。
【００７５】
本実施形態においても第１の実施形態で説明したデジタルカメラ１００において実施可能であるため、デジタルカメラ１００の構成についての説明は省略し、本実施形態に特有なホワイトバランスゲインの算出処理について、図９〜図１０を用いて説明する。
【００７６】
図９は、本実施形態におけるホワイトバランスゲイン算出処理を説明するためのフローチャートであり、第１の実施形態と同様の動作ステップについては図３と同じ参照数字を付して説明は省略する。
Ｓ３０３において入力画像が鏡面反射成分を所定量以上含むと判定された場合、Ｓ９０４でシステム制御部５０は、鏡面反射成分に基づいて白抽出重みを決定する。図１０（ａ）はＣｘＣｙ平面における白抽出範囲１００１と、差分平均値（aveR, aveG, aveB）のＣｘＣｙ平面座標１００２の例を、図１０（ｂ）はＣｘ座標値と重みとの関係例を、それぞれ示している。
【００７７】
システム制御部５０は、鏡面反射成分の平均値である差分平均値（aveR, aveG, aveB）をＣｘＣｙ色空間の値(Cx, Cy)に変換し、そのＣｘ座標値に基づき重みを決定する。具体的には図１０（ｂ）に示すように、差分平均値のＣｘＣｙ平面座標(Cx, Cy)１００２のＣｘ座標値付近は大きな重み（３．０）を、一定値以上離れた座標値については小さな重み（１．０）を決定する。なお、１．０は元の値を変更しない重みであるため、重み付けしないことと等価である。
一方、Ｓ３０３において入力画像が鏡面反射成分を所定量以上含むと判定されなかった場合、Ｓ９０５でシステム制御部５０は、図１０（ｃ）に示すように一定かつ小さな重み（１．０）を設定する。
【００７８】
このように、本実施形態では、入力画像が鏡面反射成分を所定量以上含む場合は、差分平均値のＣｘＣｙ平面座標１００２のＣｘ座標値付近に１より大きな重みを決定する。また、入力画像が鏡面反射成分を所定量以上含まない場合と、入力画像が鏡面反射成分を所定量以上含む場合の差分平均値のＣｘＣｙ平面座標１００２のＣｘ座標値付近でない部分とについては、いずれも１の重みを決定する。これにより、鏡面反射成分から推定される光源色近辺の画素値に対して１より大きな重み付けを行う。
【００７９】
Ｓ９０６でシステム制御部５０は、Ｓ９０４、Ｓ９０５で算出した重みを用いた白抽出を行う。具体的には、入力画像の全ての画素に対して、その画素の色が白抽出範囲１００１の範囲に入るか否かを判定する。白抽出範囲１００１は、Ｓ３０２で被写体の明るさに応じて設定されたものである。システム制御部５０は、白抽出範囲１００１に入ると判定した画素値（Cx,Cy）のＣｘ座標値に対応する重みw(Cx)を取得し、重み付き画素値を算出する。具体的には、
重み付きCx = w(Cx) × Cx
重み付きCy = w(Cx) × Cy
を算出する。システム制御部５０は、重み付き画素値(w(Cx)Cx, w(Cx)Cy)を例えばシステムメモリ１２６であってよいバッファに加算する。また、システム制御部５０は、画素ごとに算出した重みw(Cx)を変数である白画素カウントに加算する。例えば重みが３．０の場合は３を白画素カウントに加算する。
【００８０】
Ｓ３０６でシステム制御部５０は、重み付け白抽出の結果に基づきホワイトバランスゲインを算出する。具体的には、バッファに記憶された、重み付け画素値の合計値を、Cx成分、Cy成分ごとに白画素カウントの値で除算する。この処理は、白抽出範囲１００１に含まれる画素の重み付き平均値の算出に相当する。重み付け平均値(Cx,Cy)の例を図１０（ａ）の１００３に示す。システム制御部５０は、算出した重み付け平均値(Cx, Cy)をＲＧＢ色空間の値に変換した値を第１の実施形態における白抽出平均RGB値(wR,wG,wB)と同様に用いてホワイトバランスゲインを算出する。
【００８１】
本実施形態では、入力画像から抽出した鏡面反射成分と近い画素値に１より大きな重みを付与して白抽出を行うことにより、光源色に近い可能性が高い色に重みを付けしたホワイトバランスゲインが得られる。そのため、第１の実施形態と同様、特に被写体が暗い場合など、白抽出の精度が低下する状況におけるホワイトバランスゲインの精度を向上させることができる。
【００８２】
なお、本実施形態では、鏡面反射成分の平均値付近の画素値に１より大きな重み付けを行ったが、他の方法で重み付けしてもよい。例えば、鏡面反射成分のＣｘ座標値の度数分布を生成し、度数分布が大きいＣｘ座標値ほど大きな重みを付与してもよい。また、平均値のＣｘ座標値から離れるにつれてより細かく段階的に重みを減らすようにしてもよい。
また、本実施形態ではＣｘ座標値のみに基づいてＣｘ成分とＣｙ成分の両方の重みを決定したが、Ｃｙ座標値についても独立した重みを決定してＣｙ成分に適用することも可能である。
【００８３】
なお、図１０（ｂ）において重みを３．０にする範囲や、重み３．０から重み１．０に遷移する範囲の大きさの設定方法や重みの最大値の設定方法に制限はない。例えば暗い状況で撮影した様々な被写体の画像を用いて得られるホワイトバランスゲインの精度に基づいて実験的に定めることができる。
【００８４】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。第２の実施形態では、画像全体で抽出した鏡面反射成分に基づいて重みを決定したが、第３の実施形態では、入力画像の局所領域ごとに重みを決定、適用することを特徴とする。
【００８５】
本実施形態においても第１の実施形態で説明したデジタルカメラ１００において実施可能であるため、デジタルカメラ１００の構成についての説明は省略し、本実施形態に特有なホワイトバランスゲインの算出処理について、図１１を用いて説明する。
【００８６】
図１１は、本実施形態におけるホワイトバランスゲイン算出処理を説明するためのフローチャートであり、第１の実施形態と同様の動作ステップについては図３と同じ参照数字を付して説明は省略する。
【００８７】
Ｓ１１０３でシステム制御部５０は、ブロック単位の平均色block_C(R, G, B)を算出する。ここで、ブロックは第１および第２の実施形態と同様、図５（ａ）に示すような８×８のメッシュブロックの１つである。システム制御部５０は、画像メモリ１０６に蓄積された入力画像のＲＧＢデータをブロック単位で平均化して平均色block_C(R, G, B)を算出し、全ブロックについて算出した平均色block_C(R, G, B)をシステムメモリ１２６に格納する。
【００８８】
Ｓ１１０４およびＳ１１１０は、Ｓ１１０５〜Ｓ１１０９の処理がブロック単位で全ブロックに対して実施されることを示している。
Ｓ１１０５でシステム制御部５０は、ブロックの平均色をＣｘＣｙ色空間の値に変換し、白抽出範囲に含まれるか否かを判定する。図１２（ａ）に、白抽出範囲１２１０の例を示す。システム制御部５０は、ブロックの平均色が白抽出範囲に含まれると判定されれば処理をＳ１１０６に進める。一方、ブロックの平均色が白抽出範囲に含まれると判定されなければ、システム制御部５０はこのブロックに対する処理を終了し、次の未処理ブロックについてＳ１１０５からの処理を行う。未処理ブロックがなければＳ１１１１へ処理を進める。
【００８９】
Ｓ１１０６〜Ｓ１１０９の処理は平均色が白抽出範囲に含まれるブロック（白色ブロック）に対して実行される。Ｓ１１０６でシステム制御部５０は、処理対象のブロックが鏡面反射成分を含むブロックかどうか判定する。第１の実施形態と同様、処理対象のブロックの差分カウント値countSが所定の閾値Ｔ２よりも大きければ鏡面反射成分を含むブロックであると判定することができる。システム制御部５０は、処理対象のブロックが鏡面反射成分を含むと判定した場合はＳ１１０７に、鏡面反射成分を含まないと判定した場合はＳ１１０８に、それぞれ処理を進める。
【００９０】
Ｓ１１０７でシステム制御部５０は、鏡面反射成分とブロック平均色と関係に基づく重みとして、鏡面反射成分とブロック平均色の差分に基づく重みを算出する。
具体的には、システム制御部５０は、処理対象ブロックの差分合計値sumS(R, G, B)を、対応づけられたカウント値countSで除算した結果を鏡面反射成分のブロック平均色block_S(R, G, B)とする。
【００９１】
システム制御部５０は、鏡面反射成分のブロック平均色block_S(R, G, B)およびブロック平均色Block_C(R, G, B)をＣｘＣｙ平面の値（色度座標）に変換し、block_S(Cx, Cy), block_C(Cx, Cy)を算出する。block_S(Cx, Cy)とblock_C(Cx, Cy)と関係を図１２（ａ）に示す。図１２（ａ）において入力画像１２００は８×８のブロックに分割されている。ここで、ブロック１２０１の鏡面反射成分の平均色(block_S)およびブロック平均値（block_C）が１２０３，１２０４である。また、ブロック１２０２の鏡面反射成分の平均色(block_S)およびブロック平均値（block_C）が１２０５，１２０６である。
【００９２】
システム制御部５０は、同一ブロックについて算出されたblock_S(Cx,Cy)とblock_C(Cx,Cy)との距離Ｄを以下の式から算出し、算出した距離に基づくブロック単位の重みを決定する。
D = |block_S (Cx) - block_C(Cx)| + | block_S(Cy) - block_C(Cy)|
【００９３】
本実施形態において、ブロック単位の重みは、図１２（ｂ）に示すように距離Ｄが０から所定値までは大きな重み（ここでは３．０）とし、その後は距離が大きくなるほど重みが小さくなり、最終的には１．０になるように制御する。距離Ｄが大きい、すなわち同一ブロックにおける鏡面反射成分の平均色と画素値の平均色との差異が大きい場合、そのブロック内の画素の平均色は白抽出範囲内であってもホワイトバランスゲインの算出時に重視しない方が良い。一方、距離Ｄが小さければ、鏡面反射成分の平均色と画素値の平均色が近い色であり、ブロック平均色が実際に白である可能性が高いため、重みを大きくしてホワイトバランスゲインの算出時に重視するようにする。
【００９４】
一方、Ｓ１１０８でシステム制御部５０は鏡面反射成分を含またはブロックと判定されたブロックに対する重みを決定する。本実施形態でシステム制御部５０は、鏡面反射成分を含まないと判定されたブロックについては、一律に１．５の重みを決定する。なお、この重みの値は一例であり、中程度の信頼性に対応する値として、鏡面反射成分とブロック平均色と関係に基づく重みの範囲（ここでは１．０〜３．０）の中間値を適宜定めることができる。
【００９５】
Ｓ１１０９でシステム制御部５０は、ブロック平均色block_C(R,G,B)に対してＳ１１０７またはＳ１１０８で決定した重みを乗算し、バッファに加算する。また、重みの値を変数であるブロック合計カウント値に加算する。これらの値は画像に含まれる白色ブロック全体の重み付き平均値を算出する際に利用する。
【００９６】
全ブロックについてＳ１１０５〜Ｓ１１０９の処理を行った後、システム制御部５０は  処理をＳ１１１１に進める。Ｓ１１１１でシステム制御部５０は、Ｓ１１０９で加算したブロック平均色の重み付け加算値をブロック合計カウント値で除算し、入力画像に含まれる白色ブロック全体の重み付き平均値(R, G, B)を算出する。以降は、この重み付け平均値(R, G, B)を第１の実施形態の白抽出平均RGB値(wR,wG,wB)として用いてＳ３０６でホワイトバランスゲインを算出し、Ｓ３０７でホワイトバランスゲインを適用する。
【００９７】
本実施形態では、入力画像の部分領域であるブロックのうち、平均色が白抽出範囲内の白色ブロックごとに、平均色と鏡面反射成分の平均色を算出し、その差が小さいブロックの平均色ほど大きな重みを付与して入力画像の白抽出平均を算出するようにした。そのため、鏡面反射成分に近い平均色に大きな重み付けをしてホワイトバランスゲインを算出することができ、ホワイトバランスゲインの精度を向上させることができる。本実施形態もまた、被写体が暗い場合など、白抽出の精度が低下する条件下で効果が大きい。
【００９８】
なお、本実施形態では、ブロック単位で色平均値と鏡面反射成分の平均値とを比較したが、部分領域単位であれば、部分領域の大きさや形状には制限がない。
【００９９】
（第４の実施形態）
次に、本発明の第４の実施形態について説明する。第１〜第３の実施形態では、鏡面反射成分に基づいて白抽出範囲や白抽出結果の重みを制御したが、第４の実施形態では、ホワイトバランスゲインの範囲を鏡面反射成分に基づいて制御することを特徴とする。
【０１００】
本実施形態においても第１の実施形態で説明したデジタルカメラ１００において実施可能であるため、デジタルカメラ１００の構成についての説明は省略し、本実施形態に特有なホワイトバランスゲインの算出処理について、図１３〜図１５を用いて説明する。
【０１０１】
図１３は、本実施形態におけるホワイトバランスゲイン算出処理を説明するためのフローチャートであり、第１の実施形態と同様の動作ステップについては図３と同じ参照数字を付して説明は省略する。
【０１０２】
Ｓ１４０５でシステム制御部５０は、被写体の明るさに基づきホワイトバランスゲインの限界値を決定する。ホワイトバランスゲインの限界値について図１４を用いて説明する。図１４（ａ）はＲとＢのホワイトバランスゲイン(wR-Gain, wB-Gain)の関係例を示す図である。本実施形態では、ＲとＢのホワイトバランスゲイン(wR-Gain, wB-Gain)を、黒体放射軸１５０１上の値を取るように制御するものとする。なお、光源が蛍光灯の場合など、実際にはホワイトバランスゲインが黒体放射軸から外れた値となることもあるが、ここでは説明および理解を容易にするため、ホワイトバランスゲインがすべて黒体放射軸１５０１上の値を有する場合について説明する。図１４（ａ）において、Lo_limは低色温度側の限界値、Hi_limは高色温度側の限界値である。
【０１０３】
Ｓ１４０５においてシステム制御部５０は、被写体の明るさ（たとえばＥＶ値）が所定の閾値以下の暗い場合は、ホワイトバランスゲインの限界値をLo_lim1およびHi_lim1に設定する。また、システム制御部５０は、被写体の明るさが所定の閾値より大きい場合は、ホワイトバランスゲインの限界値をLo_lim2およびHi_lim2に設定する。このように設定する理由は、被写体が明るい場合は光源が日中の太陽光の可能性が高く、ホワイトバランスゲインが取り得る範囲を日中の太陽光に対応した狭い範囲に制限する。一方、被写体が暗い場合は、様々な光源が存在する可能性があるため、ホワイトバランスゲインが取り得る範囲が日中の太陽光に対応する範囲より広くなるように限界値を設定する。
【０１０４】
Ｓ１４０６でシステム制御部５０は、第１の実施形態のＳ３０３と同様にして入力画像が鏡面反射成分を含むか否かを判定し、鏡面反射成分を含むと判定した場合はＳ１４０７へ、鏡面反射成分を含まないと判定した場合はＳ１４０９へ、処理を進める。
【０１０５】
Ｓ１４０７でシステム制御部５０は、鏡面反射成分の基準値からの差分を算出する。具体的には、システム制御部５０は、鏡面反射成分の平均Cx値とCxの基準値Cx_baseとの差分を距離d_baseとして算出する。すなわち、距離d_base = Cx - Cx_baseである。
【０１０６】
図１４（ｂ）に距離d_baseの例を示す。図１４（ｂ）はＣｘＣｙ平面における白抽出範囲１５０２と、鏡面反射成分の平均値１５０３，１５０４の例を示している。図１４（ｂ）では、基準値Cx_base=0にした場合の例を示している。鏡面反射成分の平均値１５０３についての距離をd_base1、鏡面反射成分の平均値１５０４についての距離をd_base2で示している。基準値Cx_baseは、鏡面反射成分の色温度が高いか低いかを判定するための閾値であり、他の値を用いてもよい。例えば、基準値は、Cx_base=0以外に太陽光(D50光源)のCx値を基準として用いてもよい。鏡面反射成分の色温度が高いと判定されればホワイトバランスゲインの高色温度側の限界値を制御し、鏡面反射成分の色温度が低いと判定されればホワイトバランスゲインの低色温度側の限界値を制御する。
【０１０７】
Ｓ１４０８でシステム制御部５０は、Ｓ１４０７で算出した距離d_baseに基づき、Ｓ１４０５で算出したホワイトバランスゲイン限界値を補正する。この処理について図１４（ｃ）および図１５を用いて説明する。
【０１０８】
図１４（ｃ）は図１４（ａ）と同様にＲとＢのホワイトバランスゲイン(wR-Gain, wB-Gain)の関係例を示す図であるが、低色温度の限界値Lo_lim3および、高色温度の限界値Hi_lim3が追加されている。システム制御部５０は、Ｓ１４０７で算出した距離d_baseと図１５に示す特性に基づき、ホワイトバランスゲインの限界値を補正する。
【０１０９】
図１５（ａ）は距離d_baseがプラスの場合（鏡面反射成分が低色温度である場合）、図１５（ｂ）は距離d_baseがマイナスの場合（鏡面反射成分が高色温度である場合）の限界値の制御特性を示している。距離d_baseがプラスの場合は、鏡面反射成分の色温度が低い場合であるため、システム制御部５０は図１５（ａ）の特性に従って距離d_baseが大きくなるほど高色温度側の限界値を小さくするように制御する。すなわち、鏡面反射成分により光源が低色温度である可能性が高いため、より高色温度側の色を取り込みにくくなるように高色温度側の限界値を小さくするように制御する。そして、システム制御部５０は、距離d_baseに応じた高色温度側の限界値と、Ｓ１４０５で決定した明るさに基づく高色温度側の限界値Hi_limと比較し、小さい方を最終的な高色温度側の限界値として決定する。
【０１１０】
一方、距離d_baseがマイナスの場合は、鏡面反射成分の色温度が高い場合であるため、システム制御部５０は図１５（ｂ）の特性に従って距離d_baseの絶対値が大きくなるほど低色温度側の限界値を大きくするように制御する。すなわち、鏡面反射成分により光源が高色温度である可能性が高いため、より低色温度側の色を取り込みにくくなるように低色温度側の限界値を大きくするように制御する。そして、システム制御部５０は、距離d_baseに応じた低色温度側の限界値と、Ｓ１４０５で決定した明るさに基づく低色温度側の限界値Lo_limと比較し、大きい方を最終的な高色温度側の限界値として決定する。
【０１１１】
Ｓ１４０９でシステム制御部５０は、算出したホワイトバランスゲインが補正後の限界値で定まる範囲内に収まるよう必要に応じて補正するリミット処理を行う。例えば図１４（ａ）において、Ｓ３０６で算出したホワイトバランスゲインが１５０５で示される場合のリミット処理について説明する。ホワイトバランスゲイン１５０５は黒体放射軸１５０１上の値でないため、システム制御部５０はまずＢのホワイトバランスゲイン（Ｂゲイン）のみを補正し、黒体放射軸１５０１上の値１５０６に補正する。次にシステム制御部５０は、補正後のホワイトバランスゲイン１５０６が限界値で定まる範囲内に含まれるかどうか判定する。ここでは、ホワイトバランスゲインの限界値がLo_lim2とHi_lim2であるとする。この場合、黒体放射軸１５０１上の値に補正されたホワイトバランスゲイン１５０６はLo_lim2以下であるため、黒体放射軸１５０１上でLo_lim2に対応するホワイトバランスゲイン１５０７に補正する。一方、Ｓ３０６で算出したホワイトバランスゲインが黒体放射軸１５０１上でHi_lim2以上である場合、システム制御部５０は、黒体放射軸１５０１上でHi_Lim2に対応するホワイトバランスゲイン１５０８になるように補正する。
【０１１２】
Ｓ３０６で算出したホワイトバランスゲインが黒体放射軸１５０１上の値であり、かつ限界値で定まる範囲に含まれている場合、システム制御部５０はＳ３０６で算出したホワイトバランスゲインを補正せずにそのまま用いる。
【０１１３】
Ｓ３０７でシステム制御部５０は、Ｓ３０６で算出したホワイトバランスゲインもしくはＳ１４０９で補正されたホワイトバランスゲインをＷＢ増幅部２０１（図２）に設定する。
【０１１４】
本実施形態では、白抽出に基づいて算出したホワイトバランスゲインを、入力画像の鏡面反射成分の情報に基づき補正する構成とした。具体的には、鏡面反射成分の色を考慮して、ホワイトバランスゲインの範囲を制御する構成とした。
光源色を示す鏡面反射成分の情報を利用して、白抽出に基づくホワイトバランスゲインの範囲を制御することにより、ホワイトバランスゲインが適切でない値となることを抑制することができ、ホワイトバランスゲインの精度を向上することができる。
【０１１５】
なお、本実施形態では、鏡面反射成分の色温度の高低に応じてホワイトバランスゲインの範囲を制御する構成について述べたが、範囲を規定する限界値を、鏡面反射成分の色情報を利用する他の方法で設定してもよい。
【０１１６】
また、本実施形態では、ホワイトバランスゲインの値を黒体放射軸上の値としながら限界値を設定する構成としたが、黒体放射軸に沿った方向の範囲を制御する構成には限定されない。例えば、鏡面反射成分の色情報を利用して黒体放射軸に直交する方向に対するホワイトバランスゲインの範囲を制御する構成とすることも可能である。
【０１１７】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015005927.tif 000003
【図２】
2015005927.tif 000004
【図３】
2015005927.tif 000005
【図４】
2015005927.tif 000006
【図６】
2015005927.tif 000007
【図７】
2015005927.tif 000008
【図８】
2015005927.tif 000009
【図９】
2015005927.tif 000010
【図１０】
2015005927.tif 000011
【図１１】
2015005927.tif 000012
【図１２】
2015005927.tif 000013
【図１３】
2015005927.tif 000014
【図１４】
2015005927.tif 000015
【図１５】
2015005927.tif 000016
【図５】
2015005927.tif 000017