[第1の実施形態]
図1は、第1の実施形態に係るデジタルカメラ1の制御系の構成を示すブロック図であり、図1を用いて、第1の実施形態に係るデジタルカメラ1の構成を説明する。
被写体像を結像させるための複数の結像レンズを含む光学ユニット10は、焦点調整モータ、ズームモータ、及び絞り駆動モータ(共に、図示省略し、総称する場合、「各モータ」という。)を備えている。この光学ユニット10は、モータ駆動部12に接続されている。モータ駆動部12は、上記各モータに駆動信号を供給する。
モータ駆動部12は、装置全体の動作を司るCPU(Central Processing Unit)14に接続されている。すなわちモータ駆動部12は、CPU14の制御の下に、上記各モータに駆動信号を出力する。
前記光学ユニット10の背面側(前記被写体像と対峙する面とは反対側)には、CCD(Charge Coupled Device)16が配置されている。CCD16は、被写体から受光した光の受光量を表すアナログ信号に変換する機能を有している。このCCD16は、タイミングジェネレータ18と、CDS(Correlated Double Sampling)20と、接続されている。
タイミングジェネレータ18は、CCD16を駆動させるためのタイミング信号を生成してCCD16に供給する。CCD16は、このタイミング信号に同期したタイミングで、CDS20へアナログデータを出力する。
タイミングジェネレータ18は、CPU14に接続されている。このタイミングジェネレータ18は、CPU14によって制御されることで、前記タイミング信号を生成する。
また、CDS20は、ADC(Analog to Digital Converter)22に接続されている。CDS20は、CCD16から入力されたアナログデータに対して相関二重サンプリング処理等を行う。CDS20は、ADC22へアナログデータを出力する。
ADC22は、画像入力コントローラ24に接続されている。ADC22は、CDS20から入力されたアナログデータをデジタルデータに変換する。ADC22は、画像入力コントローラ24へデジタルデータを出力する。
画像入力コントローラ24は、システムBUS26に接続されている。画像入力コントローラ24は、ADC22から入力されたデジタルデータをシステムBUS26へ出力し、後述するSDRAM(Synchronous Dynamic Random Access Memory)38の所定領域に記憶するよう制御する。
システムBUS26には、上記画像入力コントローラ24の他、CPU14、画像信号処理回路28、圧縮・伸張処理回路30、AF(Auto Focus)検出回路32、AE(Auto Exposure)・AWB(Automatic White Balance)検出回路34、ROM(Read Only Memory)36、SDRAM38、顔検出部40、及び表示制御回路42が接続され、相互に信号のやりとりが実行される。
画像信号処理回路28は、入力された画像データに対して各種画像処理を施し、SDRAM38へ記憶するよう制御する。
圧縮・伸張処理回路30は、所定の形式(例えば、JPEG(Joint Photographic Experts Group)形式、モーションJPEG形式、MPEG(Moving Picture Experts Group)形式)で画像データの圧縮処理を施す一方、圧縮処理された画像データに対して圧縮形式に応じた伸張処理を施す。
AF検出回路32は、結像レンズの焦点調整を行うために、画像データのコントラスト値を検出する。
AE・AWB検出回路34は、1フレームのR、G、B信号を積算した積算値に基づいて、絞り値とシャッタースピードを決定するためのEV(Exposure Value)を検出すると共に、R、G、Bといった色の光源種に応じてデジタルゲインを検出する。すなわち、このAE・AWB検出回路34は、最適な露出及びホワイトバランスを調整するための物理量を検出する。
ROM36は、不揮発性のメモリであり、デジタルカメラ1の各機能を実行させるためのプログラム及びデータ等が記憶されている。
SDRAM38は、揮発性のメモリであり、画像データを一時的に記憶させ、デジタルカメラ1の各機能を実行する時に、ワークエリアとして使用される。
顔検出部40は、入力された画像データに顔が存在するか否かを判定する処理を実行する(詳細後述)。
表示制御回路42は、CCD16により得られた画像データにより示される画像及びメニュー画面等を表示するLCD(Liquid Crystal Display)44に接続されている。表示制御回路42は、シムテムBUS26を介して入力された画像データにより示される画像及びメニュー画面等をLCD44へ表示させるための信号を生成してLCD44へ供給する。
ところで、このデジタルカメラ1において、撮像する画像に「顔」が存在する場合、この「顔」を重視した補正、すなわち「顔」を標的とした色彩、濃度、輝度、及び色相等のプリント処理時のパラメータを補正するようにしている。
このため、第1の実施形態では、前記顔検出部40において顔検出を実行している。
顔検出の手法として、「顔」を表す所定サイズ(面積)のテンプレートを用いて、「顔」を検出することが周知の技術とされており、第1の実施形態においても、基本的には、この手法を採用している。
ただし、第1の実施形態における顔検出は、テンプレートのサイズと顔画像のサイズとを照合するための処理手順をより簡便化するようにしている。
図2を用いて、顔検出を実行する顔検出部40についての構成を説明する。なお、図2の各ブロックは、顔検出部40のハード構成を限定するものではなく、あくまでも機能的に分類したものである。
スルー画像抽出部46は、システムBUS26と、拡縮処理部48と、画角状態判定部50と、に接続されている。
スルー画像抽出部46は、CCD16において時間的に連続して撮像されることで得られたスルー画像データ(スルー画像は、例えば、30フレーム/secで処理される。)を1コマずつシステムBUS26から抽出する。抽出されたスルー画像データは、拡縮処理部48と、画角状態判定部50と、に出力される。拡縮処理部48は、サイズ拡縮率テーブル52と拡縮データメモリ54と、接続されている。
拡縮処理部48は、画像データとテンプレートデータと、を照合するために、スルー画像抽出部46で抽出したスルー画像データの画像サイズに拡大処理及び縮小処理を施すことで、段階的に分類された画像サイズに応じた画像データを形成する。
拡縮処理部48でのスルー画像データの画像サイズに対する拡大処理及び縮小処理は、サイズ拡縮率テーブル52に記憶された所定倍率を順次読取り、その後、画像データのアスペクト比を一定に保つと共に、解像度を変更させることなく、読取った各所定倍率を画像データの縦及び横の長さに乗じることで、段階的に分類された画像サイズの画像データを作成する。
なお、サイズ拡縮率テーブル52は、画像サイズの拡大処理及び縮小処理によって得られる画像サイズの段階に対応した所定倍率が記憶されている。第1の実施形態では、スルー画像抽出部46で抽出したスルー画像データの画像サイズの拡大処理及び縮小処理を行うことによって、10段階(画像サイズ0〜9)の画像サイズ別に画像データを形成するため、0〜9の段階毎に所定倍率が記憶されている。なお、上記段階の数は一例であり、必ずしも10段階である必要はないことはいうまでもない。
上記拡大処理及び縮小処理終了後、拡縮処理部48は、0〜9の画像サイズ別に形成された画像データを拡縮データメモリ54へ出力する。
拡縮データメモリ54は、拡縮データ読取部58に接続されている。拡縮データメモリ54は、拡縮処理部48において、スルー画像データに対して画像サイズの拡大処理及び縮小処理を施した0〜9の画像サイズ別に画像データが記憶される。
画角状態判定部50は、顔検出に用いる画像データの画像サイズの段階を表すサイズ識別データを設定するサイズ設定部56に接続されている。撮像された被写体が、前回撮像された被写体から変化した場合は、顔検出を再度やり直す。そのため、この画角状態判定部50は、今回撮像された被写体が、前回撮像された被写体から変化したか否かを判定する。
なお、撮像された被写体が、前回撮像された被写体から変化したか否かを判定するには、まず、前回抽出したスルー画像データの中央部分の領域の輝度を示すデータと今回抽出したスルー画像データの上記領域と同一領域の輝度を示すデータとの相関を表す評価値を算出する。そして、評価値が所定値以上となった場合に、撮像された被写体が変化したと判定される。
画角状態判定部50において、撮像された被写体が、前回撮像された被写体から変化したと判定された場合は、画角状態判定部50は、サイズ設定部56に設定されたサイズ識別データをリセットするために、サイズ設定部56にリセット信号を出力する。このサイズ設定部56は、このリセット信号に基づいて、サイズ識別データをリセットすると共に、0〜9の画像サイズの全て又は何れかの段階を表すサイズ識別データを新たに設定する。
このサイズ設定部56は、拡縮データ読取部58と、サイズ選別部60と、接続され、拡縮データ読取部58は、比較部62に接続されている。この拡縮データ読取部58は、サイズ設定部56が設定したサイズ識別データを読取り、読取ったサイズ識別データに該当する画像サイズの画像データを拡縮データメモリ54から読取る。拡縮データ読取部58は、拡縮データメモリ54から読取った画像データを比較部62へ出力する。
比較部62は、所定サイズ(面積)のテンプレートを表すテンプレートデータが記憶されたテンプレートデータメモリ64と、サイズ選別部60と、接続されている。この比較部62は、テンプレートデータメモリ64からテンプレートデータを読取る。比較部62は、読取ったテンプレートデータと拡縮データ読取部58から出力された画像データと、を比較する。この比較によって、画像データに顔が存在するか否かの判定が行われる。判定後、比較部62は、判定結果をサイズ選別部60へ出力する。
なお、画像データとテンプレートデータとの比較方法は、周知の技術と同様な手法を用いて行うため説明を簡略化するが、拡縮処理部48において、画像サイズの拡大処理及び縮小処理を施した各々の画像データに対して、テンプレートデータと同一サイズ(同一のアスペクト比であり、かつ同一面積である)であると共に、0〜9の画像サイズのうち最小画像サイズよりも小さなサイズ(以下、「読取り単位」という。)に区分された画像データの各部分(以下、「部分画像データ」という。)を順次切り出し(例えば、1画素ずつ移動させて)、切り出した部分画像データとテンプレートデータとを順次比較する。
より具体的には、切り出した部分画像データの輝度値とテンプレートデータの輝度値との相関を表す評価値を算出し、評価値が所定の閾値以上の値を示す場合には、切り出した部分画像データが顔であると予想される。
なお、本実施の形態では、スルー画像を所定の複数の倍率に応じて拡大又は縮小して生成した複数の画像を、該画像の画像サイズ別に段階的に分類し、分類された各段階の画像を上記読取り単位毎に順次読取り、読取り単位で区分された部分に顔が存在すると判定された画像を検出する顔検出処理を、スルー画像抽出部46で抽出されたスルー画像データの各コマ毎に連続して行う。
サイズ選別部60は、顔抽出データメモリ更新部66に接続されている。サイズ選別部60は、比較部62から出力された判定結果に基づいて、次のスルー画像データに対する顔検出に用いる画像サイズを選別する。選別を行った後に、サイズ選別部60は、選別した画像サイズの段階をサイズ設定部56及び顔抽出データメモリ更新部66へ出力する。
次のスルー画像データに対する顔検出に用いる画像サイズを選別する理由として、比較部62で顔が存在すると予想される画像サイズ、及び当該画像サイズに近傍の画像サイズを用いて、2回目以降のスルー画像データに対する顔検出を行うことで、0〜9の画像サイズ別に形成された全ての画像データを用いて顔検出を行う必要性が無くなるので、処理時間を軽減することが可能となるためである。
図3は、一般的な被写体から、顔サイズ幅を統計的に表したものであり、0〜9の画像サイズのうち、前回の顔検出処理によって顔が存在すると判定された2つの画像サイズに対して、次の顔検出では、この2つの画像サイズの両隣の画像サイズ、すなわち4つの画像サイズをカバーすることによって、98%の確率で顔を検出することが可能であることを示している。
従って、上記事実に基づいて、サイズ選別部60では、比較部62で顔が存在すると予想される画像サイズの両隣の画像サイズを、次のスルー画像データに対して、4つの画像サイズを考慮して、2回目以降の顔検出に用いる画像サイズとして選別し、選別した画像サイズの段階を表すサイズ識別データがサイズ設定部56によって設定される。
図2に示される如く、顔抽出データメモリ更新部66は、データ出力部68に接続されている。顔抽出データメモリ更新部66は、サイズ選別部60において、顔が存在すると判定された画像サイズの画像データに含まれる顔部分を抽出する。そして、抽出した顔部分に関するデータを一時的に記憶した後、データ出力部68へ記憶したデータを出力する。
データ出力部68は、システムBUS26に接続されている。データ出力部68は、抽出した顔部分の明るさ補正及び濃度補正等を行うため、顔抽出データメモリ更新部66に記憶された画像データに関するデータをシステムBUS26に出力する。
次に、第1の実施形態に係るデジタルカメラ1の作用を説明する。
まず、光学ユニット10を介して被写体の撮像がCCD16で行われ、被写体像を写すR(赤)、G(緑)、B(青)の各色のアナログ信号がCCD16から順次出力され、出力されたアナログ信号は、CDS20に入力されて、相関二重サンプリング処理等が実施される。
その後、CDS20からADC22へアナログ信号が入力されて、ADC22は、R、G、B各色のアナログ信号をデジタル信号に変換して画像データを形成し、画像データを画像入力コントローラ24へ出力する。画像入力コントローラ24は、ADC22から入力された画像データを蓄積し、一時、SDRAM38の所定領域へ記憶する。
また、SDRAM38へ記憶された画像データは、CPU14の制御下で、画像信号処理回路28で読み出され、これらにAE・AWB検出回路34によって検出された物理量に応じたデジタルゲインをかけることでホワイトバランス調整を行うと共に、ガンマ処理及びシャープネス処理を行って所定ビット(一例として8ビット)の画像データを生成し、更にYC信号処理を施して輝度信号Yとクロマ信号Cr、Cb(以下、「YC信号」という。)を生成し、YC信号をSDRAM38の上記所定領域とは異なる領域に記憶する。
また、LCD44は、CCD16による連続的な撮像によって得られたスルー画像を表示してファインダとして使用することができるものとして構成されているが、このようにLCD44をファインダとして使用する場合は、生成したYC信号を、表示制御回路42を介して順次LCD44に出力する。これによって、LCD44にスルー画像が表示されることになる。
さらに、顔検出部40において、スルー画像抽出部46が、上記スルー画像に関する画像データを取得する。取得後、拡縮処理部48によって画像サイズの拡大処理及び縮小処理を行う。その後、画像サイズの拡大処理及び縮小処理によって得られた複数の画像データ毎に読取り単位で示されるサイズの輝度値と所定サイズのテンプレートデータの輝度値とを順次比較することによって、どの画像サイズの画像データに顔が存在するか否かの判定を比較部62で行う。
次に、図4に示すフローチャートを用いて顔検出部40における処理について説明する。
ステップ300では、スルー画像抽出部46において、CCD16によって連続的に撮像されることで得られたスルー画像データを1コマ抽出する。そして、抽出したスルー画像データを拡縮処理部48及び画角状態判定部50へ出力する。
次にステップ302では、撮像された被写体が前回撮像された被写体から変化したか否かの判定を行う。画角状態判定部50において、前回スルー画像抽出部46が抽出した画像データと、今回抽出した画像データとを比較する。比較後、撮像された被写体が前回撮像された被写体から変化したと判断した場合は、ステップ304へ進む。変化していないと判断した場合は、ステップ314へ進む。なお、ステップ300によって抽出されたスルー画像データが、顔検出処理が行われる対象となる1コマ目のスルー画像データである場合は、常にステップ304へ進む。
ステップ304では、0〜9の画像サイズ(フルサイズ)で顔検出を行うため、サイズ設定部56で0〜9の画像サイズの段階を表すサイズ識別データが設定される。
次に、ステップ306では、拡縮処理部48において、サイズ設定部56で設定されたサイズ識別データに基づいてサイズ拡縮率テーブル52に予め記憶された0〜9の画像サイズ別に記憶された所定倍率を順次読取り、次のステップ308へ進む。
次に、ステップ308では、ステップ306の処理において読取った所定倍率を、スルー画像抽出部46で抽出したスルー画像データの縦及び横の長さに乗じることで、画像サイズ別に画像データが形成され、形成された全ての画像データを拡縮データメモリ54へ記憶する。
次に、ステップ310は、ステップ308で形成された各画像データに対して上述した顔検出処理を実行する。
本ステップ310における顔検出に関する処理の詳細を図5のフローチャートを用いて説明する。
まず、ステップ400において、拡縮データ読取部58が、サイズ設定部56で設定されたサイズ識別データに示される画像サイズの段階を読取る。次のステップ402において、拡縮データ読取部58が、ステップ400で読取ったサイズ識別データに該当する画像サイズの画像データを拡縮データメモリ54から読取る。
ステップ404では、比較部62が、テンプレートデータメモリ64からテンプレートデータを読取り、読取ったテンプレートデータと拡縮データ読取部58で読取った画像データとの比較を行う。
画像データとテンプレートデータとの比較方法は、上記に示すように、画像サイズ別に形成された各画像データの輝度値とテンプレートデータの輝度値との相関を表す評価値を算出する。
次に、図4に示すステップ312では、スルー画像に対する顔検出処理を終了する指示が入力されたか否かを判断し、肯定判断となった場合は本プログラムを終了する一方、否定判断となった場合はステップ300へ戻り、次のコマのスルー画像データに対し顔検出処理を行う。なお、顔検出処理を終了する指示は、例えば、ユーザが所定のボタン(例えば、シャッターボタン)を押圧することにより、入力される。
一方、ステップ302で否定判断となった場合は、ステップ314’において、サイズ選別部60で、前回の顔検出によって顔が存在すると予想されたスルー画像の画像サイズの段階に基づいて、次のスルー画像に対して行う顔検出処理に用いる画像サイズの段階が選別される。
本ステップでは、サイズ選別部64において、ステップ310の顔検出において算出した評価値が、所定の閾値以上を示す画像サイズを含む近傍の画像サイズ(本例では4つの画像サイズ)を、次のスルー画像に対して拡大又は縮小する画像サイズの段階として選別する。なお、前回のスルー画像データから顔が検出されなかった場合は、本ステップでは、画像サイズの段階として0〜9の画像サイズを選別する。
次のステップ316では、サイズ設定部56によってステップ312で選別された画像サイズの段階を表すサイズ識別データが設定される。
次に、図3に示す顔検出部40の処理の具体的な例を図6に示し処理の流れを簡略に説明する。
まず、図6(A)は、スルー画像抽出部46が、スルー画像データを抽出し、抽出したスルー画像データに対して、画像サイズの拡大処理及び縮小処理によって、0〜9(フルサイズ)の画像サイズ別に画像データが形成されていることを表したものである。
図6(B)は、0〜9(フルサイズ)の画像サイズ別に形成された画像データとテンプレートデータと、を用いて顔検出を行った結果、顔が存在すると予想される画像サイズが5及び6であることを表したものである。
次に、図6(C)は、次の顔検出に使用する画像サイズを選別するために、顔が存在すると予想される画像サイズ5及び6の近傍の4つの画像サイズを含むように画像サイズ4〜7が選別されたことを表したものである。
そして、図6(D)は、選別された画像サイズ4〜7の画像データとテンプレートデータと、を用いて2コマ目のスルー画像に対して顔検出処理を行い、その結果、顔が存在すると予想される画像サイズが4及び5であることを表したものである。次の図6(E)は、顔が存在すると予想される画像サイズ4及び5に対して、2つの画像サイズの両隣の画像サイズ、すなわち4つの画像サイズを含むように、画像サイズ3〜6が3コマ目のスルー画像に対する顔検出量に用いる画像データとして選別されたことを表している。
[変形例]
上記第1の実施形態は、顔検出で顔が検出された画像サイズに対して、画像サイズの制限幅を固定して、次の顔検出に用いる画像サイズを選別するよう制御を行っている。
しかし、画像データの画像サイズに対して被写体の顔のサイズが小さい時は、画像サイズが拡大された画像データから顔が検出される。
従って、部分画像データとテンプレートデータとの比較回数が増加するため、顔検出の処理速度に大きな影響が生じる。
逆に、画像データの画像サイズに対して被写体の顔サイズが大きい時は、画像サイズの小さい画像データから顔が検出される。
従って、部分画像データとテンプレートデータとの比較回数は軽減されるため、顔検出の処理速度に大きな影響が生じない。
そこで、第1の実施形態の変形例は、大きな画像サイズを用いて顔検出を行う場合には、顔検出に用いる画像サイズの候補の段階の数を相対的に少なくするよう制御することで、顔検出の処理速度を制御するものである。
第1の実施形態の変形例に係るデジタルカメラ1の制御系の構成は、上記第1の実施形態に係るデジタルカメラ1の制御系の構成(図1参照)と同様であるので、同一符号を用いて説明は省略する。
また、顔検出を実行する顔検出部40についての構成を、図7を用いて説明するが、上記第1の実施形態で説明した顔検出部40(図2参照)と同様な構成については同一の符号を用いて説明は省略し、相違する部分のみ説明する。
上記第1の実施形態における顔検出部40と相違する部分は、顔検出に使用する画像サイズの選択幅を制限するためのデータを記憶するサイズ制限データ記憶部70が備えられている点である。サイズ制限データ記憶部70は、サイズ選別部60に接続されている。サイズ選別部60は、このサイズ制限データ記憶部70に記憶されたデータを読取り、次の顔検出に用いる画像サイズの選別を行っている。
図8(A)は、小さなサイズから順に0〜9で表した画像サイズの段階、及び画像サイズの拡大処理及び縮小処理によって得られた画像データの短辺を所定数nで除算した長さで構成されている。また、図8(A)は、画像データに含まれる顔のサイズが大きいものほど画像サイズの小さいものから顔が検出され、画像データに含まれる顔のサイズが小さいものほど画像サイズの大きいものから顔が検出されることを示している。
また、図8(B)は、顔検出に使用する画像サイズの制限幅を制限するための制限幅チャートの一例である。各制限幅チャートの幅は、図8(A)に示す画像サイズの段階に対応しており、パターンa、パターンb、及びパターンc等の制限幅の相違するパターンから構成されている。これらのパターンの種類に対応させて画像サイズの段階数を制限する幅が、サイズ制限データ記憶部70に記憶されている。
このパターンの設定の一例として、図8(B)では、パターンaは、顔検出に用いる画像サイズの制限幅を0〜7に設定し、パターンbは、制限幅を3〜8に設定し、さらに、パターンcは、制限幅を6〜9に設定している。
パターンの設定の一例として、パターン毎に制限幅を変えて設定する理由を説明する。上記第1の実施形態で説明したように、次の顔検出に用いる画像サイズの制限幅を固定すると、制限幅に応じて顔検出の処理速度に差異が生じる。
しかしながら、上記のように被写体の顔サイズの大きいものほど、小さい画像サイズから顔が検出されるため、切り出した部分画像データとテンプレートデータとの比較回数は少なくてすむ。つまり、顔検出の処理速度に大きな影響が生じない。従って、被写体の顔サイズの大きいものほど制限幅を広げて設定することでも、処理速度に大きな影響を及ぼすことはない。
一方、被写体の顔サイズが小さいものほど、大きい画像サイズから顔が検出されるため、切り出した部分画像データとテンプレートデータとの比較回数が多くなる。つまり、顔検出の処理速度に大きな影響が生じる。従って、被写体の顔サイズの小さいものほど制限幅を狭めて設定する。
すなわち、パターンa、パターンb、及びパターンcの制限幅の範囲に含まれる画像サイズを用いて各々顔検出を行った場合、顔検出に要する処理時間を同等とすると共に、候補の段階の数をより広げて各制限幅を設定することで、顔検出精度向上と処理速度の制御を行うことが可能となる。
また、サイズ制限データ記憶部70には、図9に示すパターン遷移表を表すデータの一例が記憶されている。
図9に示すパターン遷移表は、前回の顔検出で顔が存在すると予想された画像サイズのうち最大の画像サイズと今回の顔検出で顔が存在すると予想された画像サイズのうち最大の画像サイズとの関係から、次の顔検出に使用する画像サイズの制限幅を定めるために、上記パターンa、パターンb、及びパターンcが設定できるように構成されている。
また、図9は、前回の顔検出で顔が存在すると予想された画像サイズのうち最大の画像サイズと今回の顔検出で顔が存在すると予想された画像サイズのうち最大の画像サイズとの関係に対応させてパターンの種類を表すデータが設定された状態を示している。
次に、図10に示すフローチャートを用いて顔検出部40における処理を説明するが、上記第1の実施形態で説明した図3のフローチャートと同一のステップは同一の符号を付して説明を省略する。
ステップ500では、ステップ310による顔検出処理によって顔が検出された場合は、ステップ502へ進む一方、顔が検出されなかった場合はステップ502における処理を実行することなくステップ312へ進む。
ステップ502では、ステップ310による顔検出処理によって顔が存在すると予想される画像サイズのうち、最大の画像サイズを表すデータが選別され、一時的にサイズ選別部60に記憶される。
ステップ314’では、次の顔検出において使用する画像サイズの段階の選別を行う。
本ステップでは、サイズ選別部60が、ステップ502において取得された最大の画像サイズを表すデータに基づいて、次のスルー画像データに対する顔検出の対象となる段階の画像サイズを示すパターンをパターン遷移表(図9参照)から読取る。
次に、サイズ選別部60が、読取ったパターンに該当する図8(B)に示す制限幅チャートの範囲内の画像サイズの段階を表すデータを読取る。
読取った画像サイズの段階を表すデータは、サイズ選別部60からサイズ設定部56へ出力される。サイズ設定部56は、サイズ選別部60から出力された画像サイズを表すデータをサイズ識別データとして設定する。すなわち、制限幅チャートを用いることで、次の顔検出に使用する画像サイズの制限幅を制御している。
[第2の実施形態]
以下、本発明の第2の実施形態について説明する。
上記第1の実施形態において、被写体とテンプレートとの照合によって顔検出を実行しているが、例えば、図11に示すように、被写体の顔には、正面顔を0°、左横向きを正として、それぞれ角度を有する。第2の実施形態では、これらの顔の左右の向き(アウトプレーン角度)を表すテンプレートを予め作成し、顔検出を実行するようにしている。
しかし、横顔や斜め横顔等の向きを表すテンプレートを用いた顔検出処理を更に行うと、被写体とテンプレートとの照合を行う回数が増加し、処理時間も増加する。
そこで、第2の実施形態では、横顔や斜め横顔等の向きを表すテンプレートを用いて顔検出を実行すると共に、被写体とテンプレートとの照合を行う回数を減らすよう制御することで、処理時間の増加を防ぐことを目的とする。
第2の実施形態に係るデジタルカメラ1の制御系の構成は、上記第1の実施形態に係るデジタルカメラ1の制御系の構成(図1参照)と同様であるため、同一符号を用いて説明を省略する。
また、顔検出を実行する顔検出部40についての構成を、図12を用いて説明するが、上記第1の実施形態で説明した顔検出部40(図2参照)と同様な構成については同一の符号を用いて説明は省略し、相違する部分のみ説明する。
上記第1の実施形態における顔検出部40と相違する部分は、アウトプレーン角度に応じて顔検出を実行するか否かを判定するためのデータを記憶する検出可否判定テーブル72が備えられている点である。なお、このアウトプレーン角度は、正面を0°とし、左横向きを正としている。
検出可否判定テーブル72は、比較部62に接続されている。比較部62は、検出可否判定テーブル72に記憶されたデータを読取り、顔検出を実行するか否かを判定する。顔検出を実行すると判定した場合、比較部62は、画像データとテンプレートデータとの比較を行う。
この検出可否判定テーブル72には、例えば、下記表1に示すように、アウトプレーン角度と顔検出に用いる画像サイズとの関係から、0〜9の画像サイズの段階に対して顔検出を実行するか否かを表す検出可否情報(○は、顔の検出を行うことを示し、×は、顔の検出を行わないことを示す。)が設定される。
なお、表1に示すアウトプレーン角度は一例であり、表1に示す角度と異なる角度をアウトプレーン角度として用いてもよい。
一般的に被写体中には、小さい顔の真横顔が、正面顔や斜め横顔よりも撮像される回数が少ないため、上記表1に示すように、大きな画像サイズ6〜9については、顔検出処理の対象となるアウトプレーン角度の種類が少なく設定される。すなわち、分類された画像の画像サイズが大きいほど顔検出処理の対象となるアウトプレーン角度の種類が少なく設定される。
図13は、アウトプレーン角度によって顔検出を実行するか否かを制限する画像サイズ別制限装置72A〜72J(図13において、72C〜72Iは図示省略)を示しており、顔検出に用いる画像サイズ別に、比較部62に備えられている。
この比較部62は、サイズ設定部56で設定されたサイズ識別データが、拡縮データ読取部58を介して入力されると共に、入力された画像サイズに該当する画像サイズ別制限装置72A〜72Jのいずれかにおいて顔検出を実行する。
図14に示される如く、この画像サイズ別制限装置72A〜72Jは、各々、選択器74と、制限器76〜84と、を含んで構成されている。
また、選択器74は、各アウトプレーン角度に対応させて備えられた制限器76〜84に接続されている。この選択器74は、顔検出を実行するアウトプレーン角度を選択する。選択後、顔検出を実行するか否かを表すデータを制限器76〜84へ出力する。
制限器76は、選択器74からの出力データに基づいて、アウトプレーン角度が、−90°(左横向き)の顔検出を実行するか否かのデータを設定する。顔検出を実行する場合はONに設定され、実行しない場合はOFFに設定される。他の制限器も同様な処理を実行し、制限器78はアウトプレーン角度が−45°、制限器80はアウトプレーン角度が0°、制限器82はアウトプレーン角度が45°、及び制限器84はアウトプレーン角度が90°に各々対応している。
また、テンプレートデータメモリ64には、正面顔を表すテンプレート以外にも、アウトプレーン角度が、−90°、−45°、45°、及び90°を有する顔を表すテンプレートデータが、予め記憶されている。
図15に示すフローチャートを用いて第2の実施形態に係るデジタルカメラ1における顔検出を説明するが、上記第1の実施形態で説明した顔検出に関する図4に示すフローチャートと同一の処理を行うステップについては、同一の符号を用いて説明を行う。
まず、ステップ400では、拡縮データ読取部58が、サイズ設定部56で設定された顔検出に用いるサイズ識別データを読取る。次のステップ402では、ステップ400で読取ったサイズ識別データに該当する画像サイズの画像データを拡縮データメモリ54から読取る。
次に、ステップ600では、比較部62が、ステップ400で読取ったサイズ識別データに基づいて、顔検出で用いる画像サイズ及びアウトプレーン角度に関するデータを検出可否判定テーブル72から読取る。
本ステップ600の一例として、サイズ設定部56において、画像サイズ5及び6を表すサイズ識別データが設定された場合、比較部62は、サイズ識別データに該当する画像サイズ別制限装置72F(図示省略)及び画像サイズ別制限装置72G(図示省略)において、顔検出を実行する。
画像サイズ別制限装置72Fでは、選択器74が、画像サイズ5に該当する検出可否情報を検出可否判定テーブル72から読取る。上記表1に示すように、−90°、−45°、0°、45°、及び90°の全アウトプレーン角度に対して顔検出を行うことを表す検出可否情報が読み取られるため、各制限器76〜84がONに設定される。
また、画像サイズ別制限装置72Gでは、選択器74が、画像サイズ6に該当する検出可否情報を検出可否判定テーブル72から読取る。上記表1に示すように、−45°、0°、及び45°のアウトプレーン角度に対して顔検出を行うことを表す検出可否情報が読取られるため、制限器78〜82がONに設定されると共に、制限器76及び84がOFFに設定される。
次のステップ404では、比較部62が、テンプレートデータメモリ64からテンプレートデータを読取る。そして、読取ったテンプレートデータと拡縮データ読取部58で読取った画像データとの比較を行う。
画像データとテンプレートデータとの比較方法は、上記したように、ステップ600で制限器76〜84においてONに設定されたアウトプレーン角度に該当するテンプレートデータを用いて、切り出した部分画像データの輝度値とテンプレートデータの輝度値との相関を表す評価値を算出する。
なお、第3の実施形態の顔検出は、上記第1の実施形態及び第1の実施形態の変形例で説明した図4及び図10に示すステップ310における処理で用いることも可能である。
[第3の実施形態]
以下、本発明の第3の実施形態について説明する。
上記第2の実施形態では、横顔や斜め横顔等の顔の向きを考慮して、顔検出を実行したが、撮影者が、デジタルカメラ1の光軸あるいは、それと平行な軸を中心に回転させて撮影を行う場合、図16に示すように、撮像された被写体の顔は、天地方向を0°とした時計回り方向に回転させたときを正として、それぞれ角度を有することになる。
このとき、顔検出を実行するには、さらに天地方向を0°とした時計回り方向に回転させた角度(インプレーン角度)を有する顔を表すテンプレートを作成すると、スルー画像データとテンプレートとの比較を行う回数が増加し、処理時間が増加する。
そこで、第3の実施形態では、天地方向を0°とした時計回り方向に回転させた顔を表すテンプレートを用いて顔検出を実行すると共に、スルー画像データとテンプレートとの照合を行う回数を減らすよう制御することで、処理時間の増加を防ぐことを目的とする。
第3の実施形態に係るデジタルカメラ1の制御系の構成は、上記第1の実施形態に係るデジタルカメラ1の制御系の構成(図1及び図2参照)と同様であるため、同一符号を用いて説明を省略する。
図17は、画像データとテンプレートデータとの比較を行う判別器群86を表しており、判別器群86は、比較部62に備えられている。この判別器群86は、判別器選択部88と、アウトプレーン(左横)判別器90、アウトプレーン(正面)判別器92、及びアウトプレーン(右横)判別器94(以下、総称する場合は、アウトプレーン判別器)と、インプレーン(0°)判別器96、インプレーン(30°)判別器98、・・・・インプレーン(330°)判別器118(以下、総称する場合は、インプレーン判別器)と、を含んで構成されている。
判別器選択部88は、アウトプレーン判別器と、インプレーン判別器と、接続されている。判別器選択部88は、顔検出の対象とするアウトプレーン角度及びインプレーン角度に対応させてアウトプレーン判別器及びインプレーン判別器を選択する。その後、選択したアウトプレーン判別器及びインプレーン判別器に画像データを出力する。
アウトプレーン(左横)判別器90は、判別器選択部88から出力された画像データと、アウトプレーン角度が270°(左横向き)のテンプレートデータをテンプレートデータメモリ64から読取り、比較を行う。同様に、アウトプレーン(正面)判別器92は、アウトプレーン角度が0°(正面向き)のテンプレートデータを用いて比較を行い、さらにアウトプレーン(右横)判別器94は、アウトプレーン角度が90°(右横向き)のテンプレートデータを用いて比較を行う。
なお、テンプレートデータメモリ64には、インプレーン角度及びアウトプレーン角度を有する顔を表すテンプレートデータが記憶されている。本実施の形態に係るデジタルカメラ1に記憶されているテンプレートデータは、アウトプレーン角度が、正面、右横、及び左横の顔を表す各テンプレートデータに対して、天地方向を0°とした時計周り方向に30°ずつ回転させることで作成されているが、これに限らず、アウトプレーン角度及びインプレーン角度として他の角度を適用しても良い。
インプレーン(0°)判別器96は、判別器選択部88から出力された画像データと、インプレーン角度が0°の顔を表すテンプレートデータをテンプレートデータメモリ64から読取り、比較を行う。同様に、その他のインプレーン(30°)判別器98〜インプレーン(330°)判別器118は、インプレーン角度に応じた顔を表すテンプレートデータを用いて比較を行う。
次に、図18〜図21に示すフローチャートを用いて、顔検出部40における処理について説明するが、図4のフローチャートと同一のステップは同一の符号を付して説明を省略する。なお、図18〜図21に示すフローチャートは、1コマ目のスルー画像に対して顔検出処理を行い、その結果に基づいて次のスルー画像に対する顔検出処理において検出対象とするインプレーン角度を設定するための処理を示している。
まず、ステップ700は、顔検出を実行した回数をカウントするためのカウンタ(dirc)のリセットを行う。次のステップ702では、インプレーン角度が0°、90°、及び270°の顔検出を行うため、判別器選択部88において、インプレーン(0°)判別器96、インプレーン(90°)判別器102、及びインプレーン(270°)判別器114が選択される。
インプレーン角度が0°、90°、及び270°の顔検出を実行する理由としては、撮影者が、デジタルカメラ1の光軸あるいは、それと平行な軸を中心に回転させて撮影を行う場合、撮像された被写体の顔は、天地方向を0°とした時計回り方向に回転させたときを正として、0°、90°、及び270°を有する機会が、多いためである。
次に、ステップ704では、ステップ304において、サイズ設定部56で設定された画像サイズの段階を表すサイズ識別データ、すなわち0〜9の画像サイズ別に形成された画像データに対して、ステップ502で選択されたインプレーン(0°)判別器96、インプレーン(90°)判別器102、及びインプレーン(270°)判別器114を用いて、顔検出を行う。
本ステップ704の詳細な処理を図20に示すフローチャートを用いて説明するが、上記第1の実施形態及び第2の実施形態で説明した顔検出に関する図5及び図15に示すフローチャートと同一の処理を行うものについては、同一の符号を付与して説明を行う。
まず、ステップ400では、拡縮データ読取部58が、サイズ設定部56で設定された顔検出に用いる0〜9の画像サイズを表すサイズ識別データを読取る。
次のステップ402では、拡縮データ読取部58が、ステップ400で読取ったサイズ識別データに該当する画像データを拡縮データメモリ54から読取る。
次に、ステップ738では、ステップ702で選択されたインプレーン(0°)判別器96、インプレーン(90°)判別器102、及びインプレーン(270°)判別器114を用いて、画像データとテンプレートデータとの比較を行う。
画像データとテンプレートデータとの比較を行うには、インプレーン(0°)判別器96が、インプレーン角度が0°であるテンプレートデータをテンプレートデータメモリ64から読取る。次に、ステップ402で拡縮データ読取部58において読取られた0〜9の画像サイズとインプレーン角度が0°であるテンプレートデータとの比較を、各画像サイズ毎に行う。
同様に、インプレーン(90°)判別器102は、インプレーン角度が90°であるテンプレートデータを用いて比較を行い、さらにインプレーン(270°)判別器114は、インプレーン角度が270°であるテンプレートデータを用いて比較を行う。
画像データとテンプレートデータとの比較方法は、上記したように、画像データの輝度値とテンプレートデータの輝度値との相関を表す評価値を算出することによって行う。
次に、ステップ706では、0〜9の画像サイズで形成された画像データのうち、顔が存在すると予想される画像サイズが検出された場合、ステップ740(図21参照)へ進む。つまりステップ738において、比較部62で顔検出を行った結果、算出された評価値が、所定の閾値以上を示す画像サイズが検出された場合は、ステップ740へ進む。画像サイズが検出されなかった場合は、ステップ708へ進む。
ステップ708では、顔検出を実行した回数を表すカウンタ(dirc)をインクリメントし、このカウンタが所定回数(DDAは予め定められた所定数を示す)以上となった場合、インプレーン角度が、0°、90°、及び270°に対しては、顔が存在しないと判定され、ステップ710へ進む。カウンタ(dirc)が所定回数以下である場合には、ステップ704へ戻る。なお、ステップ708に記載のdirc++は、dircがインクリメントされたことを表す。以下、dirc++は、同様な内容を示す。
ステップ710では、顔検出を実行した回数をカウントするためのカウンタ(dirc)のリセットを行う。次のステップ712では、顔検出を行うインプレーン角度の範囲を広げるため判別器選択部88によって、対応するインプレーン判別器が選択されることで、顔検出の対象となるインプレーン角度を設定する。なお、本実施の形態では、本ステップで設定するインプレーン角度を30°,60°,120°,240°,300°,330°とするが、これに限らないことはいうまでも無い。
ステップ714では、ステップ704と同様な処理を行うため説明を省略する。
次のステップ716は、ステップ706と同様な処理であるため説明を省略するが、比較部62で算出された評価値が、所定の閾値以上を示す画像サイズが検出された場合、ステップ740へ進み、画像サイズが検出されなかった場合、ステップ718へ進む。
ステップ718では、ステップ708と同様に、顔検出を実行した回数を表すカウンタ(dirc)をインクリメントし、このカウンタが所定回数(DDBは予め定められた所定数を示す)を超えた場合、ステップ720(図19参照)へ進む。すなわち、ステップ718で肯定判断となった場合とは、ステップ712で選択されたインプレーン判別器によって顔が検出されない場合である。
一方、カウンタ(dirc)が所定回数以下である場合には、ステップ714へ戻り、カウンタの値に応じたインプレーン角度で同一のスルー画像データに対して顔検出を繰り返す。
次に、ステップ720では、顔検出を実行した回数をカウントするためのカウンタ(dirc)のリセットを行う。次のステップ722では、アウトプレーン角度が左横、正面、及び右横、インプレーン角度が、0°、90°、及び270°の顔検出を行うため、判別器選択部86において、アウトプレーン(左横)判別器90、アウトプレーン(正面)判別器92、及びアウトプレーン(右横)判別器94、並びにインプレーン(0°)判別器96、インプレーン(90°)判別器102、及びインプレーン(270°)判別器114が選択される。
次に、ステップ724では、ステップ304において、サイズ設定部56で設定されたサイズ識別データ、すなわち0〜9の画像サイズ別に形成された画像データに対して、ステップ718で選択されたアウトプレーン(左横)判別器90、アウトプレーン(正面)判別器92、及びアウトプレーン(右横)判別器94、並びにインプレーン(0°)判別器96、インプレーン(90°)判別器102、及びインプレーン(270°)判別器114を用いて顔検出を行う。
本ステップ724の詳細な処理を、図20に示すフローチャートを用いて説明する。
まず、ステップ400では、拡縮データ読取部58が、サイズ設定部56で設定された顔検出に使用する0〜9の画像サイズを表すサイズ識別データを読取る。
次のステップ402では、拡縮データ読取部58が、ステップ400で読取ったサイズ識別データに該当する画像データを拡縮データメモリ54から読取る。
次に、ステップ738では、ステップ722で選択されたアウトプレーン(左横)判別器90、アウトプレーン(正面)判別器92、及びアウトプレーン(右横)判別器94、並びにインプレーン(0°)判別器96、インプレーン(90°)判別器102、及びインプレーン(270°)判別器114を用いて、画像データとテンプレートデータとの比較を行う。
本ステップ738における比較は、まず、アウトプレーン(左横)判別器90が、左横向きのテンプレートデータをテンプレートデータメモリ64から読取る。次に、ステップ402で拡縮データ読取部58において読取られた0〜9の画像サイズの画像データと左横向きのテンプレートデータとの比較を、各画像サイズ毎に行う。
同様に、アウトプレーン(正面)判別器92は、正面向きのテンプレートデータを用いて比較を行い、さらにアウトプレーン(右横)判別器94は、右横向きのテンプレートデータを用いて比較を行う。
アウトプレーン判別器における処理が終了すると、インプレーン(0°)判別器96が、インプレーン角度が0°であり、かつアウトプレーン角度が左横向き、正面向き、及び右横向きのテンプレートデータをテンプレートデータメモリ64から読取る。次に、ステップ402で拡縮データ読取部58において読取られた0〜9の画像サイズの画像データと読取ったテンプレートデータとの比較を、各画像サイズ毎に行う。
同様に、インプレーン(90°)判別器102は、インプレーン角度が90°であり、かつアウトプレーン角度が左横向き、正面向き、及び右横向きのテンプレートデータを用いて比較を行い、さらにインプレーン(270°)判別器114は、インプレーン角度が270°であり、かつアウトプレーン角度が左横向き、正面向き、及び右横向きのテンプレートデータを用いて比較を行う。
画像データとテンプレートデータとの比較方法は、上記したように、切り出した部分画像データの輝度値とテンプレートデータの輝度値との相関を表す評価値を算出することによって行う。
次に、ステップ726では、ステップ706及びステップ716と同様な処理であるため説明を省略するが、比較部62で算出された評価値が所定の閾値以上を示し、顔が存在する画像サイズが検出された場合はステップ740へ進む。一方、顔が存在する画像サイズが検出されなかった場合はステップ728へ進む。
次のステップ728では、顔検出を実行した回数を表すカウンタ(dirc)をインクリメントし、このカウンタが所定回数(DDCは予め定められた所定数を示す)を超えた場合、インプレーン角度が、0°、90°、及び270°、各インプレーン角度に対して、アウトプレーン角度が左横、正面、及び右横のテンプレートデータを用いても、顔が存在しないと判定され、ステップ730へ進む。カウンタ(dirc)が所定回数以下である場合は、ステップ724へ戻る。
ステップ730では、顔検出を実行した回数をカウントするためのカウンタ(dirc)のリセットを行う。次のステップ732では、アウトプレーン角度が左横、正面、及び右横、インプレーン角度が、30°,60°,120°,240°,300°,330°の顔検出を実行するため、判別器選択部88において、アウトプレーン(左横)判別器90、アウトプレーン(正面)判別器92、及びアウトプレーン(右横)判別器94、並びにインプレーン(0°)判別器96、インプレーン(30°)判別器98・・・・インプレーン(330°)判別器118が選択される。
ステップ734では、ステップ724と同様な処理を行うため説明を省略するが、アウトプレーン判別器及びインプレーン判別器を用いて、インプレーン角度が、30°,60°,120°,240°,300°,330°の各30°毎のインプレーン角度に応じて、アウトプレーン角度が、左横、正面、及び右横のテンプレートデータを用いて、0〜9の画像サイズ別に形成された画像データと比較を行う。
次に、ステップ736では、ステップ706、ステップ716、及びステップ726と同様な処理であるため説明を省略するが、比較部62で算出された評価値が、所定の閾値以上を示す画像サイズが検出された場合は、図21に示すステップ740へ進む。画像サイズが検出されなかった場合は、ステップ739へ進む。
次のステップ739では、顔検出を実行した回数を表すカウンタ(dirc)をインクリメントし、このカウンタが所定回数(DDDは予め定められた所定数を示す)を超えた場合に本プログラムを終了する。すなわち、ステップ739で肯定判断となった場合とは、本プログラムによる顔検出の対象となったスルー画像に顔が存在しない場合である。
なお、当該スルー画像から顔が検出されないまま本プログラムが終了した場合は、再び本プログラムが開始され次のスルー画像に対して本プログラムによる顔検出が開始される。
一方、カウンタ(dirc)が所定回数以下である場合には、ステップ734へ戻り、カウンタの値に応じたアウトプレーン角度及びインプレーン角度で同一のスルー画像データに対して顔検出を繰り返す。
次に、図21のステップ740では、ステップ706、ステップ716、ステップ726、及びステップ736において、顔が存在すると判定された画像サイズの画像データに含まれるインプレーン角度が、330°〜0°〜30°の範囲に該当するか否かを判断する。
該当する場合は、ステップ746において、顔が存在すると判定されたインプレーン角度の±30°の角度範囲で、次の顔検出に用いるインプレーン角度を設定する。このインプレーン角度を設定する方法としては、下記表2に示す姿勢判定表に基づいて設定する。下記表2に示す姿勢判定表は、顔検出で検出されたインプレーン角度のうち最多回数検出された角度を表す代表顔の角度、及び水平垂直モードとマルチアングルモードとからなる姿勢判別モードとの関係から、各姿勢判別モードに対してインプレーン角度が設定されている。
上記表2における水平垂直モードとは、図22に示すように、左から順に240°〜300°、330°〜30°、及び60°〜120°のインプレーン角度範囲を表す3つの種類から構成されている。このモードは、被写体の顔には、インプレーン角度が0°、90°、及び270°の顔が多く存在するため、これらの角度を中心に、インプレーン角度範囲を定めるためのものである。
また、上記表2におけるマルチアングルモードとは、図23に示すように、左上から順に、240°〜300°、270°〜330°、300°〜0°、左下から順に、330°〜30°、0°〜60°、30°〜90°、及び60°〜120°のインプレーン角度範囲を表す7つの種類から構成されている。このモードは、30°単位で追従して角度範囲を変更できるので、被写体の顔が、ゆっくりと変化した場合に、より適切な角度範囲で顔検出を実行することができる。
従って、本ステップ746では、検出された顔のインプレーン角度と、予め定められた上記のいずれかのモードとに基づいて、次のスルー画像データに対する顔検出に用いるインプレーン角度範囲を定める。
なお、表2に示すインプレーン角度範囲は一例であり、次のスルー画像データに対する顔検出に用いるインプレーン角度範囲を、表2に示すインプレーン角度範囲と異なる範囲に基づいて設定してもよい。
ステップ740で、330°〜0°〜30°の範囲に該当しない場合には、ステップ742へ進む。ステップ742では、ステップ706、ステップ716、ステップ726、及びステップ736において、顔があると判定された画像サイズの画像データに含まれるインプレーン角度が、60°〜90°〜120°の範囲に該当するか否かを判定する。
該当する場合は、ステップ746へ進む。ステップ746では、上記で説明したように、顔検出に用いるインプレーン角度範囲を設定する。該当しない場合は、ステップ744へ進む。
ステップ744では、ステップ706、ステップ716、ステップ726、及びステップ736において、顔があると判定された画像サイズの画像データに含まれるインプレーン角度が、240°〜270°〜300°の範囲に該当するか否かを判定する。
該当する場合は、ステップ746へ進む。ステップ746では、上記で説明したように、顔検出に用いるインプレーン角度範囲を設定する。
該当しない場合は、ステップ734へ進む(図19参照)。
なお、図21に示すステップ746におけるインプレーン角度範囲の設定に用いる、検出された顔のインプレーン角度の範囲(ステップ740,742,及び744に示される範囲)は一例であり、他の範囲を適用してもよい。
上記処理を初期判定として行うことによって、どの画像サイズ及びインプレーン角度を用いれば、顔が存在するか否かの予想を行うことが可能となるが、本発明は、時間的に連続して撮像された画像を対象としており、撮影者の手ぶれや被写体の動作等によって、特に画像データに含まれる顔のアウトプレーン角度に変化が生じる。
そのため、上記初期判定を行った後に、定期的にアウトプレーン角度の変化に応じた顔検出を行う必要がある。但し、全てのアウトプレーン角度を用いて顔検出を行うと、処理時間が増大するため、顔検出の必要のないアウトプレーン角度については、顔検出を行わないよう制御する。
図24は、アウトプレーン制御の遷移図を表している。この遷移図において、ノードAは、図18〜図21で説明したフローチャートにおける初期判定処理を表している。また、ノードBは、正面、右横、及び左横のアウトプレーン角度で顔検出を実行することを表している。同様に、ノードCは、正面及び右横、ノードDは、正面及び左顔、ノードEは、右横及び左横、ノードFは、正面、ノードGは、右横、及びノードHは、左横の各アウトプレーン角度で顔検出を実行することを表しており、矢印の方向に向かって処理の遷移を行うことを示している。
遷移を行う一例として、ノードBにおいて、顔検出を実行した場合、正面及び右横のアウトプレーン角度に対して顔が検出されたと判断された場合には、ノードCへ処理を遷移させ、正面及び左横のアウトプレーン角度に対して顔が検出されたと判断された場合には、ノードDへ処理を遷移させ、正面のアウトプレーン角度に対して顔が検出されたと判断された場合には、ノードFへ遷移する。また、ノードBにおいて、顔が検出されない場合には、正面、右横、及び左横のアウトプレーン角度を用いて顔検出を繰り返し実行する。
また、各ノードにおいて、顔検出を繰り返し実行する場合、図24に示すように、角度絞込み、すなわちインプレーン角度の範囲を定めると共に、顔検出を実行する。
但し、顔検出を繰り返し実行し、顔が存在すると判断されない場合は、点線矢印の向きへ処理を遷移する。点線矢印の向きへ処理を遷移させる方法の一例として、ノードC〜Hにおいて、顔検出を所定回数(DN回)実行した場合、点線矢印の向き(遷移先をノードBとする)に処理を遷移することが上げられる。なお、連続して所定回数(DN回)、顔が存在すると判断されない場合に、ノードAに遷移させるようにしても良い。
その他の点線矢印の向きへ処理を遷移させる一例として、顔検出の実行回数が、DN回未満の時に、連続して所定回数(NN回)、顔が存在すると判断されない場合に、点線矢印の向き(遷移先をノードBとする)に処理を遷移することが上げられる。上記と同様に、顔検出の実行回数が、DN回未満の時に、連続して所定回数(NN回)、顔が存在すると判断されない場合に、ノードAに遷移させるようにしても良い。
次に、図25に示すフローチャートを用いて顔検出部40における処理について説明する。まず、ステップ748では、初期判定処理を行う。本ステップ748は、上記図18〜図21に示すフローチャートで説明した内容と同様な処理であるため説明を省略する。
次にステップ750では、ステップ748で検出した画像サイズのうち、最大の画像サイズから、次のスルー画像に対する顔検出に用いる画像サイズを選択する。この選択方法は、実施形態1及び実施形態1の変形例で説明したように、最大の画像サイズの近傍の4つの画像サイズを含むように選択するか、あるいは制限幅チャート(図8(B)参照)及びパターン遷移表(図9参照)を用いて画像サイズを選択する。
ステップ752では、アウトプレーン角度を正面、右横、及び左横、インプレーン角度をステップ746で設定した値として、各々該当するアウトプレーン判別器及びインプレーン判別器を判別器選択部88において選択する。
すなわち、判別器選択部88において、アウトプレーン(左横)判別器90、アウトプレーン(正面)判別器92、及びアウトプレーン(右横)判別器94が選択されると共に、判別器選択部88において、ステップ746で設定した値に該当するインプレーン(0°)判別器96、インプレーン(30°)判別器98・・・・インプレーン(330°)判別器118のいずれかのインプレーン判別器が選択される。当該選択により、顔検出の対象とするアウトプレーン角度及びインプレーン角度を設定する。
次のステップ754では、ステップ750で選択した画像サイズ、並びにステップ752で設定したアウトプレーン角度及びインプレーン角度を用いて、顔検出を実行する。
本ステップ754における顔検出についての詳細は、図26に示すフローチャートを用いて説明する。
まず、ステップ770においては、ステップ750で選択した画像サイズ、並びにステップ752で設定したアウトプレーン角度及びインプレーン角度を用いて、顔検出を実行するが、上記図20で説明した顔検出と同様な処理を実行するので説明は省略する。
次に、ステップ772では、上記ステップ770の顔検出の実行結果に基づいて、顔が存在するか否かを判定する。所定時間(TD秒)顔検出を実行した結果、顔が検出されない場合は、図25に示すフローチャートの処理を最初からやり直すため、この判定を行う。
この判定方法は、上記ステップ706、ステップ716、ステップ726、及びステップ736と同様な判定を行うので、説明は省略する。
ステップ772において、顔が存在しないと判断した場合、ステップ774へ進む。ステップ774では、タイマーTMが起動中であるか否かを判断する。ステップ772において、顔が存在すると判断した場合は、ステップ776において、タイマーTMによって計測した時間をリセットする。
ステップ774では、タイマーTMが起動中であるならば、ステップ780へ進む。タイマーTMが起動中でないならば、ステップ778へ進む。ステップ778では、タイマーTMを起動させると共に、タイマーTMの初期設定(0を設定する)を行う。
次のステップ780では、タイマーTMをインクリメントした値と所定時間(TD秒)と比較を行う。タイマーTMが所定時間(TD秒)以上である場合は、ステップ782へ進み、図25に示すフローチャートのステップ748へ戻る。タイマーTMが所定時間(TD秒)未満であった場合、ステップ784へ進む。なお、ステップ780に記載のタイマーTM++は、タイマーTMがインクリメントされたことを表す。
ステップ784では、ステップ770で顔検出を実行した結果、検出されたアウトプレーン角度が、正面、右横、及び左横の全てに該当するか否かの判定を行う。この判定を行う理由は、上記図24で説明したように、アウトプレーン角度が、正面、右横、及び左横以外、すなわちノードC〜Hにおける顔検出を所定回数(DN回)実行した場合、次の顔検出で用いるアウトプレーン角度を正面、右横、及び左横として顔検出を実行する(ノードBに遷移する)ため判定を行う。
ステップ784で、該当しないと判断した場合は、ステップ786へ進む。ステップ786では、アウトプレーン角度が、正面、右横、及び左横以外のアウトプレーン角度を用いて顔検出を実行した回数をカウントするためのカウンタCTがカウント中であるか否かを判定する。カウント中でないならば、ステップ788へ進み、カウンタCTを起動させると共に、カウンタCTの初期設定(0を設定する)を行う。カウント中であるならば、ステップ790へ進む。
なお、ステップ784において、該当すると判断した場合は、ステップ792へ進み、カウンタCTをリセットする。リセット後、図25のステップ756へ進む。
ステップ790では、カウンタCTをインクリメントした値と所定回数(DN回)との比較を行う。カウンタCTが、所定回数(DN回)以上である場合は、ステップ794へ進む。カウンタCTが、所定回数(DN回)未満であるならば、図25のステップ756へ進む。なお、ステップ790に記載のカウンタCT++は、カウンタCTがインクリメントされたことを表す。
ステップ794では、カウンタCTをリセットする。リセット後、ステップ796へ進む。ステップ796では、ステップ770で検出した最大の画像サイズよりも、小なる画像サイズを設定する。
この設定は、小さなサイズの顔を検出するために画像サイズの制限幅を定めて顔検出を行った場合、撮影中に現れた大きなサイズの顔に対して顔検出を行うことが不可能となるため、より小さな画像サイズを設定することで、大きなサイズの顔を検出可能とするよう設定するために行う。
次のステップ798では、アウトプレーン角度の遷移を行うための条件である顔検出実行回数DNが、連続して所定回数(MRC回)以上となった場合、顔検出で用いる画像サイズの変更を行う。この変更は、一定の画像サイズに対してのみ顔検出を実行することのないよう画像サイズを定期的に変更するために行う。
従って、ステップ798では、実行回数DNをカウントするパラメータであるMR_cntをインクリメントした値と所定回数(MRC回)と比較する。MR_cntが、所定回数(MRC回)以上であるならば、ステップ800へ進む。MR_cntが、所定回数(MRC回)未満であるならば、図25に示すステップ750へ戻る。なお、ステップ798に記載のMR_cnt++は、MR_cntがインクリメントされたことを表す。
ステップ800では、次の顔検出で用いる画像サイズを変更する。画像サイズとしては、一例として、最小の画像サイズの段階を表す「0」が選択される。選択後、図25に示すステップ750へ進む。なお、本ステップ800では、最小の画像サイズの段階を表す「0」以外にも、ステップ770で検出した画像サイズよりも小なる画像サイズの段階を設定しても良い。
以上、図25に示すステップ754の顔検出に関する説明を終了し、以下、図25に示すステップ756以降の処理について説明する。
ステップ756では、上記で説明したMR_cntの初期設定(0を設定する)を行う。設定後、ステップ758へ進む。ステップ758では、アウトプレーンの角度が、正面、右横、及び左横のうち、ステップ754の顔検出において検出されたインプレーン角度を選択する。
次にステップ760では、ステップ754で検出した画像サイズのうち、最大の画像サイズから、次のスルー画像に対する顔検出に用いる画像サイズを選択する。この選択方法は、上記ステップ750で説明した方法により選択を行うため説明は省略する。
次のステップ762では、顔検出で用いるインプレーン角度の範囲を定める。本ステップの処理の詳細は、図27に示すフローチャートを用いて説明する。
まず、ステップ802において、前回までのスルー画像に対する顔検出を実行した結果、設定されているインプレーン角度の範囲内に該当する回数が、所定回数(AD回)一致したか否かを判定する。所定回数(AD回)を定めた理由は、頻繁にインプレーン角度の範囲設定を実行することによって生じる処理負荷の軽減を行うため実行している。一致した場合は、ステップ804へ進む。一致しない場合は、図25に示すステップ764へ進む。
ステップ804では、ステップ746で設定したインプレーン角度を姿勢検出角度(Rg)として設定を行う。設定後、ステップ806では、ステップ804で設定したRgに対して、Rgから30°減算したインプレーン角度が、前回の顔検出時に検出されたか否かを判定する。検出された場合は、次のステップ808で、このインプレーン角度を選択する。検出されなかった場合は、次のステップ810へ進む。
ステップ810では、ステップ804で設定したRgが表すインプレーン角度が、前回の顔検出時に検出されたか否かを判定する。検出された場合は、次のステップ812で、このインプレーン角度を選択する。検出されなかった場合は、次のステップ814へ進む。
ステップ814では、ステップ804で設定したRgに対して、Rgに30°加算したインプレーン角度が、前回の顔検出時に検出されたか否かを判定する。検出された場合は、次のステップ816で、このインプレーン角度を選択する。検出されなかった場合は、次のステップ818へ進む。
次のステップ818では、ステップ808、ステップ812、及びステップ816で選択されたインプレーン角度のうち代表となるインプレーン角度を選択する。この代表となるインプレーン角度を選択する方法としては、上記Rg、Rgから30°減算した角度、及びRgに30°加算した角度から、より多く検出されたインプレーン角度を選択しても良い。選択を行ったインプレーン角度に基づいて、上記表2で説明した姿勢判定表から、次の顔検出で用いるインプレーン角度の範囲を定める。
次のステップ764では、ステップ758で選択されたアウトプレーン角度、ステップ760で選択した画像サイズ、ステップ762で選択したインプレーン角度の範囲に基づいて、スルー画像に対する顔検出を実行する。
なお、処理内容としては、ステップ754と同一の処理であるため説明は省略する。
次のステップ766では、ステップ764で実行された顔検出の結果に基づいて、最大の画像サイズが変化した場合には、ステップ760へ進む。ステップ760では、上記したように、この最大の画像サイズに対して、次の顔検出で用いる画像サイズを選択する。なお、この選択方法は、ステップ750で説明した方法と同一であるため説明は省略する。
ステップ766において、最大の画像サイズが変化しなかった場合は、ステップ768へ進む。ステップ768では、ステップ764で顔検出の実行によって得られたアウトプレーン角度が、前回の顔検出時から変化した場合は、ステップ758へ進む。ステップ758では、ステップ764の顔検出の実行によって得られたアウトプレーン角度を選択する。ステップ768において、アウトプレーン角度が、前回の顔検出時から変化しない場合は、ステップ769へ進む。
ステップ769では、スルー画像に対する顔検出処理を停止する指示が入力されたか否かを判断し、肯定判断となった場合は本プログラムを終了する一方、否定判断となった場合はステップ762へ戻り、スルー画像に対する顔検出を繰り返す。
[第4の実施形態]
以下、本発明の第4の実施形態について説明する。
上記第1の実施形態〜第3の実施形態、第1の実施形態の変形例では、顔検出に用いる画像データの全領域を、顔検出を実行する対象領域として、該対象領域から部分画像データを切り出し、切り出した部分画像データとテンプレートデータとの比較を行うことで顔検出を行っている。
しかし、一般的な被写体において、一例として、図28に示すように、全体の画像サイズ(横が512、縦が384ドット)から内側の領域(横が362、縦が272ドット)に入っている顔の比率は、図29に示すような比率であることが、本発明の検証により明らかになった。
つまり、画像サイズの全面積を2分の1とするように中心方向へ領域を絞り込んだ場合でも、絞り込んだ領域に97%の確率で顔が存在している。
そこで、第4の実施形態では、顔検出の対象領域を絞り込むことで、画像データとテンプレートデータとの比較回数を軽減することによって、より高速に顔検出を実行することを目的とする。
第4の実施形態に係るデジタルカメラ1の制御系の構成は、上記第1の実施形態で説明した構成(図1参照)と同様であるため、同一符号を用いて説明を省略する。
また、顔検出を実行する顔検出部40についての構成を、図30を用いて説明するが、上記第1の実施形態で説明した顔検出部40(図2参照)と同様な構成については同一の符号を用いて説明は省略し、相違する部分のみ説明する。
上記第1の実施形態における顔検出部40と相違する部分は、画像サイズに応じて顔検出の対象領域を絞込むために必要とするデータを記憶する検出領域テーブル120が備えられている点である。検出領域テーブル120は、比較部62に接続されている。比較部62は、検出領域テーブル120に記憶されたデータを読取り、読取ったデータに基づいて、顔検出の対象領域を絞り込み、画像データとテンプレートデータとの比較を行う。
この検出領域テーブル120には、例えば、下記表3に示すように0〜9の画像サイズ別に、画像データの面積を中心方向に向かって絞りこむ割合(%)が予め設定される。
一般的に、主要な被写体は、画像データの中央に位置するため、画像データの端の領域を検出対象外とすることによって、画像サイズの大きい画像データに対して、顔検出を実行する処理時間を軽減するように上記表3は設定されている。
比較部62は、比較を行う画像データのサイズに該当する割合を検出領域テーブル120から読取り、画像データの検出対象領域の検出開始位置から検出終了位置を表す情報を求め、画像データの検出対象領域を絞込む。その後、絞込んだ領域内で、部分画像データを切り出し、切り出した部分画像データとテンプレートデータとの比較を行うことにより顔検出処理を行う。
[第5の実施形態]
以下、本発明の第5の実施形態について説明する。
上記第4の実施形態では、顔検出で用いる画像サイズに応じて、顔検出の対象領域を、画像データの中心方向に絞り込みを行っている。
しかし、一般の被写体では、アウトプレーン角度が真横の顔については、画像データの右端の方に存在する頻度は極めて少なく、さらに画像データの端に存在する小さな顔は、主要被写体となることも少ないといえる。
そこで、第5の実施形態では、顔検出で用いる画像サイズを考慮すると共に、顔のアウトプレーン角度に応じて、顔検出の対象領域を中心方向に向かって絞り込むことで、画像データとテンプレートデータとの比較回数を軽減し、より高速な顔検出を実行することを目的とする。
第5の実施形態に係るデジタルカメラ1の制御系の構成は、上記第1の実施形態で説明した構成(図1参照)と同様であるため、同一符号を用いて説明を省略し、さらに顔検出部40の構成は、実施形態4と同様であるため、同一符号を用いて説明を省略する。
上記第4の実施形態では、検出領域テーブル120には、画像データの画像サイズに応じて顔検出の対象領域を絞込むために必要とするデータを記憶していたが、第5の実施形態における検出領域テーブル120には、一例として、下記表4に示すように、0〜9の画像サイズ及びアウトプレーン角度毎に、画像データの面積を中心方向に向かって絞りこむ割合が設定される。すなわち、各段階の画像サイズに応じて、顔のアウトプレーン角度を判別する領域を変更する。
比較部62は、サイズ設定部56で設定されたサイズ識別データが、拡縮データ読取部58を介して入力されると共に、サイズ識別データに基づいて、検出領域テーブル120に記憶されたデータを読取る。
さらに、図31に示すように、アウトプレーン角度によって顔検出を実行するか否かを制限すると共に、顔検出の対象領域を設定する画像サイズ別制限装置122A〜122J(図31において、120C〜120Iは図示省略)が、顔検出に用いる画像サイズ別に、比較部62に備えられている。この比較部62は、サイズ識別データに基づいて、画像サイズに該当する画像サイズ別制限装置122A〜122Jのいずれかを選択する。選択後、検出領域テーブル120から読取られたデータが選択された画像サイズ別制限装置72A〜72Jのいずれかに出力される。
図32に示すように、画像サイズ別制限装置122A〜122Jは、各々、検出領域及びアウトプレーン選択器124と、検出領域設定126A〜126Eと、制限器128〜136を含んで構成されている。
検出領域及びアウトプレーン選択器124は、画像サイズ別に形成された画像データに対して、顔検出を実行する対象領域を定める検出領域設定126A〜126Eに接続されている。検出領域及びアウトプレーン選択器124は、検出領域テーブル120から読取られたデータに基づいて、顔検出の対象となるアウトプレーン角度に対応した検出領域設定126A〜126Eを選択する。
選択後、画像データの検出領域を定めるためのデータ及び顔検出を実行するか否かを表すデータが、各検出領域設定126A〜126Eへ出力される。この各検出領域設定126A〜126Eは、検出領域及びアウトプレーン選択器124から出力された画像データの検出領域を定めるためのデータに基づいて、顔検出を実行する対象領域を設定する。
検出領域設定126Aは、制限器128に接続されている。制限器128は、検出領域設定126Aを介して入力された顔検出を実行するか否かを表すデータに基づいて、アウトプレーン角度が、−90°(左横向き)の顔検出を実行するか否かのデータを設定する。顔検出を実行する場合にはONに設定され、実行しない場合にはOFFを設定する。他の制限器130〜136も同様な処理を実行し、制限器130はアウトプレーン角度が−45°、制限器132はアウトプレーン角度が0°、制限器134はアウトプレーン角度が45°、及び制限器136はアウトプレーン角度が90°に各々対応している。
従って、第5の実施形態に係る比較部62における画像データとテンプレートデータとの比較方法は、検出領域設定126A〜126Eで設定された対象領域において、部分画像データを切り出し、切り出した部分画像データと、制限器128〜136においてONに設定されたアウトプレーン角度に該当するテンプレートデータを用いて、切り出した部分画像データの輝度値とテンプレートデータの輝度値との相関を表す評価値を算出することで行う。
なお、画像データの右端に存在する右横顔が、主要被写体となる可能性は少ないため、図33(A)に示すように顔検出を実行する対象領域の中心位置を左へずらすことによって、画像データの右端において、右横顔の顔検出を実行しないように設定することも可能である。
同様に、画像データの右端に存在する左横顔が、主要被写体となる可能性は少ないため、図33(B)に示すように顔検出を実行する対象領域の中心位置を左へずらすことによって、画像データの左端において、左横顔の顔検出を実行しないように設定することも可能である。
そこで、検出領域テーブル120に、下記表5に示すように、0〜9の画像サイズ及びアウトプレーン角度毎に、画像データの中心位置をずらす方向が設定されている。
例えば、上記表5に示す「C」は、顔検出の対象領域の中心位置をずらすことなく画像データの中心方向に向かって面積を絞りこむことを示しており、「L」は、対象領域の中心位置を左へずらすことを示し(図33(A)参照)、さらに「R」は、対象領域の中心位置を右へずらすことを示している(図33(B)参照)。
比較部62は、検出領域テーブル120に設定された上記表5に示すデータに基づいて、上記検出領域設定126A〜126Eにおいて画像データに対する顔検出を実行する対象領域を設定し、画像データとテンプレートデータとの比較を行っている。
さらに、上記表4のように、画像データの面積を中心方向に向かって絞りこむ割合(%)と上記表5に示す対象領域の中心位置の移動との組み合わせを考慮したデータを検出領域テーブル120に設定することも可能である。
以上のように、前回の顔検出で検出した被写体の顔のサイズ、顔の向き、及び天地方向等の顔検出を行う条件に基づいて、画像データ読取り処理回数を軽減するように、今回の顔検出を行う条件を定めるため、高速な顔検出を行うことが可能となる。
以上、本発明を上記各実施の形態を用いて説明したが、本発明の技術的範囲は上記各実施の形態に記載の範囲には限定されない。発明の要旨を逸脱しない範囲で上記各実施の形態に多様な変更または改良を加えることができ、当該変更または改良を加えた形態も本発明の技術的範囲に含まれる。
また、上記各実施の形態は、クレーム(請求項)にかかる発明を限定するものではなく、また実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。前述した実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件における組み合わせにより種々の発明を導出できる。上記各実施の形態に示される全構成要件から幾つかの構成要件が削除されても、効果が得られる限りにおいて、この幾つかの構成要件が削除された構成が発明として導出され得る。
その他、上記各実施の形態で説明したデジタルカメラ1の構成(図1、図2参照)は一例であり、本発明の主旨を逸脱しない範囲内において不要な部分を削除したり、新たな部分を追加したりすることができることは言うまでもない。
また、上記各実施の形態で説明した各プログラムの処理の流れ(図4、図5、図10、図15、図18、図19、図20、図21、図25、図26、図27参照。)も一例であり、本発明の主旨を逸脱しない範囲内において不要なステップを削除したり、新たなステップを追加したり、処理順序を入れ替えたりすることができることは言うまでもない。