(57)【要約】【課題】  画素値に基づいて光源色を精度良く推定することが可能な画像処理装置およびその制御方法を提供する。【解決手段】  入力画像の画素を、予め定められた複数の色グループのいずれかに分類する。色グループごとに、分類された画素についての画素値の色成分ごとの差分から、前記色グループを代表する差分値を色グループ差分値として算出し、色グループ差分値から、入力画像の被写体を照明する光源色を推定する。例えば、複数の色グループについて算出された色グループ差分値のうち、算出に用いられた差分値の数が最も多い色グループ差分値を用いて、光源色を推定する。【選択図】  図３
2014007528.tif 000002
【特許請求の範囲】
【請求項１】
入力画像の画素を、予め定められた複数の色グループのいずれかに分類する分類手段と、
前記色グループごとに、分類された画素についての画素値の色成分ごとの差分から、前記色グループを代表する差分値を色グループ差分値として算出する算出手段と、
前記複数の色グループについて算出された前記色グループ差分値のうち、算出に用いられた差分値の数が最も多い色グループ差分値、画素の平均輝度値が最も高い色グループの色グループ差分値、画素の色の分散値が最も小さい色グループの色グループ差分値のいずれかを少なくとも用いて、前記入力画像の被写体を照明する光源色を推定する推定手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記入力画像の画素が複数の色成分を有し、前記分類手段は、前記入力画像の画素のうち、色成分の値がいずれも予め定めた閾値以下の画素について前記分類を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記算出手段は、同一の色グループに分類された画素のうち、予め定めた近接する位置関係を満たす画素間の前記差分から、前記色グループ差分値を算出することを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項４】
前記算出手段は、前記画素値の差分のうち、予め定めた閾値より大きい差分値から、前記色グループ差分値を算出することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
同一の色グループに分類された画素を輝度に応じてさらに複数の輝度グループに分類する手段をさらに有し、
前記算出手段は、前記色グループごとに、異なる輝度グループに分類された画素間の前記差分から、前記色グループ差分値を算出することを特徴とする請求項１または請求項２に記載の画像処理装置。
【請求項６】
前記推定手段は、前記算出に用いられた差分値の数が最も多い色グループ差分値、前記画素の平均輝度値が最も高い色グループの色グループ差分値、前記画素の色の分散値が最も小さい色グループの色グループ差分値のうち１つを、算出に用いられた差分値の数で除算して得られる平均差分値を、前記光源色の推定結果とすることを特徴とする請求項１乃至請求項５のいずれか１項に記載の画像処理装置。
【請求項７】
画像処理装置の制御方法であって、
前記画像処理装置の分類手段が、入力画像の画素を、予め定められた複数の色グループのいずれかに分類する分類ステップと、
前記画像処理装置の算出手段が、前記色グループごとに、分類された画素についての画素値の色成分ごとの差分から、前記色グループを代表する差分値を色グループ差分値として算出する算出ステップと、
前記画像処理装置の推定手段が、前記複数の色グループについて算出された前記色グループ差分値のうち、算出に用いられた差分値の数が最も多い色グループ差分値、画素の平均輝度値が最も高い色グループの色グループ差分値、画素の色の分散値が最も小さい色グループの色グループ差分値のいずれかを少なくとも用いて、前記入力画像の被写体を照明する光源色を推定する推定ステップと、
を有することを特徴とする画像処理装置の制御方法。
【請求項８】
コンピュータを、請求項１乃至請求項６のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置およびその制御方法に関し、特には画像から光源色を推定する技術に関する。
【背景技術】
【０００２】
従来、デジタルカメラに用いられるオートホワイトバランス制御機能は、外部センサを使用せず、撮像素子の出力を用いてホワイトバランスを調整するものが主流となっている。撮像素子の出力を用いてホワイトバランスを調整する手法として、被写体物体光を鏡面反射成分と拡散反射成分に分離する二色性反射モデルを利用したものが提案されている。
【０００３】
例えば、特許文献１には、明るさの異なる近接画素間の差分を算出することで、被写体を照射する光源色を特定する方法が開示されている。この方法は、高輝度な第１の画素（物体色を反映する拡散反射成分と光源色を反映する鏡面反射成分の両方を含む）から第１の画素よりも低輝度な画素（物体色のみを含む拡散反射成分）の差分を算出することで、光源色の成分を抽出する原理に基づいている。
【０００４】
具体的には、高輝度の第１の画素のＲＧＢ値と、第１の画素よりも低輝度な第２の画素のＲＧＢ値の差分を算出する。この差分ＲＧＢ値は光源色と同じベクトル成分を持つＲＧＢ値であるから、差分ＲＧＢ値の成分比からホワイトバランスゲインを算出することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４４４７５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
鏡面反射成分の画素と拡散反射成分の画素の差分から光源色を算出するためには、同一物体中で、かつ物体色も同じ領域から、鏡面反射成分（および拡散反射成分）を含んだ画素と、拡散反射成分を含んだ画素を取得する必要がある。特許文献１では、近接画素である場合は、同一物体（かつ同一物体色）である可能性が高いという仮定に基づき、輝度の異なる近接画素の差分を用いて光源の推定を行っている。
【０００７】
しかしながら、異なる物体が近接している場合もあれば、同一物体でも領域によって色が異なる場合もあるため、近接する画素が必ずしも同一物体かつ同一物体色の画素とは限らない。特許文献１に開示された従来技術では、画素の近接性のみを考慮しているため、複数の検出結果を平均化する等の誤差抑制処理を行っても、光源の色温度の推定精度については改善の余地がある。
【０００８】
本発明はこのような従来技術の課題に鑑みなされたものであり、画素値に基づいて光源色を精度良く推定することが可能な画像処理装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の目的は、入力画像の画素を、予め定められた複数の色グループのいずれかに分類する分類手段と、色グループごとに、分類された画素についての画素値の色成分ごとの差分から、色グループを代表する差分値を色グループ差分値として算出する算出手段と、複数の色グループについて算出された色グループ差分値のうち、算出に用いられた差分値の数が最も多い色グループ差分値、画素の平均輝度値が最も高い色グループの色グループ差分値、画素の色の分散値が最も小さい色グループの色グループ差分値のいずれかを少なくとも用いて、入力画像の被写体を照明する光源色を推定する推定手段と、を有することを特徴とする画像処理装置によって達成される。
【発明の効果】
【００１０】
本発明によれば、画素値に基づいて光源色を精度良く推定することが可能である。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る画像処理装置の一例としてのデジタルカメラの構成例を示すブロック図。
【図２】図１の画像処理部の構成例を示すブロック図。
【図３】本発明の第１の実施形態における光源色推定処理を説明するためのフローチャート。
【図４】本発明の第１の実施形態における入力画像の例を示す図。
【図５】本発明の実施形態における色グループの例を示す図。
【図６】本発明の第１の実施形態における差分およびカウント値の格納方法を模式的に示す図。
【図７】本発明における光源色の推定方法を説明するための図。
【図８】本発明の第２の実施形態における光源色推定処理を説明するためのフローチャート。
【図９】本発明の第２の実施形態における合計値およびカウント値の格納方法を模式的に示す図。
【図１０】本発明の第２の実施形態における色グループごとの輝度分布の例を示す図。
【発明を実施するための形態】
【００１２】
本発明の例示的な実施形態を、添付図面に基づいて詳細に説明する。以下の実施形態では、本発明に係る画像処理装置の一例としてのデジタルカメラを説明するが、本発明において撮影に係る構成は必須ではなく、画像データを取得可能な任意の装置で本発明を実施可能である。
【００１３】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るデジタルカメラ１００の構成例を示すブロック図である。
図１において、レンズ群１０１は、フォーカスレンズを含むズームレンズである。絞り機能を備えるシャッタ１０２が、レンズ群１０１と撮像部１０３との間に設けられている。撮像部１０３は、レンズ群１０１によって撮像面に形成される光学像を画素単位の電気信号に変換するＣＣＤ／ＣＭＯＳイメージセンサを代表とする撮像素子を有する。Ａ／Ｄ変換器１０４は、撮像部１０３が出力するアナログ信号をデジタル信号（画像データ）に変換する。
【００１４】
画像処理部１０５は、Ａ／Ｄ変換器１０４から出力される画像データに対し、色補間（デモザイク）、ホワイトバランス調整、γ補正、輪郭強調、ノイズリダクション、色補正などの各種画像処理を行う。画像メモリ１０６は画像データを一時的に記憶する。メモリ制御部１０７は、画像メモリ１０６の読み書きを制御する。Ｄ／Ａ変換器１０８は、画像データをアナログ信号に変換する。表示部１０９はＬＣＤや有機ＥＬディスプレイ等の表示装置を有し、各種ＧＵＩやライブビュー画像、記録媒体１１２から読み出して再生した画像などを表示する。コーデック部１１０は、画像メモリ１０６に記憶されている画像データを記録媒体に記録するために予め定められた方法で符号化したり、画像ファイルに含まれる符号化画像データを例えば表示のために復号したりする。
【００１５】
インタフェース（Ｉ／Ｆ）１１１は、例えば半導体メモリカードやカード型ハードディスクなどの着脱可能な記録媒体１１２を、デジタルカメラ１００と機械的および電気的に接続する。システム制御部５０は例えばＣＰＵやＭＰＵなどのプログラマブルなプロセッサであってよい。システム制御部５０は、例えば不揮発性メモリ１２４や内蔵する不揮発性メモリに記録されたプログラムを実行して必要なブロックや回路を制御することにより、後述する光源推定処理を始めとしたデジタルカメラ１００の機能を実現する。
【００１６】
操作部１２０は、ユーザがデジタルカメラ１００に各種の指示を入力するためのボタンやスイッチなどをまとめて記載したものである。電源スイッチ１２１は操作部１２０に含まれるスイッチ群の１つであるが、便宜上異なるブロックで記載している。電源制御部１２２は、電池検出回路、ＤＣ−ＤＣコンバータ、通電するブロックを切り替えるスイッチ回路等により構成され、例えば充電池である電源部１２３について、装着の有無、種類、電池残量等の情報を検出する。また、電源制御部１２２は、電源部１２３に関する検出結果及びシステム制御部５０の指示に基づいてＤＣ−ＤＣコンバータを制御し、必要な電圧を必要な期間、記録媒体１１２を含むデジタルカメラ１００の各部へ供給する。
【００１７】
不揮発性メモリ１２４は電気的に消去・記録可能な、例えばＥＥＰＲＯＭ等であってよい。不揮発性メモリ１２４は、各種の設定値、ＧＵＩデータをはじめ、システム制御部５０がＭＰＵやＣＰＵである場合にはプログラムが記録される。
【００１８】
システムタイマ１２５は各種制御に用いる時間や、内蔵時計の時刻を計測する。システムメモリ１２６は、システム制御部５０の動作用の定数や変数を保存したり、不揮発性メモリ１２４から読みだしたプログラム等を展開するために用いられる、例えば揮発性メモリである。
【００１９】
次に、デジタルカメラ１００における撮影時の動作について説明する。
例えば撮像部１０３は、シャッタ１０２が開いている際にレンズ群１０１が撮像面に形成する被写体像を撮像素子によって光電変換し、アナログ画像信号としてＡ／Ｄ変換器１０４へ出力する。Ａ／Ｄ変換器１０４は撮像部１０３から出力されるアナログ画像信号をデジタル画像信号（画像データ）に変換し画像処理部１０５に出力する。
【００２０】
画像処理部１０５は、Ａ／Ｄ変換器１０４からの画像データ、又は、メモリ制御部１０７からの画像データに対し、色補間（デモザイク）、γ補正、輪郭強調、ノイズリダクション、色補正などの各種画像処理を行う。
【００２１】
また、画像処理部１０５では、撮影で得られた画像データを用いて輝度やコントラストなどに関する所定の演算処理を行い、得られた演算結果に基づいてシステム制御部５０が測距制御、露光制御を行う。このように、本実施形態のデジタルカメラ１００では、ＴＴＬ（スルー・ザ・レンズ）方式のＡＦ（オートフォーカス）処理、ＡＥ（自動露出）処理を行う。画像処理部１０５ではさらに、撮影で得られた画像データを用いて、撮影時に被写体を照明した光源色を推定し、推定した光源色に基づくオートホワイトバランス（ＡＷＢ）調整も行う。光源色の推定処理の詳細については後述する。
【００２２】
画像処理部１０５から出力された画像データは、メモリ制御部１０７を介して画像メモリ１０６に書き込まれる。画像メモリ１０６は、撮像部１０３から出力された画像データや、表示部１０９に表示するための画像データを格納する。
【００２３】
また、Ｄ／Ａ変換器１０８は、画像メモリ１０６に格納されている画像表示用のデータをアナログ信号に変換して表示部１０９に供給する。表示部１０９は、ＬＣＤ等の表示装置に、Ｄ／Ａ変換器１０８からのアナログ信号に応じた表示を行う。
【００２４】
コーデック部１１０は、画像メモリ１０６に記録された画像データをＪＰＥＧやＭＰＥＧなどの規格に基づき符号化する。システム制御部５０は符号化した画像データに対して予め定められたヘッダなどを付与して画像ファイルを形成し、インタフェース１１１を介して記録媒体１１２に記録する。
【００２５】
なお、現在のデジタルカメラでは、撮影スタンバイ状態においては動画撮影を行い、撮影された動画を表示部１０９に表示し続けることにより表示部１０９を電子ビューファインダ（ＥＶＦ）として機能させるのが一般的である。この場合、シャッタ１０２は開いた状態とし、撮像部１０３のいわゆる電子シャッタを用いて例えば３０フレーム／秒の撮影を行う。
【００２６】
そして、操作部１２０に含まれるシャッタボタンが半押しされると上述のＡＦ，ＡＥ制御が行われ、全押しされると本撮影により記録用の静止画撮影が実行され、記録媒体１１２に記録される。また、動画撮影ボタンなどにより動画撮影が指示された場合は、記録媒体１１２への動画記録を開始する。
【００２７】
図２は、画像処理部１０５の機能構成例を示すブロック図である。
図１のＡ／Ｄ変換器１０４から出力された画像データは、輝度・色信号生成部２００に入力される。画像データは、撮像素子に設けられたカラーフィルタを構成する色成分の１つに対応した値を有する。一般的に用いられるベイヤー配列の原色カラーフィルタが用いられる場合、画像データは、Ｒ画素，Ｇ画素，Ｂ画素のデータから構成される。
【００２８】
輝度・色信号生成部２００はこのような画像データに対してデモザイク処理を行い、各画素について輝度信号Ｙおよび色信号Ｒ，Ｇ，Ｂを生成する。輝度・色信号生成部２００は、生成した色信号Ｒ，Ｇ，Ｂをホワイトバランス（ＷＢ）増幅部２０１へ、輝度信号Ｙを輝度γ処理部２０５へ出力する。また、輝度・色信号生成部２００は、色信号Ｒ，Ｇ，Ｂを、画像データ（ＲＢＧ）として、メモリ制御部１０７を介して画像メモリ１０６に出力する。
【００２９】
また、輝度・色信号生成部２００で生成した色信号Ｒ，Ｇ，Ｂは色空間変換処理部２０７にも入力される。色空間変換処理部２０７では、色信号Ｒ，Ｇ，Ｂを輝度Ｙおよび色差（Ｒ−Ｙ）／Ｙ、（Ｂ−Ｙ）／Ｙに変換し、画像データ（ＹＵＶ）としてメモリ制御部１０７を介して画像メモリ１０６に出力する。
【００３０】
ＷＢ増幅部２０１は、後述する処理によりシステム制御部５０が算出するホワイトバランスゲイン値に基づき、色信号Ｒ，Ｇ，Ｂにゲインを適用し、ホワイトバランスを調整する。色γ処理部２０２では、色信号Ｒ，Ｇ，Ｂにガンマ補正を行う。色差信号生成部２０３では、色信号Ｒ，Ｇ，Ｂから色差信号Ｒ−Ｙ、Ｂ−Ｙ信号を生成し色補正部２０４に出力する。色補正部２０４では色差信号Ｒ−Ｙ、Ｂ−Ｙにゲインを適用するなどにより、色相や彩度を調整する。色補正部２０４は、補正後の色差信号Ｒ−Ｙ、Ｂ−Ｙをメモリ制御部１０７を介して画像メモリ１０６に出力する。
【００３１】
一方、輝度γ処理部２０５では輝度信号Ｙに対してガンマ補正を行い、輪郭強調処理部２０６へ出力する。輪郭強調処理部２０６は輝度信号Ｙに対して輪郭強調処理を行い、メモリ制御部１０７を介して画像メモリ１０６に出力する。輪郭強調処理部２０６の出力する輝度信号Ｙと、色補正部２０４が出力する色差信号Ｒ−Ｙ，Ｂ−Ｙが、コーデック部１１０によって符号化され、最終的に記録媒体１１２に記録される。
【００３２】
次に、本実施形態における光源推定処理について、図３のフローチャートを用いて説明する。光源推定処理は、システム制御部５０が画像処理部１０５の輝度・色信号生成部２００が画像メモリ１０６に出力した信号から光源色の成分を推定する処理である。
【００３３】
図３において、Ｓ３０１およびＳ３０９は、Ｓ３０２〜Ｓ３０８の処理が、対象画素をラスタスキャンしながら全画素に対して実施されることを示している。
【００３４】
Ｓ３０２でシステム制御部５０は、処理対象画素が飽和していないか確認する。具体的には、システム制御部５０は、ＲＧＢ成分のそれぞれを所定の閾値と比較し、閾値より大きい成分があれば画素が飽和していると判断し、処理対象画素を次の画素として飽和の確認を行う。一方、ＲＧＢ成分がいずれも閾値以下であれば画素は飽和していないと判断してシステム制御部５０は処理をＳ３０３に進める。
【００３５】
Ｓ３０３で、分類手段としてのシステム制御部５０は、処理対象画素と比較画素を複数の色グループに分類する。処理対象画素および比較画素について、図４（ａ）を用いて説明する。図４（ａ）において４００は入力画像を示しており、４０１は入力画像４００の一部を拡大した状態を模式的に示している。４０１におけるメッシュは画素の境界を示している。４０２は現在の処理における処理対象画素を示し、図３の処理は、処理対象画素４０２の位置を順次ラスタスキャンしながら各画素について実施される。４０３、４０４、４０５は処理対象画素４０２に対する比較画像を示しており、本実施形態では処理対象画素４０２から所定の方向に所定の距離（画素数）離れた位置の複数の画素を比較画素とする。
【００３６】
処理対象画素と比較画素とが満たすべき位置関係は予め定めておくことができるが、基本的には処理対象画素に近接した複数の位置にある画素を比較画素とする。ここでは、一例として処理対象画素を左上角の画素として有する４×４画素のブロックにおける残り３つの角の画素を比較画素としている。処理対象画素と比較画素との距離が短すぎると画素間の差が少なくなる可能性が高くなり、また距離が長すぎると同一物体に対応しない可能性が高くなる。従って、例えば数〜１０画素程度の範囲で実験的に距離を定める。なお、処理対象画素と比較画素との位置関係は、処理対象画素の位置が入力画像の端部となる場合などにおいて適宜変更されてよい。
【００３７】
Ｓ３０３でシステム制御部５０は、処理対象画像４０２および比較画素４０３〜４０５を予め定めた色グループに分類する。ここで、色グループとは、色差平面上で近い領域の色をグループ化したものである。図５に色差平面に定義した色グループの例を示す。図５の例では、色差平面を６つの領域に分割し、それぞれ色グループ１〜色グループ６に分けている。Ｓ３０３でシステム制御部５０は、処理対象画素４０２および比較画素４０３〜４０５の色差値（（Ｒ−Ｙ）／Ｙ，（Ｂ−Ｙ）／Ｙ）を画像メモリ１０６から取得し、各画素がどの色グループに属するか判定することにより、画素を色グループに分類する。なお、分類および判定方法は一例であり、他の方法を用いてもよい。例えば色相や彩度を分割してグループを定めることもできる。彩度を用いる場合、無彩色は除く。
【００３８】
図３にもどり、全ての比較画素４０３〜４０５に対して繰り返し実行するＳ３０４からＳ３０７の処理を説明する。以下では、まず比較画像４０３を例に説明する。
Ｓ３０４でシステム制御部５０は、処理対象画素４０２と比較画素４０３が同一の色グループに属するか判定し、同一の色グループに属する場合はＳ３０５に、同一の色グループに属さない場合はＳ３０８に、処理を進める。
【００３９】
Ｓ３０５でシステム制御部５０は、処理対象画素４０２と比較画素４０３との差分を算出する。即ち、システム制御部５０は、処理対象画素４０２のＲＧＢ値（R1, G1, B1）と比較画素４０３のＲＧＢ値（R2, G2, B2）との色成分ごとの差分（subR, subG, subB）を算出する。
【００４０】
Ｓ３０６でシステム制御部５０は、Ｓ３０５で算出した差分（subR, subG, subB）の大きさＳが所定の閾値Ｔよりも大きい（Ｔ＜Ｓ）か否かを判定する。差分（subR, subG, subB）の大きさＳは次の式から算出する。
Ｓ＝√{(subR)2+(subG)2+(subB)2}
システム制御部５０は、差分の大きさＳが閾値Ｔよりも大きい場合にはＳ３０７に、閾値Ｔ以下の場合はＳ３０８に、それぞれ処理を進める。
【００４１】
Ｓ３０７で、算出手段としてのシステム制御部５０は、処理対象画素と比較画素の差分（subR, subG, subB）を、システムメモリ１２６に保存（加算）する。差分（subR, subG, subB）の保存形式の例を図６に示す。本実施形態では、差分の大きさＳが閾値Ｔより大きい場合に、図６に示すように、差分（subR, subG, subB）を色成分ごとに、かつ処理対象画素が属するブロック、色グループごとに合計する。
【００４２】
なお、ここでのブロックとは入力画像の分割領域を指し、図４（ａ）は、入力画像４００を水平方向４×垂直方向４に１６分割した例を示している。このように、入力画像の部分領域ごとに、その部分領域に含まれる画素に対して算出された差分（subR, subG, subB）を、色グループ１〜６のそれぞれで合計し、色グループを代表する差分値（色グループ差分値）とする。また、差分（subR, subG, subB）を加算するごとに、合計値に対応付けられたカウント値を１加算する。従って、カウント値は色グループ差分値の算出に用いられた差分値の数を示す。
【００４３】
なお、Ｓ３０６、Ｓ３０７において、差分の大きさＳが閾値Ｔより大きい場合だけ、差分（subR, subG, subB）を合計する理由は、光源の色特徴を示す度合が大きいと思われる差分値だけを抽出するためである。これについて図４（ｂ）、図７を用いてより具体的に説明する。
【００４４】
図４（ｂ）は鏡面反射を含む被写体の画像と、処理対象画素４０６および比較画素４０７〜４０９とを示している。ここで、輝度の高い比較画素４０７、４０９は鏡面反射成分を比較的多く含み、処理対象画素４０６および比較画素４０８は、ほぼ拡散反射成分のみからなる画素であるとする。
【００４５】
図７（ａ）は、画素が含む鏡面反射成分と拡散反射成分との関係の例をＲＧＢ色空間で模式的に示している。ＲＧＢ空間において、ある画素のＲＧＢ値は原点からＲＧＢ値に対応する座標へのベクトルで表すことができる。ベクトル７０１はＲＧＢ値が物体色（拡散反射成分）のみからなる場合を、ベクトル７０２は、ＲＧＢ値が物体色（拡散反射成分）と光源色（鏡面反射成分）とからなる場合を示すものとする。この場合、得たい光源色（鏡面反射成分）のＲＧＢ値を示すベクトル７０３は、ベクトル７０２と７０１との差分ベクトルとして求めることができる。なお、ベクトルの始点はいずれも座標原点であるため、実際には座標間の差として求まるＲＧＢ値が光源のＲＧＢ値となる。従って、物体色のみからなる画素のＲＧＢ値と、物体色と光源色からなる画素のＲＧＢ値との差分を、光源色のＲＧＢ値として得ることができる。図４（ｂ）の例では、処理対象画素４０６と、比較画素４０７または４０９とのＲＧＢ値の差分が、光源色のＲＧＢ値の推定値として求められる。
【００４６】
一方、図４（ｂ）における処理対象画素４０６と比較画素４０８はどちらも拡散反射成分が支配的であるため、これら画素のＲＧＢ値は図７（ａ）の例ではベクトル７０１に近い。例えば、図７（ｂ）において、処理対象画素４０６と比較画素４０８のＲＧＢ値がそれぞれベクトル７１１、７１２であるとすると、ＲＧＢ値の差分は非常に小さい値となる。図示しないが、同様に比較画素４０７と４０９とはどちらも拡散反射成分と鏡面反射成分を持っており、ＲＧＢ値はいずれもベクトル７０２と似たベクトルで表されるため、やはりＲＧＢ値の差分は非常に小さい値となる。
【００４７】
比較画素４０７のＲＧＢ値が図７（ｂ）のベクトル７１３で表されるとすると、処理対象画素４０６のＲＧＢ値に対応するベクトル７１１と、比較画素４０７のＲＧＢ値に対応するベクトル７１３の差分は大きくなる。この差分は光源色のＲＧＢ値に近いベクトルであるため、抽出したい差分である。
【００４８】
このように、画素のＲＧＢ値の差分の大きさＳが小さい場合は、両者が類似した反射成分を持つ場合が多いと考えられ、差分値における光源の特性の寄与は少ないと考えられるため、本実施形態では光源色の推定には使用しない。このため前述のように閾値Ｔを設け、差分の大きさＳが閾値Ｔより大きい場合だけ、差分（subR, subG, subB）をシステムメモリ１２６で色成分ごとに合計している。
【００４９】
図３に戻り、Ｓ３０８でシステム制御部５０は、全ての比較画素４０３〜４０５についてＳ３０４〜Ｓ３０７の処理を行ったか確認する。図４に示した通り、本実施形態では１つの処理対象画素４０２に対して比較画素は４０３、４０４、４０５の３つある。そのため全ての比較画素に対して、属する色グループの判定（Ｓ３０４）および差分算出（Ｓ３０５）を行い、差分の大きさＳが閾値Ｔより大きい場合に、差分（subR, subG, subB）をシステムメモリ１２６で合計する。
【００５０】
以上説明したＳ３０２〜Ｓ３０８の処理を、処理対象画素をラスタスキャンしながら入力画像の全画素に対して行う。
【００５１】
Ｓ３０９までの処理により、入力画像の全画素について差分値の集計が完了すると、システム制御部５０は、Ｓ３１０〜Ｓ３１２でブロックごとの総合差分値を算出する。
具体的にはＳ３１１でシステム制御部５０は、差分を合計したブロックごとに、総合差分値を算出する。総合差分値の算出方法に関して図６を用いて説明する。図６は前述の通り、各ブロックについて色グループごとに処理対象画素と比較画素との差分（subR, subG, subB）が色成分ごとに合計された色グループ差分値の例を示している。
【００５２】
Ｓ３１１で、推定手段としてのシステム制御部５０は、各ブロックを代表する１つの差分値を総合差分値として算出する。まず、システム制御部５０は、色グループ１〜色グループ６のカウント値を参照し、カウント値が最大の色グループを選択する。従って、システム制御部５０は、図６のブロック１の場合は色グループ１（色１）を、ブロック２では色グループ４（色４）を選択する。次にシステム制御部５０は、選択した色グループに関して、色グループ差分値（R, G, B）の各色成分を、その色グループのカウント値で除算して平均差分値を求める。このようにして得られた平均差分値（BlockSub_R, BlockSub_G, BlockSub_B）を、ブロックの総合差分値とする。総合差分値は、各ブロックで得られた鏡面反射成分（光源成分）のベクトル（光源色のＲＧＢ値）を表している。
【００５３】
最もカウント値が多い色グループを選択する理由は、ノイズの影響を抑制するためである。カウント値が少ない色グループはノイズによる影響を受けやすいため、ブロック内でカウント値が多く、グループ内で支配的な特徴を持つ色グループを重視することで、ノイズの影響を抑制する。
【００５４】
Ｓ３１１における総合差分値（BlockSub_R, BlockSub_G, BlockSub_B）の算出を１６個全てのブロックに対して実行すると、システム制御部５０は処理をＳ３１３に進める。
Ｓ３１３でシステム制御部５０は、１６個のブロックで算出した総合差分値の平均値である平均化総合差分値（aveR, aveG, aveB）を算出する。
【００５５】
Ｓ３１４でシステム制御部５０は、平均化した総合差分値（aveＲ, aveＧ, aveＢ）からホワイトバランスゲインを算出する。ここでは、ＧのホワイトバランスゲインG Gainを所定の固定値とすると、ＲとＢのホワイトバランスゲインR Gain, B Gainを、以下の式によって算出する。
R Gain = (aveG / aveR) * G gain
B Gain = (aveG / aveB) * G gain
【００５６】
Ｓ３１５でシステム制御部５０は、算出したホワイトバランスゲインを、ＷＢ増幅部２０１（図２）に設定する。ＷＢ増幅部２０１は設定されたホワイトバランスゲインに基づき入力ＲＧＢ値の増幅処理を行う。
【００５７】
以上、説明したように、本実施形態では、入力画素を複数の色グループに分類し、同一色グループに属する（類似した色を有する）近接画素間で算出した差分値から光源色を推定する構成とした。同一色グループに属する近接画素間の差分値を用いることで、同一物体の同一色部分に対応した２画素間の差分が取得できる可能性が高くなるため、鏡面反射成分（＝光源成分）の抽出精度、すなわち光源色の推定精度が高くなる。
【００５８】
なお、本実施形態では、ブロックの総合差分値（BlockSub_R, BlockSub_G, BlockSub_B）を算出する際に、カウント値が最大の色グループにおける平均差分値を総合差分値とする構成としたが、他の値を総合差分値としてもよい。例えば、カウント値が多いほど高い重み付けをして、複数の色グループにおける平均差分値の重み付け平均値を総合差分値としてもよい。また、カウント値が多いものから所定の複数の色グループの平均差分値の平均値をブロックの総合差分値とするなど、カウント値が多い色グループの差分値を用いる任意の方法で総合差分値を算出することができる。
【００５９】
また、カウント値以外の条件に基づいて選択した色グループの差分値から総合差分値を生成してもよい。例えば、色グループごとの輝度の平均値や色の分散値などを利用して総合差分値を生成してもよい。例えば、グループに属する画素の平均輝度値が最も高い色グループ、グループに属する画素の色の分散値が最も小さい色グループの平均差分値を総合差分値とすることができる。もしくはカウント値と同様に、平均輝度の高さや、色の分散の小ささに応じて複数の色グループの差分値の重み付け平均値を求め、総合差分値としてもよい。
【００６０】
平均輝度値が高い色グループは鏡面反射を反映しやすいため、平均輝度値の高い色グループの差分値を重視して総合差分値を算出することで、光源色の推定精度を高める事ができる。また、色の分散が少ないことは物体色のばらつきが少ないことを示し、光源色の推定結果のばらつきも小さくなるため、色の分散値が小さい色グループを重視して総合差分値を算出することで、光源色の推定精度を高めることができる。
【００６１】
また、本実施形態では、処理対象画素と比較画素とが鏡面反射成分の抽出に適した組み合わせかどうかを、差分値の大きさＳが所定の閾値Ｔより大きいか否かで判断したが、他の方法で判断してもよい。
【００６２】
例えば、処理対象画素と比較画素のベクトルのなす角θを算出し、θが所定の閾値よりも小さい場合は、鏡面反射成分の抽出が十分に行えない組み合わせであるとして差分を合計しないようにしてもよい。これについて図７（ｂ）を用いて具体的に説明する。前述の通り、図７（ｂ）においてベクトル７０１は物体色（拡散反射成分）を、ベクトル７０２は物体色および光源色（拡散反射成分＋鏡面反射成分）を、ベクトル７０３は光源色（鏡面反射成分）をそれぞれ示す。また、ベクトル７１１は図４の処理対象画素４０６の画素値、ベクトル７１２は比較画素４０８の画素値、ベクトル７１３は比較画素４０７の画素値、をそれぞれ示す。
【００６３】
この場合、光源色の推定のために算出したいのは、前述のとおり物体色＋光源色を示すベクトル７１３と物体色を示すベクトル７１１、７１２との差分ベクトルである。
そこで、処理対象画素４０６のベクトル７１１と比較画素４０８，４０７のベクトル７１２、７１３のなす角θを算出する。ベクトル７１１と７１２のなす角θはθ１、ベクトル７１１と７１３のなす角θはθ２とする。求めたい光源色の成分は、異なる反射光成分を持つベクトル間の差分である。そこで、画素値のベクトルのなす角θが所定の閾値よりも小さい画素間の差分は、同一又は類似反射光成分を有する画素の差分と判断し、差分を合計しないようにする。この方法によっても、差分の大きさＳと閾値Ｔとの比較と同様に、光源成分（鏡面反射成分）の抽出精度、すなわち光源色の推定精度を向上することができる。
【００６４】
また、本実施形態では、入力画像を水平，垂直の両方向に４分割して１６個のブロックに分割する例について説明したが、ブロックの分割方法や分割数に制限はない。例えば１６以上のブロックに分割しても、画像全体を１つのブロックとして扱ってもよい。また、ブロックの大きさも同一としなくてもよい。
【００６５】
また、本実施形態では、入力画像をラスタスキャンし、全画素に対して差分算出処理を行う場合を例に説明したが、必ずしも全画素から算出する必要はなく、例えば、間欠的に処理対象画素をスキャンしていく構成をとってもかまわない。
【００６６】
また、本実施形態では、ＷＢ増幅部２０１におけるホワイトバランスゲインの適用前の画像信号からホワイトバランスゲインを算出したが、他の画像信号からホワイトバランスゲインを算出してもよい。例えば、例えば画像処理部１０５から出力されるホワイトバランス調整後の画像信号（Ｙ，Ｒ−Ｙ，Ｂ−Ｙ）をＲＧＢ値に変換した後、上述と同様に画素間の差分からホワイトバランスゲインを算出する構成としてもよい。この場合、ホワイトバランス調整後の画像の微小なホワイトバランスのずれを修正することができる。
【００６７】
また、画素を色グループに分類するのはホワイトバランス調整後の画像を利用し、画素間の差分を算出するのはホワイトバランス調整前の画像を利用してもよい。画素を色グループに分類するには、ホワイトバランス調整後の方が撮像素子の感度などによる色の偏りが少なく容易である。一方で、画素間の差分から光源色成分（鏡面反射成分）を抽出するには、ホワイトバランス調整前の画像の方が、差分が大きくなるため誤差を低減することが可能である。そこで、仮のホワイトバランスゲインを適用した画素値に基づき画素を色グループに分類し、ホワイトバランスゲインを適用していない画素値の差分から色グループごとに画素差分値を算出することで、光源色の推定精度をより高めることができる。
【００６８】
また、本実施形態では、ブロックごとに総合差分値を算出し、ブロックごとの総合差分値から画像全体に対する総合差分値を算出する例について説明した。しかし、ブロックごとの総合差分値からブロックごとに光源色を推定し、ブロックごとにホワイトバランスゲインを算出してもよい。これにより、画像の領域ごとにホワイトバランスを制御することが可能となり、例えば複数の光源が混在した環境で得られた被写体に対しても、精度よくホワイトバランス調整を行うことができる。
【００６９】
また、本実施形態は、色グループを規定する色差として（Ｒ−Ｙ）／Ｙ、（Ｂ−Ｙ）／Ｙの色空間を利用したが、他の色空間で色グループ、例えばL*a*b*空間で色グループを規定してもよい。
【００７０】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。第１の実施形態は、色が類似している画素間の差分のうち、光源色の推定に適すると判断される差分から光源色を推定する方法について説明した。これに対して第２の実施形態は、色が類似しており、光源色の推定に適すると判断される輝度差がある画素間の差分から光源色を推定するものである。
【００７１】
本実施形態においても第１の実施形態で説明したデジタルカメラ１００において実施可能であるため、デジタルカメラ１００の構成についての説明は省略し、本実施形態に特有な光源色の推定処理について、図８のフローチャートを用いて説明する。
【００７２】
第１の実施形態と同様に、画像処理部１０５の輝度・色信号生成部２００から出力されたＲＧＢ信号および色空間変換処理部２０７から出力されたＹ，（Ｒ−Ｙ）／Ｙ，（Ｂ−Ｙ）／Ｙ信号が画像メモリ１０６に記録されているものとする。
システム制御部５０はこの画像メモリ１０６から画像信号を読み込み、以下の処理を実行して光源色を推定し、ホワイトバランスゲインを算出する。
【００７３】
図８において、Ｓ８０１およびＳ８０５は、Ｓ８０２〜Ｓ８０４の処理が、対象画素をラスタスキャンしながら全画素に対して実施されることを示している。
Ｓ８０２でシステム制御部５０は、第１の実施形態のＳ３０２と同様にして、処理対象画素が飽和していないか確認する。画素が飽和していると判断されればシステム制御部５０は処理対象画素を次の画素として飽和の確認を行う。画素は飽和していないと判断されればシステム制御部５０は処理をＳ８０３に進める。
【００７４】
Ｓ８０３でシステム制御部５０は、処理対象画素を色グループに分類する。処理対象画像の色グループ判定処理は第１の実施形態と同様であり、図５に示した６つの色グループのどれに対応するかを判定する。
【００７５】
Ｓ８０４でシステム制御部５０は、処理対象画素が属するブロック、色グループ、輝度グループ別に処理対象画素のＲＧＢ値を積分する。ここでのブロックとは、第１の実施形態と同様に図４の４００で示したように、入力画像を４×４の領域に分割したものである。また、輝度グループとは、予め定めた輝度の範囲、ここではY＞235, 235≧Y＞200, 200≧Y＞150, 150≧Y＞100, 100≧Yの５つの範囲で規定されるものとする。なお、輝度グループの規定は一例であり、グループの数や各グループに対応する輝度の上限値、下限値はこの例に限定されない。
【００７６】
システム制御部５０は、システムメモリ１２６上にブロック、色グループ、輝度グループごとに画素値（ＲＧＢ）を積分する評価値メモリ領域を予め確保しておく。このメモリ構成を図示したものが図９である。合計値は、画素値をＲＧＢ成分ごとに加算した合計値であり、本実施形態では、カウント値はそのブロック、色グループ、輝度グループに属する画素数を示す。
【００７７】
Ｓ８０４でシステム制御部５０は、処理対象画素ごとに、画素が属するブロック、色グループ、輝度グループを判定し、該当する分類の合計ＲＧＢ値に、処理対象画素のＲＧＢ成分を加算する。また、加算時に該当する分類のカウント値に１加算する。
Ｓ８０５までの処理により、入力画像の全画素について画素値の集計が完了すると、システム制御部５０は、Ｓ８０６〜Ｓ８０９で１６ブロックそれぞれについて総合差分値を算出する。
【００７８】
Ｓ８０７でシステム制御部５０は、色グループごとに２つの輝度グループ間の合計値の差分を算出する。例えばシステム制御部５０は、色グループごとにカウント値が所定の値（本実施形態では２００とする）以上である輝度グループの中から、輝度が最も高い輝度グループと、２番目に輝度が高い輝度グループを決定する。図９の例では、ブロック１の色グループ１で画素数（カウント値）が２００以上の輝度グループは輝度グループ１と輝度グループ３である。そのため輝度が最も高い輝度グループは輝度グループ１、輝度が２番目に高い輝度グループは輝度グループ３となる。
【００７９】
次に、システム制御部５０は、選択した２つの輝度グループに対して、合計値をカウント値で除算し、平均ＲＧＢ値を算出する。図９のブロック１、色グループ１の例では、システム制御部５０は、輝度グループ１の平均ＲＧＢ値(y1_aveR, y1_aveG, y1_aveB)と、輝度グループ３の平均ＲＧＢ値(y3_aveR, y3_aveG, y3_aveB)を算出する。さらにシステム制御部５０は、輝度グループ１と３の平均ＲＧＢ値の成分ごとの差分値である(色１：subR, subG, subB)を算出する。
同様に、ブロック１の色グループ２についてシステム制御部５０は、輝度グループ１と輝度グループ２の平均ＲＧＢの差分値である(色２：subR, subG, subB)を算出する。
【００８０】
このように、Ｓ８０７でシステム制御部５０は、各ブロックの各色グループについて、最も輝度の高い輝度グループと２番目に輝度の高い輝度グループにおける画素値の合計値の差分(色XX：subR, subG, subB)を算出する。XXは色グループの番号であり、本実施形態では１〜６である。
【００８１】
Ｓ８０８でシステム制御部５０は、各ブロックについて、Ｓ８０７で算出した２つの輝度グループ間の差分値(色XX：subR, subG, subB)の平均値を算出する。このとき、システム制御部５０は、６つの差分値を単純に平均するのではなく、差分値の算出に用いられた合計画素数（カウント値の合計）が多いほど大きな重み付けをした重み付け平均値を算出する。
【００８２】
すなわち、システム制御部５０は、最も輝度が高い輝度グループと２番目に輝度が高い輝度グループに属する合計画素数（カウント値の合計）が大きい色グループの差分値ほど大きな重みを与えて重み付け平均値を求める。図９のブロック１の例では、色グループ１や色グループ２の重みが大きくなり、色グループ３や色グループ６の重みを小さくする。またシステム制御部５０は、輝度グループ間の差分値の重み付け平均値をブロックの総合差分値（BlockSub_R, BlockSub_G, BlockSub_B）として記録する。
【００８３】
Ｓ８０７における総合差分値（BlockSub_R, BlockSub_G, BlockSub_B）の算出を１６個全てのブロックに対して実行すると、システム制御部５０は処理をＳ８１０に進める。
Ｓ８１０でシステム制御部５０は、１６個のブロックで算出した総合差分値の平均値である平均化総合差分値（aveR, aveG, aveB）を算出する。
【００８４】
Ｓ８１１でシステム制御部５０は、平均化した総合差分値（aveＲ, aveＧ, aveＢ）からホワイトバランスゲインを算出する。ここでは、ＧのホワイトバランスゲインG Gainを所定の固定値とすると、ＲとＢのホワイトバランスゲインR Gain, B Gainを、以下の式によって算出する。
R Gain = (aveG / aveR) * G gain
B Gain = (aveG / aveB) * G gain
【００８５】
Ｓ８１２でシステム制御部５０は、算出したホワイトバランスゲインを、ＷＢ増幅部２０１（図２）に設定する。ＷＢ増幅部２０１は設定されたホワイトバランスゲインに基づき入力ＲＧＢ値の増幅処理を行う。
【００８６】
以上、説明したように、本実施形態では、入力画素を複数の色グループに分類した上、色グループ内で複数の輝度グループに分類し、色グループごとに求めた、輝度差のある画素間の差分に基づいて光源色を推定する構成とした。
このような構成により、類似色（同一色グループに属する）画素であり、かつ輝度差のある（異なる輝度グループに属する）画素の差分から光源色を推定することができる。そのため、高確率で同一物体かつ同一色における鏡面反射成分と拡散反射成分の２画素間の差分が取得でき、その結果、鏡面反射成分（＝光源成分）の抽出精度、すなわち光源色の推定精度を高めることができる。
【００８７】
なお、本実施形態では、色グループごとに算出した総合差分値をカウント値に応じた重み付けして求めた重み付け平均値をブロックの総合差分値としたが、他の方法でブロックの総合差分値を算出してもよい。例えば、第１の実施形態と同様に、最もカウント値が多い色グループの輝度差分値をブロックの総合差分値としてもよい。
【００８８】
また、色グループごとの輝度の分布に応じてブロックの総合差分値を決定してもよい。輝度の分布から総合差分値を算出する例について図１０を参照して説明する。図１０はあるブロックにおける、色グループごとの輝度分布の例を示している。ここでは、輝度グループごとのカウント値を示している。
【００８９】
例えば、鏡面反射が生じている画素は輝度が高くなる。そこで、総合差分値を出す際に、輝度が高い（例えば輝度が８ビットの場合、２００以上の）画素の数が多いほど大きな重みで重み付け平均を行うことができる。もしくは、輝度が高い画素数が最も多い色グループの輝度差分値を総合差分値としてもよい。この場合、図１０の例では、高輝度の画素数が最も多い色グループ２の輝度差分値そのもの、あるいは色グループ２の輝度差分値に大きな重みを与えた重み付け平均値をブロックの総合差分値とする。
【００９０】
また、輝度の広がり度合いによって総合差分値を求めてもよい。例えば閾値以上の画素数を持つ輝度グループの数が最も多い色グループの輝度差分値を総合差分値としてもよい。図１０の例では、図の点線が画素数の閾値を示している。この閾値を超す輝度グループの数が最も多い色グループは色グループ１であり、色グループ１で算出した輝度差分値をブロックの総合差分値とする。なお、閾値を超す輝度グループの数が最も多い色グループが複数ある場合は、例えばそれらの色グループで算出した輝度差分値の平均値をブロックの総合差分値とすればよい。
【００９１】
このように、色グループごとの輝度差分値から総合差分値を算出する際に輝度の分布を考慮することで、鏡面反射成分をより反映した総合差分値を生成することが可能となる。
【００９２】
また、本実施形態では、輝度が最も高い輝度グループと２番目に高い輝度グループとの差を輝度差分値として算出する方法を説明したが、他の方法を用いてもよい。例えば、画素数が閾値を越えた輝度グループにおいて、最も輝度が高い輝度グループと最も輝度が低い輝度グループとから輝度差分値を算出してもよい。もしくは、最も輝度が高いグループと、最も画素数が多い輝度グループとから輝度差分値を算出してもよい。
これにより、被写体の物体色を反映した画素（画素数が多い傾向がある）と、物体色＋光源色（輝度が高い傾向がある）を反映した画素間の差分値をより高精度に抽出することが可能となる。
【００９３】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014007528.tif 000003
【図２】
2014007528.tif 000004
【図３】
2014007528.tif 000005
【図５】
2014007528.tif 000006
【図６】
2014007528.tif 000007
【図７】
2014007528.tif 000008
【図８】
2014007528.tif 000009
【図９】
2014007528.tif 000010
【図１０】
2014007528.tif 000011
【図４】
2014007528.tif 000012