(57)【特許請求の範囲】
【請求項１】
時系列で並ぶ複数の入力画像を取得する画像取得手段と、
前記画像取得手段で取得された入力画像から複数の被写体領域を検出する検出手段と、
前記検出手段で前記入力画像から一の被写体領域を検出できない場合に、前記複数の入力画像のうち、前記一の被写体領域を検出することができた前記入力画像より過去の入力画像と前記入力画像とで検出された複数の被写体領域に基づき、前記一の被写体領域の位置を推定する推定手段と、
を有し、
前記推定手段は、前記過去の入力画像と前記入力画像とで検出された複数の被写体領域の移動情報を、被写体領域の大きさ毎に算出し、算出した被写体領域の移動情報と前記一の被写体領域の大きさとに基づき、前記入力画像における前記一の被写体領域の位置を推定する画像処理装置。
【請求項２】
前記推定手段は、前記過去の入力画像と前記入力画像とで検出された複数の被写体領域のうち、前記過去の入力画像と前記入力画像とを水平方向に分割した際、同一の領域にある大きさの類似する被写体領域を用いて、被写体領域の大きさ毎の移動情報を算出する請求項１記載の画像処理装置。
【請求項３】
前記推定手段により推定された領域における代表色を抽出する代表色抽出手段と、
前記代表色抽出手段により抽出された代表色に基づき、前記推定手段により推定された領域に被写体領域があるか否かを判定する領域判定手段と、
を更に有する請求項１又は２記載の画像処理装置。
【請求項４】
前記代表色抽出手段は、推定手段により推定された領域の中心位置から所定範囲内の画素を用いて代表色を抽出する請求項３記載の画像処理装置。
【請求項５】
前記移動情報とは、前記過去の入力画像における被写体領域が、前記入力画像においてどの位置に移動したかを表す情報であり、移動方向、移動量の少なくともどちらか一方である請求項１乃至４何れか１項記載の画像処理装置。
【請求項６】
前記被写体領域とは、人物或いは動物の顔領域、又は人体領域である請求項１乃至５何れか１項記載の画像処理装置。
【請求項７】
前記被写体領域が人物の顔領域である場合、前記代表色は肌色である請求項３又は４記載の画像処理装置。
【請求項８】
画像処理装置が実行する画像処理方法であって、
時系列で並ぶ複数の入力画像を取得する画像取得ステップと、
前記画像取得ステップで取得された入力画像から複数の被写体領域を検出する検出ステップと、
前記検出ステップで前記入力画像から一の被写体領域を検出できない場合に、前記複数の入力画像のうち、前記一の被写体領域を検出することができた前記入力画像より過去の入力画像と前記入力画像とで検出された複数の被写体領域に基づき、前記一の被写体領域の位置を推定する推定ステップと、
を含み、
前記推定ステップでは、前記過去の入力画像と前記入力画像とで検出された複数の被写体領域の移動情報を、被写体領域の大きさ毎に算出し、算出した被写体領域の移動情報と前記一の被写体領域の大きさとに基づき、前記入力画像における前記一の被写体領域の位置を推定する画像処理方法。
【請求項９】
コンピュータに、
時系列で並ぶ複数の入力画像を取得する画像取得ステップと、
前記画像取得ステップで取得された入力画像から複数の被写体領域を検出する検出ステップと、
前記検出ステップで前記入力画像から一の被写体領域を検出できない場合に、前記複数の入力画像のうち、前記一の被写体領域を検出することができた前記入力画像より過去の入力画像と前記入力画像とで検出された複数の被写体領域に基づき、前記一の被写体領域の位置を推定する推定ステップと、
を実行させ、
前記推定ステップでは、前記過去の入力画像と前記入力画像とで検出された複数の被写体領域の移動情報を、被写体領域の大きさ毎に算出し、算出した被写体領域の移動情報と前記一の被写体領域の大きさとに基づき、前記入力画像における前記一の被写体領域の位置を推定するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
デジタルカメラ等の撮像装置により得られた画像から顔領域を検出する技術が実用化されている。この顔検出技術が搭載される撮像装置では、検出した顔領域を中心に見栄えのよい画像を撮影するために、顔領域を重点的に明るくしたり、顔領域に焦点を合わせたりする機能を有している。このような機能をユーザが利用する際、撮像装置内の顔検出処理により顔が検出されている状態か否かを、撮像装置が有するモニタで確認することとなる。一般的には、撮像装置が検出した顔領域を囲うように矩形の枠を顔の周りに表示することで、ユーザは容易に顔が検出されている状態か否かを確認することができる。
ところで、現在実用化されている顔検出技術では、正面向きや若干の顔向き変化には対応することができるが、真横を向いたり、上下に顔を大きく傾けた場合には検出が失敗してしまうことがある。また、現在実用化されている顔検出技術では、手ブレ等により画像内の顔領域部分がボケてしまった場合にも検出が失敗してしまうことがある。
このため、時間的に連続する画像に対する顔検出結果をそのままユーザに表示した場合、顔検出枠が表示・消滅を繰り返し、見栄えのよくない表示状態になってしまう問題がある。
この問題に対し、ある画像で顔検出を失敗した場合には、それより過去の検出結果を利用して顔が存在する位置を推定することで、継続的な検出枠の表示を実現する方法がある。特許文献１では、過去の画像における顔領域とその周辺領域の画像特徴を記憶しておき、顔検出ができない画像に対しては、記憶した画像特徴に類似する領域を探索し、該当領域を顔の位置として推定するという方法を説明している。しかしながら特許文献１では、カメラの位置や方向が変更できる可動カメラ映像を対象とした場合、画像上での顔の移動方向や移動量が分からないため、顔とその周辺領域の画像特徴を探索する際、探索範囲を広く設定しなくてはならない。このため、複数の顔を対象とした場合に正しく顔の位置を推定することができない。
そこでこの問題に対しては、特許文献２等で説明される手法によりカメラが動いた方向と量とを算出し、これらの情報に基づいて画像上で顔が移動する方向と量を推定し、正しい顔の位置を推定するという方法も提案されている。以下、カメラが動いた方向と量とをカメラ動き情報と呼ぶ。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１７１９４号公報
【特許文献２】特開平９−２１２６４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献２で説明されるように、カメラの動き情報を算出する一般的な方法では、画像内を複数のブロック領域に分割し、各ブロックが過去の画像と現在の画像でどの位置に移動したかを調べるというものであり、処理量が多く、時間がかかることが知られている。また、それぞれ特徴の異なるオブジェクトにより画像が構成される場合には、各ブロックの移動情報を正しく算出できるが、特徴が類似するオブジェクトばかりで画像が構成される場合については移動情報を正しく算出することができない。例えば複数の顔が撮影された画像の場合等では、各ブロックの移動情報を正しく算出することができない。
また別の問題として、複数の顔を対象とする撮影において、カメラを動かして撮影した場合、画像の手前の顔と画像の奥の顔とでは、画像内における移動量に差が生じる。一般的に、手前の顔より奥の顔の方が移動量が大きくなる。このため、仮に前述の方法によりカメラ動き情報を算出できたとしても、手前の顔と奥の顔との双方に適切な顔の移動量を決定することができない。
【０００５】
本発明はこのような問題点に鑑みなされたもので、画像上での複数の被写体領域の移動量が大きく異なる場合にも適切に移動情報を算出し、注目する被写体領域の位置を推定することを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明の画像処理装置は、時系列で並ぶ複数の入力画像を取得する画像取得手段と、前記画像取得手段で取得された入力画像から複数の被写体領域を検出する検出手段と、前記検出手段で前記入力画像から一の被写体領域を検出できない場合に、前記複数の入力画像のうち、前記一の被写体領域を検出することができた前記入力画像より過去の入力画像と前記入力画像とで検出された複数の被写体領域に基づき、前記一の被写体領域の位置を推定する推定手段と、を有し、前記推定手段は、前記過去の入力画像と前記入力画像とで検出された複数の被写体領域の移動情報を、被写体領域の大きさ毎に算出し、算出した被写体領域の移動情報と前記一の被写体領域の大きさとに基づき、前記入力画像における前記一の被写体領域の位置を推定する。
【発明の効果】
【０００７】
本発明によれば、画像上での複数の被写体領域の移動量が大きく異なる場合にも適切に移動情報を算出し、注目する被写体領域の位置を推定することができる。
【図面の簡単な説明】
【０００８】
【図１】デジタルカメラの概略構成ブロック図である。
【図２】第一の実施形態の処理の流れを示すフローチャートである。
【図３】前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとにおける顔ＩＤを示した図である。
【図４】前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとにおける顔検出結果の顔の中心座標を示した図である。
【図５】前フレームと現フレームとにおける顔の対応付けを示した図である。
【図６】仮対応付けを行った結果の一例を示す図である。
【図７】ステップＳ２０４の処理の詳細な流れを示すフローチャートである。
【図８】顔ｆｐｎと顔ｆｉｎとが対応付けられた場合の移動状況を示す図である。
【図９】顔・角度ヒストグラムの一例を示す図である。
【図１０】累積移動量・角度ヒストグラムの一例を示す図（その１）である。
【図１１】累積移動量・角度ヒストグラムの一例を示す図（その２）である。
【図１２】第一の実施形態のステップＳ２０８の処理の詳細な流れを示すフローチャートである。
【図１３】顔ｆｐ１〜ｆｐ６までの顔サイズと移動量とを示す図である。
【図１４】顔サイズ・移動量対応グラフの一例を示す図である。
【図１５】顔サイズ・移動量対応グラフに近似直線を追加したグラフの一例を示す図である。
【図１６】デジタルカメラの表示部に検出枠を表示した場合の一例を示す図である。
【図１７】前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとの画像の一例を示す図である。
【図１８】第二の実施形態でステップＳ２０７までの処理により生成される前フレームと現フレームとにおける顔の仮対応付の一例を示す図である。
【図１９】第二の実施形態のステップＳ２０８の処理の詳細な流れを示すフローチャートである。
【図２０】前フレーム顔中心画像等の一例を示す図である。
【図２１】水平位置で顔をグルーピングした結果の一例を示す図である。
【図２２】グルーピング結果を画像で示した一例を示す図である。
【図２３】第三の実施形態の処理の流れを示すフローチャートである。
【図２４】矩形領域と、肌色探索領域との関係の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
＜第一の実施形態＞
以下、添付図面を参照して本発明の好適な実施形態を説明する。
図１は、本実施形態をデジタルカメラ等の画像撮像装置で実現する場合の概略構成ブロック図である。
画像撮像部１０１は、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅｓ）やＣＭＯＳ（Ｃｏｍｐｌｅｍｅｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）等のイメージセンサや光学系、絞り等を制御する制御部から成る。
主制御部１０２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等から成る。主制御部１０２は、画像撮像部１０１で得た画像信号をデジタル信号に変換したり、各種画像処理を制御したり、表示部１０７の画像表示やＵＩを制御したりする機能を有する。主制御部１０２は、画像撮像部１０１から時系列で並ぶ複数の入力画像を取得する。
内部メモリ１０３は、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等から成り、主制御部で生成される各種データを一時的に記憶する。
記憶媒体１０４は、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード等、不揮発性メモリから成る。
顔検出部１０５は、画像撮像部１０１で得た画像の中から顔領域を検出する。
顔追尾処理部１０６は、過去の顔検出結果の情報に基づいて現在の顔の位置を推定する。
表示部１０７は、液晶ディスプレイ等から成り、画像撮像部１０１で得られた画像や顔検出部１０５による検出結果等を表示する。
なお、顔検出部１０５及び顔追尾処理部１０６は、ハードウェアであってもよいし、主制御部１０２がプログラムを実行することにより実現されるソフトウェアであってもよい。ソフトウェアの場合、前記プログラムは、例えば、内部メモリ１０３等に記憶される。
また、後述するように、画像撮像装置は、操作部を有していていもよい。なお、画像撮像装置は、画像処理装置（コンピュータ）の一例である。
【００１１】
次に本実施形態の動作を説明する。
第一の実施形態の処理の流れを図２のフローチャートで説明する。
ステップＳ２０１において、主制御部１０２は、画像撮像部１０１より入力画像Ｉｍｇ＿ｉｎを画像取得する。
ステップＳ２０２において、顔検出部１０５は、入力画像Ｉｍｇ＿ｉｎに対して顔検出処理を実行する。
顔検出処理は公知の手法として、顔のテンプレートマッチングを用いる方法や、予め機械学習した特徴抽出フィルターを検出器として用いる方法等がある。本実施形態においてはこれら公知の顔検出処理を用いればよく、特定の顔検出方式に限定されるものではない。
顔検出部１０５が、入力画像Ｉｍｇ＿ｉｎに対して顔検出を実行した結果の例を図３の画像Ｂに示す。図３の画像Ｂでは、顔検出が成功した顔領域を矩形の枠で囲って表示されている。即ち、この例では、顔ｆｉ１〜ｆｉ６に対しては顔検出を成功したが、顔ｆｉ７については顔検出を失敗した場合を示している。なお、以下の説明では、この検出結果を用いて説明を行うものとする。
ステップＳ２０３において、顔追尾処理部１０６は、ステップＳ２０２における顔検出結果と、１つ前のフレームＩｍｇ＿ｐにおける顔検出結果との対応付けを行う。ここでの対応付けは、ステップＳ２０４においてカメラの動き情報を算出するためのもので、簡易な対応付けであり、ステップＳ２０７における本対応付けに対して仮対応付けと呼ぶ。
なお、以下の説明では、１つ前のフレームＩｍｇ＿ｐを前フレームＩｍｇ＿ｐ、これに対し現在のフレームである入力画像Ｉｍｇ＿ｉｎを現フレームＩｍｇ＿ｉｎと呼ぶことにする。
図３の画像Ａに前フレームＩｍｇ＿ｐにおける顔検出結果を示す。前フレームＩｍｇ＿ｐにおける顔検出は、顔ｆｐ１〜顔ｆｐ８までの全ての顔を検出できているものとする。また、図３では、前フレームＩｍｇ＿ｐに対しカメラを右方向に動かした状態のものとして現フレームＩｍｇ＿ｉｎを示している。即ち、各顔は、画像上で左方向に移動していることになる。
【００１２】
顔追尾処理部１０６は、現フレームＩｍｇ＿ｉｎと前フレームＩｍｇ＿ｐとにおける顔の仮対応付けを、顔検出結果から得られる顔の中心座標を用いて行う。図４にそれぞれの顔の中心座標を示す。顔追尾処理部１０６は、前フレームＩｍｇ＿ｐにおける中心座標に対し、現フレームＩｍｇ＿ｉｎにおける中心座標で最も距離が近い顔を同一の顔であるとして仮対応付けを行う。
例えば、顔追尾処理部１０６は、前フレームＩｍｇ＿ｐにおける顔ｆｐ１が現フレームＩｍｇ＿ｉｎのどの顔に対応するかを、以下の式（１）を用いて決定する。
【数１】
0005484184.tif 000002
式（１）において、ｐｆ１Ｘ、ｐｆ１Ｙは、それぞれ前フレームＩｍｇ＿ｐにおける顔ｆｐ１の中心座標である。ｉｆｎＸ、ｉｆｎＹは、現フレームＩｍｇ＿ｉｎにおける顔ｆｉｎの中心座標を示す。また、Ｎｉｆは、現フレームＩｍｇ＿ｉｎで検出した顔の総数である。即ち、Ｌは現フレームＩｍｇ＿ｉｎで検出された顔の中で、前フレームＩｍｇ＿ｐにおける顔ｆｐ１と距離が一番近い顔との距離となる。
以上の方法により顔追尾処理部１０６が、前フレームＩｍｇ＿ｐにおける全ての顔について対応付けを行った結果を図５に示す。
【００１３】
次に、顔追尾処理部１０６は、フレーム前後の顔のサイズの変化率に基づき、明らかに対応関係として相応しくないものを削除する。この判定には、顔追尾処理部１０６は、以下の式（２）を用いる。
なお、本実施形態における顔のサイズについては、顔検出結果として得られる顔を囲う正方形の一辺の長さとする。
【数２】
0005484184.tif 000003
式（２）のＳ＿ｆｐｎは、式（１）で対応関係にあるとされた顔の前フレームＩｍｇ＿ｐにおける顔のサイズである。Ｓ＿ｆｉｎは、現フレームＩｍｇ＿ｉｎにおける顔のサイズである。また、ｔｈＳ＿ｍｉｎとｔｈＳ＿ｍａｘとは、フレーム前後の顔サイズの変化率に対する閾値の最大と最小とである。
顔追尾処理部１０６は、フレーム前後の顔サイズの変化率が式（２）を満たす場合、顔のサイズの変化が大きくないため対応関係にあるとし、そうでない場合には対応関係にないと判断する。
本実施形態では、顔ｆｐ８が式（１）ではｆｉ３と対応関係にあると判断されるが、式（２）により対応関係にないとされ、最終的に対応する顔のないものとして判定される。
以上のように顔追尾処理部１０６が、仮対応付けを行った結果を図６に示す。なお、以降の処理で用いるため、顔追尾処理部１０６は、顔検出結果から得られる顔の中心座標と顔のサイズとを図６の対応表に追加する。
【００１４】
ステップＳ２０４において、顔追尾処理部１０６は、ステップＳ２０３で行われた顔の仮対応付けに基づき、カメラのパン・チルト等のカメラ動き情報を算出する。なお、仮対応付けの時点で前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとにおいて１対１に対応付けされていない顔は、顔追尾処理部１０６は、以下の処理では処理対象外の顔とする。図６における対象外の顔は、ｆｐ６、ｆｐ７、ｆｐ８となる。ｆｐ６、ｆｐ７は、どちらもｆｉ６に対応付けられており、ｆｐ８については対応する顔がないと判定されたものである。
ステップＳ２０４の処理の詳細な流れを、図７を用いて説明する。
ステップＳ３０１において、顔追尾処理部１０６は、ステップ２０３で仮対応付けが行われた顔の移動角度と顔の個数とに基づいて顔・角度ヒストグラムを生成する。
図８に、顔ｆｐｎと顔ｆｉｎとが対応付けられた場合の移動状況を示す。ｄｘ，ｄｙがＸ方向、Ｙ方向の移動量である。θが移動角度となる。この場合、顔追尾処理部１０６は、以下の式（３）により移動角度θを算出することができる。なお、顔追尾処理部１０６は、ｄｘ，ｄｙを、ステップＳ２０３で生成した図６に示す対応表にある前フレームと現フレームとの顔中心座標から容易に算出することができる。
【数３】
0005484184.tif 000004
以上のようにして顔追尾処理部１０６が、移動角度θを算出し、角度毎に顔の個数をカウントした顔・角度ヒストグラムを図９に示す。本実施形態では、角度を０°から３６０°までとし、顔追尾処理部１０６は、これを１２個のビンにわけて度数をカウントしている。
【００１５】
なお、以降の処理で必要となるため、顔追尾処理部１０６は、同じ移動角度に分類される顔の移動量を累積した累積移動量についても、角度毎にカウントして累積移動量・角度ヒストグラムを生成する。
なお、各顔の移動量をＬとすると、顔追尾処理部１０６は、移動量Ｌを以下の式（４）で算出することができる。
【数４】
0005484184.tif 000005
累積移動量・角度ヒストグラムを図１０に示す。
【００１６】
ステップＳ３０２において、顔追尾処理部１０６は、ステップＳ３０１で生成した顔・角度ヒストグラムから主方向を決定する。主方向は、顔・角度ヒストグラムにおいて最も頻度の高い角度とする。本実施形態では、０°〜３０°が主方向となる。
ステップＳ３０３において、顔追尾処理部１０６は、ステップＳ３０２で決定した主方向に対する移動量（以下、主方向移動量と呼ぶ）を算出する。
顔追尾処理部１０６は、主方向移動量を、ステップＳ３０２で算出した累積移動量の平均値とする。即ち、主方向の角度に分布する累積移動量の値を、主方向の角度に分布する顔の個数で割った値が主方向移動量ｍｏｖｅ＿ｍとなる。
ステップＳ３０４において、顔追尾処理部１０６は、ステップＳ３０２で決定した主方向とステップＳ３０３で算出した主方向移動量とに基づき、カメラの動き情報を算出する。
本実施形態では、顔追尾処理部１０６は、カメラの動きに関する状態として、「ａ．静止状態」，「ｂ．パン又はチルト」，「ｃ．それ以外」の３つの状態を判断する。なお、「ｃ．それ以外」とは、パンとズームを同時に行うような複雑なカメラ操作でありカメラ動き情報を正確に算出することが困難な状況のことである。
【００１７】
まず、主方向移動量ｍｏｖｅ＿ｍの値が所定の閾値ｔｈ＿ｄｉｒより小さい場合には、顔追尾処理部１０６は、ａ．静止状態と判断する。主方向移動量ｍｏｖｅ＿ｍの値が所定の閾値ｔｈ＿ｄｉｒ以上の場合には、顔追尾処理部１０６は、顔・角度ヒストグラムの分布状況を分析し、ｂかｃどちらの状態であるかを判定する。
顔・角度ヒストグラムの分布が特定の角度に山をもつような場合には、カメラがその角度に動いていると分かるため、顔追尾処理部１０６は、ｂの状態であると判断する。それ以外の場合、例えば図１１の累積移動量・角度ヒストグラムＡに示すようにどの角度にも度数が分布する場合や、累積移動量・角度ヒストグラＢに示すように複数の角度に山が分布する場合には、複雑なカメラ操作が行われた場合とし、顔追尾処理部１０６は、ｃの状態と判断する。
なお、顔・角度ヒストグラムの分布がｂであるか否かの判定方法としては、顔追尾処理部１０６は、平均度数以上の度数をもつ角度の分散を調べる。そして、顔追尾処理部１０６は、散値が所定の閾値より低い場合、即ち度数の高い角度が特定の角度に集中している場合には、ｂの状態であるとすればよい。
以上の方法によりカメラの状態を判断した結果、ｂであると判断された場合には、顔追尾処理部１０６は、Ｘ方向の移動量ｖｅｃ＿ｘとＹ方向の移動量ｖｅｃ＿ｙを算出する。顔追尾処理部１０６は、これらの移動量を、ステップＳ３０２で決定した主方向の角度θとＳ３０３で算出した主方向移動量ｍｏｖｅ＿ｍとに基づいて以下の式（５）で算出することができる。
【数５】
0005484184.tif 000006
【００１８】
図２のフローチャートのステップＳ２０５の説明に戻る。
ステップＳ２０５において、顔追尾処理部１０６は、ステップＳ２０４の結果よりカメラの状態がｃであるか否かの判定を行う。カメラの状態がｃである場合には、カメラ動き情報を用いた顔の位置推定を行うのは困難なため、顔追尾処理部１０６は、位置推定処理は行わずにステップＳ２１１に処理を進める。ステップＳ２１１では、主制御部１０２は、ステップＳ２０２の顔検出処理により検出された顔に対してだけ、結果枠を表示する。
カメラの状態がｃでない場合には、顔追尾処理部１０６は、ステップＳ２０６に処理を進める。
ステップＳ２０６において、顔追尾処理部１０６は、ステップＳ２０４の結果よりカメラの状態がａであるか否かの判定を行う。カメラの状態がａである場合には、カメラが静止状態であり顔の位置に変動がないため、主制御部１０２は、ステップＳ２１２に処理を進め、前のフレームの検出結果枠をそのまま表示する。
【００１９】
ステップＳ２０７において、顔追尾処理部１０６は、ステップＳ２０４で算出されたカメラ動き情報に基づき、ステップＳ２０３で行った仮対応付けに誤りがないか判定する。誤りがあった場合には、顔追尾処理部１０６は、正しく対応付けを行う。これにより、前フレームで検出されたが現フレームでは検出に失敗した未検出顔が特定される。
まず、顔追尾処理部１０６は、ステップＳ２０３で行った仮対応付けに誤りがないか判定する。
判定方法としては、顔追尾処理部１０６は、ステップＳ２０３で仮対応付けされた顔の前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとにおける顔中心座標から、顔の移動角度と移動量とを算出する。そして、顔追尾処理部１０６は、前記顔の移動角度と、ステップＳ２０４で算出したカメラ動き情報の主方向と、を比較すると共に、前記顔の移動量とを、ステップＳ２０４で算出したカメラ動き情報の主方向移動量と、を比較する。顔追尾処理部１０６は、移動角度と主方向との差、移動量と主方向移動量との差、どちらか一方でも所定の範囲を超えた場合には、対応付けに誤りがあったと判定する。
本実施形態では、顔ｆｐ７と顔ｆｉ６とが対応付けられていたが、移動量が所定の範囲を超えるため、顔追尾処理部１０６は、対応付けに誤りがあったと判定する。
【００２０】
この時点で、顔ｆｐ７は、現フレームにおいて未検出状態の顔か、或いはフレームアウトした顔であるといえる。そこで、顔追尾処理部１０６は、どちらの状態であるかの判定を行う。この判定を、顔追尾処理部１０６は、前フレームにおける顔中心座標、カメラ動き情報のうちＸ方向の移動量ｖｅｃ＿ｘ、Ｙ方向の移動量ｖｅｃ＿ｙを用いて以下の式（６）により行う。なお、本実施形態における画像サイズは、幅６４０画素、高さ４８０画素であるとする。
【数６】
0005484184.tif 000007
上記式（６）を満たす場合には、顔ｆｐ７が現フレーム内に位置するはずであるため、顔追尾処理部１０６は、現フレームにおいて顔検出が失敗した未検出顔であると判定する。逆に、上記式（６）を満たさない場合には、顔ｆｐ７が現フレームの外に位置するはずであるため、顔追尾処理部１０６は、フレームアウトした顔であると判定する。
【００２１】
ステップＳ２０８において、顔追尾処理部１０６は、顔移動ベクトルを算出する。ここで、顔移動ベクトルとは、前フレームから現フレームまでにカメラが移動した場合に、画像内で顔が動く方向と量のことである。
ここで、図３に示した前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとのようにカメラが動いて画像内の顔が移動した場合、画像の手前に写る人物と奥に写る人物では、画像内の移動量が異なる。一般的に、人物がある程度静止している状態であれば、画像の奥に写る人物ほど画像内の移動量は大きくなる。このため、このような状況で画像に対し顔の移動量を一意に決めたのでは、全ての顔に対して適切な移動量を決定することができない。そこで、本実施形態では、顔のサイズに応じて移動量を決定することにより上記問題を解決する。
【００２２】
ステップＳ２０８の詳細な処理の流れを図１２のフローチャートに示す。
ステップＳ４０１において、顔追尾処理部１０６は、顔のサイズに対する顔の移動量をプロットして顔サイズ・移動量対応グラフを生成する。顔ｆｐ１〜ｆｐ６までの顔サイズと移動量とを図１３に示す値とした場合、顔サイズ・移動量対応グラフは、図１４に示す通りとなる。
ステップＳ４０２において、顔追尾処理部１０６は、ステップＳ４０１で生成した対応グラフに対し、線形回帰分析により、顔サイズと移動量の近似直線を算出する。例えば、図１３の対応表に示す値を用いて顔追尾処理部１０６が代表的な線形回帰分析の手法である最小２乗法を用いて算出した近似直線は以下の式（７）で表される。式（７）におけるｘは顔サイズを表す変数であり、ｙは移動量を示す変数である。
【数７】
0005484184.tif 000008
【００２３】
図１５は、顔サイズ・移動量対応グラフに近似直線を追加したグラフである。
ステップＳ４０３において、顔追尾処理部１０６は、未検出顔のサイズを取得する。未検出顔のサイズは、図６の対応表における前フレームの顔サイズを参照する。
ステップＳ４０４において、顔追尾処理部１０６は、ステップＳ４０２で算出した式（７）に、ステップＳ４０３で取得した未検出顔のサイズを代入し、未検出顔の移動量Ｌ＿ｆｆを算出する。
ステップＳ４０５において、顔追尾処理部１０６は、未検出顔の移動方向θ＿ｆｆを決定する。
未検出顔の移動方向θ＿ｆｆは、ステップＳ３０２で決定した主方向の角度とする。
以上より、未検出顔の顔移動ベクトル（ｖｅｃ＿ｆｆ＿ｘ，ｖｅｃ＿ｆｆ＿ｙ）は、以下の式（８）により算出される。
【数８】
0005484184.tif 000009
【００２４】
図２のフローチャートに戻る。
ステップＳ２０９において、顔追尾処理部１０６は、未検出顔の位置とサイズを算出する。
まず、顔追尾処理部１０６は、未検出顔の位置として、顔の中心座標を算出する。
顔追尾処理部１０６は、未検出顔の中心座標（Ｃｘ，Ｃｙ）を、未検出顔の前フレームにおける顔中心座標（ｐｆｎＸ，ｐｆｎＹ）と、未検出顔の顔移動ベクトル（ｖｅｃ＿ｆｆ＿ｘ，ｖｅｃ＿ｆｆ＿ｙ）と、を用いて、以下の式（９）により算出する。但し、未検出顔の顔ＩＤがｆｐｎの場合である。
【数９】
0005484184.tif 000010
【００２５】
次に、未検出顔のサイズを算出する。
顔追尾処理部１０６は、未検出顔のサイズＳ＿ｆｆを、前フレームと現フレームで対応関係にある顔サイズの変化率の平均値ａｖｅ＿ｆｒを算出し、この平均値ａｖｅ＿ｆｒを未検出顔の前フレームにおける顔サイズにかけることで算出する。
本実施形態における未検出顔ｆｐ７の前フレームにおける顔サイズは、図６よりＳ＿ｆｐ７のため、現フレームにおける未検出顔ｆｐ７の顔サイズは、Ｓ＿ｆｐ７×ａｖｅ＿ｆｒとなる。
なお、顔追尾処理部１０６は、変化率の平均値の算出において、ステップＳ２０７において本対応付けにより対応付けられた顔のみを用いて行うものとする。
ステップＳ２１０において、主制御部１０２は、最終的な検出結果を表示部１０７に表示する。
図１６は、デジタルカメラの表示部に検出枠を表示した場合の一例を示す図である。図１６における１６０１は、表示部（表示部１０７）であり、１６０２は撮影、画像再生、データ削除等の操作を行う操作部である。
【００２６】
以上、第一の実施形態では、前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとで共に検出されている顔の位置とサイズを利用して顔の移動ベクトルを算出する。そして、現フレームＩｍｇ＿ｉｎにおいて顔検出が失敗してしまう顔の位置とサイズとを推定する方法について説明した。本実施形態によれば、顔のサイズに応じて移動ベクトルを算出し、未検出顔の位置を推定するため、画像内で顔の移動量に差が出てしまうような場合においても、画像内の全ての顔に対して適切な移動量を算出することができる。
【００２７】
＜第二の実施形態＞
第二の実施形態における前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとの画像例を図１７に示す。
女性や子供等顔のサイズが小さい場合、図１７の顔ｆｐ８に示すように画像の手前に写っていても画像の奥の顔と同程度のサイズに見えることがある。このような場合、顔のサイズが同じであっても、画像における移動量が異なってしまう。即ち、この例では顔ｆｉ８よりも顔ｆｉ６の移動量の方が大きくなる。そこで、これらの顔を同一グループとして移動量を決定すると、精度が低下してしまう。
第二の実施形態では、このような状況に対しても、精度を落とすことなく未検出顔の移動量を決定する方法を説明する。第一の実施形態のおけるステップＳ３０３において、顔サイズ毎の移動ベクトルを算出する際に、算出に利用する顔に対して画像上の水平方向の位置による制限を加えることで、精度低下要因となる顔を除外する。つまり、顔追尾処理部１０６は、画像を水平方向に分割した際、同一の領域にある大きさの類似する被写体領域を用いて、被写体領域の大きさ毎の移動情報を算出する。このため、カメラに対して水平方向に複数の列を成した集団がカメラに顔を向けて近づいてくるような状況において、特に大きな効果を確認できる。なお、ここで、「大きさの類似する」とは、例えば、大きさの誤差が所定の範囲内のもの等のことである。
なお、第二の実施形態では、第一の実施形態のステップＳ２０８の処理の一部を変更する。このため、それ以外の処理であるステップＳ２０１〜Ｓ２０７，ステップＳ２０９，Ｓ２１０については第一の実施形態と同一の処理となるため、以下では説明を省略する。
【００２８】
また、本実施形態でステップＳ２０７までの処理により生成される前フレームと現フレームとにおける顔の対応表を図１８に示す。本実施形態では、顔ｆｐ７が未検出顔であり、それ以外の顔はステップＳ２０７の本対応付けで対応付けられているものとする。
第二の実施形態におけるステップＳ２０８の処理の流れを図１９に示す。
ステップＳ１８０１において、顔追尾処理部１０６は、ステップＳ２０７で本対応付けされた顔についてその位置座標を取得する。位置座標は、図１８に示す対応表より取得する。
ステップＳ１８０２において、顔追尾処理部１０６は、ステップＳ１８０１で取得した位置座標に基づき水平位置でのグルーピングを行う。
グルーピングの一例として、例えば、顔追尾処理部１０６は、前フレームＩｍｇ＿ｐにおける顔のＹ座標の最大値ｆ＿ｍａｘと最小値ｆ＿ｍｉｎとを取得し、以下の式（１０）を満たすサイズの範囲を１つのグループとしてグルーピングすればよい。
【数１０】
0005484184.tif 000011
【００２９】
式（１０）におけるＭは、グループの個数であり予め定めておけばよい。本実施形態では、Ｍ＝３とし、各顔の顔中心座標については図２０に示す値を用いる。
この場合、式（１０）を用いて顔追尾処理部１０６が、水平位置でグルーピングした結果を図２１の表に示す。
またグルーピング結果を画像で示されたたものが図２２となる。
ステップＳ１８０３において、顔追尾処理部１０６は、ステップＳ１８０２でグルーピングした各グループにおいて、他の顔と極端にサイズの異なる顔がある場合には、その顔をステップＳ４０１における処理対象の顔から除外する。処理対象外の顔を決定する方法としては、顔追尾処理部１０６は、グループ内の顔サイズの平均値を算出し、この平均値と大きく乖離するサイズをもつ顔がグループ内にあるか否かを判定する。もし大きく乖離する顔がある場合には、顔追尾処理部１０６は、その顔を処理対象外の顔として決定する。
本実施形態では、グループ３における顔ｆｉ８が処理対象外の顔と決定されるものとする。
ステップＳ４０１の処理では、顔追尾処理部１０６は、ステップ１８０３で対象外とした顔以外の顔を用いて、第一の実施形態と同様の処理を実施する。
図１９におけるステップＳ４０１〜Ｓ４０５までの処理は、第一の実施形態と同一の処理となるため、同じ番号を付与して説明を省略する。
【００３０】
以上、第二の実施形態によれば、顔の移動量を算出する際、同じ水平位置において顔サイズが明らかに異なるものは対象から外す。これにより、カメラから同じ距離にあっても他の顔とサイズが明らかに異なる顔を除外して顔の移動量を算出することができる。このため、多数の大人の顔に混じって、女性や子供等、平均的な大人の顔よりサイズの小さい顔を含むような画像に対しても、精度よく未検出顔の位置を推定することができる。
【００３１】
＜第三の実施形態＞
第一の実施形態と第二の実施形態とにおいて、現フレームＩｍｇ＿ｉｎで未検出となる顔について本提案手法を用いて前記顔の位置を推定する例を説明したが、特定の状況では本提案手法によっても正しく位置を推定することができない場合がある。
例えば、人物が急に走り出した場合には、前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとの顔の移動量が極端に大きくなるため、推定した位置に顔が含まれなくなってしまう。
また、人物は静止していたとしても、カメラが急にパン・チルトを逆方向に移動した場合等には、推定した位置とは逆の方向に実際の顔が存在することになり、この場合も同様に推定した位置に顔が含まれなくなってしまう。
このような状況において、推定した位置を素直にユーザに表示した場合、顔が存在しない位置に検出結果枠が表示されてしまい、見栄えがよくない。特に後述した状況では、画像内の多くの顔について誤った検出結果が表示されてしまうことになる。
第三の実施形態では、主制御部１０２が、第一の実施形態或いは第二の実施形態で推定した未検出顔の位置付近の肌色情報を代表色の一例として取得する。主制御部１０２が、この肌色情報に基づき、推定した位置に実際に顔領域があるか否かを調べ、顔領域がある場合にのみ検出結果を表示することで上記問題を解決する。
【００３２】
図２３は、第三の実施形態の処理フローを示す図である。ステップＳ２０１〜ステップＳ２０９は、第一の実施形態と同一の処理となるため、同じ番号を付与して説明を省略する。
ステップＳ２３０１において、主制御部１０２は、ステップＳ２０９で算出された未検出顔の位置付近における肌色画素をカウントする。なお、ステップＳ２０９で算出された未検出顔の中心座標とサイズとからなる矩形領域は、正面を向いた顔に対し顔領域に隣接する程度の大きさで設定される場合が多い。このため、斜め方向を向いた顔の場合、矩形領域の端には背景領域や髪の領域が含まれてしまい、肌色領域だけを抽出することができない。そこで、主制御部１０２は、肌色画素をカウントする際の肌色探索領域として、ステップＳ２０９で算出された未検出顔のサイズを小さくした領域を設定する。
ステップＳ２０９で算出された未検出顔の中心座標とサイズとから設定される矩形領域と、実際に設定する肌色探索領域との関係を図２４に示す。ステップＳ２０９で算出された未検出顔の中心座標とサイズとから設定される矩形領域（推定顔領域）が２４０１であり、肌色探索領域（探索領域）が２４０２となる。つまり、探索領域は、推定顔領域の中心位置から所定範囲内の領域となる。
肌色画素の検出方法については特に限定さるものではなく、公知の技術を用いればよい。例えば特開平０９−１０７５５１で示されるように、ＲＧＢやＹｃｂＣｒといった一般的な色空間上において、予め測定した肌色画素の値をプロットし、当該色空間上で肌色画素の範囲を決定する方法等がある。なお、より高精度に肌色画素を検出する場合には、主制御部１０２は、前のフレームにおける肌色領域の範囲を保持しておき、その範囲から現在のフレームにおける範囲を決定するようにすればよい。
【００３３】
ステップＳ２３０２において、肌色探索領域にある肌色画素が肌色探索領域内の全画素に対して所定の比率以上存在するか否かを調べることにより、主制御部１０２は、前記肌色探索領域に顔領域が存在するか否かを判定する。この判定は、ステップＳ２３０１でカウントした肌色画素数をＨｉ、肌色探索領域の全画素数をＰｉ、予め定めた比率をｔｈＰとした場合に以下の式（１１）で示される。
【数１１】
0005484184.tif 000012
ステップＳ２３０２において、主制御部１０２は、式（１１）を満たす場合には推定した位置に顔領域があると判断してステップＳ２１０に処理を進める。そして、主制御部１０２は、ステップＳ２０２で検出された顔の位置と、ステップＳ２０３〜ステップＳ２０９までで推定された未検出顔の位置と、を最終的な検出結果の枠として表示する。
ステップＳ２３０２において、式（１１）を満たさない場合には、主制御部１０２は、ステップＳ２０３〜ステップＳ２０９までの処理で推定された未検出顔の位置に、実際には顔領域が存在しなかったと判断する。この場合、主制御部１０２は、ステップＳ２１１に処理を進め、ステップＳ２０２の顔検出処理により検出された顔についてのみ最終的な検出結果として表示する。
【００３４】
なお、より高精度に肌色領域判定を実施するには、主制御部１０２は、前フレームＩｍｇ＿ｐと現フレームＩｍｇ＿ｉｎとにおける肌色画素数の変化率Ｒｐｉが所定の範囲に収まるか否か式（１２）により判定し、式（１１）と合せて判断すればよい。但しこの場合、前フレームＩｍｇ＿ｐにおける肌色画素数を保持することが必要となる。また、式（１２）のｔｈＲ＿ｍｉｎとｔｈＲ＿ｍａｘとは変化率に対する範囲の最小値と最大値である。
【数１２】
0005484184.tif 000013
【００３５】
本実施形態では、推定した未検出顔の位置付近に対し、肌色画素をカウントすることで実際に顔領域があるか否かを判定する例を説明した。しかし、主制御部１０２は、前のフレームにおける顔領域の色ヒストグラムを保持し、ヒストグラムのマッチングにより判定を行うようにしてもよい。また、主制御部１０２は、前のフレームにおける顔領域をテンプレート画像として用い、推定した未検出顔の位置付近でテンプレートマッチングを行うようにしてもよい。
また、本実施形態では、顔が人間の顔であるとし、主制御部１０２は、ステップＳ２３０１で肌色画素をカウント、判定するようにしている。しかしながら、犬や猫等他の動物を検出対象として実施する場合には、主制御部１０２は、これら動物の顔領域付近の代表色抽出と領域判定を行えばよい。
また、本実施形態では、特に顔領域に対して未検出した場合の位置を推定する方法を説明したが、歩行者等の人体領域を検出対象とすることもできる。
第三の実施形態では、主制御部１０２が、第一、第二の実施形態により推定した未検出顔の位置に対し、肌色領域の判定を行うことで実際に顔領域があるか否かを調べ、肌色判定で顔領域があるとされた場合のみ、推定した未検出顔の位置を正しいと判断する。このため、急に人物が動き出した場合やカメラの画角が変わった場合等においても、顔が存在しない領域を誤って顔領域として推定してしまうことを防ぐことができる。
【００３６】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００３７】
以上、上述した各実施形態によれば、画像上での複数の被写体領域の移動量が大きく異なる場合にも適切に移動情報を算出し、注目する被写体領域の位置を推定することができる。
【００３８】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００３９】
１０２  主制御部、１０５  顔検出部、１０６  顔追尾処理部
【図１】
0005484184.tif 000014
【図２】
0005484184.tif 000015
【図３】
0005484184.tif 000016
【図４】
0005484184.tif 000017
【図５】
0005484184.tif 000018
【図６】
0005484184.tif 000019
【図７】
0005484184.tif 000020
【図８】
0005484184.tif 000021
【図９】
0005484184.tif 000022
【図１０】
0005484184.tif 000023
【図１１】
0005484184.tif 000024
【図１２】
0005484184.tif 000025
【図１３】
0005484184.tif 000026
【図１４】
0005484184.tif 000027
【図１５】
0005484184.tif 000028
【図１６】
0005484184.tif 000029
【図１７】
0005484184.tif 000030
【図１８】
0005484184.tif 000031
【図１９】
0005484184.tif 000032
【図２０】
0005484184.tif 000033
【図２１】
0005484184.tif 000034
【図２２】
0005484184.tif 000035
【図２３】
0005484184.tif 000036
【図２４】
0005484184.tif 000037