(57)【要約】【課題】顔検出装置において、処理の高速性と正確性とを両立させ、その適用範囲を広くする。【解決手段】入力画像からの顔検出に特化したハードウェア回路からなる顔検出回路１４と、書き換え可能なプログラムに従って、入力画像信号を基に信号処理を実行するプログラマブル信号処理回路１５とが設けられ、プログラマブル信号処理回路１５でも、顔検出プログラムを実行させることで顔が検出される。そして、顔検出回路１４およびプログラマブル信号処理回路１５では、同じフレームの画像または連続したうちの近傍のフレームの画像からの顔検出処理が実行され、このときＣＰＵ２１によって、顔検出回路１４による顔の検出結果を基にプログラマブル信号処理回路１５による顔検出処理が制御される。【選択図】図１
2008040709.tif 000002
【特許請求の範囲】
【請求項１】
入力された画像から人物の顔を検出する顔検出装置において、
入力画像からの顔検出に特化したハードウェア回路からなる顔検出回路と、
入力画像から顔を検出するための顔検出プログラムを含む書き換え可能なプログラムに従って、入力画像信号を基に信号処理を実行する信号処理回路と、
前記顔検出回路および前記信号処理回路のそれぞれに、同じフレームの画像または連続したうちの近傍のフレームの画像からの顔検出処理を実行させ、前記顔検出回路による顔の検出結果を基に前記信号処理回路による顔検出処理を制御する制御部と、
を有することを特徴とする顔検出装置。
【請求項２】
前記顔検出回路は、入力画像の全面から顔を検出し、
前記制御部は、前記顔検出回路により検出された顔の領域を含む画像内の部分的な領域を、前記信号処理回路における顔検出領域として設定し、
前記信号処理回路は、入力画像の中の前記制御部から設定された前記顔検出領域のみから顔を検出する、
ことを特徴とする請求項１記載の顔検出装置。
【請求項３】
前記信号処理回路は、前記顔検出回路よりも、顔の領域の位置およびサイズを正確に検出できるような顔検出処理を実行することを特徴とする請求項２記載の顔検出装置。
【請求項４】
前記顔検出回路は、顔の検出漏れを防止することを優先した顔検出処理を実行し、
前記信号処理回路は、顔の誤検出を防止することを優先した顔検出処理を実行することを特徴とする請求項２記載の顔検出装置。
【請求項５】
前記制御部は、前記信号処理回路からの顔の検出結果を基に、前記顔検出回路による次の入力画像からの顔検出動作を制御するためのパラメータを再設定することを特徴とする請求項２記載の顔検出装置。
【請求項６】
前記信号処理回路は、入力画像の中の前記制御部から設定された前記顔検出領域から、顔のパーツの位置を検出することを特徴とする請求項２記載の顔検出装置。
【請求項７】
前記信号処理回路は、前記顔検出領域から検出した前記顔のパーツの状態を検出することを特徴とする請求項６記載の顔検出装置。
【請求項８】
前記信号処理回路は、前記顔検出領域から検出した前記顔のパーツの状態を基に、顔の表情を判別することを特徴とする請求項７記載の顔検出装置。
【請求項９】
前記顔検出回路は、一般的な顔の検出処理を実行し、
前記信号処理回路は、特定の人物の顔の検出処理を実行することを特徴とする請求項２記載の顔検出装置。
【請求項１０】
前記信号処理回路は、検出対象とする特定の人物の顔の特徴点情報を利用してその顔を検出し、前記制御部からの制御に基づいて、利用する前記特徴点情報を変更することにより、検出対象とする人物を変更可能とされていることを特徴とする請求項９記載の顔検出装置。
【請求項１１】
前記顔検出回路は、一般的な顔の検出処理を実行し、
前記信号処理回路は、特定の性質を持つ顔の検出処理を実行することを特徴とする請求項２記載の顔検出装置。
【請求項１２】
前記信号処理回路は、検出対象とする特定の性質を持つ顔の特徴点情報を利用してその顔を検出し、前記制御部からの制御に基づいて、利用する前記特徴点情報を変更することにより、検出対象とする人物の性質を変更可能とされていることを特徴とする請求項１１記載の顔検出装置。
【請求項１３】
前記制御部は、前記信号処理回路による顔検出処理の実行中に、前記顔検出回路に対して次の入力画像に対する顔検出処理の実行を開始させることを特徴とする請求項１記載の顔検出装置。
【請求項１４】
前記制御部は、前記信号処理回路が、前記顔検出回路による最新の顔の検出結果に基づいて１つの入力画像に対する顔検出処理を実行している間に、前記顔検出回路に連続した複数の入力画像に対する顔検出処理を実行させて、前記顔検出回路による顔の検出結果を最終的な検出結果として出力し、前記信号処理回路による最新の顔の検出結果を基に前記顔検出回路による顔の検出結果を補正することを特徴とする請求項１記載の顔検出装置。
【請求項１５】
前記制御部は、前記顔検出回路による顔の検出結果と、前記信号処理回路による顔の検出結果とのいずれかを、最終的な顔の検出結果として必要に応じて選択して出力し、前記顔検出回路による顔の検出結果を最終的な顔の検出結果として出力する場合には、前記信号処理回路による顔検出処理を停止させることを特徴とする請求項１記載の顔検出装置。
【請求項１６】
固体撮像素子を用いて画像を撮像する撮像装置において、
入力画像からの顔検出に特化したハードウェア回路からなる顔検出回路と、
入力画像から顔を検出するための顔検出プログラムを含む書き換え可能なプログラムに従って、入力画像信号を基に信号処理を実行する信号処理回路と、
前記顔検出回路および前記信号処理回路のそれぞれに、撮像によって連続的に得られた画像のうちの同じフレームの画像または近傍のフレームの画像からの顔検出処理を実行させ、前記顔検出回路による顔の検出結果を基に前記信号処理回路による顔検出処理を制御する制御部と、
を有することを特徴とする撮像装置。
【請求項１７】
前記制御部は、前記顔検出回路による顔の検出結果と、前記信号処理回路による顔の検出結果とのいずれかを、最終的な顔の検出結果として撮像動作の状態に応じて選択して出力し、前記顔検出回路による顔の検出結果を最終的な顔の検出結果として出力する場合には、前記信号処理回路による顔検出処理を停止させることを特徴とする請求項１６記載の撮像装置。
【請求項１８】
入力された画像から人物の顔を検出するための顔検出方法において、
顔検出に特化したハードウェア回路からなる顔検出回路が、入力画像から顔を検出し、
顔を検出するための顔検出プログラムを含む書き換え可能なプログラムに従って入力画像信号を基に信号処理を実行する信号処理回路が、前記顔検出プログラムを実行することで、前記顔検出回路による顔の検出結果を基に、前記顔検出回路への入力と同じフレームの画像または連続したうちの近傍のフレームの画像から顔を検出する、
ことを特徴とする顔検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力された画像から人物の顔を検出する顔検出装置、その機能を備えた撮像装置、および顔検出方法に関する。
【背景技術】
【０００２】
近年、デジタルスチルカメラ、デジタルビデオカメラなどのデジタル方式の撮像装置が急速に普及し、これらの製品の高性能化が進んでいる。このため、撮像装置としてより高度な機能を搭載して、その商品価値を高めることが強く求められている。このような高度な機能の一つとして、画像から特定の被写体を検出する技術が注目されている。
【０００３】
被写体検出の代表的な技術として、人物の顔を検出する技術が挙げられる。この顔検出技術により、撮像した画像から人物の顔領域を抽出することができ、その抽出結果を、例えば撮像装置内の様々なアプリケーションに適用する、あるいは画像の付随データとして記録するといった応用が考えられている。
【０００４】
従来の顔検出の手法としては、例えば、撮像された画像のデータを輝度データ、色相データ、クロマデータに変換し、輝度データに基づく肌色領域における垂直方向の輝度変化と、３属性データに基づく肌色画素の空間的な画素分布とを基に、人物の顔領域を検出するものがあった（例えば、特許文献１参照）。また、撮像された画像から肌色領域と目、口などの顔の特徴点を検出し、その特徴点の位置から肌色領域が人物の顔であるかを判定するものがあった（例えば、特許文献２参照）。さらに、特に色の情報を利用しない手法として、撮像された画像の輝度データを用いて顔のテンプレート画像とのマッチング処理を行い、それらの相関値が充分高い場合に顔であると判定するものがあった（例えば、特許文献３参照）。
【特許文献１】特許第３５６１９８５号公報（段落番号〔００３８〕〜〔００５８〕、図１）
【特許文献２】特開２００４−５３８４号公報（段落番号〔００１８〕〜〔００１９〕、図１）
【特許文献３】特開２００３−２７１９３３号公報（段落番号〔００４６〕〜〔００５５〕、図６）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のように、顔検出については種々のアルゴリズムが存在しているが、このような顔検出手法を撮像装置に適用する際には、動画記録、静止画記録に関係なく、以下の２点が重要となる。第１の重要点は、被写体の動きや撮像装置自体の動きに追従できる高速性と、誤検出や検出漏れを回避できる検出精度の高さとを両立することである。第２の重要点は、多様な検出アルゴリズムや撮影条件などに対応できる柔軟性、適応性を持つことである。
【０００６】
顔検出の処理は、ソフトウェアで実行される場合と、専用のハードウェアで実行される場合とがある。一般に、ソフトウェアで顔検出処理を実行した場合、処理の高速性を損なうことが多く、例えば静止画記録モードでのモニタリング画像の処理や動画記録時の処理に充分追従できないことがある。また、検出精度を高めようとすると処理負荷はさらに増大し、撮像装置としては実用に耐えうる検出レートの実現が困難になる。すなわち、第１の重要点で挙げたように高速性と検出精度の高さとを両立することは非常に難しいと言える。
【０００７】
これに対して、専用のハードウェアにより顔検出処理を実行した場合、一般に、その処理速度および検出精度をソフトウェアと比較して格段に改善することが知られている。しかし、ハードウェアの場合には、第２の重要点で挙げたように多様なアルゴリズムや撮影条件に対応することや、検出性能に改善を加えることなどは困難であり、検出動作の柔軟性、適応性に乏しいという問題があった。
【０００８】
本発明はこのような点に鑑みてなされたものであり、顔検出処理の高速性と正確性とが両立され、その適用範囲が広い顔検出装置、撮像装置、および顔検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明では上記課題を解決するために、入力された画像から人物の顔を検出する顔検出装置において、入力画像からの顔検出に特化したハードウェア回路からなる顔検出回路と、入力画像から顔を検出するための顔検出プログラムを含む書き換え可能なプログラムに従って、入力画像信号を基に信号処理を実行する信号処理回路と、前記顔検出回路および前記信号処理回路のそれぞれに、同じフレームの画像または連続したうちの近傍のフレームの画像からの顔検出処理を実行させ、前記顔検出回路による顔の検出結果を基に前記信号処理回路による顔検出処理を制御する制御部とを有することを特徴とする顔検出装置が提供される。
【００１０】
このような顔検出装置では、入力画像からの顔検出に特化したハードウェア回路からなる顔検出回路が設けられるとともに、書き換え可能なプログラムに従って入力画像信号を基に信号処理を実行する信号処理回路が設けられ、この信号処理回路によって顔検出プログラムが実行されることで、信号処理回路でも顔検出処理を実行できる。制御部は、顔検出回路および信号処理回路のそれぞれに、同じフレームの画像または連続したうちの近傍のフレームの画像からの顔検出処理を実行させる。そして、顔検出回路による顔の検出結果を基に、信号処理回路による顔検出処理を制御する。
【発明の効果】
【００１１】
本発明の顔検出装置によれば、顔検出に特化したハードウェア回路により顔検出回路を構成したことで、顔検出回路での顔検出処理を高速化できるとともに、その検出結果を基に信号処理回路による顔検出処理を制御することで、全体での顔の検出精度を高めることができる。また、信号処理回路での顔検出処理が、顔検出回路による顔の検出結果を基に制御されることにより、信号処理回路での顔検出処理が効率化され、顔の検出精度を高めながらもその処理に要する時間を短縮できる。さらに、信号処理回路では、実行させるプログラムを変更することで、様々な顔検出アルゴリズムや顔検出以外の処理を実行させることができるので、製品の仕様変更や機能追加に対する柔軟性、適応性が向上する。従って、顔検出処理の高速性と正確性とが両立されるとともに、その適用範囲が広い顔検出装置を実現できる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図１は、本発明の実施の形態に係る撮像装置の要部構成を示すブロック図である。なお、この図１では、画像データの経路を実線の矢印で、制御データの経路を点線の矢印で、それらの制御データのうち顔の検出結果を示すデータの経路を破線の矢印で、それぞれ示している。
【００１３】
図１に示す撮像装置は、デジタルスチルカメラあるいはデジタルビデオカメラなどとして実現されるものである。この撮像装置は、光学ブロック１１、イメージセンサ１２、カメラ信号処理回路１３、顔検出回路１４、プログラマブル信号処理回路１５、表示処理回路１６、画像圧縮・伸張回路１７、記憶装置１８、画像ＲＡＭ（Random Access Memory）１９、画像バス２０、ＣＰＵ（Central Processing Unit）２１、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）２２、ＲＡＭ２３、および重力方向センサ２４を具備する。
【００１４】
光学ブロック１１は、被写体からの光をイメージセンサ１２に集光するためのレンズ、レンズを移動させてフォーカス合わせやズーミングを行うための駆動機構、シャッタ機構、アイリス機構などを具備している。光学ブロック１１内のこれらの駆動機構は、ＣＰＵ２１からの制御信号に応じて駆動される。イメージセンサ１２は、例えば、ＣＣＤ（Charge Coupled Device）型、ＣＭＯＳ（Complementary Metal Oxide Semiconductor）型などの固体撮像素子であり、被写体からの入射光を電気信号に変換する。
【００１５】
カメラ信号処理回路１３は、イメージセンサ１２から出力された画像信号に対して各種の信号処理を施すブロックである。具体的には、例えば、イメージセンサ１２からの画像信号をデジタルデータに変換する機能、デジタル化された画像データからの各種検波機能、その画像データに対する各種の画質補正機能などを備える。なお、このカメラ信号処理回路１３による検波情報はＣＰＵ２１に供給され、ＣＰＵ２１は、これらの検波情報を基にＡＦ（Auto Focus）処理、ＡＥ（Auto Exposure）処理、カメラ信号処理回路１３内の画質補正機能などに対する制御値を演算する。また、カメラ信号処理回路１３内の画質補正機能としては、ゲイン補正機能、ホワイトバランス調整機能などが搭載される。
【００１６】
顔検出回路１４は、入力画像から人物の顔を検出するために設けられた専用のハードウェアであり、カメラ信号処理回路１３から出力された画像データを画像ＲＡＭ１９を介して受け取り、人物の顔が存在する領域を検出して、その検出結果をＣＰＵ２１に供給する。
【００１７】
プログラマブル信号処理回路１５は、画像ＲＡＭ１９から読み込んだ画像データに対して信号処理を施すブロックであり、ＣＰＵ２１からプログラムを読み込むことにより複数種類の信号処理を実行できるようになっている。本実施の形態では特に、入力画像から人物の顔を検出するプログラムを実行できるようになっている。すなわち、顔検出回路１４とプログラマブル信号処理回路１５の双方に、顔検出機能が備えられている。
【００１８】
表示処理回路１６は、カメラ信号処理回路１３および画像圧縮・伸張回路１７から出力された画像データを画像ＲＡＭ１９を介して受け取り、表示用の画像信号に変換して、ＬＣＤ（Liquid Crystal Display）などからなるモニタ（図示せず）に供給する。
【００１９】
画像圧縮・伸張回路１７は、カメラ信号処理回路１３から出力された画像データを画像ＲＡＭ１９を介して受け取り、この画像データを圧縮符号化して、動画像あるいは静止画像のデータファイルとして記憶装置１８に出力する。また、記憶装置１８から読み込んだ画像データファイルを伸張復号化し、画像ＲＡＭ１９を介して表示処理回路１６に供給する。なお、例えば、動画像の符号化方式としてはＭＰＥＧ（Moving Picture Experts Group）方式、静止画像の符号化方式としてはＪＰＥＧ（Joint Photographic Experts Group）方式などが適用される。
【００２０】
記憶装置１８は、画像圧縮・伸張回路１７により符号化されて生成された画像ファイルを記憶する装置であり、例えば、磁気テープ、光ディスクなどの可搬型記録媒体のドライブ装置、あるいはＨＤＤ（Hard Disk Drive）などとして実現される。この記憶装置１８は、記憶された画像データファイルを画像圧縮・伸張回路１７に読み出すことの他に、そのデータファイルに付随した情報をＣＰＵ２１に供給することも可能になっている。
【００２１】
画像ＲＡＭ１９は、カメラ信号処理回路１３、顔検出回路１４、プログラマブル信号処理回路１５、表示処理回路１６、および画像圧縮・伸張回路１７に対してそれぞれ画像バス２０を介して接続される。画像ＲＡＭ１９は、接続されたこれらの処理ブロックにより共有され、各ブロック間では画像ＲＡＭ１９を介して画像データが受け渡される。
【００２２】
なお、本実施の形態においては、これらの処理ブロックは必ず画像ＲＡＭ１９を介して画像データを受け渡すものとして説明するが、例えば、顔検出回路１４および表示処理回路１６は、カメラ信号処理回路１３および画像圧縮・伸張回路１７からの出力画像データを、画像バス２０を介さずに直接受信できるようにしてもよい。
【００２３】
ＣＰＵ２１は、この撮像装置全体を統括的に制御するブロックであり、ＥＥＰＲＯＭ２２に記憶されたプログラムを読み込んで実行することで、このような制御を実現する。ＥＥＰＲＯＭ２２は、ＣＰＵ２１で実行されるプログラムや、プログラマブル信号処理回路１５で実行されるプログラム、それらのプログラムの実行時に選択される制御データなどの各種データがあらかじめ記憶される。ＲＡＭ２３には、ＣＰＵ２１におけるプログラム実行時に一時的にデータが記憶される。例えば、顔検出回路１４およびプログラマブル信号処理回路１５による顔の検出結果などのデータが記憶される。
【００２４】
重力方向センサ２４は、この撮像装置に対して加えられている重力の方向を検出し、その検出結果をＣＰＵ２１に供給する。ＣＰＵ２１は、この検出結果を基に、撮像装置がどのような方向に傾けられているかを識別することができる。
【００２５】
この撮像装置における基本的な動作は以下のようになる。まず、画像の記録時には、イメージセンサ１２によって受光されて光電変換された信号が、順次カメラ信号処理回路１３に供給され、デジタル変換や画質補正処理などが施される。処理後の画像データは画像バス２０を通じて画像ＲＡＭ１９に一旦記憶される。表示処理回路１６は、カメラ信号処理回路１３からの画像データを画像ＲＡＭ１９を介して受け取って表示用の画像信号を生成し、図示しないモニタに供給する。これにより、現在撮像中の画像（カメラスルー画像）がモニタに表示され、撮影者はこの画像を視認して画角を確認できるようになる。
【００２６】
また、画像圧縮・伸張回路１７は、カメラ信号処理回路１３からの出力画像データを画像ＲＡＭ１９を介して順次受け取り、圧縮符号化処理を施して動画像ファイルを記憶装置１８に記録する。また、図示しないシャッタレリーズボタンの押下などに応じて、カメラ信号処理回路１３からの１フレーム分の画像データが画像圧縮・伸張回路１７において圧縮符号化されることで、静止画像ファイルを記憶装置１８に記録することもできる。
【００２７】
また、記憶装置１８に記憶された画像ファイルは、画像圧縮・伸張回路１７に読み出されて伸張復号化され、表示処理回路１６に供給されて表示用の信号に変換される。これにより、動画像あるいは静止画像をモニタに再生表示することができる。
【００２８】
ところで、上記のような画像の記録時において、顔検出回路１４は、カメラ信号処理回路１３からの出力画像データを画像ＲＡＭ１９を介して受け取り、顔検出処理を実行する。また、プログラマブル信号処理回路１５に対しても、カメラ信号処理回路１３からの出力画像データが画像ＲＡＭ１９を介して供給され、プログラマブル信号処理回路１５は、この画像データを基に顔検出処理を実行できる。顔検出回路１４およびプログラマブル信号処理回路１５での顔の検出結果は、ＣＰＵ２１に供給される。なお、後述するように、顔検出回路１４およびプログラマブル信号処理回路１５は、互いの検出結果をＣＰＵ２１を介して受け取り、その検出結果を基にさらに顔検出処理を行うこともできる。
【００２９】
ＣＰＵ２１は例えば、これらの各処理ブロックによる検出結果を基に最終的な検出結果を求め、その検出結果をＡＥ、ＡＦ、ホワイトバランス調整などの制御値演算に用いる。例えば、検出された顔の明るさや色を最適にするように絞り量やホワイトバランスゲインを調整する、あるいは検出された顔にフォーカスを合わせるといった制御を行うことができる。また、顔の検出結果の情報（例えば顔領域の位置情報）を、画像ファイルの付随情報として記憶装置１８に記録してもよい。
【００３０】
なお、顔検出回路１４およびプログラマブル信号処理回路１５はそれぞれ、記憶装置１８内の画像ファイルの再生時において、画像圧縮・伸張回路１７により伸張復号化された画像データを画像ＲＡＭ１９を介して受け取り、顔検出処理を実行してもよい。この場合の各処理ブロックによる顔検出処理としては、画像の記録時と同様に行うことが可能である。また、ＣＰＵ２１は、各処理ブロックによる検出結果を基に最終的な検出結果を求め、例えば、その検出結果を元の画像ファイルの付随情報として記録する、あるいは元の付随情報を更新する。また、その検出結果を再生画像とともにモニタに表示したり、検出結果をＥＥＰＲＯＭ２２に記録して、後に他の処理に利用してもよい。
【００３１】
次に、顔検出回路１４およびプログラマブル信号処理回路１５を用いた顔検出処理について詳しく説明する。
まず、図２は、顔検出回路の内部構成例を示すブロック図である。
【００３２】
顔検出回路１４は、上述したように顔検出のための専用のハードウェアであり、その内部には図２に示すように、拡大・縮小回路４１、画像メモリ４２、顔検出コア４３、およびコントローラ４４が設けられている。
【００３３】
この顔検出回路１４において、顔検出コア４３は顔検出処理を実行する回路ブロックであり、本実施の形態では、一定サイズの顔のテンプレート画像と入力画像とのマッチングを行い、相関値に応じて顔の存在の有無を判定する。拡大・縮小回路４１は、画像ＲＡＭ１９から画像バス２０を介して読み込んだ画像データのサイズ（水平・垂直方向の各画素数）を、顔検出コア４３における顔検出処理に適するように変換する。画像メモリ４２は、拡大・縮小回路４１によって変換された画像データを一時的に保持し、コントローラ４４から指定される読み出しアドレスに応じて一定サイズの画像を切り出して顔検出コア４３に出力する。なお、この切り出された画像のデータは画像ＲＡＭ１９に書き込まれ、後の処理で利用できるようにもなっている。
【００３４】
コントローラ４４は、ＣＰＵ２１から供給される顔検出パラメータに基づいて、拡大・縮小回路４１、画像メモリ４２および顔検出コア４３の動作を制御する。例えば、拡大・縮小回路４１に対しては画像データの拡大・縮小率が、画像メモリ４２に対しては書き込み・読み出しのメモリアドレスが、顔検出コア４３に対しては顔の探索方向などを指定する制御値が、それぞれコントローラ４４から出力される。
【００３５】
図３は、顔検出回路による基本的な顔検出処理の流れを示すフローチャートである。
〔ステップＳ１１〕ＣＰＵ２１は、顔検出回路１４のコントローラ４４に対して、顔検出パラメータを設定する。コントローラ４４は、この顔検出パラメータの設定に応じて、次のステップＳ１２以降の動作を制御する。
【００３６】
〔ステップＳ１２〕コントローラ４４は、拡大・縮小回路４１に対して画像の拡大・縮小率を設定する。拡大・縮小回路４１は、カメラ信号処理回路１３から出力されて画像ＲＡＭ１９に記録された画像データを、この画像ＲＡＭ１９から例えば１フレーム分だけ読み込み、コントローラ４４からの設定に応じて画像サイズを変換して、画像メモリ４２に一時的に記録する。
【００３７】
なお、画像メモリ４２の容量を抑えるために、画像ＲＡＭ１９上の１フレーム分の画像のうち一定領域だけを読み込むようにしてもよい。この場合、画像全体のデータが読み込まれるまで一定領域のデータの読み込みを繰り返し行い、その都度ステップＳ１２〜Ｓ１８の処理を繰り返すことになる。
【００３８】
〔ステップＳ１３〕コントローラ４４から指定される読み出しアドレスに応じて、画像メモリ４２は、ステップＳ１２で記録されたサイズ変換後の画像から、一定サイズの領域を顔ウィンドウとして切り出し、顔検出コア４３に出力する。
【００３９】
ここで、ステップＳ１２およびＳ１３の処理は、画像ＲＡＭ１９から読み込んだ画像内に存在しうる顔領域を、顔検出コア４３が検出処理に用いる顔テンプレートのサイズに一致させることを目的としたものである。すなわち、顔検出コア４３は、あらかじめ決められた一定サイズの顔テンプレートをその内部のメモリに保持しており、画像メモリ４２は、記録された画像の中から顔テンプレートと同じサイズの領域を切り出す。
【００４０】
〔ステップＳ１４〕顔検出コア４３は、画像メモリ４２から供給された顔ウィンドウと、自身が保持していた多数の顔テンプレートとのマッチング処理を行い、それらの間の相関値を計算する。
【００４１】
〔ステップＳ１５〕顔検出コア４３は、ステップＳ１４で計算された相関値が充分高いか否かにより、顔ウィンドウ内の画像が顔であるか否かを判定する。例えば、計算された相関値のうちの最大値が所定のしきい値を超えたか否かに応じて、顔か否かを判定する。
【００４２】
〔ステップＳ１６〕顔検出コア４３は、ステップＳ１５において顔であると判定した場合はステップＳ１７の処理を実行し、顔でないと判定した場合にはステップＳ１８の処理を実行する。
【００４３】
〔ステップＳ１７〕顔検出コア４３は、顔の検出結果を内部のメモリに一時的に格納し、これを一時的に保持する。なお、顔の検出結果としては例えば、顔領域の情報（例えば、画像内の基準位置の座標と、その基準位置からの水平・垂直方向のサイズ）の他に、顔が向いている方向、顔の傾き角度、撮影画角、顔らしさを示す評価値（例えば上記の相関値に基づく評価値）、顔が検出されたときの拡大・縮小回路４１における拡大・縮小率などが挙げられる。
【００４４】
〔ステップＳ１８〕コントローラ４４は、画像メモリ４２に記憶された画像から、最後の顔ウィンドウがすでに切り出されたか否かを判断する。切り出しが済んでいない場合は、顔ウィンドウの切り出し位置を変えてステップＳ１３の処理を実行し、切り出しが済んだ場合はステップＳ１９の処理を実行する。
【００４５】
〔ステップＳ１９〕コントローラ４４は、ＣＰＵ２１から設定された顔検出パラメータに基づき、顔の検出対象とするサイズを変えて再度顔検出を行うか否かを判断する。再度検出しない場合にはステップＳ２０の処理に進む。また、再度検出する場合にはステップＳ１２に戻って、画像ＲＡＭ１９から同じ画像を再度読み込むように制御する。このとき、拡大・縮小回路４１に対する拡大・縮小率の設定を変えることで、入力画像内に占める大きさが異なる顔を検出できるようになる。
【００４６】
〔ステップＳ２０〕顔検出コア４３は、ステップＳ１７で保持していた顔の検出結果を、ＣＰＵ２１に出力する。
ここで、上記のステップＳ１１の顔検出パラメータの設定について補足説明する。
【００４７】
この顔検出回路１４では、ＣＰＵ２１から設定される顔検出パラメータに応じて、顔検出回路１４における検出精度や検出速度を変化させることができる。例えば、同じ入力画像に対して、拡大・縮小回路４１における拡大・縮小率を細かく変化させることで、どのような大きさの顔でも検出できるようになり、検出精度が向上する。その反面、処理速度は低下することになる。また、顔検出コア４３において使用される顔テンプレートの数によっても、検出精度や処理速度が変化する。例えば、顔の向いている方向や傾きの異なる顔テンプレートを用いてマッチング処理すれば、検出精度を向上させることができる。
【００４８】
さらに、ＣＰＵ２１からの顔検出パラメータに応じて、コントローラ４４は、顔検出コア４３における顔の探索方向（探索角度）を指定することもできる。この顔の探索方向に応じた顔の検出について、次の図４および図５を用いて説明する。
【００４９】
図４は、撮像時の画角と顔の探索角度との関係を説明するための図である。なお、図４では検出された顔に対応する顔ウィンドウを点線の枠により示している。
動画像の撮像時には、記録した動画像が一般のテレビジョンモニタで表示されることから、撮像装置は常に一定の向きで使用され、撮像された画像は図４（Ａ）に示すように、走査基準点Ｐｘ０が左上となるような横長画角の画像となる。これに対して、静止画像の撮像時には撮像装置が様々に傾けられて使用されるので、図４（Ａ）の画角以外に、図４（Ｂ）のように走査基準点Ｐｘ０が右上となるように撮像装置が右向きに傾けられた縦長画角や、図４（Ｃ）に示すように撮像装置が左向きに傾けられた縦長画角などが想定される。このように、画像の傾きが異なると、その中の顔の向きも異なってしまうため、顔検出の際にどの方向に対して顔を探索すべきかを制御する必要が生じる。このために、顔検出回路１４のコントローラ４４は、ＣＰＵ２１からの顔検出パラメータに応じて、顔検出コア４３に対して顔の探索角度を設定できるようになっている。
【００５０】
図５は、顔の探索角度の定義の一例を示す図である。
顔検出コア４３に対して設定される顔の探索角度としては、例として図５に示すように、０°、＋９０°、−９０°、１８０°の４種類が設定可能となっている。この定義では、図４（Ａ）に示す画角での顔の探索角度が基準である０°となっており、−９０°、＋９０°がそれぞれ図４（Ｂ）、（Ｃ）に示す画角での探索角度に対応する。
【００５１】
本実施の形態に係る撮像装置は重力方向センサ２４を備えており、ＣＰＵ２１が重力方向センサ２４からの検出信号に応じて、撮像時における撮像装置の傾きを自動的に判断し、それに応じて上記の顔の探索角度を顔検出パラメータとして顔検出回路１４に対して設定することができる。
【００５２】
また、ユーザが入力キーなどを通じて撮像時の傾きを入力し、その入力情報に応じてＣＰＵ２１が探索角度を設定してもよい。また、探索角度の設定履歴に基づく探索方向頻度をＥＥＰＲＯＭ２２に保持しておき、次の顔検出の際にＣＰＵ２１がこの探索方向頻度を読み出し、それを基に探索角度を予測して設定してもよい。また、記憶装置１８に記憶された静止画像ファイルの再生画像から顔を検出する際には、この静止画像ファイルに付随情報として撮像時の傾き情報が記憶されていれば、ＣＰＵ２１がこの傾き情報を基に探索角度を設定してもよい。
【００５３】
さらに、同一の画像の中に、異なる傾きを持つ顔が含まれている場合もある。そこで、１つの画像からの顔の検出の際に、ＣＰＵ２１が顔検出回路１４に対して図５に示すような複数の探索角度を設定してもよく、これにより顔の検出漏れを少なくすることができる。
【００５４】
次に、図６は、プログラマブル信号処理回路の内部構成例を示すブロック図である。
プログラマブル信号処理回路１５は、ＲＡＭ５１、ＤＳＰ５２および５３、コントローラ５４を具備している。ＲＡＭ５１には、画像ＲＡＭ１９から読み出された画像データや、コントローラ５４から供給されるプログラムなどが一時的に記憶される。ＤＳＰ５２および５３は、ＲＡＭ５１に記憶されたプログラムを実行することで顔検出処理などを実行する信号処理モジュールであり、本実施の形態では例として２つ設けられている。コントローラ５４は、ＣＰＵ２１からの制御情報に応じて、ＤＳＰ５２および５３の動作を制御し、ＲＡＭ５１の書き込み・読み出しアドレスを指定する。
【００５５】
このプログラマブル信号処理回路１５では、ＥＥＰＲＯＭ２２に記憶されたプログラムがＣＰＵ２１により読み出され、コントローラ５４を介してＲＡＭ５１に記憶される。これとともに、ＣＰＵ２１から各種の制御パラメータが与えられて、コントローラ５４がＤＳＰ５２および５３に設定する。プログラマブル信号処理回路１５は、これらのプログラムおよび制御パラメータの内容に応じて、複数のＡＬＵ（Arithmetic Logic Unit）を組み合わせて顔検出用の命令セットが作成され、実行される。すなわち、ＣＰＵ２１から新たなプログラムがロードされることで、必要に応じてプログラマブル信号処理回路１５で実行される処理内容を更新することが可能となっている。
【００５６】
顔検出処理が実行される場合、画像ＲＡＭ１９から読み出された画像データが一旦ＲＡＭ５１に記憶され、顔検出処理を実行するＤＳＰ５２および５３に読み出される。このとき、顔検出回路１４による顔の検出結果に基づく情報が、ＤＳＰ５２および５３に対する制御パラメータとしてＣＰＵ２１から設定できるようにもなっている。ＤＳＰ５２および５３による顔の検出結果は、コントローラ５４を介してＣＰＵ２１に出力される。
【００５７】
なお、プログラマブル信号処理回路１５は、画像の記録時や再生時において、ＣＰＵ２１からＲＡＭ５１にロードされるプログラムに応じて、画像ＲＡＭ１９から読み出した画像データに対して顔検出処理以外の他の信号処理を施すこともできる。例えば、カメラ信号処理回路１３が備える検波機能や画質補正機能の一部を実行してもよい。この場合、検波結果はＣＰＵ２１に供給され、画質補正処理後の画像データは画像ＲＡＭ１９に一時的に記憶され、例えば表示処理回路１６や画像圧縮・伸張回路１７に読み出される。また、画像の記録時と再生時とで異なる処理が実行されてもよい。また、複数のＤＳＰ５２および５３のそれぞれによって異なる信号処理が実行されてもよい。
【００５８】
以上の構成を有する撮像装置では、顔検出回路１４およびプログラマブル信号処理回路１５の双方で、顔検出処理を実行できるようになっている。ここで、顔検出回路１４については、顔検出専用のハードウェア回路であることから、上述したように顔検出パラメータの設定に応じて検出精度や処理速度などの変更の余地はあるものの、検出手順などを大きく変更することはできない。これに対して、プログラマブル信号処理回路１５については、ＣＰＵ２１からロードされるプログラムに応じて、検出設定のみならず例えば検出アルゴリズムまでも大きく変更することができ、検出精度などに対する柔軟性が高い。その反面、例えば同じ検出アルゴリズムを用いて同じ画像領域から同じ検出精度で顔の検出を行った場合、顔検出回路１４の方がプログラマブル信号処理回路１５と比較して高速に検出処理を実行できる。
【００５９】
そこで、本実施の形態に係る撮像装置では、顔検出回路１４でのハードウェアによる顔検出処理と、プログラマブル信号処理回路１５でのソフトウェアによる顔検出処理とを併用し、各ブロックで得られる顔の検出結果を適宜組み合わせてＣＰＵ２１により最終的な検出結果を出力するようにする。後述するように、顔検出回路１４に対しては主に、検出精度より検出速度を重視した検出アルゴリズムおよび顔検出パラメータを適用する。また、プログラマブル信号処理回路１５に対しては、例えば、顔検出回路１４での顔検出処理よりもパラメータ設定をより細かくする、あるいは顔検出回路１４では不可能な特定の性質を持つ顔が検出できるようにするなど、主に検出速度より検出精度を重視した検出アルゴリズムや顔検出パラメータを適用する。そして、顔検出回路１４およびプログラマブル信号処理回路１５での各検出処理を適宜直列あるいは並列に実行させ、必要に応じて一方の検出結果を基に他方の顔検出パラメータを設定できるようにする。
【００６０】
このような動作により、ハードウェアとソフトウェアのそれぞれの長所を生かし、処理速度と顔の検出精度とをできるだけ両立させるようにする。また、顔検出回路１４とプログラマブル信号処理回路１５とを備えた同じ構成の回路で、撮像装置の機種変更や機能拡張に対する柔軟性を高め、長期に亘って開発・製造コストを抑制できるようにする。
【００６１】
以下、顔検出回路１４とプログラマブル信号処理回路１５とを併用した顔検出処理の例について、具体的に説明する。
［第１の顔検出処理］
図７は、第１の顔検出処理の概要を説明するための図である。
【００６２】
図７に示す第１の顔検出処理では、顔検出回路１４は、入力画像Ｐ１の全体から高速な顔検出処理（ステップＳ１０１）を実行する。また、プログラマブル信号処理回路１５は、顔検出回路１４による検出結果に基づき、入力画像Ｐ１の部分的な領域からより高精度な顔検出処理（ステップＳ１０２）を実行する。そして、各ブロックによる顔の検出結果を基にＣＰＵ２１が最終的な検出結果を出力する。
【００６３】
具体的には、顔検出回路１４では、多少の誤検出を許容して、少なくとも顔の検出漏れが回避されるように、入力画像全体から大まかな顔領域の位置やサイズを検出し、検出精度より検出速度を損なわないことを優先させる。図７では、このような顔検出回路１４での検出処理により、入力画像Ｐ１から顔領域Ａ１１〜Ａ１５が検出されたことを示しており、実際には顔が存在していない領域（顔領域Ａ１４およびＡ１５）でも顔が検出されていることがわかる。
【００６４】
一方、プログラマブル信号処理回路１５には、顔検出回路１４での処理よりも正確に顔領域を検出できるように処理プログラムおよび顔検出パラメータが設定される。また、プログラマブル信号処理回路１５では、顔の領域の位置やサイズを正確に検出できるとともに、顔検出回路１４と比較して誤検出を回避できるような処理が実行される。このとき、ＣＰＵ２１は、顔検出回路１４による大まかな検出処理によって得られた顔領域の検出結果（顔領域の座標、サイズなど）を基に、プログラマブル信号処理回路１５での顔検出領域を限定することで、プログラマブル信号処理回路１５では高精度ながら処理速度も短縮するようにする。
【００６５】
図７の例では、このようなプログラマブル信号処理回路１５による入力画像Ｐ１からの顔検出処理の結果、顔領域Ａ１１〜Ａ１３にそれぞれ対応する顔領域Ａ１６〜Ａ１８が顔領域として検出されるとともに、誤検出されていた顔領域Ａ１４およびＡ１５が検出結果から除外されており、顔の存在の有無およびその存在領域がより正確に検出されている。
【００６６】
プログラマブル信号処理回路１５は、このような処理による顔の検出結果として、顔領域の正確な座標、サイズをＣＰＵ２１に出力する。また、この他に例えば、検出された顔の向き、顔の傾き、顔らしさを評価した評価値（例えばテンプレートマッチングにより得られた相関値に応じた情報）、顔検出回路１４での検出結果のうち顔の存在しなかった領域を示す誤検出情報など、より詳細なパラメータを検出してＣＰＵ２１に出力できるようにしてもよい。図７の例では、顔領域Ａ１６において顔の向きが矢印によって示され、顔領域Ａ１８において顔の傾きが一点鎖線によって示されている。
【００６７】
ＣＰＵ２１は、プログラマブル信号処理回路１５からのこのような検出結果を基に最終的な検出結果を得て、ＡＥ、ＡＦなどの他の制御処理に用いる。すなわち、プログラマブル信号処理回路１５は、ＣＰＵ２１からロードするプログラムの仕様やパラメータ設定に応じて、必要最小限の処理時間で高精度かつ多様な検出結果を出力でき、その検出結果の応用範囲を柔軟に拡張できる。
【００６８】
さらに、ＣＰＵ２１は、プログラマブル信号処理回路１５からの正確な検出結果を基に、顔検出回路１４に対する顔検出パラメータをあらためて算出し、設定することもできる。
【００６９】
なお、この第１の顔検出処理では、図７のように、顔検出回路１４およびプログラマブル信号処理回路１５において、同じ入力画像Ｐ１のデータを基に顔検出処理が実行されることが望ましい。しかし実際の処理では、プログラマブル信号処理回路１５では、顔検出回路１４の検出対象の画像に対して１フレームまたは数フレーム分遅延した画像から検出が行われてもよい。
【００７０】
図８は、撮像装置における第１の顔検出処理の流れを示すフローチャートである。
〔ステップＳ１１１〕ＣＰＵ２１は、顔検出回路１４に対して顔検出パラメータを設定する。
【００７１】
〔ステップＳ１１２〕顔検出回路１４のコントローラ４４は、ＣＰＵ２１からの顔検出パラメータに応じて拡大・縮小回路４１、画像メモリ４２および顔検出コア４３を制御し、画像ＲＡＭ１９から順次読み込んだ１フレーム分の画像データを基に、大まかな顔領域を検出する高速な検出処理を実行させる。
【００７２】
〔ステップＳ１１３〕顔検出回路１４での顔検出処理が終了すると、顔検出コア４３からＣＰＵ２１に対して顔の検出結果（例えば顔領域の座標、サイズ）が出力される。
〔ステップＳ１１４〕ＣＰＵ２１は、顔検出回路１４から供給された検出結果を基に、プログラマブル信号処理回路１５に対する顔検出パラメータを設定する。ここでは例えば、顔検出回路１４によって検出された顔領域とその周囲のみを顔の探索範囲とするように、プログラマブル信号処理回路１５に対して顔検出パラメータにより指示する。なお、プログラマブル信号処理回路１５のＲＡＭ５１に対しては、例えばステップＳ１１１の実行前にあらかじめ必要な顔検出プログラムがＣＰＵ２１からあらかじめロードされる。
【００７３】
〔ステップＳ１１５〕プログラマブル信号処理回路１５のコントローラ５４は、ＣＰＵ２１からの顔検出パラメータに応じて、画像ＲＡＭ１９から読み込んだ画像データのうち、顔検出回路１４で検出された顔領域およびその周囲に対応するデータのみをＤＳＰ５２および５３（またはこれらの一方）に転送し、検出精度を重視した顔検出処理を実行させる。
【００７４】
〔ステップＳ１１６〕プログラマブル信号処理回路１５のコントローラ５４は、ＤＳＰ５２および５３から顔の検出結果を受け取り、ＣＰＵ２１に対して出力する。
〔ステップＳ１１７〕ＣＰＵ２１は、プログラマブル信号処理回路１５からの顔の検出結果を基に最終的な顔の検出結果を生成する。
【００７５】
なお、ステップＳ１１４〜Ｓ１１６の処理を、顔検出回路１４によって顔が検出された場合のみ実行してもよい。
〔ステップＳ１１８〕ＣＰＵ２１は、顔検出処理を終了するか否かを判断し、終了しない場合はステップＳ１１９の処理を実行する。
【００７６】
〔ステップＳ１１９〕ＣＰＵ２１は、プログラマブル信号処理回路１５からの顔の検出結果を基に、顔検出回路１４に対する顔検出パラメータを再計算する。この後、ステップＳ１１１に戻って、算出した顔検出パラメータを顔検出回路１４に設定し、次の画像からの顔検出処理を開始させる。
【００７７】
顔検出パラメータの再計算処理としては、以下のような手順が考えられる。例えば、プログラマブル信号処理回路１５で検出された顔領域の位置、サイズなどの情報を基に、顔検出回路１４での顔の探索範囲を限定する。このとき、プログラマブル信号処理回路１５で検出された顔の方向の情報を基にＣＰＵ２１が動きベクトルを算出し、その動きベクトルを基に顔検出回路１４での顔の探索範囲を指定してもよい。なお、算出された動きベクトルの情報を、画像ファイルの付随データとして記憶装置１８に記録する、あるいは外部機器に出力してもよい。
【００７８】
また、プログラマブル信号処理回路１５からの誤検出情報を基に、顔検出回路１４で誤検出された顔領域において顔の探索を行わないように制御してもよい。また、プログラマブル信号処理回路１５で検出された顔の向きや傾きの情報を基に、顔検出回路１４でのマッチング処理で使用する顔のテンプレートを必要性の高いものだけに限定するように制御してもよい。
【００７９】
以上の第１の顔検出処理では、顔検出回路１４によって、入力画像全体から検出漏れがないように大まかに顔領域を検出させることで、顔検出回路１４では顔検出処理が高速に実行される。また、その検出により得られた顔領域の周囲のみを顔の探索範囲として、プログラマブル信号処理回路１５によって高精度な顔検出処理が実行される。このプログラマブル信号処理回路１５は、顔領域を正確に検出して顔検出回路１４での検出結果を補正でき、それにもかかわらず、顔の探索範囲が限定されることから検出処理時間を短縮することができる。従って、例えばプログラマブル信号処理回路１５単体で顔検出を行った場合と同等の検出精度を保ちながら、その検出速度を大幅に高速化できる。例えば、このような顔の検出結果を用いて、検出された顔を追尾しながらのＡＦ制御やホワイトバランスなどの画質調整などを、比較的低負荷の処理で容易に実現できるようになる。
【００８０】
また、顔検出回路１４による検出結果を基にプログラマブル信号処理回路１５での顔の探索範囲を限定できることから、プログラマブル信号処理回路１５では、処理時間を増大させることなく、顔の向きや傾きなどの多様な検出結果を出力できるようにもなり、その検出結果の応用範囲を柔軟に拡張できる。
【００８１】
さらに、プログラマブル信号処理回路１５による検出結果を基に、次に顔検出回路１４に対して設定する顔検出パラメータを再計算することで、顔検出回路１４における処理を効率化して、その処理時間をも短縮することができる。例えば、一定時間の範囲で、プログラマブル信号処理回路１５で検出された顔領域の周囲のみを顔検出回路１４での次の入力画像における顔の探索領域として、処理時間を短縮した場合でも、隣接する入力画像間では相関が高いことから、その検出精度をある程度維持することができる。
【００８２】
また、上記の処理手順における顔検出回路１４またはプログラマブル信号処理回路１５での顔検出処理や、顔検出回路１４に対する顔検出パラメータの再計算処理などを、撮像装置に設定される動作モードに応じて選択的に実行するようにしてもよい。
【００８３】
例えば、静止画像記録モードの場合、ＣＰＵ２１は、記録操作前に撮像されている画像をモニタに表示させ、ユーザが画角合わせをしている状態では、ステップＳ１１２，Ｓ１１３における顔検出回路１４での顔検出処理のみを実行させて、その検出結果を基にＡＥ、ＡＦなどを制御する。これにより検出精度は劣るものの、画像を高速に表示でき、その間の消費電力も抑制できる。そして、例えばシャッタレリーズボタンが半押しされたときに、ステップＳ１１５，Ｓ１１６におけるプログラマブル信号処理回路１５での顔検出処理も実行して、正確な顔検出処理を行うようにしてもよい。さらに、動画像記録モードの場合には、ステップＳ１１９における顔検出回路１４に対する顔検出パラメータの再計算処理を例えば一定時間ごとに実行して、顔の検出精度を維持しつつも全体の処理負荷を低下させ、所定のフレームレートでの画像記録を確実に実行できるようにしてもよい。
【００８４】
なお、上記のフローチャートでは、顔検出回路１４での顔検出処理とプログラマブル信号処理回路１５での顔検出処理とを直列に実行したが、これらを並列に実行してもよい。例えば、顔検出回路１４では１フレームごとに顔検出が可能であるが、プログラマブル信号処理回路１５では１フレーム分の周期内で顔検出できない場合が考えられる。このような場合に、顔検出回路１４によって検出された大まかな顔領域の情報を毎フレームの検出結果としてＣＰＵ２１が出力するとともに、プログラマブル信号処理回路１５から数フレームごとに出力される正確な顔領域の情報を用いて、ＣＰＵ２１が顔検出回路１４による検出結果を補正する。プログラマブル信号処理回路１５では、顔検出回路１４による最新の検出結果を基に顔の探索範囲が指定されればよい。また、上記のステップＳ１１９の処理と同様に、プログラマブル信号処理回路１５での検出結果を基に、顔検出回路１４に対する顔検出パラメータを再設定してもよい。このような処理により、例えば動画像の記録時などにおいて、顔領域の検出結果を１フレームごとに確実に出力できるとともに、その検出結果の精度を高めることができる。
【００８５】
また、並列に処理する場合の他の例としては、顔検出回路１４において顔検出処理が実行されると、プログラマブル信号処理回路１５ではその検出結果を基に、次のフレームの画像から顔検出処理を実行する。このとき、プログラマブル信号処理回路１５での顔検出処理と同時に、顔検出回路１４において同じフレームの画像からの顔検出処理を開始させるようにする。あるいは、顔検出回路１４の方が短時間で処理できる場合には、顔検出回路１４は、自身による顔検出処理の終了タイミングが、プログラマブル信号処理回路１５での顔検出処理の終了タイミングに合うように、次以降のフレームからの顔検出処理を開始する。このような処理により、顔領域の検出結果を１フレームごとに確実に出力できるとともに、その検出結果の精度を高めることができるようになる。
【００８６】
［第２の顔検出処理］
図９は、第２の顔検出処理の概要を説明するための図である。
図９に示す第２の顔検出処理では、顔検出回路１４は、入力画像Ｐ２の全体から顔を検出し、その顔の全体が含まれる領域の情報を出力する（ステップＳ２０１）。また、プログラマブル信号処理回路１５は、入力画像Ｐ２から、目、口、口唇、鼻、眉、メガネ、マスクなど、顔の内部および周囲のパーツ（以下、単に「顔のパーツ」と呼ぶ。）の位置や状態（パーツの向き、傾き、形状など）を検出する（ステップＳ２０２）。このとき、プログラマブル信号処理回路１５は、入力画像Ｐ２のうち、顔検出回路１４によって検出された顔領域のみ、またはその周囲を含む領域のみを、顔のパーツの探索領域とすることで、パーツ検出に要する時間を短縮する。
【００８７】
さらに、顔検出回路１４では、顔の座標やサイズだけでなく、その顔の向きや傾きを検出できるようにしてもよい。これらの情報を顔検出パラメータとしてプログラマブル信号処理回路１５に設定するようにすれば、プログラマブル信号処理回路１５では、顔のパーツの向き、傾き、位置の偏りなどをあらかじめ知ることができるので、より高速かつ高精度にパーツ検出を実行できるようになる。また、プログラマブル信号処理回路１５は、顔のパーツの位置やその状態などの検出結果から、その顔の表情を評価した評価値を出力できるようにしてもよい。
【００８８】
図９の例では、顔検出回路１４での検出処理により、入力画像Ｐ２から顔領域Ａ２１〜Ａ２３が検出されており、顔領域Ａ２１では顔の向きが矢印によって示され、顔領域Ａ２３では顔の傾きが一点鎖線によって示されている。また、これらの領域のうち、顔領域Ａ２２からは、プログラマブル信号処理回路１５の処理により、顔のパーツとして目の領域Ａ２４およびＡ２５と口の領域Ａ２６とが検出されている。
【００８９】
なお、この第２の顔検出処理でも、第１の顔検出処理と同様に、顔検出回路１４およびプログラマブル信号処理回路１５において、同じ入力画像Ｐ２のデータを基に顔やパーツの検出処理が実行されることが望ましい。しかし実際の処理では、プログラマブル信号処理回路１５では、顔検出回路１４の検出対象の画像に対して１フレームまたは数フレーム分遅延した画像から検出が行われてもよい。
【００９０】
図１０は、撮像装置における第２の顔検出処理の流れを示すフローチャートである。
〔ステップＳ２１１〕ＣＰＵ２１は、顔検出回路１４に対して顔検出パラメータを設定する。
【００９１】
〔ステップＳ２１２〕顔検出回路１４のコントローラ４４は、ＣＰＵ２１からの顔検出パラメータに応じて拡大・縮小回路４１、画像メモリ４２および顔検出コア４３を制御し、画像ＲＡＭ１９から順次読み込んだ１フレーム分の画像データを基に、顔全体の領域を検出する処理を実行させる。
【００９２】
〔ステップＳ２１３〕顔検出回路１４での顔検出処理が終了すると、顔検出コア４３からＣＰＵ２１に対して顔の検出結果（顔領域の座標、サイズ、向き、傾きなど）が出力される。
【００９３】
〔ステップＳ２１４〕ＣＰＵ２１は、顔検出回路１４から供給された検出結果を基に、プログラマブル信号処理回路１５に対する顔検出パラメータを設定する。ここでは例えば、顔検出回路１４によって検出された顔領域とその周囲のみを顔の探索範囲とするように、プログラマブル信号処理回路１５に対して顔検出パラメータにより指示する。これとともに、その顔の向き、傾きなどの情報も通知する。
【００９４】
〔ステップＳ２１５〕プログラマブル信号処理回路１５のコントローラ５４は、ＣＰＵ２１からの顔検出パラメータに応じて、画像ＲＡＭ１９から読み込んだ画像データのうち、顔検出回路１４で検出された顔領域およびその周囲に対応するデータのみをＤＳＰ５２および５３（またはこれらの一方）に転送し、顔のパーツの顔検出処理および表情評価処理を実行させる。
【００９５】
〔ステップＳ２１６〕プログラマブル信号処理回路１５のコントローラ５４は、ＤＳＰ５２および５３から顔のパーツの検出結果や表情評価値を受け取り、ＣＰＵ２１に対して出力する。
【００９６】
〔ステップＳ２１７〕ＣＰＵ２１は、プログラマブル信号処理回路１５からパーツ検出結果や表情評価値を基に最終的な顔の検出結果を生成する。
なお、ステップＳ２１４〜Ｓ２１６の処理を、顔検出回路１４によって顔が検出された場合のみ実行してもよい。
【００９７】
〔ステップＳ２１８〕ＣＰＵ２１は、顔検出処理を終了するか否かを判断し、終了しない場合はステップＳ２１１に戻って、顔検出回路１４による顔検出処理を再度実行させる。
【００９８】
以上の第２の顔検出処理では、顔検出回路１４による顔領域の検出結果を基に、プログラマブル信号処理回路１５において探索領域を限定して顔のパーツが検出されるので、プログラマブル信号処理回路１５での処理時間が短縮され、顔のパーツの検出精度を維持しながらも検出処理を高速化できる。また、顔検出回路１４により検出された顔の向きや傾きの情報を、プログラマブル信号処理回路１５において制御パラメータとして使用できるようにすることで、プログラマブル信号処理回路１５での検出処理が一層効率化され、処理速度を向上させることができる。
【００９９】
また、プログラマブル信号処理回路１５では、どのパーツを検出するか、そのパーツの位置、大きさ、状態などのうちどの情報を検出結果とするか、それらの検出結果に基づいてどんな表情を評価するかといったことを、ＣＰＵ２１からの制御パラメータや、あるいは実行するプログラムを変更することにより適宜変更できる。このような変更は、例えばユーザ操作による撮像モードの選択に応じて行ったり、撮像中の状況に応じて自動的に行うことができる。
【０１００】
プログラマブル信号処理回路１５では例えば、顔のパーツの状態から、笑顔や真剣な顔などの表情を判定したり、その度合いを評価することができる。このような判定・評価結果は、ＣＰＵ２１の制御により例えば、人物のポートレート撮像の際に、その人物の表情が笑顔になったときに自動的にシャッタを切る、あるいは、証明写真を撮像する際に笑っていない顔を自動的に撮像するといった制御に利用することができる。
【０１０１】
また、ＣＰＵ２１の制御により、目の状態の検出結果からまばたきをしているか否かを判定し、撮像されているすべての人物がまばたきをしていないタイミングで自動的にシャッタを切るようにすることもできる。また、目の状態の検出結果から被写体の人物が注視している方向を推定し、撮像レンズを注視しているときにのみシャッタを切ることを可能とすることもできる。また、目の状態の検出結果から、いわゆる赤目の状態や眼球から光が反射している場合など、目の部分の色が好ましくない場合を検出して、シャッタ動作を制御する、あるいは撮像された画像の色補正を行うことも可能になる。
【０１０２】
また、口や口唇の部分の状態の検出結果から被写体の人物が発話しているか否かを判定し、発話している場合に自動的にマイクロフォンをオンにしたり、その判定結果をシャッタ動作のタイミング制御に利用することもできる。
【０１０３】
このように、この撮像装置では、内部構成を変更することなく、付加価値の高い様々な機能を搭載できるようになり、低価格で高機能の商品が実現される。また、新製品の発売の際にも、基本構成を変えることなく柔軟に仕様を変更できるようになる。
【０１０４】
なお、この第２の顔検出処理においても、上記のフローチャートのように、顔検出回路１４およびプログラマブル信号処理回路１５での各顔検出処理を直列に実行するのではなく、これらを並列に実行してもよい。例えば、顔検出回路１４において顔検出処理が実行されると、プログラマブル信号処理回路１５ではその検出結果を基に、次のフレームの画像から顔検出処理を実行する。このとき、プログラマブル信号処理回路１５での顔検出処理と同時に、顔検出回路１４において同じフレームの画像からの顔検出処理を開始させるようにする。あるいは、顔検出回路１４の方が短時間で処理できる場合には、顔検出回路１４は、自身による顔検出処理の終了タイミングが、プログラマブル信号処理回路１５での顔検出処理の終了タイミングに合うように、次以降のフレームからの顔検出処理を開始する。このような処理により、顔のパーツの検出結果を１フレームごとに確実に出力できるようになるとともに、その検出結果の精度を高めることができる。
【０１０５】
［第３の顔検出処理］
図１１は、第３の顔検出処理の概要を説明するための図である。
図１１に示す第３の顔検出処理では、顔検出回路１４は、入力画像Ｐ３のデータのうち輝度情報のみから顔を検出する（ステップＳ３０１）。一方、プログラマブル信号処理回路１５は、入力画像Ｐ３の中の肌色領域を示す情報を基に顔を検出する（ステップＳ３０２）。例えば、肌色の色相の領域を検出し、その領域またはその周囲を含む領域から、顔検出回路１４とは異なる検出アルゴリズムにより顔を検出する。あるいは、検出した肌色領域自体を顔領域として検出してもよい。
【０１０６】
ＣＰＵ２１は、各ブロックからの検出結果を加味して最終的な顔領域を判定し（ステップＳ３０３）、これにより高精度な顔検出を実現する。例えば、顔検出回路１４では、輝度情報のみを利用して顔を検出する構成とすることで処理速度を向上させることができるが、その反面、顔の誤検出や検出漏れが発生する場合があり得る。このような場合に、肌色領域の検出を基に顔をより正確に検出して、顔検出回路１４での検出結果を補完することができる。
【０１０７】
図１１の例では、顔検出回路１４により検出された顔領域Ａ３１では、肌の色と同じ明るさや模様の領域を顔であると誤検出している。しかし、プログラマブル信号処理回路１５での顔検出により、顔領域Ａ３１が誤って検出されたものであることがわかり、この顔領域Ａ３１を最終的に検出結果から除去できる。また、プログラマブル信号処理回路１５では顔領域Ａ３２が検出されているが、顔検出回路１４ではこれに対応する領域からは顔が検出されていない。この領域では帽子により顔の一部が隠れているために、顔検出回路１４において検出漏れが発生したと考えられるが、プログラマブル信号処理回路１５での顔検出によりこのような検出漏れが防止される。
【０１０８】
以上の例では、一方の検出アルゴリズムの弱点を他方の検出アルゴリズムでの検出結果により補完しているが、互いの検出アルゴリズムの弱点を補完し合うようにＣＰＵ２１が制御してもよい。さらに、ＣＰＵ２１は、各ブロックからの検出結果を基に、各ブロックに対する顔検出パラメータを再設定し、より効率よく顔検出が実行されるようにしてもよい。
【０１０９】
図１２は、撮像装置における第３の顔検出処理の流れを示すフローチャートである。
〔ステップＳ３１１〕ＣＰＵ２１は、顔検出回路１４に対して顔検出パラメータを設定する。
【０１１０】
〔ステップＳ３１２〕顔検出回路１４のコントローラ４４は、ＣＰＵ２１からの顔検出パラメータに応じて拡大・縮小回路４１、画像メモリ４２および顔検出コア４３を制御し、画像ＲＡＭ１９から順次読み込んだ１フレーム分の輝度情報を基に顔領域を検出する処理を実行させる。
【０１１１】
〔ステップＳ３１３〕顔検出回路１４での顔検出処理が終了すると、顔検出コア４３からＣＰＵ２１に対して顔の検出結果（顔領域の座標、サイズなど）が出力される。
〔ステップＳ３１４〕一方、ＣＰＵ２１は、ステップＳ３１１の処理と並行して、プログラマブル信号処理回路１５に対して顔検出パラメータを設定する。
【０１１２】
〔ステップＳ３１５〕プログラマブル信号処理回路１５のコントローラ５４は、ＣＰＵ２１からの顔検出パラメータに応じて、画像ＲＡＭ１９から読み込んだ画像データをＤＳＰ５２および５３（またはこれらの一方）に転送し、肌色領域に基づく顔検出処理を実行させる。
【０１１３】
なお、上述したように、プログラマブル信号処理回路１５では、例えば、入力画像の色成分から肌色の色相の領域を検出し、その領域またはその周囲を含む領域から、顔検出回路１４とは異なる検出アルゴリズムにより顔を検出する。あるいは、その領域から顔検出回路１４とは異なる信号成分（色差成分など）を基に顔を検出してもよい。
【０１１４】
また、肌色領域は、プログラマブル信号処理回路１５ではなく、例えばカメラ信号処理回路１３がホワイトバランス調整などのために従来から備えている検波機能により検波されてもよい。この場合、ＣＰＵ２１は、この検波機能により検出された肌色領域またはその周囲を含む領域を顔の探索領域とするように、プログラマブル信号処理回路１５に指定する。
【０１１５】
〔ステップＳ３１６〕プログラマブル信号処理回路１５のコントローラ５４は、ＤＳＰ５２および５３から顔領域の検出結果を受け取り、ＣＰＵ２１に対して出力する。
〔ステップＳ３１７〕ＣＰＵ２１は、顔検出回路１４およびプログラマブル信号処理回路１５からの各検出結果を基に、最終的な検出結果を生成する。
【０１１６】
〔ステップＳ３１８〕ＣＰＵ２１は、顔検出処理を終了するか否かを判断し、終了しない場合はステップＳ３１９の処理を実行する。
〔ステップＳ３１９〕ＣＰＵ２１は、顔検出回路１４およびプログラマブル信号処理回路１５からの各検出結果を基に、それぞれのブロックに対する顔検出パラメータを再計算する。この後、ステップＳ３１１およびＳ３１４に戻って、算出した顔検出パラメータを各ブロックに設定し、次の画像からの顔検出処理を開始させる。
【０１１７】
以上のように、顔検出回路１４およびプログラマブル信号処理回路１５での顔検出処理は、それぞれ並列に実行され、それらの処理による検出結果を基にＣＰＵ２１によって最終的な検出結果が得られる。これにより、一方のブロック、あるいは互いのブロックによる検出アルゴリズムの弱点をＣＰＵ２１の処理により補完して、顔領域を正確に検出することができる。
【０１１８】
また、上記のフローチャートでは、顔検出回路１４およびプログラマブル信号処理回路１５での顔検出処理をそれぞれ１回ずつ並列に実行していたが、例えば顔検出処理による処理の方が短時間で処理できる場合には、プログラマブル信号処理回路１５が１フレーム分の顔検出処理を行う間に、顔検出回路１４が複数フレーム分の顔検出処理を行うようにしてもよい。この場合、ＣＰＵ２１は例えば、顔検出回路１４から検出結果が出力されるたびに、その検出結果と、プログラマブル信号処理回路１５からの最新の検出結果とを基に最終的な検出結果を生成する。このような処理により、例えば動画像の記録時などにおいて、顔領域の検出結果を１フレームごとに確実に出力できるとともに、その検出結果の精度を高めることができる。
【０１１９】
また、ステップＳ３１９での顔検出パラメータの再計算処理により、顔検出回路１４およびプログラマブル信号処理回路１５での顔検出処理を効率化することができる。例えば、プログラマブル信号処理回路１５は、検出によって得られた顔領域の情報とともに肌色領域の情報をＣＰＵ２１に出力するようにし、ＣＰＵ２１は、例えばその後の所定回数については入力画像から肌色領域を含む部分的な領域のみを顔の探索範囲とするように、プログラマブル信号処理回路１５に対する顔検出パラメータを再計算する。これにより、プログラマブル信号処理回路１５での処理時間を短縮することができる。なお、このような機能は、ＣＰＵ２１の制御ではなく、プログラマブル信号処理回路１５で実行されている検出プログラムによって実現されていてもよい。
【０１２０】
さらに例えば、顔検出回路１４に対しても肌色領域を含む部分的な領域のみを顔の探索範囲とし、これとともに顔の検出精度を高めるように顔検出パラメータを再設定してもよい。この場合、顔検出回路１４は例えば一定回数ごとに入力画像の全面から顔検出を行い、その間には肌色領域に基づく探索範囲のみから顔を検出する。このように、２つの処理ブロックで異なるアルゴリズムを用いて顔を検出したり、あるいは異なる画像成分を基に顔を検出する場合などには、一方のブロックの検出結果を他方のブロックでの顔検出処理に反映させることで、全体での検出速度を高めつつ、検出精度を向上させることができる。
【０１２１】
また、上記の処理手順における顔検出回路１４またはプログラマブル信号処理回路１５での顔検出処理や、顔検出回路１４に対する顔検出パラメータの再計算処理などを、撮像装置に設定される動作モードに応じて選択的に実行するようにしてもよい。
【０１２２】
例えば、静止画像記録モードの場合、ＣＰＵ２１は、記録操作前に撮像されている画像をモニタに表示させ、ユーザが画角合わせをしている状態では、ステップＳ３１２，Ｓ３１３における顔検出回路１４での顔検出処理のみを実行させて、その検出結果を基にＡＥ、ＡＦなどを制御する。これにより検出精度は劣るものの、画像を高速に表示でき、その間の消費電力も抑制できる。そして、例えばシャッタレリーズボタンが半押しされたときに、ステップＳ３１５，Ｓ３１６におけるプログラマブル信号処理回路１５での顔検出処理も並列に実行して、各ブロックからの検出結果を基に正確な顔検出処理を行うようにしてもよい。さらに、動画像記録モードの場合には、ステップＳ３１９における顔検出回路１４に対する顔検出パラメータの再計算処理を例えば一定時間ごとに実行して、顔の検出精度を維持しつつも全体の処理負荷を低下させ、所定のフレームレートでの画像記録を確実に実行できるようにしてもよい。
【０１２３】
［第４の顔検出処理］
図１３は、第４の顔検出処理の概要を説明するための図である。
第４の顔検出処理は、入力画像から特定の人物、あるいは特定の性質を持つ人物の顔を検出するものである。図１３に示すように、顔検出回路１４は、入力画像Ｐ４の全体から特に人物や性質などを特定せずに一般的な顔検出を行い、顔領域の座標やサイズ、顔の向き、傾きなどを出力する（ステップＳ４０１）。プログラマブル信号処理回路１５は、入力画像Ｐ４から、特定の人物や特定の性質を持つ人物の顔を検出する（ステップＳ４０２）。このとき、プログラマブル信号処理回路１５は、入力画像Ｐ４のうち、顔検出回路１４によって検出された顔領域、またはその周囲を含む領域のみを顔の探索領域とすることで、顔検出に要する時間が短縮される。
【０１２４】
図１３の例では、顔検出回路１４での一般的な顔の検出処理により、入力画像Ｐ４から顔領域Ａ４１〜Ａ４３が検出されている。また、プログラマブル信号処理回路１５は、これらのうち顔領域Ａ４１に含まれる顔を、特定の人物のものと判定している。
【０１２５】
また、顔検出回路１４では、顔の座標やサイズだけでなく、その顔の向きや傾きを検出できるようにしてもよい。これらの情報を顔検出パラメータとしてプログラマブル信号処理回路１５に設定するようにすれば、プログラマブル信号処理回路１５では、顔のパーツの向き、傾き、位置の偏りなどをあらかじめ知ることができるので、より高速かつ高精度に顔検出を実行できるようになる。
【０１２６】
さらに、検出する人物や、その人物が持つ特定の性質については、ユーザ操作などによって選択できるようにしてもよい。この場合、次の図１４でも説明するように、プログラマブル信号処理回路１５において、それらの選択に応じた顔検出用データベース（例えば顔のテンプレートなどを含む）が切り替えられて用いられる。一方、顔検出回路１４では、特定の人物やその性質などに依存しない一般的な顔を検出するためのデータベースのみが用いられる。
【０１２７】
なお、この第４の顔検出処理でも、第１および第２の顔検出処理と同様に、顔検出回路１４およびプログラマブル信号処理回路１５において、同じ入力画像Ｐ４のデータを基に顔検出処理が実行されることが望ましい。しかし実際の処理では、プログラマブル信号処理回路１５では、顔検出回路１４の検出対象の画像に対して１フレームまたは数フレーム分遅延した画像から検出が行われてもよい。
【０１２８】
図１４は、撮像装置における第４の顔検出処理の流れを示すフローチャートである。
この図１４の処理では、特定の性質を持つ顔を検出する場合の例として、女性の顔、乳幼児の顔、東洋人の顔のいずれかを、ユーザの選択操作に応じて検出できるようになっている。
【０１２９】
〔ステップＳ４１１〕ＣＰＵ２１は、顔検出回路１４に対して顔検出パラメータを設定する。
〔ステップＳ４１２〕顔検出回路１４のコントローラ４４は、ＣＰＵ２１からの顔検出パラメータに応じて拡大・縮小回路４１、画像メモリ４２および顔検出コア４３を制御し、画像ＲＡＭ１９から順次読み込んだ１フレーム分の画像データを基に、一般的な顔を検出する処理を実行させる。
【０１３０】
〔ステップＳ４１３〕顔検出回路１４での顔検出処理が終了すると、顔検出コア４３からＣＰＵ２１に対して顔の検出結果（例えば顔領域の座標、サイズ、顔の向き、傾きなど）が出力される。
【０１３１】
〔ステップＳ４１４〕ＣＰＵ２１は、ユーザによってどのような性質を持つ顔を検出するように設定されているかを判断する。女性の顔を検出するように設定されている場合はステップＳ４１５の処理を実行する。乳幼児の顔を検出するように設定されている場合はステップＳ４１８の処理を実行する。東洋人の顔を検出するように設定されている場合はステップＳ４２１の処理を実行する。
【０１３２】
〔ステップＳ４１５〕ＣＰＵ２１は、プログラマブル信号処理回路１５に対して、女性の顔を検出するための顔検出パラメータを設定する。ここでは例えば、顔検出回路１４によって検出された顔領域とその周囲のみを顔の探索範囲とするように、プログラマブル信号処理回路１５に対して顔検出パラメータにより指示する。これとともに、その顔の向き、傾きなどの情報も通知する。さらに、女性の顔検出用データベースを設定する。このデータベースには、例えば女性の顔の特徴点の情報などが記録されている。
【０１３３】
〔ステップＳ４１６〕顔検出回路１４のコントローラ４４は、ＣＰＵ２１からの顔検出パラメータに応じて拡大・縮小回路４１、画像メモリ４２および顔検出コア４３を制御し、画像ＲＡＭ１９から順次読み込んだ１フレーム分の画像データを基に、女性の顔検出用データベースを用いた顔検出処理を実行させる。
【０１３４】
〔ステップＳ４１７〕プログラマブル信号処理回路１５のコントローラ５４は、ＤＳＰ５２および５３から顔の検出結果を受け取り、ＣＰＵ２１に対して出力する。
〔ステップＳ４１８〜Ｓ４２０〕これらのステップの処理は、それぞれステップＳ４１５〜Ｓ４１７の処理とほぼ同じである。異なる点は、ステップＳ４１８において、ＣＰＵ２１が、乳幼児の顔検出用データベースを顔検出パラメータによりプログラマブル信号処理回路１５に設定し、ステップＳ４１９において、プログラマブル信号処理回路１５がこのデータベースを用いて顔検出を行う点である。
【０１３５】
〔ステップＳ４２１〜Ｓ４２３〕これらのステップの処理は、それぞれステップＳ４１５〜Ｓ４１７の処理とほぼ同じである。異なる点は、ステップＳ４２１において、ＣＰＵ２１が、東洋人の顔検出用データベースを顔検出パラメータによりプログラマブル信号処理回路１５に設定し、ステップＳ４２２において、プログラマブル信号処理回路１５がこのデータベースを用いて顔検出を行う点である。
【０１３６】
なお、上記のステップＳ４１５〜Ｓ４２３においては、例えば、女性、乳幼児、東洋人の顔の検出にそれぞれ特化した顔検出用データベースをあらかじめプログラマブル信号処理回路１５のＲＡＭ５１にロードしておき、どのデータベースを使用するかが顔検出パラメータによってＣＰＵ２１からプログラマブル信号処理回路１５に指示される。あるいは、ユーザ選択に応じた顔検出データベースが、ＣＰＵ２１の処理によりＥＥＰＲＯＭ２２から読み出され、プログラマブル信号処理回路１５にロードされてもよい。あるいは、ユーザ選択に応じた顔検出データベースが単に選択されるのではなく、検出対象とする顔の特性ごとに別の顔検出プログラムがプログラマブル信号処理回路１５で実行されるようにしてもよい。
【０１３７】
〔ステップＳ４２４〕ＣＰＵ２１は、プログラマブル信号処理回路１５からの顔の検出結果を基に最終的な顔の検出結果（顔の座標、サイズなど）を生成する。
なお、ステップＳ４１４〜Ｓ４２４の処理を、顔検出回路１４によって顔が検出された場合のみ実行してもよい。
【０１３８】
〔ステップＳ４２５〕ＣＰＵ２１は、顔検出処理を終了するか否かを判断し、終了しない場合はステップＳ４２６の処理を実行する。
〔ステップＳ４２６〕ＣＰＵ２１は、顔検出回路１４およびプログラマブル信号処理回路１５からの顔の検出結果を基に、各ブロックに対する顔検出パラメータを再計算する。この後、ステップＳ４１１に進んで、算出した顔検出パラメータを顔検出回路１４に設定し、次の画像からの顔検出処理を開始させる。また、その後のステップＳ４１５，Ｓ４１８，Ｓ４２１のいずれかの処理では、ステップＳ４２６で算出した顔検出パラメータをプログラマブル信号処理回路１５に対して設定する。
【０１３９】
以上の第４の顔検出処理では、顔検出回路１４による顔領域の検出結果を基に、プログラマブル信号処理回路１５において探索領域を限定して顔が検出されるので、プログラマブル信号処理回路１５での処理時間が短縮され、顔の検出精度を維持しながらも検出処理を高速化できる。また特に、顔検出回路１４によりすでに顔が存在していると判定されている領域から、プログラマブル信号処理回路１５においてより細かい検出が行われるので、処理負荷を高めることなく、より精度の高い顔検出を行うことが可能となる。
【０１４０】
さらに、プログラマブル信号処理回路１５では、ユーザによる設定に応じて、検出対象の人物や顔の性質などを変更できるので、この撮像装置の内部構成を変更することなく、機能性を高めることができる。また、同じ基本構成の回路によって、仕様の異なる様々な製品に応用できるようにもなり、多くの製品の開発・製造コストを抑制できる。
【０１４１】
なお、この第４の顔検出処理においても、上記のフローチャートのように、顔検出回路１４およびプログラマブル信号処理回路１５での各顔検出処理を直列に実行するのではなく、これらを並列に実行してもよい。例えば、顔検出回路１４において顔検出処理が実行されると、プログラマブル信号処理回路１５ではその検出結果を基に、次のフレームの画像から顔検出処理を実行する。このとき、プログラマブル信号処理回路１５での顔検出処理と同時に、顔検出回路１４において同じフレームの画像からの顔検出処理を開始させるようにする。あるいは、顔検出回路１４の方が短時間で処理できる場合には、顔検出回路１４は、自身による顔検出処理の終了タイミングが、プログラマブル信号処理回路１５での顔検出処理の終了タイミングに合うように、次以降のフレームからの顔検出処理を開始する。このような処理により、特定の人物や特定の性質を持つ顔の検出結果を１フレームごとに確実に出力できるようになるとともに、その検出結果の精度を高めることができる。
【０１４２】
［他の実施の形態］
図１５は、本発明の他の実施の形態に係る画像記録再生装置の構成を示すブロック図である。なお、この図１５では、図１に対応するブロックには同じ符号を付して示している。
【０１４３】
本発明は、上述したような撮像装置だけでなく、図１５に示すような撮像機能を持たない画像記録再生装置に対して適用することもできる。この画像記録再生装置は、例えばビデオレコーダなどとして実現される。この場合、テレビ放送の受信信号などから得た動画像データが、画像バス２０を介して画像圧縮・伸張回路１７に入力されて圧縮符号化されて、動画像ファイルとして記憶装置１８に記憶される。また、このような動画像ファイルを記憶装置１８から読み出して、画像圧縮・伸張回路１７によって伸張復号化した後、画像処理回路２５によって例えば各種の画質補正処理を施し、表示処理回路１６に出力することで、画質補正後の再生画像を図示しないモニタに表示することができる。
【０１４４】
このような動画像再生時において、伸張復号化された画像データを、画像ＲＡＭ１９を介して顔検出回路１４およびプログラマブル信号処理回路１５に供給して、上述した各顔検出処理手順により再生画像から顔を検出することができる。顔の検出結果は、例えば、検出された顔の部分の色がより適切になるように、画像全体の色を画像処理回路２５で補正するなどの用途に用いることができる。
【０１４５】
このような画像記録再生装置においても、上記の顔検出処理手順で説明したように、高速かつ高精度な顔の検出を行うことが可能になる。また、顔の検出結果の使用目的や、必要な検出精度、検出情報などに応じて、プログラマブル信号処理回路１５での検出処理手順や検出設定を柔軟に変化させることができる。
【０１４６】
なお、この例では記憶媒体に画像を記録できる装置としたが、例えば可搬型の記憶媒体に記憶された画像データを再生するビデオプレーヤに本発明を適用することもできる。また、他の撮像機器において撮像された、あるいはネットワークを介して受信した画像ファイルを一旦記憶装置１８に蓄積し、その画像ファイルを再生可能な再生機器に本発明を適用することもできる。さらに例えば、他の機器から画像ファイルの供給を受けてその再生画像を印刷するプリンタなどにも、本発明を適用することができる。
【図面の簡単な説明】
【０１４７】
【図１】本発明の実施の形態に係る撮像装置の要部構成を示すブロック図である。
【図２】顔検出回路の内部構成例を示すブロック図である。
【図３】顔検出回路による基本的な顔検出処理の流れを示すフローチャートである。
【図４】撮像時の画角と顔の探索角度との関係を説明するための図である。
【図５】顔の探索角度の定義の一例を示す図である。
【図６】プログラマブル信号処理回路の内部構成例を示すブロック図である。
【図７】第１の顔検出処理の概要を説明するための図である。
【図８】撮像装置における第１の顔検出処理の流れを示すフローチャートである。
【図９】第２の顔検出処理の概要を説明するための図である。
【図１０】撮像装置における第２の顔検出処理の流れを示すフローチャートである。
【図１１】第３の顔検出処理の概要を説明するための図である。
【図１２】撮像装置における第３の顔検出処理の流れを示すフローチャートである。
【図１３】第４の顔検出処理の概要を説明するための図である。
【図１４】撮像装置における第４の顔検出処理の流れを示すフローチャートである。
【図１５】本発明の他の実施の形態に係る画像記録再生装置の構成を示すブロック図である。
【符号の説明】
【０１４８】
１１……光学ブロック、１２……イメージセンサ、１３……カメラ信号処理回路、１４……顔検出回路、１５……プログラマブル信号処理回路、１６……表示処理回路、１７……画像圧縮・伸張回路、１８……記憶装置、１９……画像ＲＡＭ、２０……画像バス、２１……ＣＰＵ、２２……ＥＥＰＲＯＭ、２３，５１……ＲＡＭ、２４……重力方向センサ、４１……拡大・縮小回路、４２……画像メモリ、４３……顔検出コア、４４，５４……コントローラ、５２，５３……ＤＳＰ
【図１】
2008040709.tif 000003
【図２】
2008040709.tif 000004
【図３】
2008040709.tif 000005
【図４】
2008040709.tif 000006
【図５】
2008040709.tif 000007
【図６】
2008040709.tif 000008
【図７】
2008040709.tif 000009
【図８】
2008040709.tif 000010
【図９】
2008040709.tif 000011
【図１０】
2008040709.tif 000012
【図１１】
2008040709.tif 000013
【図１２】
2008040709.tif 000014
【図１３】
2008040709.tif 000015
【図１４】
2008040709.tif 000016
【図１５】
2008040709.tif 000017