以下、添付図面を参照して、本発明に係る顔検出方法及び装置、並びに撮影装置の好ましい実施の形態について詳説する。
<第1の実施の形態>
[装置構成]
図1は、本発明が適用されたデジタルカメラの電気的構成を示すブロック図である。
同図に示すように、本実施の形態のデジタルカメラ10は、CPU12、操作部14、ROM16、フラッシュROM18、メモリ(SDRAM)20、VRAM22、撮影レンズ24、イメージセンサ30、イメージセンサ駆動回路32、アナログ信号処理回路34、A/D変換回路36、画像入力制御回路38、デジタル信号処理回路40、AF検出回路42、AE検出回路44、圧縮伸張処理回路46、メディア制御回路48、画像再生処理回路50、LCDドライバ52、LCDモニタ54、ビデオエンコーダ56、音声処理回路58、音声入力回路60、マイク62、音声出力回路64、スピーカ66、フラッシュ制御回路68、フラッシュ70、電源制御回路72、電源74、通信制御回路76、通信インターフェース78、顔検出回路80等を備えて構成されている。
CPU12は、デジタルカメラ10の全体の動作を統括制御する制御手段として機能し、操作部14からの入力に基づき所定の制御プログラムに従って各部を制御する。
バス86を介して接続されたROM16には、このCPU12が実行する制御プログラム及び制御に必要な各種データ等が格納されており、フラッシュROM18には、デジタルカメラ10の動作に関する各種設定情報等が格納されている。
メモリ(SDRAM)20は、CPU12のプログラム実行領域として利用されるとともに、データの一時記憶領域として利用される。
また、VRAM22は、表示用のデータを記録するための一時記憶領域として利用される。
操作部14は、電源のON/OFFを指示する電源ボタン、撮影を指示するレリーズボタン、テレ/ワイドのズームを指示するズームボタン、メニュー画面の呼び出しを指示するメニューボタン、操作の実行、処理の確定等を指示するOKボタン、操作のキャンセル等を指示するキャンセルボタン、再生モードと撮影モードとを切り換える再生/撮影モード切換スイッチ、画像中の人物の顔の検出を指示する顔検出ボタン、十字ボタン等の各種操作ボタン類を備えて構成され、各操作ボタン類の操作に応じた信号をCPU12に出力する。
撮影レンズ24は、ズームレンズ24Z、絞り24I、フォーカスレンズ24F等を備えて構成されている。
ズームレンズ24Zは、光軸上を前後移動自在に設けられている。ズームレンズ24Zは、ズームモータ26Zに駆動されて、光軸上を前後移動し、これにより、撮影レンズ24の焦点距離を変化させる。CPU12は、ズーム制御回路28Zを介してズームモータ26Zの駆動を制御し、撮影レンズ24の焦点距離を制御する。
フォーカスレンズ24Fは、光軸上を前後移動自在に設けられている。フォーカスレンズ24Fは、フォーカスモータ26Fに駆動されて、光軸上を前後移動し、これにより、撮影レンズ24の焦点位置を変化させる。CPU12は、フォーカス制御回路28Fを介してフォーカスモータ26Fの駆動を制御し、撮影レンズ24の焦点位置を制御する。
絞り24Iは、虹彩絞りで構成されている。絞り24Iは、絞りモータ26Iに駆動されて、その開口量が制御され、これにより、イメージセンサ30への入射光量(絞り値)が制御される。CPU12は、絞り制御回路28Iを介して絞りモータ26Iの駆動を制御し、絞り値を制御する。なお、本例では虹彩絞りを用いることとしているが、ターレット式の絞り等の他の構成の絞りを用いることもできる。
イメージセンサ30は、単板式のカラーCCD(たとえば、ベイヤ配列の原色カラーCCD)で構成されている。イメージセンサ駆動回路32は、CPU12からの指令に応じて、イメージセンサ30を駆動し、各フォトダイオードに蓄積された信号電荷を電圧信号(画像信号)として点順次に出力させる。
アナログ信号処理回路34は、相関二重サンプリング回路、アンプ等を含み、イメージセンサ30から出力される画像信号を相関二重サンプリング処理したのち、増幅して出力する。
A/D変換回路36は、アナログ信号処理回路34から出力されたアナログの画像信号をデジタルの画像信号に変換する。
画像入力制御回路38は、CPU12からの指令に応じて、A/D変換回路36から出力される画像信号を順次取り込み、1コマ分の画像データとして、メモリ20に格納する。このメモリ20に格納される画像データがRAWデータである。すなわち、A/D変換により得られた1コマ分のデジタルの画像データがRAWデータであり、この後、所要の信号処理(現像処理)が施されて、可視可能なカラー画像データ(現像データ)が生成される。
デジタル信号処理回路40は、CPU12からの指令に応じて、メモリ20に格納された画像データ(RAWデータ)を取り込み、所定の信号処理(現像処理)を施して、可視可能な画像データ(現像データ)を生成する。ここでは、カラー画像データとして、輝度データ(Yデータ)と色差データ(Crデータ、Cbデータ)とからなるY/Cデータが生成される。
具体的には、単板式のイメージセンサから得られるRAWデータは、各画素が単色の色情報しか持たないため、所要の補完処理(デモザイク処理)を行って、各画素がR、G、B三色の色情報を持った画像データを生成する。また、これと同時に明るさやコントラスト、ホワイトバランス、増感補正、彩度、シャープネスなどの画像処理(レタッチ処理)を行って、最終的に可視可能な画像データ(再生用の画像データ)を生成する。
なお、画像処理は、通常、自動で行われるが(シーンに応じて最適な画像となるように、画像処理を行うための各種パラメータ(現像パラメータ)が自動設定されて、画像処理が行われる。)、ユーザが特定の画像処理の条件について修正を指示した場合には、指示された条件に従って、対応する現像パラメータを修正し、画像処理を実行する。たとえば、画像の明るさを明るくする又は暗くする指示がなされた場合には、指示された程度に応じて、明るさの現像パラメータを修正して、画像処理が行われ、彩度を上げる又は下げる指示がなされた場合には、指示された程度に応じて、彩度の現像パラメータを修正して、画像処理が行われる。他の現像パラメータについても同様である。
修正の指示は、メニュー画面から専用の設定画面を呼び出して、LCDモニタ54上で行われる。この設定画面では、たとえば、各現像パラメータについて、1段ずつ±10の範囲で修正を指示できるようにされている(デフォルトでは0)。ユーザは、修正する現像項目を選択し、十字キーを上下動させて、修正量を入力する。
このようにして、修正が指示された場合、CPU12は、自動設定された現像パラメータ(標準の現像パラメータ)を指示された修正量で修正し、デジタル信号処理回路40に画像処理を行わせる。
デジタル信号処理回路40で生成された画像データ(現像データ)は、メモリ20に格納されるとともに、VRAM22に格納される。
AF検出回路42は、メモリ20に格納された1コマ分のRAWデータを取り込み、AF制御に必要な焦点評価値を算出する。CPU12は、このAF検出回路42から出力される焦点評価値に基づいてフォーカスレンズ24Fの移動を制御し、焦点合わせを行う。具体的には、フォーカスレンズ14Fを至近から無限遠まで移動させて、焦点評価値が極大となる位置をサーチし、サーチされた位置にフォーカスレンズ24Fを移動させることにより、焦点合わせを行う。
AE検出回路44は、メモリ20に格納された1コマ分のRAWデータを取り込み、AE制御に必要な積算値を算出する。具体的には、一画面を複数のエリア(たとえば、8×8=64エリア)に分割し、分割されたエリアごとにR、G、B信号の積算値を算出する。CPU12は、このAE検出回路44で算出されたエリアごとのR、G、B信号の積算値の情報を取得して、被写体の明るさを検出し、適正な露出設定を行う。
圧縮伸張処理回路46は、CPU12からの指令に応じて、入力された画像データ(Y/Cデータ)を所定の圧縮フォーマット(本実施の形態では、JPEG)で圧縮して、圧縮画像データを生成する。また、CPU12からの指令に応じて、入力された圧縮画像データを伸張し、非圧縮の画像データ(Y/Cデータ)を生成する。
メディア制御回路48は、CPU12からの指令に応じて、記憶メディア84にデータを読み/書きする。
記憶メディア84は、メモリカードとして、カメラ本体に設けられたメモリカードスロットに着脱自在に装着される。なお、記憶メディア84は、いわゆる内蔵メモリとして、カメラ本体に一体的に組み込むようにしてもよい。
画像再生処理回路50は、CPU12からの指令に応じて、LCDモニタ54又は映像出力端子86から出力する画像の再生処理を行う。すなわち、VRAM22から表示用の画像データを取り込み、所要の信号処理を施して、LCDドライバ52及びビデオエンコーダ56に出力する。
LCDドライバ52は、入力された映像信号に基づいてLCDモニタ54を駆動する。LCDモニタ54に画像が表示される。
また、ビデオエンコーダ56は、入力された映像信号をテレビ表示用の信号形式(たとえば、NTSC、SECAM、PAL等)に変換して、映像出力端子に出力する。これにより、映像出力端子に接続された外部モニタに画像が表示される。
なお、画像再生処理回路50には、OSD(On Screen Display)回路が含まれており、必要に応じて文字や図形、記号等を画像に重ねて表示できるようにされている。
音声処理回路58は、CPU12からの指令に応じて、音声入力回路60から入力された音声信号を処理し、記録用の音声データを生成する。また、CPU12からの指令に応じて、記録済みの音声データを再生処理し、音声出力回路64に出力する。
音声入力回路60は、マイク62から取り込まれた音声信号をデジタル信号に変換して、音声処理回路58に出力する。
音声出力回路64は、音声処理回路58から出力された音声信号をアナログ信号に変換して、スピーカ66から出力する。
フラッシュ制御回路68は、CPU12からの指令に応じて、フラッシュ70の発光を制御する。
電源制御回路72は、CPU12からの指令に応じて、電源74から供給される電力の各部への供給を制御する。本実施の形態のデジタルカメラでは、電源74は電池で構成され、電池はカメラ本体に着脱自在に装着される。なお、ACアダプタからも電力を供給できるようにしてもよい。
通信制御回路76は、CPU12の制御の下、通信インターフェース78を介して接続された外部機器(主としてパソコン)との間でデータの送受信を行う。通信インターフェース78はUSBで構成される。なお、この他、IEEE1394やSCSI等の通信インターフェースを採用することもできる。
顔検出回路80は、CPU12からの指令に応じて、入力された画像データ(現像データ)から画像内に含まれる人物の顔領域(顔と推定される領域)を検出する。この検出はパターンマッチングなどの公知の顔認識技術を用いて行われる。
[撮影、再生動作]
次に、本実施の形態のデジタルカメラ10による撮影時及び再生時の処理動作について説明する。
まず、撮影時の処理動作について説明する。撮影はデジタルカメラ10のモードを撮影モードに設定することにより行われる。
撮影モードの設定は、撮影/再生モード切換スイッチによって行われ、撮影/再生モード切換スイッチの設定を撮影モードにすることにより、カメラのモードが撮影モードに設定される。
この撮影モードの状態でレリーズボタンを半押しすると、撮影準備が行われ、全押しすると、本撮影が行われる。
なお、本実施の形態のデジタルカメラ10は、撮影により得られた画像の記録方式(記録モード)として、画像を圧縮して記録する「圧縮記録モード」と、画像をRAWデータのまま記録する「RAW記録モード」とを選択できるようにされている。
記録モードの選択は、メニュー画面から専用の設定画面を呼び出して行われる。この設定画面では、記録モードとして「圧縮記録モード」と「RAW記録モード」とが択一的に設定される。
まず、圧縮記録モードで画像を記録する場合について説明する。この場合、上記設定画面で記録モードを「圧縮記録モード」に設定する。
デジタルカメラ10のモードが、撮影モードに設定されると、まず、イメージセンサ30で捉えた画像がLCDモニタ54にスルー表示される。すなわち、イメージセンサ30から連続的に画像信号が取り込まれ、その画像信号が連続的に処理されて、LCDモニタ54に出力される。撮影者は、このLCDモニタ54にスルー表示された画像(スルー画像)を見て構図を確認し、カメラを主要被写体に向けて、レリーズボタンを半押しする。
レリーズボタンが半押しされると、CPU12にS1ON信号が入力される。CPU12は、このS1ON信号の入力に応動して、撮影準備処理、すなわち、AE、AFの各処理を実行する。
まず、イメージセンサ30から出力された画像信号をAE検出回路44及びAF検出回路42に加える。
AE検出回路44は、入力された画像信号からAE制御に必要な積算値を算出し、CPU12に出力する。CPU12は、このAE検出回路44から得られた積算値に基づき被写体輝度を算出し、適正露出を得るための絞り値、シャッタスピード等を決定する。
また、AF検出回路42は、入力された画像信号からAF制御に必要な積算値を算出し、CPU12に出力する。CPU12は、このAF検出回路42からの出力に基づきフォーカスレンズ24Fの移動を制御し、撮影レンズ24の焦点を主要被写体に合わせる。
撮影者は、LCDモニタ54に表示されるスルー画像を見てピント状態等を確認し、撮影実行を指示する。すなわち、レリーズボタンを全押しする。
レリーズボタンが全押しされると、CPU12にS2ON信号が入力される。CPU12は、このS2ON信号に応動して、本撮影の処理を実行する。
まず、上記AE制御の結果求めた絞り値、シャッタスピードでイメージセンサ30を露光させ、記録用の画像を撮像する。
イメージセンサ30から出力された記録用の画像信号は、アナログ信号処理回路34で所要の信号処理を施されたのち、A/D変換回路36でデジタル信号に変換されて、画像入力制御回路38からメモリ20に取り込まれる。
メモリ20に取り込まれた画像データ(RAWデータ)は、デジタル信号処理回路40に加えられる。デジタル信号処理回路40は、入力された画像データに対して、所要の信号処理を施して、輝度データYと色差データCr、Cbとからなる画像データ(Y/Cデータ)を生成する。
生成された画像データは、メモリ20に格納されたのち、圧縮伸張処理回路46に加えられる。圧縮伸張処理回路46は、入力された画像データを所定の圧縮フォーマット(本実施の形態では、JPEG)で圧縮し、圧縮画像データを生成する。
生成された圧縮画像データは、メモリ20に格納される。CPU12は、このメモリ20に格納された圧縮画像データに所定の付属情報を付加して、所定フォーマット(本実施の形態では、Exif)の画像ファイルを生成する。
なお、Exif形式の画像ファイルは、付属情報を画像ファイルヘッダ部にタグ形式で記録することができるようにされており、その付属情報タグには、バージョンに関する情報や画像データの特性に関する情報、構造に関する情報、ユーザ情報、関連ファイル情報、日時に関する情報、撮影条件に関する情報、IFDへのポインタに関する情報等の撮影した画像に関する撮影データがタグ形式で記録できるようにされている。
ここで、ユーザ情報に関するタグであるメーカノートには、メーカが個別の情報を記入することができるようにされており、また、ユーザコメントには、ユーザがキーワードやコメントを書き込むことができるようにされている。
また、撮影条件に関するタグには、撮影時の露出時間やFナンバー、露出プログラム、スペクトル感度、ISOスピードレート、光電変換関数、シャッタスピード、絞り値、輝度値、露出補正値、レンズ最小F値、被写体距離、測光方式、光源、フラッシュ、レンズ焦点距離、フラッシュ強度、空間周波数応答、焦点面の幅の解像度、焦点面の高さの解像度、焦点面解像度単位、被写体位置、露出インデックス、センサ方式、ファイルソース、シーンタイプ、CFAパターン等が記録できるようにされている。
生成された画像ファイルは、メディア制御回路48を介して記憶メディア84に記録される。なお、本実施の形態のデジタルカメラでは、DCF規格に従って記憶メディア84に画像ファイルが記録される。
次に、RAW記録モードで画像を記録する場合について説明する。この場合、記録モードの設定画面で記録モードを「RAW記録モード」に設定する。
レリーズボタンの半押しで撮影準備が行われ、全押しで本撮影が行われる点は、上記圧縮記録モードと同じである。
レリーズボタンが全押しされて、本撮影の実行が指示されると、CPU12は、撮影準備の段階で求めた絞り値、シャッタスピードでイメージセンサ30を露光させ、記録用の画像を撮像する。
イメージセンサ30から出力された記録用の画像信号は、アナログ信号処理回路34で所要の信号処理を施されたのち、A/D変換回路36でデジタル信号に変換されて、画像入力制御回路38からメモリ20に取り込まれる。
CPU12は、このメモリ20に格納された画像データ(RAWデータ)に所定の付属情報を付加して、所定フォーマットの画像ファイルを生成する。
生成された画像ファイルは、メディア制御回路48を介して記憶メディア84に記録される。
すなわち、RAW記録モードでは、デジタル変換後の画像データ(RAWデータ)が、そのまま記憶メディア84に記録される。
次に、上記のようにして記憶メディア84に記録された画像の再生方法について説明する。
画像の再生は、カメラのモードを再生モードに設定して行われる。再生モードへの切り換えは、撮影/再生モード切換スイッチによって行われる。
デジタルカメラ10のモードが、再生モードに設定されると、CPU12は、メディア制御回路48を介して記憶メディア84に最後に記録された画像ファイルの画像データを読み出す。
ここで、読み出された画像データが、圧縮画像データの場合は、所要の伸張処理が施されて、LCDモニタ54に再生表示される。
まず、読み出された圧縮画像データが圧縮伸張処理回路46に加えられる。圧縮伸張処理回路46は、入力された圧縮画像データに対して所要の伸張処理を施して、非圧縮の画像データ(Y/Cデータ)を生成する。生成された非圧縮の画像データはVRAM22に加えられ、VRAM22から画像再生処理回路50に読み出される。画像再生処理回路50は、読み出した画像データに所要の信号処理を施して、LCD駆動回路52に出力する。LCD駆動回路52は、入力された映像信号に基づいてLCDモニタ54を駆動し、LCDモニタ54の画面に画像を再生表示させる。これにより、読み出された圧縮画像データが表す画像が、LCDモニタ54に再生表示される。
一方、読み出された画像データがRAWデータの場合は、所要の現像処理(Y/Cデータの生成処理)が施されて、LCDモニタ54に再生表示される。
まず、読み出されたデジタル信号処理回路40に加えられる。デジタル信号処理回路40は、入力されたRAWデータに対して所要の信号処理(現像処理)を施して、現像データ(Y/Cデータ)を生成する。
なお、この時の現像条件(表示用の現像条件)は、入力されたRAWデータに基づいて自動設定され、撮影条件等の情報があれば、それを参酌して決定される。また、ユーザが現像条件を指示している場合には、それに従って現像処理が行われる。
生成された現像データは、VRAM22に加えられ、VRAM22から画像再生処理回路50に読み出される。画像再生処理回路50は、読み出した画像データに所要の信号処理を施して、LCD駆動回路52に出力する。LCD駆動回路52は、入力された映像信号に基づいてLCDモニタ54を駆動し、LCDモニタ54の画面に画像を再生表示させる。これにより、読み出されたRAWデータが表す画像が、LCDモニタ54に再生表示される。
画像のコマ送り/コマ戻しは、十字ボタンの右キー/左キーで行われ、右キーが押圧操作されると、次の画像が記憶メディア84から読み出されて、LCDモニタ84に再生表示される。また、左キーが押圧操作されると、一つ前の画像が記憶メディア84から読み出され、LCDモニタ54に再生表示される。
[顔検出処理]
さて、本実施の形態のデジタルカメラ10には、顔検出機能が備えられており、画像再生中に顔検出ボタンが押下されると、顔検出の処理が行われる。すなわち、画像中から人物の顔領域が検出され、検出された顔領域が、顔検出枠で囲われる(図2参照)。
顔検出の処理は、顔検出回路80で行われる。CPU12は、顔検出ボタンが押下されると、再生中の画像の画像データ(現像データ)を顔検出回路80に加え、画像中に写されている人物の顔領域を検出させる。顔検出回路80は、入力された画像データを解析し、画像中に写されている人物の顔領域を検出する。そして、その検出結果をCPU12に出力する。CPU12は、得られた顔の検出結果に基づいて、画像中の人物の顔領域を囲うように、LCDモニタ54に顔検出枠を表示させる。すなわち、LCDモニタ54に表示されている画像に重ねて顔検出枠を表示させ、その顔検出枠で画像に写されている人物の顔を囲わせる。
さて、上記のように、顔検出の処理は、再生中の画像の画像データ(現像データ)を顔検出回路80に加えることにより行われるが、再生中の画像が、RAWデータから生成した画像の場合には、検出精度を上げるため、次のように、顔検出の処理を行う。すなわち、現像条件を変えて(現像パラメータを変えて)、顔検出用の現像データを複数生成し、生成した各画像について顔検出を行う。これにより、通常の現像条件(再生用の現像条件)で現像された画像では検出できなかった顔を検出できるようになり、顔の検出精度を向上させることができる。
図3は、RAWデータの再生時における顔検出の処理の手順を示すフローチャートである。
上記のように、顔検出は、顔検出ボタンの押下により行われる。CPU12は、操作部14からの入力に基づいて、顔検出ボタンが押下されたか否かを判定する(ステップS10)。
顔検出ボタンが押下されたと判定すると、再生中の画像がRAWデータから生成した画像か否かを判定する(ステップS11)。
再生中の画像が、RAWデータから生成した画像の場合は、現像条件の異なる複数の顔検出用の画像データ(現像データ)をデジタル信号処理回路40に生成させる(ステップS12)。すなわち、特定の現像パラメータを所定の振り幅、変更範囲で振ってRAWデータを現像させる。
本例では、画像の明るさ、ホワイトバランスを変えて現像することとし、明るさとホワイトバランスのパラメータについて、−3〜+3の範囲で1段ずつ振ってRAWデータを現像することとする。この場合、7×7で49枚の顔検出用の画像が生成されることとなる。
CPU12は、生成された各顔検出用の画像データを顔検出回路80に加えて、顔検出を行わせる(ステップS13)。各画像データで検出された人物の顔領域の情報は、CPU12に出力される。CPU12は、これをメモリ20に一時保存する。
すべての画像の顔検出が終了したところで、CPU12は、各画像で検出された顔領域の情報に基づいて、画像中の顔領域を特定する(ステップS14)。すなわち、現像条件を変えて現像しているので、一の現像画像では検出されても、他の一の画像では検出されない顔もあるので、全画像の検出結果に基づいて、顔領域を特定する。ここで、各画像で検出された顔領域すべてを画像中に存在する顔領域として特定する。
この後、CPU12は、検出結果をLCDモニタ54に表示する(ステップS15)。すなわち、LCDモニタ54に表示されている画像に重ねて顔検出枠を表示させ、特定した顔領域を顔検出枠で囲う(図2参照)。これにより、検出結果が明示的に把握できる。
なお、上記ステップS11で再生中の画像がRAWデータから生成した画像でないと判定されると、通常の顔検出処理が行われ(ステップS16)、その検出結果が表示される(ステップS15)。
以上説明したように、RAWデータから顔領域の検出を行う場合は、現像条件を変えて複数の現像データ(顔検出用の現像データ)を生成し、生成した各画像について顔検出を行う。これにより、通常の現像条件(再生用の現像条件)で現像された画像では検出できなかった顔を検出できるようになり、顔の検出精度を向上させることができる。
なお、上記の例では、顔検出用の現像データを一括して生成し、生成した現像データから一括して顔検出の処理を行うようにしているが、顔検出用の現像データを1枚生成するごとに当該現像データから顔検出の処理を行うようにしてもよい。
また、上記の例では、全画像の顔領域の検出結果から顔領域を特定する際、各画像で検出された顔領域すべてを画像中の顔領域に特定しているが、規定枚数以上の画像で検出された顔領域のみを顔領域に特定するようにしてもよい。
また、顔の検出数が最も多い画像で検出された顔領域を画像の顔領域として特定するようにしてもよい。
さらに、上記の例では、明るさとホワイトバランスを変えて顔検出用の画像を生成するようにしているが、顔検出用の画像を生成するために変更する現像パラメータは、これに限定されるものではない。この他、コントラストや増感補正、シャープネス、彩度等を変更して、顔検出用の画像データを生成するようにしてもよい。
また、変更する現像パラメータは、上記例のように複数組み合わせてもよいし、一つのみであってもよい。すなわち、たとえば、コントラストのみを変更して(コントラストの現像パラメータを振って)、顔検出用の画像データを生成するようにしてもよい。
また、トーンカーブを所定のパラメータを所定の態様で振って顔検出用の画像データを生成するようにしてもよい。
また、複数の現像パラメータを変更する場合、その設定方法(振り方等)は特に限定されるものではなく、種々の態様で現像パラメータを変更して設定することができる。
また、上記の例では、RAWデータの再生時に顔検出の処理を行う場合について説明したが、本発明の適用は、これに限定されるものではない。たとえば、スルー画像から顔領域を検出する場合にも同様に適用することができる。
また、上記の例では、顔の検出処理は1回だけであるが、現像パラメータの振り幅、変更範囲を変えて、再検出ができるようにしてもよい。たとえば、再検出が指示されると、自動的に振り幅、変更範囲を変えて(顔検出用の画像数を増やすように振り幅又は変更範囲を変える。)、再検出を行うようにしてもよい。
<第2の実施の形態>
上記第1の実施の形態のデジタルカメラでは、RAWデータから顔検出を行う際、一定の条件で現像パラメータを振って顔検出用の画像データを生成し、生成した画像データから顔領域の検出を行うようにしていた。
本実施の形態のデジタルカメラでは、顔の検出精度を設定できるようにし、設定された検出精度に応じて、現像パラメータの振り幅、変更範囲を設定する。そして、設定された振り幅、変更範囲で現像パラメータを振って顔検出用の画像データを生成し、生成した画像データから顔領域の検出を行う。
たとえば、顔の検出精度を「低」、「中」、「高」の三段階で設定できるようにし、設定された検出精度に応じて、現像パラメータの振り幅、変更範囲を設定する。たとえば、検出精度が「低」の場合は、現像パラメータを−3〜+3の範囲で1段ずつ振って顔検出用の画像データを生成し、検出精度が「中」の場合は、現像パラメータを−5〜+5の範囲で1段ずつ振って顔検出用の画像データを生成する。また、検出精度が「高」の場合は、現像パラメータを−7〜+7の範囲で1段ずつ振って顔検出用の画像データを生成する。
このように、検出精度を上げるに従って現像パラメータの変更範囲を拡大し、顔の検出対象とする画像を増やすことにより、顔の検出精度を上げることができる。
一方、顔の検出対象となる画像が増えると、処理時間が増すが、処理速度を重視する場合は、検出精度を下げることにより、対処することができる。
このように、本実施の形態のデジタルカメラによれば、ユーザの要求に応じた顔検出を行うことができる。
以下、本実施の形態のデジタルカメラにおける顔検出の方法について説明する。
なお、デジタルカメラの構成及び通常の画像データからの顔領域の検出の方法は、上述した第1の実施の形態のデジタルカメラと同じなので、ここでは、RAWデータから顔領域を検出する場合の処理の手順についてのみ説明する。
図4は、RAWデータから顔領域を検出する処理の手順を示すフローチャートである。
顔検出は、顔検出ボタンの押下により行われる。CPU12は、操作部14からの入力に基づいて、顔検出ボタンが押下されたか否かを判定する(ステップS20)。
顔検出ボタンが押下されたと判定すると、再生中の画像がRAWデータから生成した画像か否かを判定する(ステップS21)。
再生中の画像が、RAWデータから生成した画像でない場合(Y/Cデータを再生した画像の場合)、通常の顔検出処理を行って(ステップS30)、その検出結果を表示する(ステップS31)。
一方、再生中の画像が、RAWデータから生成した画像の場合は、現像条件を変えて複数の顔検出用の画像データ(現像データ)を生成し、生成した各画像データで顔検出を行って、画像中の顔領域を特定する。
この場合、まず、現在の顔の検出精度の情報を取得する(ステップS22)。
ここで、顔の検出精度の設定は、メニュー画面から専用の設定画面を呼び出して行われる。この設定画面では、顔の検出精度が、「高」、「中」、「低」の中から択一的に選択されて設定される。設定された情報は、フラッシュROM18に格納される。CPU12は、このフラッシュROM18に格納された顔の検出精度の設定情報を読み出して、当該情報を取得する。
CPU12は、取得した顔の検出精度に応じて現像パラメータの振り幅、変更範囲を設定する(ステップS23)。すなわち、上記のように、検出精度が「低」の場合は、現像パラメータを−3〜+3の範囲で1段ずつ振るように設定し、検出精度が「中」の場合は、現像パラメータを−5〜+5の範囲で1段ずつ振るように設定する。また、検出精度が「高」の場合は、現像パラメータを−7〜+7の範囲で1段ずつ振るように設定する。
この後、CPU12は、特定の現像パラメータを設定された振り幅で振ってデジタル信号処理回路40にRAWデータを現像させ、顔検出用の画像データを生成させる(ステップS24)。そして、生成された各顔検出用の画像データを顔検出回路80に加えて、顔検出を行わせる(ステップS25)。各画像データで検出された人物の顔領域の情報は、CPU12に出力され、CPU12は、これをメモリ20に一時保存する。
すべての画像の顔検出が終了したところで、CPU12は、メモリ20に格納された各画像の顔領域の検出結果の情報に基づいて、画像中の顔領域を特定する(ステップS26)。そして、その結果をLCDモニタ54に表示する(ステップS27)。すなわち、LCDモニタ54に表示されている画像に重ねて顔検出枠を表示させ、特定した顔領域を顔検出枠で囲う(図2参照)。これにより、検出結果が明示的に把握できる。
なお、ユーザは、この検出結果に満足しない場合、検出精度を変えて、再検出の指示を行うことができる。
再検出の指示は、結果の表示画面上で行うことができるようにすることが好ましい。本例では、再検出の有無を問い合わせるメッセージがLCDモニタ54に表示され、検出精度を選択できるようにされる。
CPU12は、操作部14からの入力基づいて、検出精度の変更の有無を判定する(ステップS28)。そして、検出精度の変更がされた場合は、検出精度の設定を変更し(ステップS29)、ステップS22に戻って、再度顔検出の処理を実行する。
このように、本実施の形態のデジタルカメラでは、顔の検出精度を変えて、顔検出を行うことができる。これにより、ユーザの要求に応じた顔検出を行うことができ、使い勝手を向上させることができる。
なお、上記の例では、顔の検出精度の設定を3段階としているが、さらに詳細に設定できるようにすることもできる。
また、各検出精度に応じて設定する振り幅、変更範囲も上記のものは一例であり、カメラごとに適宜変更して設定することができる。
また、上記の例では、現像パラメータを一律に変更させているが、現像パラメータごとに振り幅、変更範囲を変えて設定するようにしてもよい。
<第3の実施の形態>
上記第1、第2の実施の形態のデジタルカメラでは、カメラでの顔検出の指示(カメラに備えられた顔検出ボタンの押下)に応じて、顔検出の処理を実行するように構成されている。
本実施の形態のデジタルカメラは、カメラに接続されたパソコンからの顔検出の指示に応じて、顔検出の処理が実行できるように構成される。
なお、デジタルカメラの構成は、上述した第1の実施の形態のデジタルカメラと同じなので、ここではパソコン側の構成について説明する。
図5は、パソコン100の概略構成を示すブロック図である。
同図に示すように、パソコン110には、全体の動作を統括制御するCPU112と、CPU112との間でデータのやり取りを行なうブリッジ回路114とが備えられている。
ブリッジ回路114には、グラフィックスボード120を経由してVRAM122との間で画像データの受け渡しや、メモリ124との間でメモリデータの受け渡しを行なうメモリブリッジ116が備えられている。
メモリブリッジ116に接続されたグラフィックスボード120には、モニタ140が接続される。グラフィックスボード120は、CPU112から受けた描画指示を元に描画イメージデータを生成し、これをVRAM122に対して書き込み、完成したイメージをモニタ140に出力する。
また、ブリッジ回路114には、メモリブリッジ116との間でPCI Express規格を採用してI/Oデータの受け渡しを行なうI/Oブリッジ118が備えられている。
I/Oブリッジ118には、USB2.0の規格を採用したUSB端子126が接続されている。
また、I/Oブリッジ118には、Serial ATA規格を採用してデータの受け渡しを行なうハードディスク装置128が接続されている。
また、I/Oブリッジ118には、PCI Express規格を採用してデータの受け渡しを行なうギガビットLANボード130、及び、拡張ボードであるアドインボード132が接続されている。
さらに、I/Oブリッジ118には、Super IOチップ134、及び、PCI規格を採用してデータの受け渡しを行うPCIバスカードインターフェース136が接続されている。
また、I/Oブリッジ118には、入力装置138として、キーボードとマウスが接続されている。
パソコン110は以上のように構成され、そのUSB端子126を介してデジタルカメラ10と相互に通信可能に接続される。
パソコン110のハードディスク装置128には、所定の画像閲覧プログラムが格納されており、この画像閲覧プログラムを実行することにより、デジタルカメラ10の記憶メディア84に格納された画像をモニタ140で閲覧することができる。すなわち、当該画像閲覧プログラムは、デジタルカメラにカメラ内の画像を再生させ、その再生データを受信して、モニタ140に再生表示させる機能をパソコン110に実現させる。また、顔検出の指示を受け付け、デジタルカメラに再生中の画像の顔検出を行わせる機能を実現させる。
したがって、ユーザは、この画像閲覧プログラムをパソコン110で起動させることにより、デジタルカメラ10で再生させたカメラ内の画像(デジタルカメラ10の記憶メディア84に格納されている画像)をパソコン110のモニタ140で閲覧することができ、また、顔検出の結果をパソコン110のモニタ140で確認することができる。
まず、画像再生時の処理の手順について説明する。
なお、デジタルカメラは、パソコン110に接続すると、その接続を自動で検知して、自動的にPC接続モードに移行する。
デジタルカメラ10のモードが、PC接続モードに設定されると、CPU12は、メディア制御回路48を介して記憶メディア84に最後に記録された画像ファイルの画像データを読み出す。
ここで、読み出された画像データが、圧縮画像データの場合は、所要の伸張処理が施されて、パソコン110に出力される。一方、読み出された画像データがRAWデータの場合は、所要の現像処理(Y/Cデータの生成処理)が施されて、パソコン110に出力される。
パソコン110は、デジタルカメラ10から送信された画像データ(現像データ)を受信して、モニタ140に表示させる(図7参照)。
次に、パソコンへの接続時における顔検出の処理の手順について説明する。
パソコン上でカメラ内の画像を再生表示している場合、パソコンから顔検出の指示を受け付けて、顔検出の処理を実行する。
図6は、パソコン側から顔検出の指示を受け付けて顔検出を行う場合の処理の手順を示すフローチャートである。
モニタ140に再生中の画像について、パソコン側で顔検出の指示が行われると、デジタルカメラ10に顔検出開始コマンドが出力される。デジタルカメラ10は、この顔検出開始コマンドを受信して、顔検出の処理を開始する(ステップS40)。
なお、顔検出の指示は、たとえば、次のように行われる。
図7は、画像閲覧プログラムを実行した際、モニタ140に表示される画像閲覧プログラムのウインドウの一例である。
同図に示すように、ウインドウ内には、画像が表示される画像表示エリアと、画像のコマ送りを指示するコマ送りボタン、画像のコマ戻しを指示するコマ戻しボタン、顔検出の実行を指示する顔検出ボタンが表示される。ユーザは、顔検出ボタンをクリックすることにより、顔検出の指示を入力する。
顔検出開始コマンドが受信されると、CPU110は、再生中の画像がRAWデータから生成した画像か否かを判定する(ステップS41)。
再生中の画像が、RAWデータから生成した画像の場合は、現像条件の異なる複数の顔検出用の画像データをデジタル信号処理回路40に生成させる(ステップS42)。すなわち、特定の現像パラメータを所定の振り幅、変更範囲で振ってRAWデータを現像させる。そして、生成された各顔検出用の画像データを顔検出回路80に加えて、顔検出を行わせる(ステップS43)。各画像データで検出された人物の顔領域の情報は、CPU12に出力される。CPU12は、これをメモリ20に一時保存する。
すべての画像の顔検出が終了したところで、CPU12は、各画像で検出された顔領域の情報に基づいて、画像中の顔領域を特定する(ステップS44)。そして、検出結果をパソコン110に出力する(ステップS45)。すなわち、特定した顔領域を顔検出枠で囲った画像をパソコン110に出力する。パソコン110は、この画像をモニタ140に表示させる(ウインドウの画像表示領域に表示させる。)
なお、上記ステップS41で再生中の画像がRAWデータから生成した画像でないと判定されると、通常の顔検出処理が行われ(ステップS46)、その検出結果が表示される(ステップS45)。
このように、本実施の形態のデジタルカメラによれば、パソコンから顔検出の指示を受け付けて、顔検出の処理を行うことができ、また、その結果をパソコンのモニタで確認することができる。これにより、パソコンの大画面で画像の確認を行うことができ、確認作業をより簡単かつ確実に行うことができるようになる。
なお、上記の例では、パソコン側で顔検出の指示ができるようにされているだけであるが、パソコン側で顔の検出精度の設定もできるようにしてもよい。たとえば、図8に示すように、ウインドウ内に顔の検出精度の設定部を設け、当該設定部で顔の検出精度の設定を行うことができるように構成する。なお、同図に示す例では、レバーで顔の検出精度を設定できるように構成している。
図9は、パソコン側で顔の検出精度を設定して、顔領域を検出する場合の処理の手順を示すフローチャートである。
モニタ140に再生中の画像について、パソコン側で顔検出の指示が行われると、デジタルカメラ10に顔検出開始コマンドが出力される。デジタルカメラ10は、この顔検出開始コマンドを受信して、顔検出の処理を開始する(ステップS50)。
パソコン側から出力された顔検出開始コマンドを受信すると、CPU12は、まず、再生中の画像がRAWデータから生成した画像か否かを判定する(ステップS51)。
再生中の画像が、RAWデータから生成した画像でない場合(Y/Cデータを再生した画像の場合)、通常の顔検出処理を行って(ステップS60)、その検出結果をパソコン側に出力する(ステップS61)。
一方、再生中の画像が、RAWデータから生成した画像の場合は、現像条件を変えて複数の顔検出用の画像データ(現像データ)を生成し、生成した各画像データで顔検出を行って、画像中の顔領域を特定する。
この場合、まず、現在の顔の検出精度の情報を取得する(ステップS52)。すなわち、パソコン側で設定されている顔の検出精度の情報をパソコン110から受信する。
CPU12は、パソコン110から取得した顔の検出精度に応じて現像パラメータの振り幅、変更範囲を設定する(ステップS53)。そして、設定された振り幅、変更範囲で特定の現像パラメータを振ってデジタル信号処理回路40にRAWデータを現像させ、顔検出用の画像データを生成させる(ステップS54)。そして、生成された各顔検出用の画像データを顔検出回路80に加えて、顔検出を行わせる(ステップS55)。各画像データで検出された人物の顔領域の情報は、CPU12に出力され、CPU12は、これをメモリ20に一時保存する。
すべての画像の顔検出が終了したところで、CPU12は、メモリ20に格納された各画像の顔領域の検出結果の情報に基づいて、画像中の顔領域を特定する(ステップS56)。そして、その結果をパソコン110に出力する(ステップS57)。すなわち、特定した顔領域を顔検出枠で囲った画像をパソコン110に出力する。パソコン110は、この画像をモニタ140に表示させる。
ユーザは、この検出結果をパソコン110のモニタ140で確認する。この検出結果に満足しない場合、ユーザは検出精度を変えて、再検出の指示を行う。再検出の指示が行われると、パソコン110からデジタルカメラ10に顔検出開始コマンドが再度出力される。CPU110は、この顔検出開始コマンドが受信された否かを判定して、再検出が指示されたか否かを判定する(ステップS58)。そして、顔検出開始コマンドを受信して、再検出が指示されたと判定すると、ステップS52に戻って、再度顔検出の処理を実行する。
このように、パソコン側で顔の検出精度を変えて、顔検出を行うこともできる。これにより、ユーザの要求に応じた顔検出を行うことができ、使い勝手を向上させることができる。また、顔の検出結果をパソコン側のモニタで確認することができ、確認作業をより簡単かつ確実に行うことができる。
なお、上記実施の形態では、デジタルカメラとパソコン(外部機器)との接続をUSBで行うようにしているが、デジタルカメラとパソコンとの接続方法は、これに限定されるものではない。この他、IEEE1394やSCSI等の通信インターフェースを採用して接続するようにしてもよい。この際、PCI規格等の高速なバス規格を採用することが好ましい。これにより、高速にデータの送受信を行うことができる。
また、有線での接続に限らず、無線で接続するようにしてもよい。たとえば、無線LANや赤外線通信、ブルートゥース等を用いて接続するようにしてもよい。
<第4の実施の形態>
上記第3の実施の形態のデジタルカメラは、カメラ内の画像をパソコン側で閲覧し、また、顔検出を行うように構成されている。
本実施の形態のデジタルカメラは、パソコンからRAWデータを取り込み、顔検出の処理を行って、その結果をパソコンに出力する。
なお、パソコンからデジタルカメラへのRAWデータの送信、顔検出の指示は、専用の画像閲覧プログラムで行われる。すなわち、この画像閲覧プログラムを用いて、デジタルカメラにパソコン内のRAWデータ(パソコン110のハードディスク装置128に格納されたRAWデータやパソコン110に接続されたストレージデバイスに格納されたRAWデータ)をデジタルカメラに送信し、顔検出の依頼を行う。ユーザは、処理対象のRAWデータを指定して、顔検出の指示を行う。
図10は、パソコン内のRAWデータに対して顔検出を行う場合の処理の手順を示すフローチャートである。
パソコン110でハードディスク装置128内に格納されたRAWデータの顔検出が指示されると、パソコン110からデジタルカメラ10に顔検出開始コマンドが出力される。
デジタルカメラ10は、この顔検出開始コマンドを通信インターフェース78を介して受信する(ステップS70)。
パソコン110から送信された顔検出開始コマンドを受信すると、CPU12は、当該コマンドを受信したことを示す顔検出開始コマンド受諾をパソコン110に送信する(ステップS71)。
パソコン110は、この顔検出開始コマンド受諾を受信すると、デジタルカメラ10に対して、処理対象のRAWデータを送信する。デジタルカメラ10は、このパソコン110から送信されたRAWデータを受信する(ステップS72)。そして、RAWデータの受信が完了すると、パソコン110に対して、RAWデータの受信完了を示すRAWデータ受諾を送信する(ステップS73)。
この後、デジタルカメラは、再生用の画像データの現像処理、及び、顔検出処理を行う。
まず、受信したRAWデータに対して再生用の現像処理を行い、再生用の画像データを生成する(ステップS74)。
次に、顔検出処理を行う。まず、受信したRAWデータから現像条件の異なる複数の顔検出用の画像データをデジタル信号処理回路40に生成させる(ステップS75)。そして、生成された各顔検出用の画像データを顔検出回路80に加えて、顔検出を行わせる(ステップS76)。各画像データで検出された人物の顔領域の情報は、CPU12に出力される。CPU12は、これをメモリ20に一時保存する。
すべての画像の顔検出が終了したところで、CPU12は、各画像で検出された顔領域の情報に基づいて、画像中の顔領域を特定する(ステップS77)。そして、検出結果をパソコン110に出力する(ステップS78)。すなわち、再生用の画像に対して、特定した顔領域を顔検出枠で囲った画像をパソコン110に出力する。パソコン110は、この画像をモニタ140に表示させる。
このように、本実施の形態のデジタルカメラによれば、パソコン(外部機器)から取り込んだRAWデータに対して、その現像処理(再生用の現像処理)及び顔検出処理を行うことができる。これにより、より多くのデータを取り扱うことが可能になる。
また、パソコンにおいても、専用の現像処理回路(デジタル信号処理回路)を持つデジタルカメラにRAWデータの現像処理及び顔検出処理を行わせることにより、迅速に画像の現像処理及び顔の検出処理を行うことができる。
なお、本例においても、パソコン側で顔の検出精度の設定ができるようにしてもよい。
図11は、パソコン側で顔の検出精度を設定して、顔領域を検出する場合の処理の手順を示すフローチャートである。
パソコン110でハードディスク装置128内に格納されたRAWデータの顔検出が指示されると、パソコン110からデジタルカメラ10に顔検出開始コマンドが出力される。デジタルカメラ10は、この顔検出開始コマンドを通信インターフェース78を介して受信する(ステップS80)。
パソコン110から送信された顔検出開始コマンドを受信すると、CPU12は、当該コマンドを受信したことを示す顔検出開始コマンド受諾をパソコン110に送信する(ステップS81)。
パソコン110は、この顔検出開始コマンド受諾を受信すると、デジタルカメラ10に対して、処理対象のRAWデータを送信する。デジタルカメラ10は、このパソコン110から送信されたRAWデータを受信する(ステップS82)。そして、RAWデータの受信が完了すると、パソコン110に対して、RAWデータの受信完了を示すRAWデータ受諾を送信する(ステップS83)。
パソコン110は、このRAWデータ受諾を受信すると、デジタルカメラ10に対して、顔の検出精度の設定情報を送信する。デジタルカメラ10は、このパソコン110から送信された顔の検出精度の設定情報を受信する(ステップS84)。そして、顔の検出精度の設定情報が受信されると、パソコン110に対して、設定情報の受信完了を示す設定情報受諾を送信する(ステップS85)。
この後、デジタルカメラは、再生用の画像データの現像処理、及び、顔検出処理を行う。
まず、受信したRAWデータに対して再生用の現像処理を行い、再生用の画像データを生成する(ステップS86)。
次に、受信した検出精度の情報に基づいて、顔検出用の画像データを生成するための現像パラメータの振り幅、変更範囲を設定する(ステップS87)。そして、設定された振り幅、変更範囲で特定の現像パラメータを振ってデジタル信号処理回路40にRAWデータを現像させ、顔検出用の画像データを生成させる(ステップS88)。そして、生成された各顔検出用の画像データを顔検出回路80に加えて、顔検出を行わせる(ステップS89)。各画像データで検出された人物の顔領域の情報は、CPU12に出力され、CPU12は、これをメモリ20に一時保存する。
すべての画像の顔検出が終了したところで、CPU12は、メモリ20に格納された各画像の顔領域の検出結果の情報に基づいて、画像中の顔領域を特定する(ステップS90)。そして、その結果をパソコン110に出力する(ステップS91)。すなわち、再生用の画像に対して、特定した顔領域を顔検出枠で囲った画像をパソコン110に出力する。パソコン110は、この画像をモニタ140に表示させる。
ユーザは、この検出結果をパソコン110のモニタ140で確認する。この検出結果に満足しない場合、ユーザは検出精度を変えて、再検出の指示を行う。再検出の指示が行われると、パソコン110からデジタルカメラ10に顔検出開始コマンドが再度出力される。CPU110は、この顔検出開始コマンドが受信された否かを判定して、再検出が指示されたか否かを判定する(ステップS92)。そして、顔検出開始コマンドを受信して、再検出が指示されたと判定すると、ステップS84に戻って、再度顔検出の処理を実行する。
このように、パソコン側で顔の検出精度を変えて、顔検出を行うこともできる。これにより、ユーザの要求に応じた顔検出を行うことができ、使い勝手を向上させることができる。また、顔の検出結果をパソコン側のモニタで確認することができ、確認作業をより簡単かつ確実に行うことができる。
<第5の実施の形態>
上記第4の実施の形態のデジタルカメラは、外部機器(パソコン)から取り込んだRAWデータの現像処理及び顔検出処理を行うことができるが、RAWデータは、データフォーマットが統一されていないため、現像できない場合がある、また、同様に現像パラメータを変更した現像ができない場合がある。
そこで、本実施の形態のデジタルカメラでは、現像不能なRAWデータが入力された場合、又は、顔検出不能のRAWデータが入力された場合、警告できるように構成されている。
図12は、本実施の形態のデジタルカメラにおける顔検出の処理の手順を示すフローチャートである。
パソコン110でハードディスク装置128内に格納されたRAWデータの顔検出が指示されると、パソコン110からデジタルカメラ10に顔検出開始コマンドが出力される。
デジタルカメラ10は、この顔検出開始コマンドを通信インターフェース78を介して受信する(ステップS100)。
パソコン110から送信された顔検出開始コマンドを受信すると、CPU12は、当該コマンドを受信したことを示す顔検出開始コマンド受諾をパソコン110に送信する(ステップS101)。
パソコン110は、この顔検出開始コマンド受諾を受信すると、デジタルカメラ10に対して、処理対象のRAWデータを送信する。デジタルカメラ10は、このパソコン110から送信されたRAWデータを受信する(ステップS102)。
デジタルカメラ10は、受信したRAWデータが、現像可能なRAWデータか否かを判定する(ステップS103)。
ここで、受信したRAWデータが、現像可能(対応可能)なRAWデータではないと判定すると、CPU12は、パソコン110に対して、エラーを送信する(ステップS110)。パソコン110は、このエラーを受信すると、モニタ140にエラーメッセージ(「現像できません」、「対応データではありません」等)。
一方、受信したRAWデータが、現像可能なRAWデータと判定すると、CPU12は、パソコン110に対して、RAWデータの受信完了を示すRAWデータ受諾を送信する(ステップS104)。
この後、デジタルカメラは、再生用の画像データの現像処理、及び、顔検出処理を行う。
まず、受信したRAWデータに対して再生用の現像処理を行い、再生用の画像データを生成する(ステップS105)。
次に、顔検出処理を行う。まず、受信したRAWデータから現像条件の異なる複数の顔検出用の画像データをデジタル信号処理回路40に生成させる(ステップS106)。そして、生成された各顔検出用の画像データを顔検出回路80に加えて、顔検出を行わせる(ステップS107)。各画像データで検出された人物の顔領域の情報は、CPU12に出力される。CPU12は、これをメモリ20に一時保存する。
すべての画像の顔検出が終了したところで、CPU12は、各画像で検出された顔領域の情報に基づいて、画像中の顔領域を特定する(ステップS108)。そして、検出結果をパソコン110に出力する(ステップS109)。すなわち、再生用の画像に対して、特定した顔領域を顔検出枠で囲った画像をパソコン110に出力する。パソコン110は、この画像をモニタ140に表示させる。
このように、本実施の形態のデジタルカメラによれば、パソコン(外部機器)から取り込んだRAWデータが対応可能(現像可能)なRAWデータではない場合、パソコン110に対して、エラーが送信される。これにより、ユーザが、対応データか否かを容易に確認することができ、操作性が向上する。
なお、本例においても、パソコン側で顔の検出精度の設定ができるようにしてもよい。この場合、検出精度に応じた現像パラメータの変更の可否を判定し、現像パラメータの変更ができない場合は、パソコンにエラーを送信することが好ましい。
図13は、パソコン側で顔の検出精度を設定して、顔領域を検出する場合の処理の手順を示すフローチャートである。
パソコン110でハードディスク装置128内に格納されたRAWデータの顔検出が指示されると、パソコン110からデジタルカメラ10に顔検出開始コマンドが出力される。デジタルカメラ10は、この顔検出開始コマンドを通信インターフェース78を介して受信する(ステップS120)。
パソコン110から送信された顔検出開始コマンドを受信すると、CPU12は、当該コマンドを受信したことを示す顔検出開始コマンド受諾をパソコン110に送信する(ステップS121)。
パソコン110は、この顔検出開始コマンド受諾を受信すると、デジタルカメラ10に対して、処理対象のRAWデータを送信する。デジタルカメラ10は、このパソコン110から送信されたRAWデータを受信する(ステップS122)。
デジタルカメラ10は、受信したRAWデータが、現像可能なRAWデータか否かを判定する(ステップS123)。
ここで、受信したRAWデータが、現像可能(対応可能)なRAWデータではないと判定すると、CPU12は、パソコン110に対して、エラーを送信する(ステップS135)。パソコン110は、このエラーを受信すると、モニタ140にエラーメッセージ(「現像できません」、「対応データではありません」等)。
一方、受信したRAWデータが、現像可能なRAWデータと判定すると、CPU12は、パソコン110に対して、RAWデータの受信完了を示すRAWデータ受諾を送信する(ステップS124)。
パソコン110は、このRAWデータ受諾を受信すると、デジタルカメラ10に対して、顔の検出精度の設定情報を送信する。デジタルカメラ10は、このパソコン110から送信された顔の検出精度の設定情報を受信する(ステップS125)。
デジタルカメラ10は、受信したRAWデータに対して、特定の現像パラメータを変更した現像が可能か否かを判定する(ステップS126)。
ここで、受信したRAWデータが、パラメータの変更ができないと判定すると、CPU12は、パソコン110に対して、エラーを送信する(ステップS127)。パソコン110は、このエラーを受信すると、モニタ140にエラーメッセージ(「顔検出できません」等)。
一方、受信したRAWデータに対して、現像パラメータを変更した現像が可能と判定すると、CPU12は、パソコン110に対して、検出精度の情報の受信完了を示す検出精度の設定情報受諾を送信する(ステップS127)。
この後、デジタルカメラは、再生用の画像データの現像処理、及び、顔検出処理を行う。
まず、受信したRAWデータに対して再生用の現像処理を行い、再生用の画像データを生成する(ステップS128)。
次に、受信した検出精度の情報に基づいて、顔検出用の画像データを生成するための現像パラメータの振り幅、変更範囲を設定する(ステップS129)。そして、設定された振り幅、変更範囲で特定の現像パラメータを振ってデジタル信号処理回路40にRAWデータを現像させ、顔検出用の画像データを生成させる(ステップS130)。そして、生成された各顔検出用の画像データを顔検出回路80に加えて、顔検出を行わせる(ステップS131)。各画像データで検出された人物の顔領域の情報は、CPU12に出力され、CPU12は、これをメモリ20に一時保存する。
すべての画像の顔検出が終了したところで、CPU12は、メモリ20に格納された各画像の顔領域の検出結果の情報に基づいて、画像中の顔領域を特定する(ステップS132)。そして、その結果をパソコン110に出力する(ステップS133)。すなわち、再生用の画像に対して、特定した顔領域を顔検出枠で囲った画像をパソコン110に出力する。パソコン110は、この画像をモニタ140に表示させる。
ユーザは、この検出結果をパソコン110のモニタ140で確認する。この検出結果に満足しない場合、ユーザは検出精度を変えて、再検出の指示を行う。再検出の指示が行われると、パソコン110からデジタルカメラ10に顔検出開始コマンドが再度出力される。CPU110は、この顔検出開始コマンドが受信された否かを判定して、再検出が指示されたか否かを判定する(ステップS134)。そして、顔検出開始コマンドを受信して、再検出が指示されたと判定すると、ステップS125に戻って、再度顔検出の処理を実行する。
このように、検出精度に応じた現像パラメータの変更の可否を判定し、現像パラメータの変更ができない場合は、パソコンにエラーを送信することにより、さらに操作性が向上する。
<第6の実施の形態>
本実施の形態のデジタルカメラは、パソコンに接続されることにより、パソコンの一部として機能し、パソコンによる制御の下、RAWデータの現像処理と顔検出処理を実行する。すなわち、パソコンからの指令に応じて、RAWデータを現像処理し、また、RAWデータから顔検出の処理を行う。
パソコンは、専用の現像プログラムを実行することにより、RAWデータの現像処理装置及び顔検出装置として機能し、外部接続されたデジタルカメラを用いて、RAWデータの現像処理及び顔検出処理を実行する。
なお、パソコンとデジタルカメラの構成は、上述した実施の形態のものと同じである。
図14は、上記の現像プログラムを実行した際、モニタ140に表示されるウインドウの表示の一例を示す図である。
ウインドウには、画像表示領域200と操作領域210とが区分けして形成され、画像表示領域200に現像した画像が表示される。
操作領域210には、各種現像パラメータの設定部、現像の指示部、顔検出の指示部、顔検出精度の設定部等が設けられ、この操作領域210で現像条件の設定や現像の指示、顔検出の指示、顔検出精度の設定等が行われる。
ユーザは、処理対象とするRAWデータを読み出し、操作領域210で各種設定を行って現像処理又は顔検出の処理を指示する。処理対象とするRAWデータの読み出しは、たとえば、ファイルを開くコマンドを入力し、処理対象のRAWデータを指定して行う。
処理対象のRAWデータを指定して、現像の指示が与えられると、パソコン110は、デジタルカメラ10に対してRAWデータと、現像パラメータの情報を送信する。デジタルカメラ10は、受信した現像パラメータに基づいて、受信したRAWデータを現像処理する。そして、現像処理された画像データ(現像データ)をパソコン110に送信する。パソコン110は、受信した画像データをモニタ140に表示させる(ウインドウの画像表示領域200に表示させる。)。
また、顔検出の指示が与えられると、パソコン110は、デジタルカメラ10に対してRAWデータを送信し、顔検出を実行させる。デジタルカメラ10は、上記一連の実施の形態で説明した顔検出の処理を行い、結果をパソコン110に送信する。
この際、RAWデータが未現像の場合は、同時に再生用の現像処理も実施し、現像された画像データを送信する。
パソコン110は、送信された顔検出の結果をモニタ140に表示させる。すなわち、検出された顔を顔検出枠で囲って表示する。
このように、デジタルカメラ10をパソコン110で直接制御し、パソコンの一部として機能させることにより、ユーザの利便性を向上させることができる。また、デジタルカメラ10で現像処理及び顔検出処理を行うことにより、これらの処理速度を高速化することができる。すなわち、デジタルカメラ10は、現像処理及び顔検出処理をハードウェアで実行するため、ソフトウェアで実行するパソコンよりも高速に現像処理及び顔検出処理を行うことができる。
なお、より高速な処理を実現するため、デジタルカメラとパソコンとの接続は、PCI規格等の高速なバス規格を採用して接続することが好ましい。
以上一連の実施の形態では、本発明をデジタルカメラに適用した場合を例に説明したが、本発明の適用は、これに限定されるものではなく、たとえば、カメラ付きの携帯電話機やビデオカメラ等にも同様に適用することができる。また、画像の再生機能のみを有する装置(フォトビューア等)にも同様に適用することができる。
10…デジタルカメラ、12…CPU、14…操作部、16…ROM、18…フラッシュROM、20…メモリ(SDRAM)、22…VRAM、24…撮影レンズ、30…イメージセンサ、32…イメージセンサ駆動回路、34…アナログ信号処理回路、36…A/D変換回路、38…画像入力制御回路、40…デジタル信号処理回路、42…AF検出回路、44…AE検出回路、46…圧縮伸張処理回路、48…メディア制御回路、50…画像再生処理回路、52…LCDドライバ、54…LCDモニタ、56…ビデオエンコーダ、58…音声処理回路、60…音声入力回路、62…マイク、64…音声出力回路、66…スピーカ、68…フラッシュ制御回路、70…フラッシュ、72…電源制御回路、74…電源、76…通信制御回路、78…通信インターフェース、80…顔検出回路、110…パソコン、112…CPU、114…ブリッジ回路、116…メモリブリッジ、118…I/Oブリッジ、120…グラフィックスボード、122…VRAM、124…メモリ、126…USB端子、128…ハードディスク装置、130…ギガビットLANボード、132…アドインボード、134…Super IOチップ、136…PCIバスカードインターフェース、138…入力装置、140…モニタ、200…画像表示領域、210…操作領域