以下、本発明の実施の形態について、図面を参照しながら説明する。
上述したように、本発明は、動画像中でユーザが指定した被写体を追尾する機能と、画像から人物の顔領域を検出する顔検出機能を備えた画像処理装置であれば適用することが可能である。本実施形態では、このような画像処理装置としてデジタルカメラを例にあげて説明を行う。
図1に示す本実施の形態に係わるデジタルカメラにおいて、10は撮影レンズ、12は絞り機能を備えるシャッター、14は光学像を電気信号(画像信号)に変換する撮像素子である。この撮像素子14から撮像時に出力されたアナログ信号は、A/D変換器16によって、ディジタル信号(画像信号)に変換される。
このデジタルカメラでは、制御部を構成するメモリ制御回路22及びシステム制御回路50が、タイミング発生回路18を制御する。タイミング発生回路18は、クロック信号や制御信号を、撮像素子14、A/D変換器16及びD/A変換器26に供給してコントロールする。
このA/D変換器16からのデータ(画像信号)或いはメモリ制御回路22から出力されたデータ(画像信号)は、画像処理回路20によって所定の画素補間処理や色変換処理が施される。
また、このデジタルカメラでは、AF(オートフォーカス)処理、AE(自動露出)処理、EF(フラッシュプリ発光)処理を行う。このため、デジタルカメラの画像処理回路20は、撮像された画像データに対して所定の演算処理を行い、得られた演算結果に基づいてシステム制御回路50が露光制御回路40、測距制御回路42を制御する。
さらに、この画像処理回路20は、撮像した画像データ(画像信号)を用いて所定の演算処理を行い、得られた演算結果に基づいてAWB(オートホワイトバランス)処理を行う。
制御部を構成するメモリ制御回路22は、A/D変換器16、タイミング発生回路18、画像処理回路20、画像表示メモリ24、D/A変換器26、メモリ30、圧縮・伸長回路32を制御する。
このA/D変換器16から出力されたデータは、画像処理回路20、メモリ制御回路22を介して、或いはA/D変換器16のデータが直接メモリ制御回路22を介して、画像表示メモリ24或いはメモリ30に書き込まれる。
この画像表示メモリ24に書き込まれた表示用の画像データは、D/A変換器26を介して、TFT LCD等から成る表示部28に表示される。この表示部28は、撮像素子14から連続して出力された信号から生成された画像データを、動画像としてリアルタイムで表示することにより、電子ファインダ機能を担う。
また、メモリ30は、撮影した静止画像や動画像を格納するためのメモリであり、所定枚数の静止画像や所定時間の動画像を格納するのに十分な記憶量を備えている。このメモリ30は、システム制御回路50の作業領域としても使用可能に構成されている。
このメモリ30に格納された画像は、圧縮・伸長回路32に読み込まれて、適応離散コサイン変換(ADCT)等により画像データが圧縮処理又は伸長処理される。この圧縮伸長処理後のデータは、メモリ30に書き込まれる。
このデジタルカメラは、絞り機能を備えるシャッター12を制御する露光制御回路40と、撮影レンズ10のフォーカシングを制御する測距制御回路42と、撮影レンズ10のズーミングを制御するズーム制御回路44とを備える。
このデジタルカメラは、カメラシステム全体を制御するシステム制御回路50を備える。このシステム制御回路50は、不図示のROMに記憶されたプログラムに従って後述する各処理を実行する。
このシステム制御回路50には、電気的に消去・記録可能なEEPROM等で構成された不揮発性メモリ56が接続されている。さらに、このデジタルカメラは、各種の動作指示を入力するための操作手段としてのシャッタースイッチSW1 62、シャッタースイッチSW2 64、操作部70を備える。操作部70は、例えば、スイッチ、十字キー、ダイアル、タッチパネル、視線検知によるポインティング、音声認識装置等の単数或いは複数の組み合わせで構成される。
このシステム制御回路50に接続されたシャッタースイッチSW1 62は、不図示のシャッターボタンの操作途中の状態でON指示の信号をシステム制御回路50に出力する。このON信号を受けたシステム制御回路50は、AF(オートフォーカス)処理、AE(自動露出)処理、AWB(オートホワイトバランス)処理、EF(フラッシュプリ発光)処理等の動作を開始する。
また、シャッタースイッチSW2 64は、不図示のシャッターボタンの操作完了の状態でON指示の信号をシステム制御回路50に出力する。このON信号を受けたシステム制御回路50は、撮像素子14から読み出した信号をA/D変換器16及びメモリ制御回路22を介してメモリ30に画像データを書き込む本撮影の露光処理の動作開始を指示する。次に、このシステム制御回路50は、画像処理回路20やメモリ制御回路22での演算を用いた現像処理の動作開始を指示する。次に、このシステム制御回路50は、メモリ30から画像データを読み出し、圧縮・伸長回路32で圧縮を行い、外部記録媒体120に画像データを書き込む記録処理の動作開始を指示する。
このシステム制御回路50に接続された、各種ボタンやタッチパネル等からなる操作部70は、電源ボタン、メニューボタン、撮影モード/再生モード切替えスイッチ等を備える。ここで、操作部70に含まれるタッチパネルは表示部28と一体的に構成されており、ユーザが表示部28の画面に触れることで、その触れた位置の画面上の座標を示す情報をシステム制御回路50に送信する。
このシステム制御回路50には、メモリカード等の外部記録媒体とデータの送受信を行うカードコントローラ90が接続されている。さらに、このシステム制御回路50には、カードコントローラ90を介して、メモリカード等の外部記録媒体120が接続されている。
このシステム制御回路50には、画像処理回路20で処理された画像データや画像表示メモリ24に保存されている画像データの解析を行い画像データ内の顔と思われる領域を検出する、顔検出部101が接続されている。顔検出部101は、例えば、画像データ内で人物の目、鼻、口らしき形状のものが所定の位置関係で配置されている領域を顔領域として検出する。
この顔検出部101は、顔と思われる領域を検出した際に、人間の顔と思われる確率、入力画像データ中の位置及びサイズ等を出力する。また、この顔検出部は、検出した顔の各々の特徴点の特徴量を出力することができるように構成されている。
このシステム制御回路50には、画像表示メモリ24やメモリ30に記録された2つの画像に対して輝度情報と色情報の少なくとも一方を基に画像の差分演算を行い、画像間で相関の高い領域を検出する画像比較部102が接続されている。
次に、上述のように構成されたデジタルカメラにおける撮影処理について、図2のフローチャートを参照して説明する。
このデジタルカメラの撮影処理では、デジタルカメラの電源が入って撮影可能状態となると、制御部を構成するメモリ制御回路22及びシステム制御回路50が、撮影処理の動作を開始する。システム制御回路50は、撮像素子14への露光を開始し、連続して生成される画像データを用いて表示部28に動画像をリアルタイムで表示させる。
この撮影処理では、ステップS201において現在の撮影モードが操作部70に含まれるタッチパネルからのユーザ入力(以後、タッチ入力)に対応して追尾処理を行うモードかどうかを判断する。本実施形態では、表示部28が動画像を表示している際にユーザが表示部28の画面に触れることで追尾処理を行うモードが搭載されており、ユーザはこのモードの実行の可否を操作部70に含まれるメニューボタンで事前に設定することができる。システム制御回路50は、撮影モードがユーザのタッチ入力が可能なモードであると判定した場合(ステップS201でYES)に、ステップS202へ進み、タッチ追尾処理を実行する。
このタッチ追尾処理(ステップS202)では、例えば、図5−aの画面表示例に示すように、ユーザからのタッチ入力を受け付けると、タッチ入力された位置を画面内の座標に変換する処理を実行する。このとき、デジタルカメラでは、ユーザのタッチ入力に対応した位置に表示中の画面に重畳して枠(指標)を表示することによって、タッチ入力が受け付けられたことを表示するように構成しても良い。
さらに、このタッチ追尾処理(ステップS202)では、タッチ入力に基づいて、タッチされた位置における被写体判定を行い、その判定に応じて被写体に合わせたタッチ追尾処理を開始して次のステップS203へ進む。なお、タッチ追尾処理については、図3のフローチャートを用いて、後に詳述する。
このシステム制御回路50は、ステップS203に進み、シャッタースイッチSW1 62が押されなければステップS201に戻る。
システム制御回路50は、撮影モードがユーザのタッチ入力を受け付けないモードであると判別した場合(ステップS201でNO)には、その他のモードにて主被写体を選択し、シャッタースイッチSW1 62が押されるまで待機する(ステップS203)。その他のモードとしては、検出された顔の中から自動的に主被写体らしき顔を選択する顔自動モードや、予め設定された複数のAF領域にかかる被写体の中から、至近に位置する被写体を主被写体として選択する多点自動モードなどがある。
次に、システム制御回路50は、シャッタースイッチSW1 62が押されたと判定した場合(ステップS203でYES)に、設定されてる主被写体に重みを置いたAF・AE処理(ステップS204)を行う。
そして、システム制御回路50は、シャッタースイッチSW2 64が押下されるまでAF・AE処理(ステップS204)を続行して待機する(ステップS205でNO)。なお、この待機状態で、シャッタースイッチSW1 62の押下が解除されると、ステップS201へ戻る。
次に、システム制御回路50は、シャッタースイッチSW2 64が押下されたと判定した場合に、ステップS206に進み、撮影を行い、撮影された画像ファイルを外部記録媒体120に記録し、撮影処理を終了する。
次に、上述した撮影処理中に実行される、タッチ入力時のタッチ追尾処理について、図3のフローチャートを参照して説明する。
このデジタルカメラで行われるタッチ追尾処理は、顔以外の物体を主被写体として追尾する第1の追尾処理としての物体追尾処理と、画面内に表示中のある特定の人物の顔を主被写体として追尾する第2の追尾処理としての顔追尾処理との2つに大別される。
このタッチ追尾処理が開始されると、システム制御回路50は、ステップS300において、ユーザからのタッチ入力があったか確認を行う。システム制御回路50は、新たなタッチ入力が行われていないと判定した場合に、ステップS301へ進み、タッチ追尾の処理中であるかを確認する。
そして、システム制御回路50は、タッチ追尾中でないと判定した場合には、図3のフローチャートを終了する。また、システム制御回路50は、タッチ追尾中であると判定した場合には、ステップS312に進み、顔追尾処理がすでに開始されているか否かの判定を行う。
システム制御回路50は、ステップS312で、顔追尾処理でないと判定した場合には、後述するステップS309へ進んで顔追尾判定処理を実行する。反対に、システム制御回路50は、顔追尾処理がすでに開始されていると判定した場合には、後述するステップS311へ進んで顔追尾処理を実行する。
ステップS300に戻り、システム制御回路50は、ユーザからのタッチ入力があったと判定した場合に、ステップS302へ進み、タッチ座標取得の処理を実行する。このステップS302のタッチ座標取得の処理では、タッチ入力を受け付けた操作部70に設けられたタッチパネルの制御部が、接触された画面上の位置を画面上の座標に変換し、その座標を所得してシステム制御回路50へ送信する。
次に、システム制御回路50は、ステップS303の追尾領域を設定する処理へ進み、得られたタッチ座標に基づいて、追尾する被写体の追尾領域を設定する。追尾領域を設定する処理では、画像表示メモリ24に記憶されている表示画像データとタッチされた座標から表示画像データ上の位置を求める。
さらに、この追尾領域を設定する処理では、表示画像データ上の位置周辺の輝度情報から得られるコントラストや、画像の特徴量などを考慮して被写体の追尾領域のサイズを求める。すなわち、タッチされた座標を中心として複数のサイズの仮の追尾領域を設定し、コントラストや特徴量が所定の条件を満たす仮の追尾領域のうち、最小サイズとなるものを追尾領域として設定する。
ここで、コントラストや特徴量を所定の条件と比較するのは、これらの値がある程度のレベルに達していないと、他の領域との識別が困難になるためである。また、最小サイズを選択するのは、サイズを大きく設定するほど、その設定した追尾領域の中に追尾対象とする被写体の以外の背景が含まれてしまい、追尾精度が低下してしまう可能性が高くなるためである。
システム制御回路50は、ステップS303で正しく被写体の追尾領域が求められたか否かを判定し、正しく被写体の追尾領域が求められたと判定した場合(ステップS304でYES)に、ステップS308に進む。
また、システム制御回路50は、タッチされた座標周辺の輝度が均一でコントラストが検出できなかったとき又は画面一面が同じようなパターンとなったときに、正しく追尾領域が求められない場合がある。このような場合には、ステップS305へ進む。
このシステム制御回路50は、ステップS305において、タッチ入力位置におけるAF評価値を基にAF処理を行う。このAF処理では、タッチ入力位置周辺の表示画像データの解像度を向上させる。
次に、システム制御回路50は、ステップS306において、AF処理後の画像表示データから同じ位置で再度追尾領域の検出を行う。
次に、システム制御回路50は、ステップS307において、再度追尾領域が検出できなかった場合に、ステップS322へ進む。システム制御回路50は、ステップS322の追尾不能の処理として、ユーザに追尾できない被写体である旨表示する等の動作をした後に、図3のフローチャートを終了する。
また、システム制御回路50は、ステップS307において、追尾領域が正しく決定できた場合に、ステップS308へ進む。システム制御回路50は、ステップS308において、上述のようにして決定した追尾領域の色情報を記憶しておく。
次に、システム制御回路50は、ステップS309において、顔追尾可能な被写体かどうかの判定処理を行う。顔追尾判定処理については、図4を用いて後述する。
次に、システム制御回路50は、ステップS310において、ステップS309の顔追尾判定処理において、顔追尾処理が可能と判定された場合に、ステップS311へ進み顔追尾処理を行う。
システム制御回路50は、ステップS311で、顔追尾処理を行う。この顔追尾処理では、システム制御回路50が、画像表示メモリ24の表示画像データと顔検出部101とを用いて、表示中の画面内に存在する顔の領域を求める。
このシステム制御回路50は、タッチ入力で追尾領域が設定されてから、または、物体追尾処理で追尾領域が更新されてから、顔追尾処理に初めて移行した際に、ステップS309の顔追尾判定処理で顔追尾可能と判定された顔領域を新たな追尾領域として設定する。
また、システム制御回路50は、すでに顔追尾処理中であれば、次の追尾領域となる顔領域を設定する。この場合には、例えば、前回の検出された追尾中の顔領域の位置と現在の表示画像データ上で検出された複数の顔領域との距離や、それぞれの顔領域の移動量や移動方向等から、前回の追尾領域として設定された顔領域と同じと思われる顔領域を設定すればよい。または、システム制御回路50は、図示しない個人認証などの制御モジュールを用いて、前回検出された追尾中の顔領域と現在の顔領域の特徴点や類似性等から顔領域の関連性を検出する。そして、システム制御回路50は、検出した顔領域の関連性から、前回の顔領域と同一と思われる顔領域を特定する等して、次の追尾領域となる顔領域を設定してもよい。
このシステム制御回路50は、ユーザに追尾中の人物の顔を示すため、例えば、図5−bに示すように、画面内で、追尾中の顔領域を枠(指標)で囲って表示する。また、システム制御回路50は、顔追尾処理において、図5−bに示す表示を行った後、枠(指標)で囲われた人物の顔領域が画面内を移動したときに、例えば、図5−cのように人物の顔の移動に合わせて枠の表示更新を行う。
次に、ステップS320へ進み、システム制御回路50は、ユーザがタッチパネル上のGUIボタン等を操作してタッチ追尾の終了の指示をしたか判定する。そして、システム制御回路50は、タッチ追尾の終了の指示があったと判定したときは、ステップS321へ進んで追尾終了処理を行う。このシステム制御回路50は、追尾終了処理において、ユーザに追尾終了を通知した上で、追尾領域を示す枠(指標)の表示を終了させる。
ステップS320において、システム制御回路50はタッチ追尾の終了の指示がないと判定したときは、この図3のフローチャートを終了し、図2のステップS203へと進む。そして、システム制御回路50は、ステップS203でシャッタースイッチSW1 62が押されていなければ、ステップS201を経由し、新たな表示画像データに対して、再び図3に示すフローチャートを実行する。このように、シャッタースイッチSW1 62が押されるまで、これらの処理を繰り返すことで追尾を継続する。
次に、前述したステップS310において、顔追尾処理が不可能と判定された場合には、ステップS313に進み、システム制御回路50が、輝度情報による物体追尾が可能であるかどうかを判定する。
この輝度情報による物体追尾が可能か否かの判定は、例えば、追尾領域を含む周辺領域が追尾領域を更新したときと比較して大きく輝度が変化していないか、追尾領域周辺の輝度が均一になっていないかといった条件を吟味する。これらの条件を満たす場合は、輝度情報の相関による物体追尾の精度が低下すると判断し、物体追尾不可能と判断する。
システム制御回路50は、すべての条件を満たして輝度情報による物体追尾可能と判断した場合には、ステップS314へ進み、輝度情報を用いた物体追尾の処理を行う。
この輝度情報による物体追尾の処理は、現在の画像表示メモリ24の表示画像データと前回追尾領域が設定された表示画像データにおける追尾領域の画像データと画像比較部102を用いて、相関により検出する処理である。
すなわち、この物体追尾の処理では、前回追尾領域が設定された表示画像データで追尾領域としていた画像データが、現在の表示画像データのどこに移動したかを、それぞれの輝度情報を用いた相関演算により算出する。そして、現在の表示画像データのうち、前回追尾領域が設定された表示画像データで追尾領域としていた画像データと最も相関の高いと判断された領域を、現在のフレーム画像における新たな追尾領域として更新することで物体追尾を行う。
次に、ステップS315へ進み、システム制御回路50は、新たに追尾領域と設定された領域の色情報を記憶する。
次に、前述したステップS320へと進み、システム制御回路50は、ユーザによるタッチ追尾の終了の指示の有無を判定し、タッチ追尾の終了の指示がないと判定したときは、この図3のフローチャートを終了し、図2のステップS203に進む。システム制御回路50は、タッチ追尾の終了の指示があったと判定したときは、ステップS321へ進んで追尾終了処理を行う。このシステム制御回路50は、追尾終了処理において、ユーザに追尾終了を通知した上で、追尾領域を示す枠(指標)の表示を終了させる。
次に、前述したステップS313で、システム制御回路50が、輝度情報による物体追尾が可能であるか否かを判定した結果、物体追尾不能と判定された場合には、ステップS316へ進む。
このステップS316で、システム制御回路50は、輝度情報での物体追尾が不能と判断された追尾領域に対して、次に色情報を用いた追尾を試みる。このため、システム制御回路50は、前述したステップS308又はステップS315において色情報が記憶されているかを検出する。そして、システム制御回路50は、色情報が記憶されている場合に、その色情報を用いて、現在の表示画像データと類似した色分布を持つ領域がないか、表示画像データ上で検索する(ステップS316)。
次に、ステップS317に進んで、システム制御回路50は、色情報による追尾領域の検索で新たに追尾領域の検索に成功したと判断した場合には、再度追尾可能として、ステップS318に進む。具体的には、システム制御回路50は、記憶した色情報から色相のヒストグラムを生成し、このヒストグラムとの差分が最も小さくなる領域を検出する。そして、その差分が予め定めた閾値以下であった場合には、色情報による追尾領域の検索に成功したと判断し、検出できなかった場合には失敗したと判断する。
ステップS318において、システム制御回路50は、検索に成功した領域を新しい追尾領域として設定する。さらにステップS315に進み、システム制御回路50は、新たに追尾領域と設定された領域の色情報を記憶する。
また、システム制御回路50は、前述したステップS317において、色情報による追尾領域の検索で新たな追尾領域の検索に失敗したと判断した場合に、ステップS321に進み、追尾処理を終了する。
次に、前述したステップS309に係わる顔追尾判定処理について、図4を参照しながら説明する。
この顔追尾判定処理では、システム制御回路50が、現在の追尾領域に対して、顔検出結果に基づく顔追尾処理に切り替えるかどうかの判定を行う。この顔追尾判定処理では、図3で説明したように、顔追尾処理可能と判定された場合に、顔検出結果に基づく追尾を行うことになる。また、この顔追尾判定処理では、顔追尾処理が不可能と判定された場合に、現在の追尾領域は、顔検出部101による顔検出結果を用いずに、輝度情報や色情報に基づく物体追尾処理が実施される。
この顔追尾判定処理が開始され、ステップS400に進むと、システム制御回路50は、現在の追尾領域の座標を取得する。
次に、ステップS401に進んで、システム制御回路50は、顔検出部101を制御して、画像表示メモリ24にある現在表示中の表示画像データから表示画像データ上にある人物の顔と思われるすべての領域を検出し、それぞれの領域の座標を取得する。
次に、ステップS402に進んで、システム制御回路50は、顔検出の結果表示画像データから顔領域が検出できたか否かを判定する。そして、システム制御回路50は、顔領域が検出できなかった場合(ステップS402でNO)に、ステップS420へ進み、顔検出回数をカウントアップした後に、ステップS421に進み,顔追尾不可能と判定する。
また、システム制御回路50は、顔領域が検出できた場合(ステップS402でYES)に、次のステップS403へ進む。このステップS403において、システム制御回路50は、追尾領域と検出されたすべての顔領域との距離をそれぞれ算出する。
次に、ステップS404に進み、システム制御回路50は、ステップS403において算出された距離の中から最も追尾領域と近い位置にある最至近顔領域を決定する。
次に、ステップS405に進み、システム制御回路50は、タッチ入力からの追尾経過時間が所定時間未満か判定する。この追尾経過時間は、タッチ入力してから追尾を継続して成功している時間のことであり、途中で追尾に失敗した場合にはリセットされる。そして、システム制御回路50は、タッチ入力からの追尾経過時間が所定時間未満であると判定した場合(ステップS405でYES)に、ステップS406に進む。
このステップS406において、システム制御回路50は、ステップS404で決定した最至近顔領域との距離が所定の閾値未満であるかを判定する。システム制御回路50は、閾値未満であると判断した場合(ステップS406でYES)に、ステップS407へ進み、最至近顔領域での顔追尾可能な場合と判定し、顔追尾判定処理を終了する。
また、システム制御回路50は、最至近顔領域との距離が閾値以上であると判断した場合(ステップS406でNO)に、ステップS408で顔追尾不能と判定し、この顔追尾判定処理を終了する。これは、ユーザがタッチした位置と顔領域とが離れているのであれば、ユーザは顔以外のものをタッチ入力で追尾対象として指定する意図があると考えられるためである。
この顔追尾判定処理では、システム制御回路50が上述のように制御することにより、タッチした位置と顔領域とが近く、かつ、タッチ入力から所定時間を経過していなければ、顔検出の結果を反映して顔追尾による追尾処理へ素早く移行することができる。
次に、この顔追尾判定処理で、前述したステップS405において、タッチ入力からの追尾経過時間が所定時間に達していると判定された場合(ステップS405でNO)について説明する。
この場合には、ステップS409に進み、システム制御回路50が、最至近顔領域と追尾領域の距離が閾値未満か判定し、閾値未満であると判定した場合(ステップS409でYES)に、ステップS410へ進む。
ステップS410では、第1の顔領域である今回の最至近顔領域と、第2の顔領域である前回の最至近顔領域との距離を求める距離算出処理を行う。この距離算出処理では、システム制御回路50が、今回の最至近顔領域と前回の最至近顔領域との距離を求めることで最至近顔領域となっている顔領域の動き量を算出する。
次に、システム制御回路50は、ステップS411へ進み、ステップS410で求めた距離が閾値未満であるか判定し、閾値未満であれば、ステップS412に進み、至近顔存在回数をカウントアップする。つまり、システム制御回路50は、最至近顔領域であると決定された顔領域が、追尾領域の近くに留まっていると判定した場合に、至近顔存在回数をカウントアップする。
反対に、システム制御回路50は、ステップS409、ステップS411において、各々の距離が閾値以上であると判定した場合に、ステップS413へ進み、至近顔不在回数をカウントアップする。システム制御回路50がこのように制御する理由は、次のような状況を考慮したためである。
1つは、動き量の大きな顔領域が画面内を移動し、さらに、この顔領域が画面外に移動してしまう状況である。動きの大きな顔領域を追尾対象としてしまうと、追尾を開始してもすぐに見失ってしまう可能性が高いため、システム制御回路50は、このような顔が最至近顔であった場合には、至近顔不在回数をカウントアップする。
もう1つは、顔領域が画面を移動中の状態で、一時的に追尾領域に近づいただけで、本来追尾したい被写体と関連がないと考えられる状況である。主被写体とするつもりのない人物が、たまたま追尾領域の近くに移動した場合に、この人物を誤って追尾してしまう可能性もあるため、システム制御回路50は、このような顔が最至近顔であった場合には、至近顔不在回数をカウントアップする。
次に、システム制御回路50は、ステップS414へ進んで、顔検出を行った回数をカウントアップする。さらに、システム制御回路50は、ステップS415に進み、顔検出回数が所定回数以上か判定し、所定回数以上と判定した場合(ステップS415でYES)であれば、ステップS416へ進む。
システム制御回路50は、ステップS416に進み、至近顔存在回数が所定回数以上か判定し、所定回数以上の場合に顔追尾可能であると判定して(ステップS416でYES)、ステップS417へ進む。ステップS417でシステム制御回路50は、顔追尾可能と判断した時点での最至近顔領域を、追尾領域として設定する。
また、システム制御回路50は、ステップS416で、至近顔存在回数が所定回数未満か判定し、所定回数未満の場合に顔追尾不可能であると判定して(ステップS416でNO)、ステップS421で顔追尾は不可能と判断する。
前述したステップS415において、システム制御回路50は、顔検出回数が所定回数未満と判定した場合(ステップS415でNO)に、ステップS418に進む。ステップS418では、システム制御回路50が、至近顔不在回数が所定回数以上か判定を行う。
システム制御回路50は、至近顔不在回数が所定回数以上であると判定した場合(ステップS418でYES)に、ステップS419に進む。ステップS419でシステム制御回路50は、顔検出回数、至近顔存在回数、至近顔不在回数をそれぞれクリアし、顔追尾判定処理のリセットを行う。そして、システム制御回路50は、ステップS421に進み、この時点での顔追尾が不可能であるときの処理を行って、本顔追尾判定処理を終了する。
上述の制御によれば、システム制御回路50は、タッチ入力から所定時間経過後に、物体追尾中における追尾領域と顔検出結果から検出された顔領域との状況に応じて、物体追尾処理から顔追尾処理へ切り替えることができる。
例えば図6に示すように、タッチ入力時点で、ある人物の顔検出できない横顔や後ろ向きの顔等が選択されたときでも、その後、ある人物の顔が正面を向いて、安定して顔が検出できるようになる場合がある。このような場合には、上述の制御によって、顔検出結果による顔追尾が可能となる。
すなわち、この図6の場合には、デジタルカメラで被写体像を撮像したときに、撮像手段である撮像素子14で画像データを得る。このデジタルカメラでは、画像データに基づいて、撮像した被写体像を表示手段である表示部28に表示可能に構成されている。
このとき、ユーザは、指定手段としてのタッチパネルから追尾処理を行いたい被写体を指定するタッチ入力を行う。
このタッチ入力で指定された被写体に基づいて、追尾手段を兼ねるシステム制御回路50は、指定手段で指定された被写体の追尾を行う追尾領域を設定する。
また、このデジタルカメラでは、顔検出部101が表示部28に表示中の画像から人物の顔を検出する。
このデジタルカメラでは、制御手段としてのシステム制御回路50が、指定手段で指定された被写体が、人物の顔であるか又は物体であるかを、顔追尾判定処理によって判別する。
また、この顔追尾判定処理では、追尾領域を始めに設定する際の第1の設定条件と、追尾領域が設定されている状態で適用される第2の設定条件とに照らして、追尾領域を設定する。
この顔追尾判定処理では、追尾領域を始めに設定する際の第1の設定条件を、例えば、所定期間内に一度でも所定範囲内に位置したことに設定する。
また、この顔追尾判定処理では、第2の設定条件を、例えば、追尾領域設定手段により設定された追尾領域と顔検出手段により検出された顔の位置とが所定範囲内に位置することが所定回数以上あったことに設定する。
この制御手段としてのシステム制御回路50は、指定された被写体が人物の顔であると判定した場合に、第2の追尾処理である顔追尾処理を実行する。
また、システム制御回路50は、被写体が物体であると判定した場合に、第1の追尾処理である物体追尾処理を実行する。
そして、制御手段としてのシステム制御回路50は、物体追尾処理を実行しているときに、顔追尾判定処理によって追尾領域を含む所定の範囲内で顔検出手段としての顔検出部101が人物の顔の検出を行う。このとき、システム制御回路50は、顔検出部101が人物の顔を検出した回数が閾値以上となったと判定した場合に、物体追尾処理から顔追尾処理に切り替えて制御する。
これにより、このデジタルカメラでは、人物の横顔を追尾対象として指定されていた場合でも、人物の正面の顔を追尾対象に切り替えて適切に顔追尾処理を実行できる。
また、例えば図7に示すように、物体追尾中に顔検出された顔が一時的に近くに近づいたり、横切ったりする場合がある。このような場合には、上述の制御によって、物体追尾処理から顔追尾処理へ切り替わることは無く、物体追尾を続行するようにできる。
すなわち、この図7の場合には、システム制御回路50が物体追尾処理を実行しているときに、顔追尾判定処理によって撮影された画像データから顔検出部101が人物の顔の検出が行われる。このとき、システム制御回路50は、顔検出部101が、人物の顔を追尾領域を含む所定の範囲内で検出したときの顔の検出回数である至近顔存在回数をカウントする。これと共に、システム制御回路50は、顔検出部101が、人物の顔を追尾領域を含む所定の範囲外で検出したときの顔の検出回数である至近顔不在回数をカウントする。
そして、システム制御回路50は、追尾領域を含む所定の範囲外で顔検出部101が人物の顔を検出した回数である至近顔不在回数が所定回数以上か判定する。この判定により、至近顔不在回数が所定回数以上と判定された場合には、システム制御回路50は、物体追尾処理を続行するよう制御する。
これにより、このデジタルカメラでは、ユーザが物体追尾を指定しているときに、この追尾中の物体を人物が横切っても、物体追尾の状態を維持することができる。
ここで、顔追尾判定処理において、追尾領域を始めに設定する際の第1の設定条件(ステップS406〜S408)と、追尾領域が設定されている状態で適用される第2の設定条件(ステップS409〜S421)を異ならせている理由について説明する。
上述したように、指定した人物が横を向いていたり、後ろを向いていたりした場合で、周囲が暗い場合等には、画面の中から正しく顔を検出できない場合がある。しかしながら、ユーザが主被写体としようとしている人物が、追尾開始時からしばらくの間、顔検出できないような状況にあることは一般的には考えにくい。
つまり、主被写体であるならば、追尾開始時から比較的短い時間の間に、顔検出に一度ぐらいは成功するはずである。これは言い換えれば、追尾開始時から比較的短い時間の間に一度も顔検出できなかった場合は、人物以外が主被写体として選択されている可能性が高いと考えることができる。そのため、追尾開始後に所定時間経過した後に適用される第2の設定条件は、第1の設定条件よりも顔追尾処理に移行する条件を厳しく設定している。
なお、第1の設定条件および第2の設定条件は、上記実施形態に限られるものではない。例えば、追尾領域の所定距離内における最至近顔領域の連続検出回数や、追尾領域の所定距離内における最至近顔領域の検出頻度の閾値を、第2の設定条件のみに追加してもよい。あるいは、所定期間内における最至近顔領域の移動軌跡と追尾領域の移動軌跡の相関の閾値を、第2の設定条件のみに追加してもよい。
また、設定条件として、第2の設定条件の閾値を第1の設定条件の閾値よりも厳しい値に設定してもよい。例えば、追尾領域の所定距離内における最至近顔領域の検出回数の閾値や、追尾領域の所定距離内における最至近顔領域の連続検出回数の閾値を、第2の設定条件では第1の設定条件よりも高い値に設定することが考えられる。あるいは、追尾領域の所定距離内における最至近顔領域の検出頻度の高さの閾値や、所定期間内における最至近顔領域の移動軌跡と追尾領域の移動軌跡の相関の高さの閾値を、第2の設定条件では第1の設定条件よりも高い値に設定することが考えられる。あるいはこれら各条件を組み合わせてもよい。
すなわち、第1の設定条件よりも第2の設定条件のほうが、顔追尾処理に移行しにくく設定されるのであればよく、種々の条件を適用することが可能である。
また、上記実施形態では、ユーザが追尾対象とする被写体を指定する指定手段として、操作部70に含まれるタッチパネルを例にあげたが、これに限られるものではない。操作部70に含まれるダイアルや十字キーを指定手段として構成しても構わない。あるいは、動画像を取り込んだパーソナルコンピュータのアプリケーション上で上述した追尾処理を行う場合であれば、カーソルで追尾対象とする被写体を指定したり、キーボードにて追尾対象とする被写体が存在する画面上の領域を指定したりしても構わない。
また、上記実施形態では、顔検出部101の例として、表示画像データから顔領域を検出する例をあげたが、撮像素子14にて生成された信号から、表示画像データとは別に、表示画像データよりも解像度を低くした顔検出用の画像データを生成しても構わない。
また、物体追尾処理の例として、輝度情報と色情報のいずれかを選択し、選択した情報の相関を用いて、新たな画像データから追尾領域を検出する構成を例にあげたが、これに限られるものではない。輝度情報と色情報の両方の相関の総和から新たな追尾領域を求める構成としてもよいし、輝度情報と色情報の一方のみを用いて新たな追尾領域を求めるようにしてもよい。すなわち、画像間の相関の高い領域を検出し続けることで、追尾領域を更新する構成であればよい。
さらに、上記実施形態は撮影時に限らず、すでに撮影された動画像に対して、パーソナルコンピュータのアプリケーション上で上述した主被写体の追尾処理を行うように構成しても良い。主被写体を追尾することで、この主被写体を中心とした輝度調整や色調整を動画像に対して行うことが可能となる。もちろん、デジタルカメラやデジタルビデオカメラにて撮影された動画像を再生する場合でも同様である。
なお、本発明は上述したこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲で種々の形態を取り得ることは勿論である。また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又はソフトウェアが記憶された各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。