(57)【特許請求の範囲】
【請求項１】
画像の中で該画像の画素値の平均よりも明るい、該画像中の任意の位置に設けられる第１の画素位置での画素値を検出する第１画素値検出手段と、
前記第１の領域に近接し前記第１の画素位置よりも暗い第２の画素位置での画素値を検出する第２画素値検出手段と、
前記第１画素値検出手段にて検出された画素値と前記第２画素値検出手段にて検出された画素値との差分により、前記画像に照射される光源の光源色を特定する光源色特定手段と、を備えることを特徴とする画像処理装置。
【請求項２】
画像をそれぞれが複数画素からなる複数のブロックに分割して、各ブロック内の各画素の輝度を複数段階に分類する輝度分類手段を備え、
前記第１画素値検出手段は、各ブロックごとに、最も明るい段階に分類された画素の平均画素値をそれぞれ検出し、
前記第２画素値検出手段は、各ブロックごとに、二番目に明るい段階に分類された画素の平均画素値をそれぞれ検出し、
前記光源色特定手段は、前記第１画素値検出手段にて検出されたブロックごとの画素値の平均値の少なくとも一部と、前記第２画素値検出手段にて検出されたブロックごとの画素値の平均値の少なくとも一部との差分に基づいて、前記光源色を特定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
画像をそれぞれが複数画素からなる複数のブロックに分割して、各ブロック内の各画素の輝度を複数段階に分類する輝度分類手段を備え、
前記第１画素値検出手段にて検出されたブロックごとの画素値の平均値のうち、平均値の大きい順に所定個のブロックのそれぞれに対応する所定個の平均値を検出する第１の画素平均値検出手段と、
前記第２画素値検出手段にて検出されたブロックごとの画素値の平均値のうち、平均値の大きい順に所定個のブロックのそれぞれに対応する所定個の平均値を検出する第２の画素平均値検出手段と、を備え、
前記光源色特定手段は、前記第１の画素平均値検出手段にて検出された平均値と前記第２の画素平均値検出手段にて検出された平均値との差分に基づいて、前記光源色を特定することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記光源色特定手段にて検出された光源色に基づいてホワイトバランス調整を行うホワイトバランス調整手段と、
前記光源色特定手段にて検出された光源色を構成する複数の色成分に基づいて、ホワイトバランス調整を行うためのホワイトバランスゲインを算出するホワイトバランス算出手段と、を備え、
前記ホワイトバランス調整手段は、前記ホワイトバランスゲインに基づいてホワイトバランス調整を行うことを特徴とする請求項１乃至３のいずれかに記載の画像処理装置。
【請求項５】
画像の中で該画像の画素値の平均よりも明るい、該画像中の任意の位置に設けられる第１の画素位置での画素値を検出するステップと、
前記第１の領域に近接し前記第１の画素位置よりも暗い第２の画素位置での画素値を検出するステップと、
前記第１画素位置で検出された画素値と前記第２画素位置で検出された画素値との差分に基づいて、前記画像に照射される光源の光源色を特定するステップと、を備えることを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光源色を検出する画像処理装置に関する。
【背景技術】
【０００２】
ビデオカメラ等においてホワイトバランスの調整を行うホワイトバランス制御装置が知られている（特許文献１，２、３参照）。この種の従来のホワイトバランス制御装置では、撮像被写体の白色領域内の信号を積分してホワイトバランスのずれを検出するのが一般的である。
【特許文献１】特開平2-94890号公報
【特許文献２】特開平5-344530号公報
【特許文献３】特開平11-205806号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、実際の撮像被写体は、白色に近い色であっても完全な白色ではなく、また、光源の色温度は光源ごとに異なるため、完全な白色領域を特定するのは困難である。例えば、上述した特許文献３では、色信号と輝度信号で構成される色空間を複数の領域に分割し、各領域に含まれる信号量を検出して得られる被写体の色分布に基づいてホワイトバランスのずれを検出しているが、白色領域を基準としてホワイトバランスのずれを検出する点では、他の公知文献と同様である。
【０００４】
このように、従来のホワイトバランス制御装置は、白色領域に基づいてホワイトバランスのずれ検出とその調整を行うため、もともと白色部分の少ない撮像被写体を用いて正しくホワイトバランスの調整を行うことは困難である。また、上述したように、光源の色温度や被写体自身の色などを考慮に入れてホワイトバランスの調整を行うおうとすると、複雑な処理を行わなければならず、処理に時間がかかるという問題もある。
【０００５】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、簡易かつ精度良く入力画像の光源色を予測可能な画像処理装置および画像処理方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、画像の中で該画像の画素値の平均よりも明るい、該画像中の任意の位置に設けられる第１の画素位置での画素値を検出する第１画素値検出手段と、
前記第１の領域に近接し前記第１の画素位置よりも暗い第２の画素位置での画素値を検出する第２画素値検出手段と、
前記第１画素値検出手段にて検出された画素値と前記第２画素値検出手段にて検出された画素値との差分により、前記画像に照射される光源の光源色を特定する光源色特定手段と、を備えることを特徴とする画像処理装置が提供される。
【発明の効果】
【０００７】
本発明によれば、簡易かつ精度良く入力画像の光源色を予測でき、その予測結果を用いることで、精度よくホワイトバランス調整を行うことができる。
【発明を実施するための最良の形態】
【０００８】
以下、図面を参照しながら、本発明の一実施形態について説明する。
【０００９】
図１は本発明の一実施形態による画像処理装置の概略構成を示すブロック図である。図１の画像処理装置は、画像に照射された光源色を検出する光源色検出部１と、光源色検出部１で検出した光源色の各色値に基づいてホワイトバランスを算出するホワイトバランス算出部２と、算出したホワイトバランスに基づいてホワイトバランスの調整を行うホワイトバランス補正部３とを備えている。
【００１０】
まず、光源色検出部１の動作原理について説明する。物体に光が当たった場合、２つの異なる反射が起きることが知られている。一つは方向性を持たずに反射される乱反射（拡散反射）と呼ばれる反射であり、物体の色を反映している。もう一つは特定方向散乱（鏡面反射）と呼ばれる反射であり、物体の色を反映しない代わりに光源の色を持っている（http://www.rsch.tuis.ac.jp~naka/naka/scola/member/chapter5_html/chapter5.html参照）。
【００１１】
ここで、ある画像から検出された輝度の高い部分（より具体的には、その画像の平均輝度よりも高い部分）の色をＡ、その近傍の少し輝度が落ちている部分の色をＢとする。この場合、Ａの位置とＢの位置は近接しているため、同一物体である可能性が高い。仮に、同一物体でない場合でも、画像から多くの部分を検出して平均化等の処理を施すことで、誤差を少なくすることができる。
【００１２】
乱射光をＤ、特定方向散乱光をＳとすると、Ａの位置とＢの位置は近接しているため、Ｄは略同一である。一方、Ｓは、光の入射角と反射角が等しくなる近傍で急激な変化を起こすことが知られている。このため、Ａ，Ｂは近似的に以下の（１）および（２）式で表すことができる。
Ａ＝ｆa＊Ｓ＋Ｄ    …（１）
Ｂ＝ｆb＊Ｓ＋Ｄ    …（２）
ここで、ｆaはＡの位置での乱反射に対する鏡面反射の比率を表し、ｆbはＢの位置での乱反射に対する鏡面反射の比率を表している。
【００１３】
物体に照射される光線を３刺激値Ｒ，Ｇ，Ｂでサンプルした場合、Ａ値、Ｂ値、Ｄ値およびＳ値は三次元ベクトルとなる。これらベクトルは、以下の（３）〜（６）式で表される。
Ａ＝（A.R，A.G，A.B）    …（３）
Ｂ＝（B.R，B.G，B.B）    …（４）
Ｄ＝（D.R，D.G，D.B）    …（５）
Ｓ＝（S.R，S.G，S.B）    …（６）
なお、光線を４刺激値Ｃ，Ｍ，Ｙ，Ｇでサンプルした場合、Ａ値、Ｂ値、Ｄ値およびＳ値は四次元ベクトルになる。
【００１４】
ある物体の色（Ａ，Ｂ，Ｃ）が仮に、（10，20，40）だとする。このとき、この物体に対してより強い光（例えば10倍の強さの光）を照射すると、（100，200，400）となる。（10，20，40）と（100，200，400）は、光の強さが異なるものの同じ色を表している。
【００１５】
このように、線形のRGB空間において、ある色（Ｒ，Ｇ，Ｂ）と、その色をｆ倍した色（ｆ＊Ｒ，ｆ＊Ｇ，ｆ＊Ｂ）とは同一色である。
【００１６】
色（Ｒ，Ｇ，Ｂ）のホワイトバランスゲインGainR，GainBは、以下の（７）および（８）式で表される。
GainR＝20／10＝2.0    …（７）
GainB＝20／40＝0.5    …（８）
【００１７】
Ｒ値にゲインGainRを乗算し、Ｂ値にゲインGainBを乗算することでホワイトバランスを調整でき、ある物体の色(10，20，40）のホワイトバランス調整値は、（20，20，20）となる。これは、グレーの色を表している。同様に、強い光（100，200，400）のホワイトバランス調整値は（200，200，200）となり、やはりグレーになる。
【００１８】
物体の明るい場所で取得（サンプル）された画素値Ａ，Ｂはそれぞれ、より厳密には以下の（９）および（１０）式で表される。
Ａ＝ｆs＊Ｓ＋ｆd＊Ｄ    …（９）
ここで、ｆa＝ｆs／ｆdとおいて、ｆd＝１となるように正規化を行うと、（１）式と同じ式が得られる。Ｂ値も同様に正規化を行うことにより、（２）式が得られる。
【００１９】
上述した（１）および（２）式の差分を取ると、以下の（１１）式が得られる。
Ａ−Ｂ＝（ｆa−ｆb）＊Ｓ    …（１１）
【００２０】
（１１）式より、（Ａ−Ｂ）値は、鏡面反射光Ｓの倍数になることがわかる。これは、（Ａ−Ｂ）値が鏡面反射光と同じ色（すなわち、光源色の色）を表し、物体の色にはまったく依存しないことを示している。このように、明るさを問題にして、単に色（専門的には色座標あるいは色度座標）を扱う場合には、物体の色の差（Ａ−Ｂ）と鏡面反射光Ｓとは同一の色として扱うことができる。
【００２１】
この場合のホワイトバランスゲインGainR，GainBはそれぞれ（１２）および（１３）式で表される。
GainR＝（ｆa−ｆb）＊S.G／（ｆa−ｆb）＊S.R  …（１２）
GainB＝（ｆa−ｆb）＊S.G／（ｆa−ｆb）＊S.B  …（１３）
（１２）および（１３）式とも、分母と分子の（ｆa−ｆb）が打ち消されて、（１４）および（１５）式のようになる。
GainR＝S.G／S.R    …（１４）
GainB＝S.G／S.B    …（１５）
これら（１４）および（１５）式は、以下の（１６）および（１７）式と等価である。
GainR＝（A.G−B.G）／（A.R−B.R）    …（１６）
GainB＝（A.G−B.G）／（A.B−B.B）    …（１７）
これら（１６）および（１７）式からわかるように、ホワイトバランスゲインには、光源色の明るさは関係ないため、上述した（ｆa−ｆb）を無視することができる。
【００２２】
以上に説明したように、ある物体の近接した２点Ａ，Ｂの差分を検出することで、光源色を推測でき、その結果を用いてホワイトバランスゲインを計算することができる。
【００２３】
以下、本実施形態の具体的な処理動作を説明する。図２は光源色検出部１の処理手順の一例を示すフローチャートである。まず、画像中の輝度の高い部分Ａと、その近傍の輝度が少し落ちている部分Ｂとを検出するために、画像全体を複数画素からなるブロックに分割する（ステップＳ１）。以下では、図３に示すように画像を６×５画素の計30個のブロックに分割する例を示している。例えば、デジタルカメラで撮影した画像を用いて図２の処理を行う場合、一つのブロック内の画素数は５万〜５０万画素である。ただし、ブロックのサイズには特に制限はなく、適宜最適な値を設定すればよい。
【００２４】
次に、画像中の各画素の画素値を分類して格納するためのスキャン結果蓄積バッファ１１内の全領域を初期化（ゼロクリア）する（ステップＳ２）。このバッファには、画像中の各画素の画素値がブロックごとに分類して格納される。図４は蓄積バッファ１１のデータ構造を示す図である。図示のように、蓄積バッファ１１は、30個のブロックに大きく分けられ、各ブロックが16個の段階を有し、各段階にSumとCntが格納される。例えば各画素値がR値、Ｇ値およびＢ値で構成される場合には、Sumは３次のベクトル量となり、Ｒ値、Ｇ値およびＢ値が格納される。あるいは、各画素値がＣ値、Ｍ値、Ｙ値およびＧ値で構成される場合には、Sumは４次のベクトル量となり、Ｃ値、Ｍ値、Ｙ値およびＧ値が格納される。Cntは各段階に格納される画素の数である。
【００２５】
スキャン結果蓄積バッファ１１の初期化が終わると、次に、画像をスキャンして各画素の画素値を順に取得する（ステップＳ３）。そして、取得した画素のブロック番号を検出する（ステップＳ４）。次に、取得した画素の明るさを示す画素値を計算し（ステップＳ５）、その画素値を格納すべき段階を決定する（ステップＳ６）。そして、決定した段階中のSumに、計算した画素値を足し合わせ、Cntに１を加算する（ステップＳ７）。
【００２６】
次に、画像中の全画素をスキャンしたか否かを判定する（ステップＳ８）。まだスキャンしていない画素があれば、ステップＳ３以降の処理を繰り返す。
【００２７】
スキャンが完了した場合には、各ブロックごとに、Cntが０でない段階の中で最も明るい段階のSum／CntをＡとし、Cntが０でない二番目に明るい段階のSum／CntをＢとし、これらＡ，ＢをＡＢ値バッファ１２に格納する（ステップＳ９）。
【００２８】
なお、Ａ値とＢ値は実際にはベクトルであるため、より詳細にはＡＢ値バッファ１２には以下の（１８）〜（２３）式に示す値が格納される。
A.R = 最も明るい段階のSum.R／Cnt      …（１８）
A.G =最も明るい段階のSum.G／Cnt      …（１９）
A.B =最も明るい段階のSum.B／Cnt      …（２０）
B.R = 二番目に明るい段階のSum.R／Cnt      …（２１）
B.G =二番目に明るい段階のSum.G／Cnt      …（２２）
B.B =二番目に明るい段階のSum.B／Cnt      …（２３）
【００２９】
図５はＡＢ値バッファ１２のデータ構造の一例を示す図である。図示のように、ＡＢ値バッファ１２は各ブロックごとにＡ値とＢ値を格納する領域を有する。
【００３０】
上記ステップＳ９の処理が終了すると、すべてのブロックについてＡＢ値バッファ１２への格納が終了したか否かを判定し（ステップＳ１０）、まだ終了していなければステップＳ９の処理を繰り返し、終了した場合には、ＡＢ値バッファ１２の全Ａ値の平均値と全Ｂ値の平均値との差分Ｃを計算する（ステップＳ１１）。このステップＳ１１は、上述した（１１）式の演算を行っていることと等価であり、この差分Ｃが光源色になる。
【００３１】
上述したステップＳ１０の処理を行う際、全ブロックのＡ値の平均とＢ値の平均を計算する代わりに、ＡＢ値バッファ１２に格納されたＡ値とＢ値のそれぞれについて、大きいものからｎ個（１≦ｎ＜３０）の平均を計算して、その差分を演算してもよい。
【００３２】
あるいは、以下の手法で（Ａ値−Ｂ値）の重みを加重平均してもよい。実在する光Ｃの階調値を（C.R，C.G，C.B）とし、（Ａ値−Ｂ値）をＳ＝（S.R，S.G，S.B）とする。このとき、色距離ｋは以下の（２４）式で表される。
【数１】
0004447520.tif 000002
【００３３】
（２４）式に示すｋを偏差として、その逆数１／ｋを各ブロックの（Ａ値−Ｂ値）の重みとして加重平均することが考えられる。ここで、ｋ＝０の場合には、重みが無限大となるため、実装上は重み＝１／（ｋ＋１）のように近似させればよい。
【００３４】
光源色検出部１は、上述したステップＳ１０で計算された差分Ｃを光源色として記憶する。以上で、光源色検出部１の処理が終了する。
【００３５】
光源色検出部１の処理が終わった後、図１のホワイトバランス算出部２は、図６のフローチャートの処理手順に沿ってホワイトバランスゲインを計算する。まず、上述した（１６）式に従って、Ｒ値のホワイトバランスゲインGainRを計算する（ステップＳ２１）。具体的には、光源色検出部１で検出した光源色のＧ値／光源色のＲ値をGainRとして計算する。
【００３６】
次に、（１７）式に従って、Ｂ値のホワイトバランスゲインGainBを計算する（ステップＳ２２）。具体的には、光源色検出部１で検出した光源色のＧ値／光源色のＢ値をGainBとして計算する。以上により、ホワイトバランス算出部２の処理が終了する。
【００３７】
上述した（１６）および（１７）式は、光源色が白（Ｒ値、Ｇ値およびＢ値が同一値）としているが、光源色は必ずしも白である必要はない。例えば、人間が色順応しにくい低い色温度の光源の場合、若干黄色成分がある方が自然に見えることがある。この場合、例えば、光源色＜3500Ｋ（ケルビン）のときは、以下の（２５）〜（２７）式に従ってホワイトバランスゲインを計算すればよい。
Ｒ値のホワイトバランスゲイン＝0.9＊Ｇc＊Ｒc    …（２５）
Ｇ値のホワイトバランスゲイン＝Ｇc／Ｇc＝１    …（２６）
Ｂ値のホワイトバランスゲイン＝1.1＊Ｇc／Ｂc    …（２７）
【００３８】
一方、光源色≧3500Ｋのときは、以下の（２８）〜（３０）式に従ってホワイトバランスゲインを計算すればよい。
Ｒ値のホワイトバランスゲイン＝Ｇc／Ｒc    …（２８）
Ｇ値のホワイトバランスゲイン＝Ｇc／Ｇc＝１    …（２９）
Ｂ値のホワイトバランスゲイン＝Ｇc／Ｂc    …（３０）
【００３９】
ホワイトバランスゲインの算出が終了すると、次に、図１のホワイトバランス補正部３は、図７のフローチャートの処理手順に沿って、ホワイトバランス算出部２が算出したホワイトバランスゲインGainR，GainBを用いて、画像のホワイトバランス調整を行う。
【００４０】
まず、画像をスキャンして画素を順に取得し（ステップＳ３１）、各画素のＲ値およびＢ値をそれぞれ以下の（３１）および（３２）式に従って補正する（ステップＳ３２）。
Ｒ値＝Ｒ値＊（Ｒ値のホワイトバランスゲイン）    …（３１）
Ｂ値＝Ｂ値＊（Ｂ値のホワイトバランスゲイン）    …（３２）
これにより、ホワイトバランス調整を行った最終的な画像データが得られる。
【００４１】
このように、本実施形態では、入力画像中の近接した２点Ａ，Ｂの画素値の差分を取ることで光源色を検出し、その光源色を用いてホワイトバランス調整を行うため、画像の色に左右されずに、きわめて簡易かつ精度よくホワイトバランス調整を行うことができる。
【００４２】
上述した図２のステップＳ９では、ＡＢ値バッファ１２中でCnt値が０でない段階を対象としてＡ値とＢ値を決定したが、Cntが例えば対象ブロック内の全画素数の所定割合（例えば１％）以上となる段階の中で最も明るい段階のSumをＡ値とし、二番目に明るい段階のSumをＢ値としてもよい。このように、Ａ値とＢ値の候補を予め絞り込むことで、画像のノイズの影響を軽減できる。
【００４３】
また、上述したステップＳ９では、最も明るい段階のSumをＡ値、二番目に明るい段階のSumをＢ値としたが、最も明るい段階から数段階のSumの平均をＡ値とし、その次に明るい段階から数段階のSumの平均をＢ値としてもよい。
【００４４】
また、上述したステップＳ９において、ＡＢ値バッファ１２に格納されたSumのうち、所定の基準値に満たないSumはＡ値とＢ値の対象から予め除外してもよい。
【００４５】
図１に示す画像処理装置は、すべての構成部分をソフトウェアで実現することができる。したがって、例えば、パーソナルコンピュータのオペレーティングシステム上で起動するアプリケーションソフトウェアの形態で実現したり、あるいはデジタルカメラ内のファームウェアとして実装することも可能である。いずれの場合も、上述した図２および図６の処理手順はマイクロプロセッサにより実行可能である。
【００４６】
本発明の具体的な実装形態は、例えばプリンタ、デジタル現像機、街角にあるデジタルカメラ写真印刷機や、プリント倶楽部（登録商標）などである。
【００４７】
また、本発明の構成要件の少なくとも一部を半導体チップ等のハードウェアで構成してもよい。ハードウェアで構成することにより、処理の迅速化が図れる。また、システムLSIの内部に本発明を実装してもよい。
【図面の簡単な説明】
【００４８】
【図１】本発明の一実施形態による画像処理装置の概略構成を示すブロック図。
【図２】光源色検出部１の処理手順の一例を示すフローチャート。
【図３】画像を３０個のブロックに分割した例を示す図。
【図４】蓄積バッファ１１のデータ構造を示す図。
【図５】ＡＢ値バッファ１２のデータ構造の一例を示す図。
【図６】ホワイトバランス算出部の処理手順の一例を示すフローチャート。
【図７】ホワイトバランス補正部の処理手順の一例を示すフローチャート。
【符号の説明】
【００４９】
１  光源色検出部
２  ホワイトバランス算出部
３  ホワイトバランス補正部
１１  スキャン結果蓄積バッファ
１２  ＡＢ値バッファ
【図１】
0004447520.tif 000003
【図２】
0004447520.tif 000004
【図３】
0004447520.tif 000005
【図４】
0004447520.tif 000006
【図５】
0004447520.tif 000007
【図６】
0004447520.tif 000008
【図７】
0004447520.tif 000009