本発明にかかる実施形態を、図面を参照して以下に説明する。本実施形態では、本発明をデジタルスチルカメラ(以下、デジタルカメラ)によって実現した場合を例示する。本実施形態にかかるデジタルカメラ1は、一般的なデジタルスチルカメラが有する機能に加え、ファインダ画面上で特定の被写体部分を検出し、検出された被写体部分に合わせた撮像設定をおこなう機能を備えているものとする。本実施形態では、ファインダ画面上にある人物の顔を被写体部分として検出するものとする。すなわち、本実施形態にかかるデジタルカメラ1は、いわゆる顔検出機能を備えたデジタルスチルカメラである。
図1は、本発明の実施形態にかかるデジタルカメラ1の構成を示すブロック図である。本実施形態にかかるデジタルカメラ1の概略的構成は、図示するように、撮像部100、データ処理部200、インタフェース(I/F)部300、などである。
撮像部100は、デジタルカメラ1の撮像動作をおこなう部分であり、図示するように、光学装置110やイメージセンサ部120などから構成されている。
光学装置110は、例えば、レンズ、絞り機構、シャッタ機構、などを含み、撮像にかかる光学的動作をおこなう。すなわち、光学装置110の動作により、入射光が集光されるとともに、焦点距離、絞り、シャッタスピードなどといった、画角やピント、露出などにかかる光学的要素の調整がなされる。なお、光学装置110に含まれるシャッタ機構はいわゆる機械式のシャッタ装置であり、イメージセンサによってシャッタ動作をおこなう場合には、光学装置110にシャッタ機構が含まれていなくてもよい。また、光学装置110は、後述する制御部210による制御によって動作する。
イメージセンサ部120は、光学装置110によって集光された入射光に応じた電気信号を生成する、例えば、CCD(Charge Coupled Device:電荷結合素子)やCMOS(Complementally Metal Oxide Semiconductor:相補型金属酸化物半導体)などのイメージセンサから構成される。イメージセンサ部120は、光電変換をおこなうことで、受光に応じた電気信号を発生してデータ処理部200に出力する。
なお、デジタルカメラ1のビューファインダとして、液晶画面(後述する表示部310など)やEVF(Electronic View Finder)などが用いられる場合、イメージセンサ部120が低解像度の画像信号を常時出力することで、いわゆるライブビュー画像(レックスルー画像)がファインダ画面として表示されるものとする。本実施形態では、後述する表示部310をファインダ画面として用いるものとし、デジタルカメラ1での撮像動作時には、レックスルー画像を表示部310のファインダ画面に表示してライブビュー機能が実現されるものとする。
このようなライブビュー機能で表示されるレックスルー画像は、通常、画質より表示速度が重視されるので、処理負荷が低くなるよう比較的サイズの小さい画像(低解像度画像)を用いる。本実施形態では、シャッタ操作による撮像時以外は、640×480のVGA(Video Graphics Array)画像をイメージセンサ部120が出力するものとし、このVGA画像をライブビュー用のレックスルー画像として用いるものとする。なお、レックスルー画像のサイズ(解像度)は、ライブビュー画像を表示する表示装置の性能(解像度など)に応じて規定されるものとする。すなわち、出力する表示装置において、ファインダとして利用できる画像品質と表示速度が得られる程度の解像度(サイズ)とする。
データ処理部200は、撮像部100による撮像動作によって生成された電気信号を処理し、撮像画像を示すデジタルデータを生成するとともに、撮像画像に対する画像処理などをおこなう。図1に示すように、データ処理部200は、制御部210、画像処理部220、画像メモリ230、画像出力部240、記憶部250、外部記憶部260、などから構成される。
制御部210は、例えば、CPU(Central Processing Unit:中央演算処理装置)などのプロセッサやRAM(Random Access Memory)などの主記憶装置などから構成され、後述する記憶部250などに格納されているプログラムを実行することで、デジタルカメラ1の各部を制御する。また、本実施形態では、所定のプログラムを実行することで、後述する各処理にかかる機能が制御部210によって実現される。
画像処理部220は、例えば、ADC(Analog-Digital Converter:アナログ−デジタル変換器)、バッファメモリ、画像処理用のプロセッサ(いわゆる、画像処理エンジン)などから構成され、撮像部100によって生成された電気信号に基づいて、撮像画像を示すデジタルデータを生成する。
すなわち、イメージセンサ部120から出力されたアナログ電気信号をADCがデジタル信号に変換して順次バッファメモリに格納すると、画像処理エンジンがバッファされたデジタルデータに対し、いわゆる現像処理などをおこなうことで、画質の調整やデータ圧縮などをおこなう。
画像メモリ230は、例えば、RAMやフラッシュメモリなどの記憶装置から構成され、画像処理部220によって生成された撮像画像データや、制御部210によって処理される画像データなどを一時的に格納する。本実施形態では、ファインダ用のライブビュー画像としてイメージセンサ部120から出力された画像データを一時的に格納し、格納した画像データを用いて顔検出のための処理がおこなわれるものとする。
画像出力部240は、例えば、RGB信号の生成回路などから構成され、画像メモリ230に展開された画像データをRGB信号などに変換して表示画面(後述する表示部310など)に出力する。
記憶部250は、例えば、ROM(Read Only Memory)やフラッシュメモリなどの記憶装置から構成され、デジタルカメラ1の動作に必要なプログラムやデータなどを格納する。本実施形態では、制御部210などが実行する動作プログラムなどが記憶部250に格納されているものとする。
外部記憶部260は、例えば、メモリカードなどといった、デジタルカメラ1に着脱可能な記憶装置から構成され、デジタルカメラ1で撮像した画像データなどを格納する。
インタフェース部300は、デジタルカメラ1とその使用者あるいは外部装置とのインタフェースにかかる構成であり、図1に示すように、表示部310、外部インタフェース(I/F)部320、操作部330、などから構成される。
表示部310は、例えば、液晶表示装置などから構成され、デジタルカメラ1を操作するために必要な種々の画面や、撮影時のライブビュー画像、撮像画像、などを表示出力する。本実施形態では、画像出力部240からの画像信号(RGB信号)などに基づいて撮像画像等の表示出力がおこなわれる。
外部インタフェース部320は、例えば、USB(Universal Serial Bus)コネクタやビデオ出力端子などから構成され、外部のコンピュータ装置への画像データの出力や、外部のモニタ装置への撮像画像の表示出力などをおこなう。
操作部330は、デジタルカメラ1の外面上に構成されている各種ボタンなどによって構成され、デジタルカメラ1の使用者による操作に応じた入力信号を生成して制御部210に入力する。操作部330を構成するボタンとして、例えば、シャッタ動作を指示するためのシャッタボタンや、デジタルカメラ1のもつ動作モードを指定するためのモードボタン、各種設定をおこなうための十字キーや機能ボタン、などが含まれているものとする。
ここで、データ処理部200の画像メモリ230についての詳細を、図2(a)を参照して説明する。ここでは、デジタルカメラ1の顔検出機能にかかる処理に必要となる画像メモリ230の構成を説明する。つまり、デジタルカメラ1で顔検出機能が実行される場合、本実施形態にかかる画像メモリ230には、図2(a)に示すような記憶領域が確保される。図示するように、画像メモリ230には、入力画像格納領域230a、検出用画像格納領域230b、検出用画像格納領域230c、などの記憶領域が用意され、各記憶領域に応じた画像データが格納される。
入力画像格納領域230aは、イメージセンサ部120から出力されるライブビュー用のVGA画像を順次格納する記憶領域である。
検出用画像格納領域230bは、顔検出機能にかかる顔検出をおこなうための検出用画像を格納する記憶領域である。本実施形態では、入力画像格納領域230aにライブビュー用のレックスルー画像(スルー画像)として格納したVGA画像を輝度画像に変換したもの(以下、「検出用スルー画像PL」とする)が検出用画像格納領域230bに格納される。検出用画像格納領域230bに格納される検出用スルー画像PLの例を図3に示す。
検出用画像格納領域230cは、顔検出機能にかかる顔検出をおこなうための、よりサイズの小さい検出用画像を格納する記憶領域である。本実施形態では、検出用画像格納領域230bに格納した検出用スルー画像PLをより小さいサイズ(すなわち、VGAより小さいサイズ)に縮小変換したもの(以下、検出用縮小画像PS」とする)が検出用画像格納領域230cに格納される。検出用画像格納領域230cに格納される検出用縮小画像PSの例を図3に示す。
本実施形態では、この検出用画像格納領域230cに格納された検出用縮小画像PSによって、従来の顔検出技術で用いられているような画像ピラミッドを作成する。したがって、検出用画像格納領域230cには、VGAより小さいサイズとして、例えば、320×240のQVGA(Quarter-VGA)画像が格納されるとともに、図3に示すように、画像ピラミッドを作成する処理の進行に応じて、QVGA画像をさらに縮小した画像が順次格納される。ここでは、QVGAサイズの検出用縮小画像PSを検出用縮小画像PS0とし、以下、縮小をおこなった回数に応じて、検出用縮小画像PS1、検出用縮小画像PS2…、検出用縮小画像PSnと表す。
次に、データ処理部200の記憶部250についての詳細を、図2(b)を参照して説明する。ここでは、デジタルカメラ1の顔検出機能にかかる処理に必要となる記憶部250の構成を説明する。つまり、デジタルカメラ1で顔検出機能を実現するために、本実施形態にかかる記憶部250には、図2(b)に示すような記憶領域が確保される。
図示するように、記憶部250には、参照用画像格納領域250a、参照用画像格納領域250b、プログラム格納領域250c、などの記憶領域が用意され、各記憶領域に応じた画像データが格納される。
参照用画像格納領域250aおよび参照用画像格納領域250bは、顔検出をおこなう際に参照される参照用画像を格納する記憶領域である。ここで、本実施形態にかかる顔検出機能は、従来の顔検出技術と同様、予め用意されている顔画像を参照画像とし、検出用画像上に設定したサブウィンドウの画像と参照画像が示す特徴部分とを比較することで、検出用画像上に顔に相当する部分があるか検索する。参照用画像格納領域250aおよび参照用画像格納領域250bは、このときに参照される顔画像を予め格納したものである。
本実施形態では、顔検出の際に参照される顔画像を示した参照用画像を2種類用意し、それぞれ参照用画像格納領域250aと参照用画像格納領域250bに格納する。ここで、参照用画像格納領域250aに格納されている参照用画像の例を図4(a)に示す。
図示するように、参照用画像格納領域250aには、例えば、検出時に設定されるサブウィンドウサイズ(例えば、24×24ドット)の顔画像が複数格納される。ここで、参照用画像格納領域250aに格納される参照用画像は、図4(a)に示すような、サブウィンドウのほぼ全体を顔部分(特徴部分)が占めるような画像であるものとする。このような画像は、従来の顔検出技術で通常用いられている参照用画像(以下、「通常参照画像FL」とする)である。
参照用画像格納領域250bには、このような通常参照画像FLとは異なる種類の参照用画像が格納される。本実施形態では、通常参照画像FLと同じ顔画像であるが、顔部分(特徴部分)の大きさが通常参照画像FLよりも小さい画像(以下、「縮小参照画像FS」とする)が参照用画像格納領域250bに格納されるものとする。このような縮小参照画像FSの例を図4(b)に示す。
図示するように、縮小参照画像FSは、通常参照画像FLと同様に、サブウィンドウサイズと同サイズ(例えば、24×24ドット)の画像であり、図示するように、顔全体を示す部分のすべてが領域の中心部で示されている画像である。参照用画像格納領域250bには、このような縮小参照画像FSが複数格納されている。
プログラム格納領域250cは、制御部210が実行する動作プログラムを格納する記憶領域である。
本実施形態では、記憶部250のプログラム格納領域250cに格納されている動作プログラムを制御部210が実行することで、後述する各処理が実現されるが、この場合に制御部210によって実現される機能を、図5を参照して説明する。
図5は、本発明にかかる機能を実行する際に制御部210によって実現される機能を示した機能ブロック図である。なお、図5に示す機能は、顔検出機能を実行する際に必要となる機能を示すものである。
すなわち、撮像時のファインダ画面(ライブビュー画面)上で顔検出をおこなう際、制御部210によって図5に示すような機能が実現される。図示するように、制御部210は、画像変換部211、対象画像選択部212、識別領域設定部213、第1の識別器214、第2の識別器215、識別結果判定部216、出力処理部217、などとして機能する。
画像変換部211は、イメージセンサ部120がライブビュー用に出力したレックスルー画像を、顔検出処理で用いる画像に変換する。すなわち、入力画像格納領域230aに格納されたVGA画像を輝度画像に変換し、検出用スルー画像PLとして検出用画像格納領域230bに格納するとともに、検出用スルー画像PLをQVGAサイズ以下の検出用縮小画像PSに変換して検出用画像格納領域230cに格納する。なお、画像変換部211による画像変換は、既知の画像変換アルゴリズムなどによってなされるものとする。
対象画像選択部212は、顔検出にかかる処理対象となる画像を選択する。すなわち、検出用画像格納領域230bおよび検出用画像格納領域230cに格納された検出用画像のいずれかを処理対象画像として選択する。
識別領域設定部213は、対象画像選択部212が選択した画像上で、顔部分を識別するための識別領域(サブウィンドウ)を設定する。本実施形態では、24×24ドットのサブウィンドウが選択された画面上に設定されるものとする。また、識別領域設定部213は、検出用縮小画像PSで設定したサブウィンドウで顔部分が検出された場合、検出用スルー画像PL上でサブウィンドウを設定するための拡張領域を設定する。
第1の識別器214は、識別領域設定部213が設定したサブウィンドウの画像と、参照用画像格納領域250bに格納されている縮小参照画像FS(小サイズ画像)とを比較し、当該サブウィンドウの画像が顔部分を示すものであるか否かを識別する。
第2の識別器215は、識別領域設定部213が設定したサブウィンドウの画像と、参照用画像格納領域250aに格納されている通常参照画像FL(通常サイズ画像)とを比較し、当該サブウィンドウの画像が顔部分を示すものであるか否かを識別する。
本実施形態にかかる第1の識別器214および第2の識別器215は、いずれも既知の顔検出識別器のアルゴリズム(例えば、ニューラルネット(NN)、アダブースト(Adaboost)、サポートベクターマシン(SVM)、など)を用いて顔部分の識別をおこなうものとする。なお、このようなアルゴリズムによって顔検出をおこなう場合において、参照用画像として顔部分以外の画像も用いる場合は、必要に応じて参照用画像格納領域250aや参照用画像格納領域250bに格納されているものとする。
識別結果判定部216は、第1の識別器214および第2の識別器215による識別結果を統合することで、入力されたレックスルー画像上に示されている顔部分の位置を判定する。
出力処理部217は、識別結果判定部216が判定した顔部分の位置に基づいて、表示部310に表示するレックスルー画像(ライブビュー画像)上に、検出された顔部分を明示する表示をおこなう。ここでは、例えば、図6に示すような矩形の枠画像を、検出された顔部分の位置に表示する。
以上が顔検出機能の動作時に制御部210によって実現される機能である。なお、本実施形態では、制御部210がプログラムを実行することによる論理的処理で上述した各機能が実現されるものとするが、これらの機能を、例えば、ASIC(Application Specific Integrated Circuit:特定用途向け集積回路)などのハードウェアによって構成してもよい。この場合、図5に示した機能のうち、画像処理にかかる機能については、画像処理部220によって実現されてもよい。
以上説明したデジタルカメラ1の構成は、本発明を実現するために必要な構成であり、デジタルカメラとしての基本機能や種々の付加機能に用いられる構成は必要に応じて備えられているものとする。特に、顔検出機能にかかる構成については、本実施形態では、検出された顔部分に枠画像を表示するまでに必要なものを示すが、デジタルカメラ1の顔検出機能には、このように検出された顔位置に合わせた撮像動作なども含まれているものとする。つまり、検出された顔部分にピントや露出を合わせて撮像する動作に必要な構成や処理などは既知の顔検出技術を用いて適宜実現されるものとし、本実施形態ではその説明は省略する。
このような構成のデジタルカメラ1による動作を以下に説明する。ここでは、顔検出機能を用いて撮像する際にデジタルカメラ1で実行される「顔検出処理」を、図7に示すフローチャートを参照して説明する。この顔検出処理は、例えば、デジタルカメラ1の使用者が操作部330を操作することで、デジタルカメラ1の顔検出機能を有効にしたことを契機に開始されるものとする。
処理が開始されると、画像変換部211は、入力画像格納領域230aに格納された入力画像(VGAのレックスルー画像)を取り込み(ステップS101)、同サイズ(すなわち、VGA)の輝度画像に変換し、検出用スルー画像PLとして検出用画像格納領域230bに格納する(ステップS102)。
画像変換部211は、ステップS101で検出用画像格納領域230bに格納した検出用スルー画像PLのサイズをVGAからQVGAに変換し、検出用縮小画像PSとして検出用画像格納領域230cに格納する(ステップS103)。
このようにして、入力画像と同サイズ(例えば、VGA)の検出用画像と、縮小したサイズ(例えば、QVGA)の検出用画像が生成されると、画像変換部211は、その旨を対象画像選択部212に通知する。対象画像選択部212は、画像変換部211からの通知に応じて、「拡大方向顔検出処理(1)」と「拡大方向顔検出処理(2)」を順次実行する(ステップS200、ステップS300)。
ここで、拡大方向顔検出とは、縮小した検出用画像(検出用縮小画像PS)上で、縮小参照画像FSを用いた顔識別によって顔検出をおこない、検出された位置に相当する検出用スルー画像PL上の位置において、通常参照画像FLを用いた顔識別をおこなうものである。すなわち、処理の前段において縮小サイズ画像を用いた顔検出をおこなって顔位置の推定をおこなった後に、その結果に基づき、画像サイズが拡大方向となる通常サイズの画像上で顔検出を後段でおこなう。この場合の前段にかかる処理が「拡大方向顔検出処理(1)」であり、後段にかかる処理が「拡大方向顔検出処理(2)」である。
ここで実行される「拡大方向顔検出処理(1)」を、図8に示すフローチャートを参照して説明する。
上述したように、拡大方向顔検出処理の前段では、縮小した検出用画像を用いるので、対象画像選択部212は、検出用画像格納領域230cに格納されている、QVGAに縮小された検出用縮小画像PSを対象画像として選択し、制御部210のRAMなどに展開されるワークエリアに読み出す(ステップS201)。
対象画像選択部212は、対象画像を読み出すと、その旨を識別領域設定部213に通知する。識別領域設定部213は、対象画像選択部212からの通知に応じ、ワークエリアに読み出された検出用縮小画像PSに、識別領域(サブウィンドウ)を設定する。本実施形態では、従来の顔検出技術と同様、対象画像上に、所定の大きさの識別領域を設定し、それを順次移動させながら、顔部分の検出をおこなう。よって、このような識別領域の移動においては、移動経路が予め規定されている。本実施形態では、例えば、図11(a)に示すように、画像の左上角部を開始位置とし、そこから識別領域SWを右方向に所定ステップずつ移動させる。識別領域SWが画像の右端に到達したら下方向に1ステップ分移動させた後に左方向に1ステップずつ移動させる。そして、識別領域SWが画像端部に到達する毎に、1ステップ分下方向に移動してから、逆方向に移動する動作を繰り返すことで、画像の全域に渡って識別領域SWを移動させる。
したがって、本実施形態にかかる識別領域設定部213は、上述した識別開始位置(すなわち、画像左上角部)に、例えば、24×24ドットの大きさとなる識別領域SWを設定し(ステップS202)、設定した識別領域SWにおいて検出用縮小画像PSの切り出しをおこなう(ステップS203)。
識別領域設定部213は、設定した識別領域SWの画像切り出しをおこなうと、切り出した画像を第2の識別器215に入力する。上述したように、第2の識別器215は、例えば、ニューラルネットなどの顔識別アルゴリズムを用いて、参照用画像格納領域250bに格納されている縮小参照画像FSと入力画像との比較から、当該入力画像が顔部分を示しているか識別する。したがって、第2の識別器215は、図4(b)に示したような縮小参照画像FSを用いて、検出用縮小画像PSから切り出された入力画像についての顔識別をおこなう(ステップS204)。
ここで、例えば、顔識別アルゴリズムとしてニューラルネットを採用した場合、第2の識別器215は、顔の場合は1、非顔の場合は−1となるような教師信号を出力する。このような教師信号は、既知のニューラルネット技術に基づくものであり、第2の識別器215(第1の識別器214)の学習による重み付けがおこなわれることで、随時設定される。
このようなニューラルネットを顔検出アルゴリズムとした場合、ステップS204の顔識別において、入力画像が顔を示すのであれば1に近い値が出力され、非顔であれば−1に近い値が出力されることになる。第2の識別器215は、採用している顔検出アルゴリズムに応じた出力信号を生成し、識別結果判定部216に出力する。
識別結果判定部216は、第2の識別器215からの出力に基づいて、識別領域SWで検出用縮小画像PSから切り出された画像で顔が検出されたか否かを判別する(ステップS205)。
顔が検出された場合(ステップS205:Yes)、識別結果判定部216は、当該識別領域SWの位置を、例えば、ワークエリア上に記録する(ステップS206)。ここでは、例えば、図11(b)に示すような検出結果テーブルがワークエリア上に作成され、検出用縮小画像PS上で、縮小参照画像FSに基づいて顔が検出された識別領域SWの位置が記録される。この場合、例えば、識別領域SWの中心位置を示す検出用縮小画像PS上の座標が、識別領域SWの位置情報として記録される。
一方、第2の識別器215の識別結果が、当該識別領域SWは顔ではない場合(ステップS205:No)、識別結果判定部216は、識別領域SWの位置情報の記録をおこなわない。
このようにして、識別結果判定部216が識別結果の判定をおこなうと、その旨を識別領域設定部213に通知する。識別領域設定部213は、識別結果判定部216からの通知に応じて、現在設定した識別領域SWの位置が、検出用縮小画像PS上の識別終了位置であるか否かを判別し(ステップS207)、終了位置での識別がおこなわれるまで(ステップS207:No)、識別領域SWを1ステップずつ移動させる(ステップS208)。ここで、検出用縮小画像PSでの顔識別における識別領域SWの移動ステップは、例えば、4ドット分であるものとする。つまり、拡大方向顔検出処理(1)では、図11(a)に示したような経路で識別領域SWを4ドットずつ移動させながら、各識別領域SWに対応する部分を切り出し、縮小参照画像FSを用いた顔識別をおこなう(ステップS203〜ステップS206)。
そして、終了位置での顔検出動作がおこなわれると(ステップS207:Yes)、本処理を終了し、図7に示す顔検出処理のフローに戻る。ここでは、拡大方向顔検出処理の前段が終了したので、後段の「拡大方向顔検出処理(2)」が続けて実行される。この拡大方向顔検出処理(2)を、図9に示すフローチャートを参照して説明する。
処理が開始されると、識別結果判定部216は、前段の拡大方向顔検出処理(1)(ステップS200)の処理で、顔が検出されたか否かを判別する(ステップS301)。上述したように、拡大方向顔検出処理(1)においては、顔が検出された場合、その識別領域SWの位置情報がワークエリアに記録されるので、識別領域SWの位置情報が記録されているか否かをみることで、前段の処理で顔が検出されたか判別することができる。
ここで、本実施形態にかかる拡大方向顔検出処理は、顔部分の小さい縮小参照画像FSを用いた顔検出を、本来のライブビュー画像よりもサイズの小さい検出用縮小画像PS上でまずおこなうことで、入力画像上で顔と推定される部分のあたりをつけておく。そして、実際のライブビュー画像と同サイズの検出用スルー画像PLについては、画像全域で顔識別をおこなわず、あたりをつけた位置の周辺で顔識別をおこなう。
本実施形態ではこのような処理手順としているので、上述した拡大方向顔検出処理(1)は、入力画像上で顔と推定される部分のあたりをつけるまでの処理ということになる。そして、現在実行されている拡大方向顔検出処理(2)は、前段の処理であたりをつけた位置で詳細な顔識別動作をおこなうものである。よって、拡大方向顔検出処理(1)において、顔と推定される部分が検出されなかった場合、拡大方向顔検出処理(2)をおこなう必要はない。よって、前段の拡大方向顔検出処理(1)(ステップS200)で顔の検出がなされなかった場合(ステップS301:No)、そのまま本処理を終了する。この場合、拡大方向顔検出処理(2)(ステップS300)は、実質的に実行されなかったことになる。
一方、拡大方向顔検出処理(1)で顔が検出されている場合(ステップS301:Yes)、識別結果判定部216は、その旨を対象画像選択部212に通知する。対象画像選択部212は、識別結果判定部216からの通知に応じて、VGAサイズの検出用スルー画像PLを処理対象として選択し、検出用画像格納領域230bからワークエリアに読み出す(ステップS302)。
検出用スルー画像PLを読み出すと、対象画像選択部212はその旨を識別領域設定部213に通知する。識別領域設定部213は、対象画像選択部212からの通知に応じて、VGAの検出用スルー画像PL上で顔検出動作をおこなう領域である絞込検出領域を設定する(ステップS303)。ここでは、図11(b)に示したワークエリア上の検出結果テーブルを参照することで、識別領域設定部213は、前段の拡大方向顔検出処理(1)において顔が検出された識別領域SWの位置(以下、「顔検出部分」とする)を認識する。
ここで、前段の拡大方向顔検出処理(1)では、QVGAに縮小した検出用縮小画像PSを処理対象としていたので、識別領域設定部213は、検出用縮小画像PSにおける顔検出部分の相対的な位置を求め、求めた相対位置に基づいて、ステップS302で読み出した検出用スルー画像PL上に絞込検出領域を設定する。つまり、検出用縮小画像PSの画像サイズであるQVGAは、実際のライブビュー画像のサイズであるVGAの各辺の長さを1/2にしたもの(面積比1/4)であるので、検出用縮小画像PSと検出用スルー画像PLは相似形である。よって、一方の検出用縮小画像PSと、そこで検出された顔検出部分との相対的な位置関係が求まれば、相似する検出用スルー画像PL上でも、顔検出部分にあたる位置を相対的な位置関係によって特定することができる。
このような、検出用縮小画像PSと検出用スルー画像PLにおける位置関係を、図12を参照して説明する。ここでは、図12(a)に示すような撮像画像が得られている場合を例に説明する。本実施形態では、撮像画像の画像サイズはVGAであるので、図12(a)に例示する画像はVGAの検出用スルー画像PLである。このようなVGAサイズの画像上において、図12(a)に示すような大きさで人物の被写体が撮像されているものとする。ここでは、図示するように、画像のサイズに比べ、被写体となっている人物が比較的小さく写っている場合を想定する。
このような撮像画像(検出用スルー画像PL)を、QVGAの検出用縮小画像PSに縮小した例を図12(b)に示す。画像全体が縮小されているので、そこに示されている被写体の大きさも、図12(a)に示した検出用スルー画像PLと比べ、相対的に小さくなっている。
このような検出用縮小画像PSに対し、上述した拡大方向顔検出処理(1)を実施した場合に設定される識別領域SWの例を図12(c)に示す。上述したように、拡大方向顔検出処理(1)における顔識別では、図4(b)に示すような縮小参照画像FSを用いて顔識別をおこなっている。本実施形態では、縮小参照画像FSのサイズを識別領域SWと同じサイズ(24×24ドット)としているので、識別領域SWと被写体の大きさが図12(c)に示すようなものである場合、例えば、図12(d)に示すように、識別領域SWの移動経路に応じた複数位置における識別領域SWで顔が検出されることになる。
ステップS303で検出用スルー画像PL上に設定する絞込検出領域は、このような複数の識別領域SWをまとめた領域ということになる。したがって、前段の拡大方向顔検出処理(1)において、複数の識別領域SWで顔検出がなされた場合、ステップS303で設定される絞込検出領域は、少なくとも、識別領域SWの大きさ(本例では24×24ドット)よりも大きい領域となる。このような絞込検出領域(以下、「絞込検出領域SS」とする)を検出用スルー画像PL上に設定した場合の例を図13(a)に示す。
つまり、図12(b)に示したような検出用縮小画像PSで識別領域SWを設定し、図12(d)に示すような複数位置で顔検出されたときの識別領域SWを統合した絞込検出領域SSを、図12(a)に示した検出用スルー画像PLに設定すると、検出用スルー画像PLに現れている被写体画像と絞込検出領域SSとの大きさや位置の関係は図13(a)に示すようなものになる。
このように設定された絞込検出領域SS付近を拡大して図13(b)に示す。図示するように、前段の拡大方向顔検出処理(1)で顔が検出された複数の識別領域SWを統合して検出用スルー画像PL上に設定すると、被写体の顔部分の周辺に絞込検出領域SSが設定されることになる。ここで、図9に戻り、拡大方向顔検出処理(2)の説明を続ける。
図13(a)に示すような絞込検出領域SSがステップS303で設定されると、識別領域設定部213は、絞込検出領域SS内に識別領域SWを設定する(ステップS304)。ここでは、上述した拡大方向顔検出処理(1)における識別領域SWと同じサイズ(つまり、24×24ドット)の識別領域SWを設定する。ここでも、図11(a)で示した移動経路と同様の経路で識別領域SWを移動させるが、その移動ステップは、例えば、2ドットであるものとする。
ここでは、図11(a)において矢印で示した移動経路とするので、ステップS304においては、絞込検出領域SSの左上角部を開始位置として、24×24ドットの識別領域SWが設定される。識別領域設定部213は、このように設定した識別領域SWに対応する部分を検出用スルー画像PLから切り出し(ステップS305)、第1の識別器214に入力する。
上述したように、第1の識別器214は、図4(a)に示したような通常参照画像FLを参照して顔識別をおこなう識別器である。図4(a)に示したように、通常参照画像FLは、識別領域SWと同じサイズの画像全体に顔部分が占めているので、QVGAの検出用縮小画像PSからVGAの検出用スルー画像PLに拡大して顔識別をおこなう本処理では、このような通常参照画像FLを使って絞込検出領域SS内で顔識別をおこなうことができる。
第1の識別器214も、第2の識別器215と同様、所定の顔識別アルゴリズムによって、切り出された画像が顔部分であるか識別し、識別結果を示す信号を識別結果判定部216に出力する。
識別結果判定部216は、第1の識別器214からの出力信号に基づいて顔が検出されたか否かを判別する(ステップS307)。そして、検出された場合(ステップS307:Yes)は、その識別領域SWの検出用スルー画像PL上での位置情報をワークエリアに記録し(ステップS308)、検出されなければ記録しない。
ここで、識別領域SWの位置情報をワークエリアに記録する場合は、図11(c)に示すような検出結果テーブルがワークエリア内に作成され、識別領域SWの位置情報を記録する。
このようにして識別結果の判定をおこなうと、識別結果判定部216は、その旨を識別領域設定部213に通知する。識別領域設定部213は、識別結果判定部216からの通知に応じて、現在の識別領域SWが絞込検出領域SS内での識別終了位置にあたるか否かを判別する(ステップS309)。そして、顔識別をおこなった識別領域SWが、絞込検出領域SS内での識別終了位置となるまで(ステップS309:No)、順次識別領域SWを2ドットずつ移動させ(ステップS310)、上述したステップS305〜ステップS308の動作を繰り返す。
つまり、図13(b)に示すように、識別領域SWを移動させながら各位置で顔識別をおこない、顔が検出されたときの識別領域SWの位置情報を記録する。ここで、図13(b)に示すように、VGAの検出用スルー画像PL上においては、24×24ドットの識別領域SWは、被写体の顔部分の大きさとほぼ同じであり、また、顔識別の際に参照される通常参照画像FLも、24×24ドットの全体を顔部分が占めているものなので、ほぼ1カ所の識別領域SWにおいて顔が検出されることとなる。
このようにして、VGAサイズの検出用スルー画像PL上に設定した絞込検出領域SSの全域で顔識別動作をおこなうと(ステップS309:Yes)、識別領域設定部213は、その旨を対象画像選択部212に通知し、本処理を終了する。この場合、図7に示す顔検出処理のフローに戻る。
顔検出処理においては、拡大方向顔検出処理(2)に続いて「縮小方向顔検出処理」(ステップS400)が実行される。この縮小方向顔検出処理は、従来の顔検出技術において一般的におこなわれている処理であり、入力画像を順次縮小した画像ピラミッド(図3参照)を生成し、一定サイズの参照用画像を用いて各縮小画像上で顔識別をおこなうことで、画角内での顔部分の大きさが不定の入力画像上でも顔を識別できるようにしたものである。
このような、従来の顔検出処理においては、図4(a)に示したような通常参照画像FLを用い、QVGA以下のサイズに縮小した画像ピラミッドで顔識別をおこなうので、画角に対する顔部分の大きさが比較的大きい場合に、顔部分を検出することができる。このような縮小方向顔検出処理を、図10に示すフローチャートを参照して説明する。
処理が開始されると、対象画像選択部212は、拡大方向顔検出処理(2)(ステップS300)が実行されたか否かを判別する(ステップS401)。ここで、拡大方向顔検出処理(2)の実行後に本処理が実行された場合(ステップS401:Yes)、拡大方向顔検出処理(2)においては検出用スルー画像PL(VGA画像)が処理対象画像として用いられていたので、対象画像選択部212は、本処理での処理対象画像として、縮小されたQVGAの検出用縮小画像PSを選択し、検出用画像格納領域230cから読み出す(ステップS402)。
一方、拡大方向顔検出処理(1)において顔検出がなされなかった場合、上述したように、拡大方向顔検出処理(2)は実質的には実行されていない。このような場合(ステップS401:No)、拡大方向顔検出処理(1)の終了後に本処理が実行されていることになる。拡大方向顔検出処理(1)においては、検出用縮小画像PS(QVGA画像)が処理対象画像として用いられていたので、本処理で処理対象とする検出用縮小画像PSはすでに読み出されていることになる。
本処理において最初に読み出されたQVGAの検出用縮小画像PSを検出用縮小画像PS0とする(図3参照)。処理対象とする検出用縮小画像PS0の読み出しが完了すると、対象画像選択部212はその旨を識別領域設定部213に通知する。識別領域設定部213は、上述した拡大方向顔検出処理(1)と同様の処理により、検出用縮小画像PS0の左上角部を開始位置として識別領域SWを設定し(ステップS403)、識別領域SWに対応する部分を検出用縮小画像PS0から切り出す(ステップS404)。
ここで、識別領域設定部213は、上述した拡大方向顔検出処理(1)のときとは異なり、切り出した画像を第1の識別器214に入力する。よって、縮小したQVGAの検出用縮小画像PS0から切り出された画像における顔識別が、図4(a)に示したような通常参照画像FLを用いておこなわれる(ステップS405)。
このようにして顔識別をおこなった第1の識別器214からの出力信号に基づいて、識別結果判定部216が識別結果を判定する(ステップS406)。ここで、顔が検出されれば(ステップS406:Yes)、現在の識別領域SWの位置情報をワークエリアに記録する(ステップS407)。識別結果判定部216は、このような判定動作をおこなうと、その旨を識別領域設定部213に通知する。
識別領域設定部213は、識別結果が判定される毎に識別領域SWを2ドットずつ移動させる(ステップS408:No、ステップS409)。そして、各識別領域SWの位置においてステップS404〜ステップS405の処理をおこなうことで、検出用縮小画像PS0の全域で顔識別をおこない、顔が検出された識別領域SWの位置情報をワークエリアに記録する。ここでは、図11(d)に示すような検出結果テーブルをワークエリアに作成して、顔が検出された識別領域SWの位置情報を記録する。
検出用縮小画像PS0の全域での顔識別動作が完了すると(ステップS408:Yes)、識別結果判定部216は、その旨を画像変換部211に通知する。画像変換部211は、識別結果判定部216からの通知に応じて、現在処理対象としている検出用縮小画像PS0を縮小して検出用画像格納領域230cに格納する(ステップS410)。ここでは、例えば、検出用縮小画像PS0のサイズを80%に縮小する。
画像変換部211は、このようにして画像を縮小すると、その旨を対象画像選択部212に通知する。対象画像選択部212は、画像変換部211からの通知に応じ、縮小された検出用縮小画像PSのサイズが、顔識別に用いる識別領域SWのサイズ(すなわち、24×24ドット)より大きいか否かを判別する(ステップS411)。
縮小後の検出用縮小画像PSのサイズが識別領域SWのサイズより大きければ(ステップS411:No)、縮小した検出用縮小画像PSにおいて、上述したステップS403〜ステップS409の処理をおこなう。つまり、縮小した検出用縮小画像PS上で識別領域SWを移動させながら、通常参照画像FL(図4(a))を用いた顔識別をおこなう。
そして、縮小した検出用縮小画像PSの全域で顔識別動作をおこなう毎に、検出用縮小画像PSをさらに縮小する(ステップS408:Yes、ステップS410)。つまり、縮小した検出用縮小画像PSのサイズが識別領域SWのサイズとなるまで、図3に示すような画像ピラミッドを順次生成し、各検出用縮小画像PSx(x=0〜n)において、通常参照画像FLを用いた顔識別動作をおこなう。
このような処理において、検出用縮小画像PS上で識別領域SWを移動させながら顔識別をおこなっているので、検出用縮小画像PS自体が識別領域SWより小さくなってしまうと識別動作をおこなえない。よって、縮小後の検出用縮小画像PSが識別領域SWより小さくなった時点(ステップS411:Yes)で本処理を終了し、図7に示す顔検出処理のフローに戻る。
顔検出処理(図7)においては、上述した、拡大方向顔検出処理(1)、拡大方向顔検出処理(2)、縮小方向顔検出処理、のそれぞれで顔検出されたときの識別領域SWの位置情報がワークエリアに記録されているので、識別結果判定部216は、そのうちの拡大方向顔検出処理(2)と縮小方向顔検出処理における検出結果を統合する(ステップS104)。
つまり、撮像画像において、比較的小さく写っている顔部分を検出するための拡大方向顔検出処理(2)と、比較的大きく写っている顔部分を検出するための縮小方向顔検出処理の検出結果を統合することで、撮像画像内に様々な大きさで複数の顔が写っていても、それぞれを識別することができる。
ここで、拡大方向顔検出処理(2)も縮小方向顔検出処理も実施された場合、同一の撮像画像について、複数の画像サイズで顔識別動作がおこなわれているので、仮に各検出結果のすべてを最終的に表示する枠画像で表すと、図14に示すように、顔部分に複数の枠が集中する。ここで、識別結果判定部216は、一定の割合で誤認識があることを考慮し、同じ位置において一定数以上の検出結果が得られている箇所が顔部分であると判定し、当該位置での検出結果を1つに統合することで、図6に示したような、ライブビュー画面とすることができる。
この場合、識別結果判定部216は、統合した結果に基づく位置情報を出力処理部217に通知する。出力処理部217は、識別結果判定部216からの通知に応じて画像出力部240を制御することで、表示部310に、図6に示すような顔検出されたライブビュー画像が表示される(ステップS105)。
そして、ステップS101〜ステップS105の処理を、顔検出動作の終了イベントが発生するまで繰り返しおこなうことで(ステップS106:No)、ライブビュー画像上に顔が写っている場合は常に顔部分に枠画像が表示されることになる。
ここで、例えば、シャッタボタンの押下や撮影モードの終了などといった顔検出動作の終了イベントの発生とともに(ステップS106:Yes)、本処理を終了する。なお、シャッタボタンが押下された場合は、検出された顔部分に合わせた撮像動作や画像処理(例えば、合焦動作、露出調整、ホワイトバランス調整、など)をおこなうための処理が別途実行される。
以上説明したように、本発明を上記実施形態の如く適用することにより、人物を被写体として撮影した場合などにおいて、撮像画像中に現れている顔部分が比較的小さい場合であっても、確実に顔検出をおこなうことができる。
この場合において、従来からの顔検出技術で用いられている参照用画像に加え、このような通常の参照用画像よりも顔部分の小さい縮小参照画像を用意し、QVGAなどに縮小した画像上で、縮小参照画像を用いて顔識別をおこなうことで、撮像画像内で比較的小さく顔が写っているような場合でも、その位置のあたりをつけておくことができる。そして、あたりをつけることができた場合にのみ、実際のレックスルー画像と同じサイズの画像上で、通常の参照用画像を用いた顔識別をおこなう。
ここで、実際のサイズの画像で識別動作をおこなう際、その動作範囲を、あたりをつけた位置で絞り込んでいるので、少ない処理負荷によって顔検出をおこなうことができる。つまり、対象となる画像のサイズが大きくなる程、その全域で識別動作をおこなうと処理工数が増大し、処理負荷が高くなってしまうが、処理負荷の少ない縮小画像においてあたりをつけておくことで、実際に出力する画像のサイズが大きくても、絞り込んだ範囲で識別動作をおこなうので、全域で識別をおこなうよりも処理工数が低減する。この結果、画像サイズが大きくなっても処理速度を低下させずに顔検出をおこなうことができる。
ここで、対象画像を順次縮小させた画像ピラミッドで顔識別をおこなう従来の方法では、最初の対象画像上に現れている顔部分の大きさが、参照用画像に示されている顔部分の大きさよりも大きい場合でなければ顔検出をおこなうことができないが、上記実施形態で例示した拡大方向顔検出処理をおこなうことで、撮像画像に写っている顔が比較的小さい場合であっても、確実に検出することができる。
さらに、このような拡大方向顔検出処理と、従来の処理と同様の縮小方向顔検出処理とをおこなうことで、例えば、撮像装置との距離が異なる複数の被写体を撮影した場合のように、様々な大きさの顔が1つの撮像画像上に現れている場合であっても、確実に顔検出をおこなうことができる。
よって、従来の処理に拡大方向顔検出処理が増えることになるが、処理負荷の増加を最小限にして、より確実な顔検出を実現することができる。
また、上記実施形態における拡大方向顔検出処理(1)では、処理負荷の低い縮小画像を用いており、ここであたりをつけることができなければ、非縮小画像を用いる拡大方向顔検出処理(2)を実行しない。つまり、撮像画像の内容に応じて必要な顔検出動作のみがおこなわれるので、処理負荷の増大を必要最小限に抑えつつ、より確実な顔検出を実現することができる。
上記実施形態は一例であり、本発明の適用範囲はこれに限られない。すなわち、種々の応用が可能であり、あらゆる実施の形態が本発明の範囲に含まれる。
まず、上記実施形態では、デジタルスチルカメラでの撮影時に顔検出する場合を例示したが、検出対象は顔に限られず任意である。すなわち、所望する検出対象に応じた参照用画像を用意することで、種々の対象の検出に本発明を適用することができる。
この場合において、検出対象は撮像時の被写体に限られるものでもない。すなわち、入力画像に対象となる画像が含まれていればよいので、上記実施形態に例示したような、撮像時に検出をおこなうのではなく、撮像された画像を入力画像としてもよい。つまり、上記実施形態で示したデータ処理部200にかかる構成や機能は、撮像装置に搭載されている必要はなく、画像データを入力することのできる種々の装置として実現されることでもよい。
したがって、本発明にかかる構成や機能を備えた画像処理装置として実現することができる。このような画像処理装置は、本発明にかかる構成や機能を予め備えた専用装置として実現できることはもとより、例えば、パーソナルコンピュータなどといった汎用のコンピュータ装置によって実現されてもよい。
この場合、上記実施形態で示した制御部210が実行したプログラムと同様のプログラムを汎用のコンピュータ装置に適用し、当該コンピュータ装置がそのプログラムを実行することで、本発明にかかる画像処理装置として機能させることができる。
また、本発明を上記で例示したデジタルカメラ1のような撮像装置で実現する場合も、本発明にかかる構成や機能を予め備えた撮像装置として提供できる他、プログラムを適用することにより、既存の撮像装置を本発明にかかる撮像装置として機能させることもできる。
なお、上記実施形態では、撮像装置の例としてデジタルスチルカメラを示したが、撮像画像をデジタル処理できるものであれば、例えば、デジタルビデオカメラなどといった動画撮像をおこなう撮像装置に本発明を適用してもよい。また、撮像装置の形態は任意であり、単体のデジタルスチルカメラやデジタルビデオカメラで実現可能であることはもとより、これらと同様の撮像機能を備えた種々の電子機器(例えば、携帯電話など)に本発明を適用してもよい。
このような場合においても、プログラムを適用することで、既存の装置を本発明にかかる撮像装置として機能させることができる。
このようなプログラムの適用方法は任意であり、例えば、CD−ROMやメモリカードなどの記憶媒体に格納して適用できる他、例えば、インターネットなどの通信媒体を介して適用することもできる。
また、上記実施形態において、画像サイズの例としてVGAとQVGAを示したが、これらは一例であり、画像サイズはこれらに限られるものではない。つまり、本発明にかかる処理をおこなう場合において、縮小変換する画像サイズは、入力された画像サイズよりも小さいサイズであればよい。また、入力画像と縮小画像のサイズ比も任意であり、処理負荷が最適化されるよう適宜設定すればよい。
また、対象画像の検出をおこなう際に採用するアルゴリズムも任意であり、所望する対象を識別することができるのであれば、上記実施形態で示したニューラルネット、アダブースト、サポートベクターマシン、などに限られるものではない。
1…デジタルカメラ、100…撮像部、110…光学装置、120…イメージセンサ部、200…データ処理部、210…制御部、211…画像変換部、212…対象画像選択部、213…識別領域設定部、214…第1の識別器、215…第2の識別器、216…識別結果判定部、217…出力処理部、220…画像処理部、230…画像メモリ、230a…入力画像格納領域、230b…検出用画像格納領域、230c…検出用画像格納領域、240…画像出力部、250…記憶部、250a…参照用画像格納領域、250b…参照用画像格納領域、250c…プログラム格納領域、260…外部記憶部、300…インタフェース部、310…表示部、320…外部インタフェース部、330…操作部、PL…検出用スルー画像、PS…検出用縮小画像、FL…通常参照画像、FS…縮小参照画像、SW…識別領域、SS…絞込検出領域