以下、図を参照しながら、一実施形態に係る画像認識装置、画像認識方法、及び画像認識プログラムについて詳細に説明する。
図1は、一実施形態に係る撮像装置1の構成例について説明する為の図である。
撮像装置1は、撮像素子の撮像面上に投影された被写体の像を画像データとして記録するディジタルカメラである。また、撮像装置1は、画像データに種々の補正を加えた上で記録することができる。
図1に示すように、撮像装置1は、レンズ11、絞り12、焦点調整機構13、ズーム駆動機構14、絞り駆動機構15、シャッタユニット16、撮像素子17、防振機構18、表示部19、操作部20、ジャイロセンサ21、内部メモリ22、メモリIF23、及びシステムコントローラ24、記録媒体25を備える。
レンズ11は、透過した光を撮像素子17の撮像面に結像させる。レンズ11は、複数のレンズが組み合わされて構成される。レンズ11は、例えば、フォーカスリングと、ズームリングと、を備える。レンズ11は、フォーカスレンズを撮像レンズの光軸方向に移動させることによってピント位置を変更する。また、レンズ11は、ズームレンズを撮像レンズの光軸方向に移動させることによって焦点距離を変更する。
絞り12は、開閉することによって開口径を調整する。絞り12は、開口径を調整することにより、撮像レンズを介して撮像素子17に入射する光線の量を調整する。
焦点調整機構13は、フォーカスレンズの位置を調整することにより、ピント位置を調整する。焦点調整機構13は、システムコントローラ24の制御に基づいてフォーカスレンズの位置を調整する。
ズーム駆動機構14は、ズームレンズの位置を調整することにより、焦点距離を変更する。ズーム駆動機構14は、システムコントローラ24の制御に基づいてズームレンズの位置を調整する。
絞り駆動機構15は、絞り12の開口径を調整する。絞り駆動機構15は、システムコントローラ24の制御に基づいて絞り12の開口径を調整する。
シャッタユニット16は、レンズ11を透過して撮像素子17に入射する光の光量を調整する機構である。シャッタユニット16は、例えばフォーカルプレーンシャッタである。シャッタユニット16は、レンズ11と撮像素子17との間に設けられ、レンズ11を透過した光を撮像素子17の撮像面に入射させる開放状態と、レンズ11を透過した光から撮像素子17の撮像面を遮光する遮光状態と、を作る。シャッタユニット16は、先幕と、後幕と、先幕及び後幕を駆動するシャッタ駆動装置を備える。シャッタ駆動装置は、システムコントローラ24から入力されたシャッタ速度に基づく速度及びタイミングで先幕及び後幕を動作させてレンズ11を透過した光が撮像素子17の撮像面に入射する露光時間を調整することにより、撮像素子17に入射する光の光量を調整する。
撮像素子17は、光を光電変換し電荷を蓄える画素が複数配列されて構成された撮像面を備える。撮像素子17は、例えば、Charge Coupled Devices(CCD)イメージセンサ、Complementary Metal Oxide Semiconductor(CMOS)イメージセンサ、または他の撮像素子により構成される。撮像素子17は、レンズ11により撮像面上に結像された被写体像を電気信号(画像信号)に変換する。撮像素子17は、アナログ電気信号である画像信号をディジタル信号である画像データに変換して出力する。
防振機構18は、システムコントローラ24の制御に応じて撮像素子17の撮像面を撮像レンズの光軸と直交する面内で移動させることにより、撮像装置1の姿勢変化に伴って生じる撮像面上の被写体像のブレを補正する。
表示部19は、システムコントローラ24から入力された画像を出力する画像出力部である。表示部19は、システムコントローラ24から入力された画像データに基づいて画面を表示する。表示部19は、表示装置と、画像データに基づいて画面を表示装置に表示させる駆動回路と、を備える。表示部19は、例えば表示パネル、及び電子ビューファインダー(EVF)を表示装置として備える。なお、表示部19は、システムコントローラ24から入力された画像を外部の機器に出力する出力部などとして構成されていてもよい。
操作部20は、ユーザが撮像装置1の各種の操作を行うための複数の操作部材を備える。操作部材は、例えば、レリーズボタン、電源ボタン、タッチセンサ、及び他の種々のボタン等を含む。レリーズボタンは、ユーザが撮像装置1に対して画像を取得する為の種々の処理を指示するための操作部材である。操作部20は、レリーズボタンが半押しされた場合に自動露出(AE)処理及び自動合焦(AF)処理などの実行の指示を示す信号をシステムコントローラ24に対して与える。また、操作部20は、レリーズボタンが全押しされた場合に撮像素子17により画像を取得する撮像動作の指示をシステムコントローラ24に対して与える。電源ボタンは、ユーザが撮像装置1の電源のONまたはOFFを切り替える為の操作部材である。タッチセンサは、例えば、抵抗膜式タッチセンサ、または静電容量式タッチセンサ等である。タッチセンサは、ある領域内において指定された位置を示す情報を取得する。タッチセンサは、後述する表示部19の表示パネルと一体に設けられ、表示パネル上のタッチされた位置を示す信号(タッチ位置信号)をシステムコントローラ24に入力する。
ジャイロセンサ21は、撮像装置1の姿勢の変化に伴って生じる回転運動を角速度信号として検出する。ジャイロセンサ21は、例えば、撮像素子17の撮像面の水平方向を軸としたピッチ方向における回転運動、及び撮像面の垂直方向を軸としたヨー方向における回転運動、撮像レンズの光軸を軸としたロール方向における回転運動、及び撮像素子17の撮像面と平行な方向における運動、をそれぞれ検出し、角速度信号を生成する。
内部メモリ22は、システムコントローラ24により実行されるプログラムを記憶するプログラムメモリ、取得した画像データを一時的に記憶するバッファメモリ、システムコントローラ24による各種の設定を記憶する設定メモリなどを有する。
メモリIF23は、複数の接触端子を備える記録媒体25を挿入可能なカードスロットと、記録媒体25がカードスロットに挿入された場合に記録媒体25の接触端子と電気的に接続される接触端子と、を備える。記録媒体25は、例えばメモリカードである。メモリIF23は、記録媒体25とシステムコントローラ24との間でのデータの入出力を中継する。
システムコントローラ24は、撮像装置1の各部の動作を制御する。システムコントローラ24は、操作部20により入力された操作に応じて種々の処理を実行するように撮像装置1を制御する。システムコントローラ24は、例えば、レリーズボタンが全押しされて撮像動作を実行する指示が入力された場合、各部を制御して撮像動作を実行する。具体的には、システムコントローラ24は、絞り12を駆動させるとともに、シャッタユニット16に制御信号を入力して先幕及び後幕を駆動させることによって、静止画を撮像する。
システムコントローラ24は、例えばCPUを備える。システムコントローラ24は、CPUが内部メモリ22に記憶されているプログラムを読み出して実行することによって種々の機能を実現する。例えば、システムコントローラ24は、AF制御部31、AE制御部32、防振制御部33、手振れ補正量算出部34、ズーム駆動制御部35、記録制御部36、及び画像処理部37として機能する。
AF制御部31は、自動合焦(AF)処理を行う。具体的には、AF制御部31は、撮像素子17により得られた画像データのコントラストを評価し、コントラストがピークになるようにレンズ11のフォーカスレンズを駆動する。
AE制御部32は、自動露出(AE)処理を行う。具体的には、AE制御部32は、撮像素子17により得られた画像データを用いて被写体輝度を算出する。AE制御部32は、この被写体輝度に従って、露光時の絞り12の開口径(絞り値)、シャッタユニット16におけるシャッタスピード(シャッタ速度)、撮像素子17における感度(ISO)等を算出する。AE制御部32は、算出した絞り値、シャッタ速度、及びISOを撮像動作を行う際のパラメータとして設定する。
手振れ補正量算出部34は、像ブレ補正の為の防振機構18の駆動量を算出する。手振れ補正量算出部34は、ジャイロセンサ21により検出された角速度信号を取得し、取得した角速度信号と撮像レンズの光学特性とに基づいて手振れの方向と像移動量とを算出する。手振れ補正量算出部34は、算出した像ブレの方向と像移動量とに応じて像ブレを打ち消す方向に撮像面を移動させる為の防振機構18の駆動量を算出する。
防振制御部33は、手振れ補正量算出部34により算出された防振機構18の駆動量に応じて防振機構18を駆動することにより、撮像面上における被写体像のブレを打ち消す。
ズーム駆動制御部35は、操作に応じてレンズ11のズームレンズを駆動する。これにより、ズーム駆動制御部35は、撮像レンズの焦点距離を制御する。
記録制御部36は、撮像装置1における記録処理を制御する。記録制御部36は、例えば撮像動作によって取得した画像データを内部メモリ22のバッファメモリに記録する。記録制御部36は、バッファメモリに記録されている画像データをメモリIF23に装着されている記録媒体25に書き込む。
画像処理部37は、撮像素子17から取得した画像信号(ディジタルの画像信号)に対して画像処理を施す。画像処理は、例えば、色補正、ガンマ(γ)補正、コントラスト補正、白黒・カラーモード処理、リサイズ処理などである。また、画像処理は、画像データを所定のフォーマットに変換する処理を含む。所定のフォーマットは、例えば、Jpeg方式、PNG方式などがある。画像処理部37は、内部メモリ22のバッファメモリ上の所定の領域に書き込まれた画像データに対して画像処理を施すことによってファイルとして記録可能な画像データを生成する。即ち、画像処理部37は、画像データを取得する画像取得部として機能する。
画像処理部37は、画像データから特定の色の領域を認識する画像認識装置として機能する。画像処理部37は、画像データにおいて検出対象とする色を指定する検出色指定部として機能する。本実施形態では、検出対象とする色として赤色を指定することにより、画像処理部37は、赤目が発生した領域を認識する。例えば、画像処理部37は、画像データから認識した領域の画像の色を補正する赤目補正を行う。画像処理部37は、赤目補正を行う為の構成として、顔検出部41、器官検出部42、赤目検出部43、及び赤目補正部44、を備える。
顔検出部41は、画像データから人物の顔が写った領域を検出する顔検出処理を行う。
器官検出部42は、人物の目、鼻、及び口のなどの顔の器官が写った領域を画像データから検出する器官検出処理を行う。
赤目検出部43は、光が人物の目の網膜によって反射されることにより人物の目が赤く写る所謂赤目現象が生じた領域を画像データから検出する赤目検出処理を行う。
赤目補正部44は、赤目検出処理によって検出された赤目が生じた領域の画像を補正する赤目補正処理を行う。赤目補正部44は、赤目検出処理によって検出された領域の画像データの色を補正する色補正処理部として機能する。
図2は、撮像装置1の画像処理の例について示すフローチャートである。
画像処理部37は、取得した画像データに対して赤目補正を行うか否か判断する(ステップS11)。即ち、画像処理部37は、赤目補正を行うトリガがONであるか否か判断する。
赤目補正を行う場合(ステップS11、YES)、画像処理部37は、顔検出処理を行う(ステップS12)。即ち、画像処理部37は、顔検出部41により画像データから人物の顔が写った領域を検出する。具体的には、画像処理部37は、顔の中心座標及び顔の幅を検出する。この座標は、画像データの画素位置に関連した位置を示す。座標位置は、画素と1:1に対応させてもよいが、処理に応じて、複数画素を加算した加算画素の位置や、ブロック単位で処理をする画像領域の位置を座標に対応付けて設定してもよい。
次に、画像処理部37は、器官検出処理を行う(ステップS13)。即ち、画像処理部37は、器官検出部42により人物の目、鼻、及び口などの顔の器官が写った領域を検出する。また、画像処理部37は、器官検出の結果から、検出結果の信頼性を示す値を求める。
次に、画像処理部37は、画像データに対して赤目検出処理を行う(ステップS14)。即ち、画像処理部37は、赤目検出部43により、赤目現象が生じた領域を検出する。
次に、画像処理部37は、赤目補正処理を行う(ステップS15)。即ち、画像処理部37は、赤目現象が生じた領域の色を補正する。
記録制御部36は、画像処理部37により赤目補正処理が施された画像データを記録媒体25に記録する(ステップS16)。
なお、画像処理部37は、顔検出処理の結果に応じて人物の瞳(目)が写った領域の位置、及び目の幅(目頭から目じりまでの長さ)を推定する構成であってもよい。画像処理部37は、顔検出処理の結果である顔の中心座標及び顔の幅と、複数の人物に対する器官位置の統計から求めた平均的な顔のパターンとに基づいて、目の幅、及び目の位置を推定する。この場合、画像処理部37は、ステップS13の器官検出処理を省略することができる。
図3は、図2のステップS14における赤目検出処理について説明するためのフローチャートである。
画像処理部37の赤目検出部43は、画像データに基づいて評価画像を生成する(ステップS21)。赤目検出部43は、例えば指定された色に基づいて画像データ中の色を評価する評価画像を生成する評価画像生成部として機能する。評価画像は、特定の色が強調された画像である。例えば、赤目検出部43は、赤目が生じた領域を検出する為に、画像データに基づいて赤を強調した評価画像を生成する。具体的には、赤目検出部43は、画像データの各画素のRGBの要素のうちのRを強調し、G及びBを抑えた画像を評価画像として生成する。または、画像データの各画素のY(輝度)、U(色差)、V(色差)の要素のうちのVのみ抽出した画像を評価画像として生成する。なお、赤目検出部43は、顔検出処理または器官検出処理により検出した人物の目の付近の画像データを切り出し、切り出した画像データに基づいて評価画像を生成する構成であってもよい。本実施例では、便宜上、評価画像全体ではなく、画像データから生成した評価画像のうち目を含む画像領域を評価画像選択領域51として設定した場合における赤目検出について説明する。また、評価画像選択領域51の中心位置を評価画像選択領域の位置とする。
赤目検出部43は、評価画像に基づいて、ヒストグラムを生成する(ステップS22)。赤目検出部43は、評価画像に基づいてヒストグラムを生成するヒストグラム生成部として機能する。赤目検出部43は、評価画像の座標毎にヒストグラムを検出する。具体的には、赤目検出部43は、評価画像選択領域51に対し、検出する色、本実施例では赤目の色を検出するのに適した大きさのブロック52を設け、このブロック52を評価画像選択領域51の全域にわたりスキャンする。そして、ブロック52のスキャン位置(座標)毎にヒストグラムを生成する。例えばブロック52の中心位置(重心位置)をブロック52の位置(座標)として扱う。なお、具体的なヒストグラム生成処理については後述する。
赤目検出部43は、ブロック52の各スキャン位置で生成されたヒストグラムに基づいて評価値を算出する(ステップS23)。赤目検出部43は、ヒストグラムに基づいてブロック52の評価値を算出する評価値算出部として機能する。また、赤目検出部43は、ヒストグラムの分布に係る値である分布値を取得する分布値取得部として機能する。赤目検出部43は、例えばヒストグラムの分散と中心傾向(例えば平均値、重心値、中央値、最頻値など)とを分布値として取得する。赤目検出部43は、分布値に基づいてブロック52の評価値を算出する。例えば、赤目検出部43は、ヒストグラムの分散と中心傾向とを掛け合わせてブロック52の評価値を算出する。赤目検出部43は、各ブロック位置毎にブロック52の評価値を算出する。
赤目検出部43は、算出された各ブロック位置での評価値からなる評価画像選択領域51の評価値に基づいて評価画像(選択領域)の色基準位置(基準位置)を算出する(ステップS24)。赤目検出部43は、各ブロック位置での評価値に基づいて評価画像(選択領域)の色基準位置を設定する基準位置設定部として機能する。赤目検出部43は、評価画像選択領域51内で最も特徴的な色を示す位置を評価画像選択領域51の基準位置として設定する。なお、基準位置を算出する具体的な処理については後述する。
赤目検出部43は、ブロック52の各スキャン位置毎に算出した評価値を用いて各ブロック内の各画素を重み付けする(ステップS25)。
赤目検出部43は、重み付けした評価画像選択領域51内の各画素と、予め設定された二値化用の閾値と、に基づいて、赤目部分に相当する有効画素と無効画素とを判別する(ステップS26)。即ち、赤目検出部43は、重み付けした評価画像選択領域51内の各画素を二値化用の閾値に基づいて二値化する。
赤目検出部43は、二値化された評価画像選択領域51内の各画素をラベリングする(ステップS27)。即ち、赤目検出部43は、二値化することで評価画像選択領域51内の有効画素を検出する。赤目検出部43は、例えば設定された評価画像選択領域51内の隣り合う有効画素をグルーピングして特徴的な色の存在する特徴領域として検出する。赤目検出部43は、評価画像選択領域51内の隣り合う有効画素をグルーピングして特徴的な色の存在する特徴領域を検出する特徴領域検出部として機能する。
赤目検出部43は、設定された特徴領域と、上記の基準位置との関係に基づいて赤目補正処理を行う対象とする赤目補正領域を判断する(ステップS28)。赤目検出部43は、設定された特徴領域と、上記の基準位置との関係に基づいて色補正を行う対象の領域である色補正領域を設定する色補正領域設定部として機能する。
次にヒストグラム生成処理について詳細に説明する。ヒストグラム生成を行う場合、赤目検出部43は、評価画像選択領域51内をラスタスキャンするブロック52を設定し、ブロック52を設定した座標位置毎に色毎の度数を示すヒストグラムを生成する。ヒストグラムは、R,G,Bなどのうちのある色の階調毎の頻度であってもよいし、Y,Cb,Crなどのうちのある色の階調毎の頻度であってもよいし、階調ではなくR,G,Bなどからなる画素値が異なる複数の特定の色毎の頻度であってもよい。赤目検出部43は、器官検出部42または画像処理部37で推定した人物の目の幅に基づいてブロック52のサイズを決定する。
図4は、図3のステップS22におけるヒストグラム生成処理について説明するためのフローチャートである。
画像処理部37は、器官検出の結果から、検出結果に信頼性があるか否か判断する(ステップS31)。
画像処理部37は、器官検出の結果に信頼性があると判断した場合(ステップS31、YES)、器官検出処理の結果に基づいて目の位置及び幅を算出する(ステップS32)。
画像処理部37は、器官検出の結果に信頼性がないと判断した場合(ステップS31、YES)、顔検出処理の結果に基づいて目の位置及び幅を推定する(ステップS33)。
赤目検出部43は、目の幅に基づいて、ブロック52のサイズを決定する(ステップS34)。ヒストグラムを検出する領域であるブロック52は、例えば正方形である。具体的には、赤目検出部43は、目の幅に対して余裕のある長さをブロック52の辺の長さとして設定する。
赤目検出部43は、上記のようにして設定したブロック52を評価画像選択領域51上で移動させた各位置でヒストグラムを生成する(ステップS35)。即ち、赤目検出部43は、図5に示されるように上記のように決定したサイズのブロック52を用いて評価画像選択領域51内をラスタスキャンしつつブロック52の位置毎にヒストグラムを生成する。赤目検出部43は、例えば、ブロック52の位置に対して、ブロック52内の画像データを基にヒストグラムを生成する。
図6及び図7は、各々図示したブロック52の位置において生成されたヒストグラムの例を示す。図6は、評価画像選択領域51上の赤目を包含する位置にブロック52が設定された場合のヒストグラムの例を示す。図7は、評価画像選択領域51上の赤目を包含しない位置にブロック52が設定された場合のヒストグラムの例を示す。
ヒストグラムの横軸は、色の階調を示す。例えば、階調は、256段階の色の度合を示す指標である。ヒストグラムの縦軸は、色の階調毎の頻度(ビン)を示す。即ち、ビンは、ブロック52内に含まれる各階調の画素の数である。
図6に示されるように、赤目がブロック52内に包含される場合は、ヒストグラムの幅が広くなり、且つ平均値のビンが大きくなる。また、図7に示されるように、赤目がブロック52内に含まれない場合、ヒストグラムの幅が狭くなり、且つ平均値のビンが小さくなる。
図3のステップS23で示したように、赤目検出部43は、上記のようにブロック52のスキャン位置毎に生成されたヒストグラムの分布に基づいて評価値を算出する。具体的には、赤目検出部43は、ヒストグラムから分散と中心傾向とをそれぞれ算出し、分散と中心傾向とを掛け合わせた値をブロック52の位置における評価値として算出する。赤目検出部43は、ブロック52の位置毎に生成されたヒストグラムに基づいて評価値を算出することにより、評価画像選択領域51上の座標毎の評価値を算出する。これにより、赤目検出部43は、赤目領域の特徴に応じて赤目領域を際立たせるような評価値を算出することができる。ここで、分散はヒストグラムの分布する階調の最大値と最小値の差を示し、中心傾向はヒストグラムの分布する階調の平均値を示す。
次に基準位置算出処理について詳細に説明する。基準位置を設定する場合、赤目検出部43は、上記の処理によって算出された評価値に基づいて、評価画像選択領域51上の最も特徴的な位置(座標)を認識し、認識した座標を基準位置として設定する。具体的には、赤目検出部43は、ブロック52の位置毎に算出された、評価画像選択領域51内の評価値の分布における重心位置と、最も高い評価値であるピーク位置とのいずれかを評価画像選択領域51における基準位置として設定する。
図8は、図3のステップS24における基準位置算出処理について説明するためのフローチャートである。また、図9は、座標毎に算出された評価値をプロットした図である。横軸をHとし、縦軸をVとした各座標において評価値を高さとしてプロットした場合、赤目領域のように、ブロック内で赤の画素が多い座標の評価値が高くなる。
図8において、赤目検出部43は、評価画像選択領域51内の評価値の分布をもとに評価値の重心位置(Hg、Vg)を算出する(ステップS41)。赤目検出部43は、一般的な重心の算出方法を用いて、評価値の重心に対応する座標を重心位置として算出する。
赤目検出部43は、評価画像選択領域51内の評価値のうち最も高い評価値がプロットされた座標であるピーク位置を算出する(ステップS42)。
赤目検出部43は、図9に示された評価画像選択領域51で検出された重心位置の座標の画素値が予め設定された閾値より大きいか否か判定する(ステップS43)。
赤目検出部43は、評価画像選択領域51における重心位置の座標の画素値が予め設定された閾値より大きいと判定した場合(ステップS43、YES)、基準位置として重心位置を採用する(ステップS44)。
また、赤目検出部43は、評価画像選択領域51における重心位置の座標の画素値が予め設定された閾値以下であると判定した場合(ステップS43、NO)、基準位置としてピーク位置を採用する(ステップS45)。
次に、上記の特徴的な色の存在する特徴領域を設定する為の処理である特徴領域設定処理について詳細に説明する。図3のステップS25で示したように、評価画像選択領域51内の各画素が評価値によって重み付けされ、赤目の領域がより際立つように補正される。
図10は、図3のステップS26における有効画素判別処理について説明するためのフローチャートである。
赤目検出部43は、図3のステップS25で得られた重み付けされた評価画像選択領域51の各画素の画素値が予め設定された二値化用の閾値より大きいか否か判別する(ステップS51)。赤目検出部43は、重み付けされた評価画像選択領域51の各画素のうち、二値化用の閾値より大きい画素値を持つ画素を有効画素と判別する(ステップS52)。また、赤目検出部43は、重み付けされた評価画像選択領域51の各画素のうち、二値化用の閾値以下の画素値を持つ画素を無効画素と判別する(ステップS53)。
図11は、二値化された評価画像選択領域51から得られた二値化画像61の例を示す。二値化画像61は、有効画素と無効画素とを有する。
図12は、二値化画像61に対して図3のステップS27のラベリング処理を行った例を示す。赤目検出部43は、隣接する有効画素を同じ特徴領域としてグループ分けする。図12の例では、第1の特徴領域62と、第2の特徴領域63と、がそれぞれ設定されている。
さらに、赤目検出部43は、グループ分けされた各特徴領域と、図3のステップS24で設定した基準位置と、の位置関係に基づいて、特徴的な色の存在する1つの特徴領域を色補正の対象の領域である赤目補正領域として認識する。
図13は、特徴的な色の存在する特徴領域が設定された二値化画像61に基準位置64がプロットされた例を示す。例えば、赤目検出部43は、グループ分けされた各特徴領域の重心位置または中心位置と、基準位置64との距離を算出する。赤目検出部43は、基準位置64との距離が最も短い特徴領域を赤目補正領域として認識する。図13の例によると、基準位置64が第1の特徴領域62内にプロットされている。この為、赤目検出部43は、第1の特徴領域62を赤目補正領域として設定する。
上記の実施形態に係る撮像装置1の画像処理部37は、取得した画像データにおいて検出対象とする色を指定し、画像データと指定された色とに応じて画像データにおける色を評価する評価画像を生成し、評価画像上にブロックを設定し、設定したブロック毎に色毎の度数を示すヒストグラムを生成し、ヒストグラムの分布に係る値である分布値に基づいて画像データ上に指定された色の領域が含まれる特徴領域を検出する。このようにヒストグラムの分布値に基づいて特徴領域を検出することにより、画素を単体で特徴領域か否かの判別を行う場合に生じる誤認識を防ぐことができる。この結果、画像処理部37は、画像データの状態によらず画像から特定の色を適切に抽出することができる。
また、上記の実施形態に係る画像処理部37は、ヒストグラムの分布値としてヒストグラムの分散及び中心傾向を用いる。さらに、画像処理部37は、ヒストグラムの分散と中心傾向とを積算した評価値を算出し、評価画像を評価値によって重み付けし、重み付けした評価画像を予め設定された二値化用の閾値を用いて二値化し、二値のうちの一方の画素を特徴領域として検出する。これにより、画像処理部37は、赤目のように特定の色が集中した領域をより特定領域として検出しやすくなり、頬の赤味のように特定の色がまばらに分布する領域を特定領域として検出しにくくすることができる。この結果、画像処理部37は、頬の赤味を赤目として誤認識することを防ぐことができる。
また、上記の実施形態に係る画像処理部37は、評価値の重心位置とピーク位置とのいずれかを基準位置として設定し、検出された特徴領域と設定された基準位置との位置関係に基づいて色補正を行う対象の領域である色補正領域を設定し、色補正領域の画像データの色を補正する。これにより、基準位置から乖離した領域の画像データの色が不適切に補正されることを防ぐことができる。
また、上記の実施形態に係る画像処理部37は、ヒストグラムを生成する際のブロックのサイズを、画像データに基づいて推定される人物の瞳の幅に応じて設定する。これにより、画像処理部37は、より赤目が生じた領域を認識することが容易なヒストグラム生成用の領域を設定することができる。
なお、上記の実施形態では、撮像装置1は、赤目が発生した領域を色補正の対象の領域として認識する構成であると説明したが、この構成に限定されない。撮像装置1は、任意の色の領域を検出する構成であってもよい。例えば、撮像装置1が顕微鏡、内視鏡、または工業製品の検品などに用いられる場合、検出する領域のサイズを推定しにくい場合がある。このような場合、撮像装置1は、図14乃至図18に示される処理によって所望の領域を認識することができる。
図14は、撮像装置1の他の動作の例について説明する為のフローチャートである。
撮像装置1の画像処理部37は、特徴的な色の領域である色領域を検出する色領域検出処理を行うか否か判断する(ステップS61)。即ち、画像処理部37は、色領域検出処理を行うトリガがONであるか否か判断する。
色領域検出処理を行う場合(ステップS61、YES)、画像処理部37は、色領域検出処理を行う(ステップS62)。画像処理部37は、色領域検出処理によって検出した色領域を出力する(ステップS63)。
図15は、図14のステップS62の色領域検出処理について説明する為のフローチャートである。
画像処理部37は、画像データに基づいて評価画像を生成する(ステップS71)。画像処理部37は、任意の色を強調する画像処理を画像データに施して評価画像を生成する。画像処理部37は、例えば指定された色に基づいて画像データ中の色を評価する評価画像を生成する。
画像処理部37は、評価画像選択領域51に基づいて、ヒストグラムを生成する(ステップS72)。画像処理部37は、評価画像選択領域51に対し、予め設定された大きさのブロックを設け、このブロックを評価画像選択領域51の全域にわたりスキャンする。そして、ブロックのスキャン位置毎にヒストグラムを生成する。このブロックの位置は、ブロックの中心位置を座標位置とする。
画像処理部37は、ブロックの各スキャン位置で生成されたヒストグラムに基づいて評価値を算出する(ステップS73)。画像処理部37は、例えばヒストグラムの分散と中心傾向(例えば平均値、重心値、中央値、最頻値など)とを分布値として取得する。画像処理部37は、分布値に基づいてブロックの評価値を算出する。例えば、画像処理部37は、ヒストグラムの分散と中心傾向とを掛け合わせてブロックの評価値を算出する。画像処理部37は、各ブロック位置毎に評価値を算出する。
画像処理部37は、評価値により評価画像選択領域51の画像を重み付けする(ステップS74)。画像処理部37は、ブロックの各スキャン位置毎に算出した評価値を用いて各ブロック内の各画素を重み付けする。
画像処理部37は、重み付けした評価画像選択領域51の画像上の画素を指定された色に相当する有効画素と無効画素とに判別する(ステップS75)。即ち、画像処理部37は、重み付けした評価画像選択領域51内の各画素を二値化用の閾値に基づいて二値化する。
画像処理部37は、二値化された評価画像選択領域51内の各画素をラベリングする(ステップS76)。即ち、画像処理部37は、二値化することで評価画像選択領域51内の有効画素を設定する。画像処理部37は、例えば設定された評価画像選択領域51内の隣り合う有効画素をグルーピングして特徴的な色の存在する特徴領域として検出する。
図16は、図15のステップS72のヒストグラム生成処理について説明する為のフローチャートである。
画像処理部37は、ヒストグラムを生成する領域(ブロック)のサイズ(ブロックサイズ)を決定する(ステップS81)。画像処理部37は、予め設定された値をブロックサイズとして採用する。
画像処理部37は、決定したサイズのブロックを評価画像選択領域51内で移動させつつヒストグラムを生成する(ステップS82)。即ち、画像処理部37は、決定したサイズのブロックを用いて評価画像選択領域51をラスタスキャンしつつブロック位置毎にヒストグラムを生成する。画像処理部37は、ブロック位置とヒストグラムとを対応付けて生成する。
図17は、ブロックサイズと、ヒストグラムと、の関係について説明する為の説明図である。図17の(a)は、検出対象に対してブロックサイズが小さいブロック53が設定された場合のヒストグラムの例を示す。この場合、赤目以外の色が含まれることが少なくなり、ヒストグラムは、分散が狭くなり、階調の平均値が高くなり、且つビンの最大値が大きくなる。
図17の(b)は、検出対象に対してブロックサイズが適正であるブロック54が設定された場合のヒストグラムの例を示す。この場合、赤目以外の色として周辺の肌の色が含まれることから、ヒストグラムは、(a)の例に比べて分散が広くなり、階調の平均値が低くなり、且つビンの最大値が小さくなる。
図17の(c)は、検出対象に対してブロックサイズが大きいブロック55が設定された場合のヒストグラムの例を示す。この場合、図17の(b)よりも更に赤目以外の色の部分が多く含まれることになり、ヒストグラムは、(b)の例に比べて分散が広くなり、階調の平均値が低くなり、且つビンの最大値が小さくなる。
画像処理部37は、ビンの最大値と、予め設定された閾値範囲(上限閾値及び下限閾値)との関係に基づいて、有効画素と無効画素と、を判別する際の閾値を設定する。図17(a)、図17(b)、及び図17(c)は、それぞれ、ブロック(領域)53、ブロック(領域)54、及びブロック(領域)55のヒストグラムを求めた場合を示す図で、ビンの最大値に対する上限閾値と下限閾値の状態を表している。
図18は、図15のステップS75の有効画素判別処理について説明する為のフローチャートである。
画像処理部37は、生成されたヒストグラムのビンの最大値が上限閾値より小さいか否か判定する(ステップS91)。生成されたヒストグラムのビンの最大値が上限閾値以上である場合(ステップS91、NO)、画像処理部37は、最も大きい第1の二値化用閾値を二値化用の閾値として設定する(ステップS92)。
生成されたヒストグラムのビンの最大値が上限閾値より小さい場合(ステップS91、YES)、画像処理部37は、生成されたヒストグラムのビンの最大値が下限閾値より大きいか否か判定する(ステップS93)。生成されたヒストグラムのビンの最大値が下限閾値以下である場合(ステップS93、NO)、画像処理部37は、最も小さい第2の二値化用閾値を二値化用の閾値として設定する(ステップS94)。
また、生成されたヒストグラムのビンの最大値が下限閾値より大きい場合(ステップS93、YES)、画像処理部37は、第1の二値化用閾値よりも小さく、且つ第2の二値化用閾値よりも大きい第3の二値化用閾値を二値化用の閾値として設定する(ステップS95)。
画像処理部37は、図15のステップS74で得られた重み付けされた評価画像選択領域51の各画素の画素値が上記のステップS92、ステップS94、またはステップS95で設定された二値化用の閾値がより大きいか否か判別する(ステップS96)。画像処理部37は、重み付けされた評価画像選択領域51において、二値化用の閾値より大きい画素値を持つ画素を有効画素と判別する(ステップS97)。また、画像処理部37は、重み付けされた評価画像において、二値化用の閾値以下の画素値を持つ画素を無効画素と判別する(ステップS98)。
上記の実施形態に係る画像処理部37は、評価画像上に設定されたブロック内から検出されたヒストグラムの頻度の最大値と予め設定された閾値範囲との関係に応じて評価画像を二値化する際の二値化用の閾値の値を切り替える。これにより、画像処理部37は、検出する領域のサイズを推定しにくい場合であっても、適切な二値化用の閾値を用いて特徴領域を検出することができる。
なお、上記の実施形態では、撮像装置1がレンズ11を備える構成について説明したが、この構成に限定されない。撮像装置1は、交換式のレンズを装着可能なマウントをレンズ11の代わりに備える構成であってもよい。
なお、上述の各実施の形態で説明した機能は、ハードウエアを用いて構成するに留まらず、ソフトウエアを用いて各機能を記載したプログラムをコンピュータに読み込ませて実現することもできる。また、各機能は、適宜ソフトウエア、ハードウエアのいずれかを選択して構成するものであっても良い。また、本発明の構成によれば、彩度の低い画像や低輝度の画像など、色を検出する条件の悪い画像でも特定色の検出が可能になるため、上記実施形態で示した赤目の検出と補正の例以外、例えば赤目以外の色や、複数の色を検出するように設定することで、スポーツで特定チームの縞模様のユニフォームを検出し認識することも可能になり、様々なシーンで特定色の検出に利用できる。更には、特定色が検出された領域の、位置、大きさ、形状、画素数、などに関しても検出することが可能になる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。