以下、本発明の実施の形態について図面を参照しながら説明する。まず、本発明の第1の実施の形態に係る動画像処理装置について説明する。
図1は、本発明の第1の実施の形態に係る動画像処理装置100の構成を概略的に示すブロック図である。図1の動画像処理装置100は、メモリカードやハードディスク等の記録媒体200に記録された動画像データを入力とする。動画像処理装置100は、この動画像データを構成する複数の画像フレームデータ(静止画像データ)から、人物を含み、かつ、その人物の表情が特定の表情、ここでは笑顔である画像フレームデータを処理対象として選択する。そして、動画像処理装置100は、選択された画像フレームデータに関する情報を記録媒体200上の笑顔検出ファイルに記録する機能を有する。
動画像処理装置100は、装置全体を制御するための制御部110と、記録媒体200から読み出した動画像ファイルを復号するための動画像復号部120とを備える。また、動画像処理装置100は、動画像復号部120で復号された画像フレームデータから人物の笑顔が記録されている画像を検出するための笑顔画像検出部130と、画像を表示するためのLCDパネル等の表示部140とを備える。さらに、動画像処理装置100は、ユーザが操作するためのスイッチ類を備えた操作部150を備えている。
制御部110は、ユーザによる操作部150の操作に応じて、記録媒体200へのデータの読み書きや、表示部140へのデータ出力を行うと共に、動画像復号部120や笑顔画像検出部130を制御する。
笑顔画像検出部130は、画像フレームデータから人物の顔を検出する顔検出部131と、検出された顔の表情評価値を算出する表情評価部132と、表情評価値の極大値を検出する極大値検出部133とを備えている。表情評価値は、表情が特定の表情(この例では笑顔)にどれだけ近いかの度合いを示す。
制御部110は、表情評価部132により算出された表情評価値が高い画像フレームデータのうち、極大値検出部133が検出した極大値に対応する画像フレームデータを処理対象として選択する選択部としての機能を備えている。
次に、上記のように構成された動画像処理装置100の動作について説明する。操作部150を操作することによりユーザが記録媒体200に記録されている動画像ファイルの1つを選択すると、制御部110は、選択された動画像ファイルに対応する笑顔検出ファイルが記録媒体200に記録されているか否かを判別する。笑顔検出ファイルが記録されていない場合、制御部110は動画像ファイルを解析して動画像ファイルに対応する笑顔検出ファイルを作成する。
続いて、この笑顔検出ファイルの作成について説明する。制御部110は、記録媒体200からユーザにより選択された動画像ファイルを読み出して動画像復号部120に入力すると共に、動画像ファイルの処理対象画像フレームのタイムコード情報を極大値検出部133に入力する。動画像復号部120は入力された動画像ファイルを復号し、生成された画像フレームデータを顔検出部131に入力する。
顔検出部131は、入力された画像フレームデータを解析し、画像フレーム(静止画像)中に人物の顔が存在するか否かを判別する(顔検出ステップ)。判別には、特許文献1に記載された手法を用いることができる。そして、顔検出部131は、入力画像フレームに顔が存在すると判別した場合には、顔領域を特定し、この顔領域の対象物が人物の顔である確度を示す顔信頼度値を算出する(顔信頼度算出ステップ)。
顔検出部131により検出された画像フレーム中の顔領域の情報は表情評価部132に入力され、顔領域に対する顔信頼度値は極大値検出部133に入力される。表情評価部132は、入力された顔領域の画像に対して笑顔の度合いを示す表情評価値を算出する(表情評価ステップ)。表情評価値の算出には、特許文献2に記載された手法を用いることができる。極大値検出部133は、入力された顔信頼度値に基づいてしきい値を調整する(しきい値設定ステップ)。具体的には、顔検出部131により算出された顔信頼度値が大きい場合はしきい値を小さな値に変更し、顔信頼度値が小さい場合はしきい値を大きな値に変更する。
表情評価部132により算出された表情評価値は、極大値検出部133に入力される。極大値検出部133は、入力された表情評価値がしきい値より大きいか否かを判別し、大きい場合には、入力された表情評価値が極大値に相当するか否かを判別し、その結果を制御部110に出力する。極大値検出部133は、極大値が検出された場合には、極大値検出情報を出力する(極大値検出ステップ)。極大値検出情報には、極大値が検出された画像フレームデータのタイムコード情報が含まれる。なお、極大値検出部133の詳細な動作については後述する。
制御部110は、極大値検出部133の検出結果を受け、極大値検出情報が入力された場合には、極大値検出情報内のタイムコード情報を笑顔検出ファイルに記録して処理対象の画像フレームに対する処理を終了し、次の画像フレームに対する処理を開始する。
一方、顔検出部131は、画像フレーム中に人物の顔が存在しないと判別した場合には、表情評価部132に顔領域が存在しないことを通知し、表情評価部132は、極大値検出部133に顔領域が存在しないことを通知する。極大値検出部133は、顔領域が画像フレーム中に存在しないため極大値非検出であることを制御部110に出力する。制御部110は、処理対象の画像フレームに対する処理を終了し、次の画像フレームに対する処理を開始する。
制御部110は、上記の一連の処理を選択された動画像ファイルの全ての画像フレームに対して実行し、全画像フレームに対する処理を終了すると、笑顔画像検出部130に処理の終了を通知する。そして、制御部110は、笑顔画像検出部130からの最終検出結果を受信した後、笑顔検出ファイルの作成を終了する(選択ステップ)。
図2は、図1における極大値検出部133の動作を示すフローチャートである。以下、図2のフローチャートを用いて極大値検出部133の動作について説明する。図2の処理は、ユーザが指定した1つの動画像ファイル毎に実行される。
極大値検出部133は、まず、表情評価値の極大値を保持するための内部変数である極大値変数Mvをゼロに初期化する(ステップS101)。続いて、極大値検出部133は、表情評価部132から現在処理中の画像フレームに対する表情評価値が入力されているか否かを判別する(ステップS102)。画像フレームから顔領域が検出されずに表情評価値が入力されていない場合(ステップS102でNo)には、後述のステップS111に進む。表情評価値が入力されている場合(ステップS102でYes)には、極大値検出部133は、制御部110から入力された現在処理中の画像フレームのタイムコードを内部変数であるタイムコード変数CTvにセットする(ステップS103)。そして、極大値検出部133は、表情評価部132から入力された現在の処理対象の画像フレームに関する表情評価値を内部変数である評価値変数Evにセットする(ステップS104)。さらに、極大値検出部133は、顔検出部131から入力された顔信頼度値を内部変数である顔信頼度変数Rvにセットする(ステップS105)。
次に、極大値検出部133は、顔信頼度変数Rvの値に従ってしきい値THvを決定する(ステップS106)。本実施の形態では、以下の表1に示すような対応関係に従い、顔信頼度変数Rvの値に応じて定数THv0、THv1、THv2のいずれかの値がしきい値THvにセットされる。すなわち、顔信頼度変数Rvの値が大きい場合にはしきい値THvは小さくなり、顔信頼度変数Rvの値が小さい場合にはしきい値THvは大きくなる。
次に、極大値検出部133は、評価値変数Evの値がしきい値THvを超えているか否かを判別する(ステップS107)。本実施の形態では、評価値変数Evの値がしきい値THvを超えていると判別された場合(ステップS107でYes)に、検出された顔領域の表情が笑顔であると判定する。ステップ206で顔信頼度値に応じてしきい値をセットしており、顔信頼度値が小さい顔領域に対しては笑顔検出のしきい値が大きくなるため、誤検出率を低くすることができる。
笑顔であると判定された場合、極大値検出部133は、評価値変数Evの値が極大値変数Mvの値より大きいか否かを判別する(ステップS108)。評価値変数Evの値が極大値変数Mvの値より小さい場合(ステップS108でNo)には、極大値変数Mvにセットされている値がその時点での表情評価値の極大値であると判断され、後述のステップS111に進む。評価値変数Evの値が極大値変数Mvの値より大きい場合(ステップS108でYes)には、極大値変数Mvに保持されている表情評価値は極大値ではない。そのため、極大値検出部133は、極大値変数Mvの値を評価値変数Evの値で更新する(ステップS109、更新ステップ)。そして、極大値検出部133は、タイムコード変数CTvにセットされた現在処理中の画像フレームのタイムコード値を、極大値に対応するタイムコード値を格納する極大値タイムコード変数MTvにセットする(ステップS110)。
一方、評価値変数Evの値がしきい値THvより小さいと判別された場合(ステップS107,No)には、顔領域が笑顔ではないと判断され、ステップS108〜S110をスキップしてステップS111に進む。
続いて極大値検出部133は、極大値変数Mvの値がゼロであるか否かを判別する(ステップS111)。極大値変数Mvがゼロでないと判別された場合(ステップS111でNo)には、笑顔の顔領域が検出されていることとなる。この場合には、極大値変数Mvに格納された表情評価値が検出された画像フレームのタイムコード値(極大値タイムコード変数MTvの値)と、現在処理中の画像フレームのタイムコード値(タイムコード変数CTvの値)との時間差が求められる。そして、極大値検出部133は、時間差が一定の時間(T0v)より長いか否かを判別する(ステップS112)。
極大値変数Mvの値がゼロであると判別された場合(ステップS111でYes)には、笑顔の顔領域が検出されていないため、極大値検出部133は、極大値を検出していないことを示す極大値非検出情報を制御部110に出力する(ステップS113)。極大値変数Mvの値がゼロでなくとも、時間差が一定の時間T0vより短い場合(ステップS112でNo)には、極大値がさらに更新される可能性がある。そのため、極大値検出部133は、極大値を検出していないことを示す極大値非検出情報を制御部110に出力する(ステップS113)。
一方、時間差が一定の時間T0vより長い場合(ステップS112でYes)には、一定の時間内に極大値変数Mvにセットされている値が更新されていないこととなり、実際の極大値である可能性が高くなる。そのため、極大値検出部133は、極大値検出情報を制御部110に出力し(ステップS114)、極大値変数Mvの値をゼロにリセットする(ステップS115)。極大値検出情報には、極大値タイムコード変数MTvの値で示される極大値が検出された時点のタイムコード情報が含まれている。
続いて極大値検出部133は、制御部110から全画像フレームに対する処理終了の通知を受信したか否かを判別する(ステップS116)。この通知を受信していない場合(ステップS116でNo)には、極大値検出部133は、ステップS102に戻って次の画像フレームに対する処理を行う。この通知を受信している場合(ステップS116でYes)には、極大値検出部133は、極大値変数Mvの値がゼロであるか否かを判別する(ステップS117)。極大値変数Mvの値がゼロである場合(ステップS117でYes)には、全ての極大値検出情報を出力済みであるため、極大値検出部133は、極大値非検出情報を制御部110に出力し(ステップS118)、当該動画像データに関する処理を終了する。極大値変数Mvの値がゼロでない場合(ステップS117でNo)には、出力されていない極大値検出情報が存在するため、極大値検出部133は、極大値検出情報を制御部110に出力し(ステップS119)、当該動画像データに関する処理を終了する。
図2の処理によれば、選択された動画像ファイルから好適な笑顔の画像フレームが選択されて、その画像フレームに関する情報(ここではタイムコード値)が笑顔検出ファイルに記録される。
次に、図2の処理の具体例を図3及び図4に基づいて説明する。図3は、図1における極大値検出部133の作用を説明するための表情評価値の時間に伴う変化を示すグラフであり、しきい値が高い場合を示している。また、図4は、図1における極大値検出部133の作用を説明するための表情評価値の時間に伴う変化を示すグラフであり、しきい値が低い場合を示している。各図の折れ線は、表情評価部132から顔画像を含む画像フレーム毎に出力される表情評価値をプロットしたものであり、動画像データの中で表情評価値がどのように変化するかを示している。
まず、図3のケースについて説明する。図3のケースでは、期間(1),(2)において、表情評価値がしきい値を超えており、期間(1)では(a),(b),(c),(d)の4つの時点で極大値を記録し、期間(2)では(e),(f),(g)の3つの時点で極大値を記録している。したがって、全ての極大値に応じて画像フレームを選択すると、7つの画像フレームが選択されることとなる。
極大値変数Mvの値は、表情評価値がしきい値THvを超えた時点から値が更新され(ステップS109)、その値が更新された画像フレームのタイムコードが極大値タイムコード変数MTvにセットされる(ステップS110)。表情評価値が増加している期間は、画像フレーム毎に極大値変数Mvの値が更新され、極大値タイムコード変数MTvの値も更新され、したがって、ステップS112で時間差が一定の時間T0vより大きいと判別されることはない。
例えば、図3の期間(1)では、(a)の時点で、その時点の画像フレームに対応する表情評価値が極大値変数Mvにセットされ、対応するタイムコードが極大値タイムコード変数MTvにセットされる。(a)の時点を過ぎると、画像フレームから検出される表情評価値が一旦減少し、その後増加している。この場合、(a)の時点から、増加途中の(a’)の時点までの期間では、各画像フレームに対する表情評価値が極大値変数Mvにセットされた値以下であるため、(a)の時点でセットされたMvおよびMTvの値が保持される。各画像フレームの処理では、極大値タイムコード変数MTvの値と処理中の画像フレームのタイムコードがセットされたタイムコード変数CTvの値との時間差が一定の時間T0vを超えていないか判別する(ステップS112)。このとき、(a)から(a’)までの期間では時間T0vを超えないため、極大値検出部133は、極大値が検出されていないことを示す極大値非検出情報を制御部110に出力する(ステップS113)。
(a’)の時点の次の画像フレームに対する表情評価値は、(a)の時点でセットされた極大値変数Mvの値より大きくなり、この時点から(b)の時点までは表情評価値が漸次増加する。そのため、画像フレーム毎に極大値変数Mvの値と極大値タイムコード変数MTvの値とは更新され続ける。同様に(b)から(b’)までの期間では、(b)の時点でセットされた各変数Mv、MTvの値が保持され、(b’)から(c)までの期間では、画像フレーム毎に極大値変数Mvの値と極大値タイムコード変数MTvの値とは更新され続ける。(c)の時点での画像フレームの表情評価値とタイムコードとが各変数Mv、MTvにセットされると、それ以降、(d)の時点でも極大値となるが、(d)の時点での表情評価値は極大値変数Mvにセットされている値よりも小さい。そのため、変数Mv及びMTvの値は(c)の時点の画像フレームに対する値が保持されたままとなる。
そして、(c)の時点の画像フレームのタイムコード(極大値タイムコード変数MTvの値)からT0vの時間が経過した(x)の時点での画像フレームに対する処理が終了する。すると、極大値検出部133は、(c)の時点の画像フレームで極大値を検出したことを示す極大値検出情報を制御部110に出力し(ステップS114)、極大値変数Mvをゼロにリセットする(ステップS115)。すなわち、期間(1)では、4つの極大値が得られるが、選択されるのは、表情評価値が最高値となる時点(c)における画像フレームのみとなり、短時間に多数の画像フレームが選択されるのを防ぐことができる。
同様に、図3の期間(2)では、(y)の時点の画像フレームの処理を終了すると、(g)の時点での画像フレームに対応するタイムコード情報を含む極大値検出情報が出力される。
なお、図3の例では、表情評価値がしきい値を超えた笑顔のシーンが2箇所検出されているのに対し、図4の例では、動画像データの全体で表情評価値がしきい値を超えている。図2の処理によれば、図4のケースでも、図3のケースと同様に、(c),(g)の2つの時点の画像フレームのみが選択され、短期間に多数の画像が選択されるのを防止することができる。
次に、選択された画像フレームの再生処理について説明する。制御部110は、再生モードとして、スライドショーモードと、ダイジェスト動画再生モードとを備えており、これらのモードはユーザが操作部150を操作することにより選択できる。制御部110は、スライドショーモードでは、選択された画像フレームデータを表示部140上に表示させる表示制御部としての機能を果たす。また、制御部110は、ダイジェスト動画再生モードでは、選択された画像フレームデータより所定時間前の時点から一定時間前記動画像データを表示画面上で再生する機能を果たす。
各再生モードについて説明する前提として、動画像ファイルと笑顔検出ファイルとの間に図5のような関係があると仮定する。図5は、図2の処理の対象となる動画像ファイルと、この動画像ファイルを処理することにより作成される笑顔検出ファイルの内容との関係の一例を示す説明図である。
例えば、図5の例では、動画像ファイル中で5つの画像フレームが表情評価値が極大値をとるフレーム、すなわち、良好な笑顔が含まれるフレームとして選択されている。笑顔検出ファイルには、5箇所の表情評価値の極大値のタイムコードT1〜T5が記録されている。各タイムコードに対応する動画像ファイル中の画像フレームは、動画像ファイル中のタイムコードから引き出された矢印で示される位置にあるものとする。
スライドショーモードでは、制御部110は、記録媒体200から笑顔検出ファイルを読み出して、記録されているタイムコードT1〜T5を取得する。そして、制御部110は、各タイムコードに対応する画像フレームを記録媒体200に記録されている対応する動画像ファイルから読み出して動画像復号部120に入力し、復号された静止画を所定の時間間隔で順次表示部140に表示させる。
ダイジェスト動画再生モードでは、制御部110は、最初に笑顔検出ファイルからタイムコードT1を取得する。そして、制御部110は、記録媒体200に記録されている対応する動画像ファイルから、タイムコードT1の位置より所定時間前の時点から一定時間の動画像データを読み出して動画像復号部120に入力し、復号された動画を表示部140に表示させる。この例では、タイムコードT1より3秒前の位置から10秒間、動画像データを読み出して再生させる。
制御部110は、タイムコードT1に対する再生が終了すると、次に笑顔検出ファイルからタイムコードT2を取得し、同様にタイムコードT2より3秒前の位置から10秒間動画像データを再生する。このようにして、順次タイムコードT3,T4,T5に対して同様に10秒間の動画像データを連続して再生することにより、選択された笑顔を含む画像フレーム近辺の動画像をダイジェストで再生する。
なお、本実施の形態では、動画像ファイルとは別の笑顔検出ファイルを作成する例について述べたが、検出結果を選択された動画像ファイルのヘッダー領域やフッター領域等に記録することも可能である。
次に、本発明の第2の実施の形態に係る動画像処理装置について説明する。本実施の形態は、その構成、作用が上述した第1の実施の形態と基本的に同じであるので、重複した構成、作用については説明を省略し、以下に異なる構成、作用について説明する。
第1の実施の形態の動画像処理装置は、画像フレーム中の顔画像が1つである場合を想定したものであるが、第2の実施の形態の動画像処理装置は、画像フレーム中に顔画像が複数ある場合を想定したものである。
図6は、本発明の第2の実施の形態に係る動画像処理装置100Aの構成を概略的に示すブロック図であり、図7は、図6における極大値検出部の詳細な構成を示すブロック図である。装置全体の基本的な構成は図1と同一であるが、笑顔画像検出部160の構成が第1の実施形態とは異なるため、異なる符号を付している。他の構成は図1と同一であるため、同一符号を付して重複した説明は省略する。
本実施の形態の笑顔画像検出部160は、動画像復号部120で復号された動画像データから人物の笑顔が記録されている画像フレームを検出するものである。笑顔画像検出部160は、画像フレームデータから複数の人物の顔部分の領域を検出する顔検出部161と、顔検出部161で検出された複数の顔領域に対して笑顔の度合いを示す表情評価値をそれぞれ算出するための表情評価部162とを備える。また、笑顔画像検出部160は、連続する動画像データに含まれる画像フレームに対して表情評価部162で算出した連続する表情評価値から表情評価値が極大となった画像フレームを検出する極大値検出部163を備える。
ユーザが操作部150を操作して記録媒体200に記録されている動画像ファイルの1つを選択すると、制御部110は、第1の実施の形態におけるのと同様に、動画像ファイルに対応する笑顔検出ファイルを作成する。
制御部110は、記録媒体200から選択された動画像ファイルを読み出して動画像復号部120に入力すると共に、動画像ファイルの処理対象画像フレームのタイムコード情報を極大値検出部163に入力する。動画像複合部120は、入力された動画像ファイルを復号し、生成された画像フレームデータを顔検出部161に入力する。
顔検出部161は、入力された画像フレームデータから複数の顔領域を検出可能であり、入力された画像フレームデータを解析し、画像フレーム中に人物の顔が存在するか否かを判定する。また、顔検出部161は、入力画像フレームに顔が存在すると判別した場合には、顔領域を特定し、この顔領域の画像が人物の顔である確度を示す顔信頼度値を算出する。複数の顔が存在する場合には、複数の顔領域を特定し、それぞれの顔領域について顔信頼度値を算出する。
また、顔検出部161は、検出された顔領域にID番号を付加する機能を有し、連続する画像フレームで検出された顔領域に対して同一人物であると判定された顔領域に一意のID番号を付加することができる。連続する画像フレーム間で検出される顔領域に対して同一人物であることを特定するには、例えば1つ前の画像フレームで検出した顔領域の情報と、現在の画像フレームで検出された顔領域の情報とを比較するといった方法を使用することができる。この比較において、画像フレーム中での位置、大きさの差異が一定値以下の顔領域を同一人物と判定する。
顔検出部161により画像フレーム中に人物の顔が存在しないと判定された場合、顔検出部161は表情評価部162に顔領域が存在しないことを通知し、表情評価部162は極大値検出部163に顔領域が存在しないことを通知する。極大値検出部163は、顔領域が画像フレーム中に存在しないため極大値非検出であることを制御部110に出力し、制御部110は当該画像フレームに対する処理を終了して次の画像フレームに対する処理を開始する。
顔検出部161により画像フレーム中に人物の顔が存在すると判定された場合、顔検出部161により検出された画像フレーム中の各顔領域の情報と各顔領域のID番号を含む情報とは表情評価部162に入力される。また、各顔領域に対する顔信頼度値は極大値検出部163に入力される。表情評価部162は、入力されたそれぞれの顔領域の画像に対して笑顔の度合いを示す表情評価値を算出する。
算出された各顔領域に対する表情評価値および顔信頼度値は、それぞれID番号と関連づけられて極大値検出部163に入力される。極大値検出部163は、画像フレーム毎に入力される各顔領域の表情評価値から極大値を検出し、極大値検出結果を制御部110に出力する。
本実施の形態の極大値検出部163は、例えば、図7に示すように3領域の顔画像の表情評価値の極大値をそれぞれ独立して検出できるように、表情評価値と共に入力されるID番号を検出して入力された表情評価値を振り分けるID判別部163aを備える。また、極大値検出部163は、ID番号にしたがって振り分けられたそれぞれの表情評価値から極大値を検出する第1のID別極大値検出部163b、第2のID別極大値検出部163c、第3のID別極大値検出部163dを備える。さらに、極大値検出部163は、ID別極大値検出部163b,163c,163dから出力される極大値を統合して画像全体で好適な表情評価値の極大値が得られる画像フレームのタイムコード情報を制御部110へ出力する極大値統合部163eを備える。
なお、ID番号に対応する顔領域が検出されていない場合は、顔領域が検出されていないことを示す情報が各ID別極大値検出部に入力される。また、制御部110から入力されるタイムコード情報は、各ID別極大値検出部163b,163c,163dに入力され、画像フレームの処理終了の通知は各ID別極大値検出部及び極大値統合部163dに入力される。
制御部110は、第1の実施形態におけるのと同様に、極大値検出部163の出力に応じて笑顔検出ファイルにタイムコードを記録し、再生時には、動画像ファイルのダイジェスト再生やスライドショー表示を行う。
図8は、図6及び図7におけるID別極大値検出部163b,163c,163dのそれぞれの動作を示すフローチャートである。以下、図8のフローチャートを用いて第1のID別極大値検出部163bの動作について説明する。図8の処理は、ユーザが指定した1つの動画像ファイル毎に実行される。第2のID別極大値検出部163c、第3のID別極大値検出部163dの動作も同様である。
第1のID別極大値検出部163bは、まず、表情評価値の極大値を保持するための内部変数である極大値変数Mvをゼロに初期化する(ステップS201)。続いて、第1のID別極大値検出部163bは、ID判別部163aから現在処理中の画像フレームに対する表情評価値が入力されているか否かを判別する(ステップS202)。画像フレームから顔領域が検出されずに表情評価値が入力されていない場合(ステップS202でNo)には、後述のステップS214に進む。表情評価値が入力されている場合(ステップS202でYes)には、第1のID別極大値検出部163bは、制御部110から入力された現在処理中の画像フレームのタイムコードを内部変数であるタイムコード変数CTvにセットする(ステップS203)。そして、第1のID別極大値検出部163bは、ID判別部163aから入力された現在の処理対象の画像フレームに関する表情評価値を内部変数である評価値変数Evにセットする(ステップS204)。さらに、第1のID別極大値検出部163bは、顔検出部161から入力されたID1の顔画像に関する顔信頼度値を内部変数である顔信頼度変数Rvにセットする(ステップS205)。
次に、第1のID別極大値検出部163bは、顔信頼度変数Rvの値に従ってしきい値THvを決定する(ステップS206)。本実施の形態でも、前記の表1に示すような対応関係に従い、顔信頼度変数Rvの値に従ってしきい値THvを決定する。
次に、第1のID別極大値検出部163bは、評価値変数Evの値がしきい値THvを超えているか否かを判別する(ステップS207)。本実施の形態では、評価値変数Evの値がしきい値THvを超えていると判別された場合(ステップS207でYes)に、検出された顔領域の表情が笑顔であると判定する。評価値変数Evの値がしきい値THvより小さいと判別された場合(ステップS207でNo)には、顔領域が笑顔ではないと判断され、後述のステップS214に進む。
顔画像が笑顔であると判定された場合(ステップS207でYes)、第1のID別極大値検出部163bは、評価値変数Evの値が極大値変数Mvの値より大きいか否かを判別する(ステップS208)。評価値変数Evの値が極大値変数Mvの値より小さい場合(ステップS208でNo)には、極大値変数Mvにセットされている値がその時点での表情評価値の極大値であると判断され、後述のステップS211に進む。評価値変数Evの値が極大値変数Mvの値より大きい場合(ステップS208でYes)には、極大値変数Mvに保持されている表情評価値は極大値ではない。そのため、第1のID別極大値検出部163bは、極大値変数Mvを評価値変数Evの値で更新する(ステップS209)。また、第1のID別極大値検出部163bは、タイムコード変数CTvにセットされた現在処理中の画像フレームのタイムコード値を、極大値に対応するタイムコード値を格納する極大値タイムコード変数MTvにセットする(ステップS210)。
続いて第1のID別極大値検出部163bは、極大値変数Mvの値がゼロであるか否かを判別する(ステップS211)。極大値変数Mvがゼロでないと判別された場合(ステップS211でNo)には、笑顔の顔領域が検出されていることとなる。そして、この場合には、極大値変数Mvに格納された表情評価値が検出された画像フレームのタイムコード値(極大値タイムコード変数MTvの値)と、現在処理中の画像フレームのタイムコード値(タイムコード変数CTvの値)との時間差を求める。そして、第1のID別極大値検出部163bは、求めた時間差が、一定の時間(T0v)より長いか否かを判別する(ステップS212)。
極大値変数Mvの値がゼロであると判別された場合(ステップS211でYes)には、笑顔の顔領域が検出されていないこととなる。そのため、第1のID別極大値検出部163bは、極大値を検出していないことを示す極大値非検出情報を極大値統合部163eに出力する(ステップS213)。極大値変数Mvの値がゼロでなくとも、時間差が一定の時間T0vより短い場合(ステップS212でNo)には、極大値がさらに更新される可能性がある。そのため、第1のID別極大値検出部163bは、極大値を検出していないことを示す極大値非検出情報を極大値統合部163eに出力する(ステップS213)。極大値変数Mvの値がゼロではなく、かつ、時間差が一定の時間T0vより長い場合(ステップS212でNo)には、後述のステップS216に処理を進める。
画像フレームから顔領域が検出されずに表情評価値が入力されていないと判別された場合(ステップS202でNo)には、第1のID別極大値検出部163bは、極大値変数Mvの値がゼロであるか否かを判別する(ステップS214)。評価値変数Evの値がしきい値THvより小さく顔領域が笑顔ではないと判別された場合(ステップS207でNo)にも、第1のID別極大値検出部163bは、極大値変数Mvの値がゼロであるか否かを判別する(ステップS214)。
極大値変数Mvがゼロであると判別された場合(ステップS214でYes)には、笑顔の顔領域が検出されていないこととなる。そのため、第1のID別極大値検出部163bは、極大値を検出していないことを示す極大値非検出情報を極大値統合部163eに出力する(ステップS222)。極大値変数Mvがゼロでないと判別された場合(ステップS214でNo)には、笑顔の顔領域を以前に検出していたことを示している。具体的には、ステップS202からステップS214に進んでNoと判別された場合は、前画像フレームで笑顔であった顔領域が検出されなくなったことを示す。一方、ステップS207からステップS214に進んでNoと判別された場合は、前画像フレームで笑顔であった顔領域が現在のフレームでは笑顔でなくなったと判定されたことを示す。このような場合には、その時点で保持している極大値より大きな極大値が検出される可能性が低いため、一定の時間T0v経過するまでチェックする処理(ステップS212)を打ち切る情報を極大値統合部163eに出力する(ステップS215)。そして、その時点で保持している極大値の情報を極大値統合部163eに出力し(ステップS215)、極大値変数Mvの値をゼロにリセットする(ステップS217)。第1のID別極大値検出部163bは、ステップS212で極大値の検出から一定の時間T0vが経過したと判別した場合にも、ステップS216,S217の処理を行う。
続いて第1のID別極大値検出部163bは、制御部110から全画像フレームに対する処理終了の通知を受信したか否かを判別する(ステップS218)。この通知を受信していない場合(ステップS218でNo)には、第1のID別極大値検出部163bは、ステップS202に戻って次の画像フレームに対する処理を行う。この通知を受信している場合(ステップS218でYes)には、第1のID別極大値検出部163bは、極大値変数Mvの値がゼロであるか否かを判別する(ステップS219)。極大値変数Mvの値がゼロである場合(ステップS219でYes)には、全ての極大値検出情報を出力済みである。そのため、第1のID別極大値検出部163bは、極大値非検出情報を極大値統合部163eに出力し(ステップS220)、当該動画像データに関する処理を終了する。極大値変数Mvの値がゼロでない場合(ステップS219でNo)には、出力されていない極大値検出情報が存在することとなる。そのため、第1のID別極大値検出部163bは、極大値検出情報を極大値統合部163eに出力し(ステップS221)、当該動画像データに関する処理を終了する。
図8の処理を第1のID別極大値検出部163b、第2のID別極大値検出部163c、第3のID別極大値検出部163dが実行する。これにより、選択された動画像ファイルから画像に含まれる各顔画像について、好適な笑顔の画像フレームに関する情報(ここではタイムコード値)が極大値統合部163eに出力される。
図9は、図7に示される極大値統合部163eの処理を示すフローチャートである。図9に示されるように、極大値統合部163eは、表情評価値が極大値である画像フレームのタイムコードを保持するための極大値タイムコード変数MTvを−1に初期化する(ステップS301)。また、極大値統合部163eは、各顔領域に対して検出された表情評価値が極大値であるか否かを判別する一定の時間の起点となる基準タイムコードを保持するための基準タイムコード変数STvを−1に初期化する(ステップS302)。以下の処理では、これらの変数の値が負の値であることは、タイムコードがセットされていないことを意味する。
次に、極大値統合部163eは、図10に示すID別極大値処理を実行してID1の顔領域に対して第1のID別極大値検出部163bから入力された極大値検出/非検出情報を処理する(ステップS303)。ここでは、第1のID別極大値検出部163bが極大値を検出した画像フレームのタイムレコード値が基準タイムコード変数STvにセットされる。続いて、極大値統合部163eは、図10と同様の処理により、第2のID別極大値検出部163c及び第3のID別極大値検出部163dから入力された極大値検出/非検出情報を処理する(ステップS304,S305)。
各ID番号に対する極大値処理の終了後、極大値統合部163eは、基準タイムコード変数STvが初期設定の−1のままであるか否かを判別する(ステップS306)。初期設定のままであるとき(ステップS306でYes)は、後述のステップS310に処理を進める。基準タイムコード変数STvが−1でない場合(ステップS306でNo)には、基準タイムコード変数STvを初期化後にID別極大値検出部163b,163c,163dの少なくとも1つから極大値検出情報が入力されていることを意味する。この場合には、各極大値処理部のいずれかから笑顔の顔領域が検出されなくなったことを示す打ち切り情報が入力されたか否かを判別する(ステップS307)。
極大値統合部163eは、打ち切り情報が入力されていた場合(ステップS307でYes)には、後述のステップS311に処理を進める。入力されていない場合(ステップS307でNo)には、制御部110から入力された現在処理中の画像フレームのタイムコードを内部変数であるタイムコード変数CTvにセットする(ステップS308)。そして、このタイムコード変数CTvの値から、極大値が検出された画像フレームのタイムレコード値(基準タイムコード変数STvの値)との時間差が、一定の時間より長いか否かを判別する(ステップS309)。ここでの基準となる一定の時間は、図8のステップS212で使用しているT0vの値の2倍の値である。
基準タイムコードが基準タイムコード変数STvにセットされておらずに−1である場合(ステップS306でYes)には、極大値統合部163eは、極大値非検出情報を制御部110に出力する(ステップS310)。また、時間差が一定の時間より短い場合(ステップS309でNo)にも、極大値統合部163eは、極大値非検出情報を制御部110に出力する(ステップS310)。一方、打ち切り情報が入力された場合(ステップS307でYes)、及び、時間差が一定の時間より長い場合(ステップS309でYes)には、極大値統合部163eは、極大値検出情報を制御部110に出力する(ステップS311)。そして、極大値統合部163eは、基準タイムコード変数STvの値を−1にリセットする(ステップS312)。
続いて極大値統合部163eは、制御部110から全画像フレームに対する処理終了の通知を受信したか否かを判別する(ステップS313)。この通知を受信していない場合(ステップS313でNo)には、極大値統合部163eは、ステップS303に戻って次の画像フレームに対する処理を行う。この通知を受信している場合(ステップS313でYes)には、極大値統合部163eは、基準タイムコード変数STvの値が−1であるか否かを判別する(ステップS314)。基準タイムコード変数STvの値が−1である場合(ステップS314でYes)には、全ての極大値検出情報を出力済みである。そのため、極大値統合部163eは、極大値非検出情報を制御部110に出力し(ステップS315)、当該動画像データに関する処理を終了する。基準タイムコード変数STvの値が−1でない場合(ステップS314でNo)には、出力されていない極大値検出情報が存在することとなる。そのため、極大値統合部163eは、極大値検出情報を制御部110に出力し(ステップS316)、当該動画像データに関する処理を終了する。
図9の処理によると、極大値統合部163eは、各ID別極大値検出部から出力された極大値に関する情報を統合し、複数の顔画像が含まれる動画像から適切な笑顔が含まれる画像フレームに関する情報を出力することができる。
図10は、図9のステップS303〜S305で実行されるID別極大値処理の内容を示すフローチャートである。この処理は、各IDにより識別される顔画像毎に実行される。極大値統合部163eは、対応するID番号(ここでは例えばID1)に対する極大値検出情報が入力されたか否かを判定する(ステップS401)。極大値検出情報が入力されていない場合(ステップS401でNo)には、そのまま図9の処理に戻る。極大値検出情報が入力されている場合(ステップS401でYes)には、入力された極大値検出情報に含まれる極大値に対応した極大値タイムコードをID別極大値タイムコード変数RTvにセットする(ステップS402)。
続いて極大値統合部163eは、ステップS402でセットされたID別極大値タイムコード変数RTvの値が極大値タイムコード変数MTvより大きいか否かを判別する(ステップS403)。ID別極大値タイムコード変数RTvの値の方が小さい場合(ステップS403でNo)には、そのまま図9の処理に戻る。ID別極大値タイムコード変数RTvの値の方が大きい場合(ステップS403でYes)には、極大値統合部163eは、極大値タイムコード変数MTvにID別極大値タイムコード変数RTvの値をセットする(ステップS404)。そして、極大値統合部163eは、基準タイムコード変数STvの値が初期値である−1のままであるか否かを判別する(ステップS405)。
基準タイムコード変数STvの値が初期値である−1でない場合(ステップS405でNo)には、そのまま図9の処理に戻る。基準タイムコード変数STvの値が初期値である−1のままである場合(ステップS405でYes)には、極大値統合部163eは、基準タイムコード変数STvに極大値タイムコード変数MTvの値をセットし(ステップS406)、図9の処理に戻る。
図10の処理をIDにより識別される顔画像毎に実行することにより、いずれかの顔領域で極大値が検出されると、その極大値が得られた最初の画像フレームのタイムコードが基準タイムコード変数STvにセットされる。この値は、図9における極大値検出情報の出力判断の基準となる。
以下、本実施の形態に係る動画像処理装置100Aの処理の具体例を図11〜図13に基づいて説明する。図11〜図13は、画像フレーム毎に表情評価部132から出力される表情評価値の変化を3つの顔画像領域のそれぞれについてのプロットしたグラフである。図中の折れ線は、実線がID1の顔画像の表情評価値、点線がID2の顔画像の表情評価値、二点鎖線がID3の顔画像の表情評価値の変化を示す。なお、図面中で星印を付した時点での画像フレームが選択される画像フレームである。
図11は、3つの顔領域に入る3人がそれぞれ異なるタイミングで笑顔になっている例における表情評価値の変化を示すグラフである。第1のID別極大値検出部163bは、図8の処理において、(a)の時点で極大値となる表情評価値を検出してその時点のタイムコードを極大値タイムコード変数MTvにセットする(ステップS210)。その後この極大値より大きな表情評価値を検出せずに(a’)の時点の画像フレームに対する処理を終了して一定の時間T0vが経過すると(ステップS212でYes)、(a)の時点のタイムコードを含む極大値検出情報を出力する(ステップS216)。極大値統合部163eは、図9の第1のID別極大値処理(ステップS303)で(a)の時点のタイムコードを極大値タイムコード変数MTvおよび基準タイムコード変数STvにセットする(ステップS404,406)。その後、他の顔領域の極大値検出情報が入力されずに(a’’)の時点の画像フレームに対する処理を終了して一定の時間2T0vが経過したとする(ステップS309でYes)。すると、極大値統合部163eは基準タイムコード変数STvにセットされているタイムコードを含む極大値検出情報を制御部110に出力する(ステップS311)。これにより、時点(a)のタイムコードに対応する画像フレームが処理対象として選択される。
同様に(b’’)および(c’’)の時点の画像フレームに対する処理が終了した際に、極大値統合部163eは、それぞれ(b)及び(c)の時点のタイムコードを含む極大値検出情報を制御部110に出力する。
以上の処理により、図11の例のように各顔領域が異なるタイミングで笑顔になっている場合には、各顔領域それぞれに対して好適な笑顔の画像フレームのタイムコードが制御部110に出力される。
図12は、複数の顔領域が近いタイミングで笑顔になっている例における表情評価値の変化を示すグラフである。第1のID別極大値検出部163bは、(a)の時点で極大値となる表情評価値を検出した後、(a’)の時点の画像フレームに対する処理を終了すると、(a)の時点のタイムコードを含む極大値検出情報を出力する(ステップS216)。極大値統合部163eは、第1のID別極大値処理(ステップS303)において、(a)の時点のタイムコードを極大値タイムコード変数MTvおよび基準タイムコード変数STvにセットする(ステップS404,406)。
第2のID別極大値検出部163cは、(b)の時点で極大値となる表情評価値を検出した後、(b’)の時点の画像フレームに対する処理を終了すると、(b)の時点のタイムコードを含む極大値検出情報を出力する(ステップS216)。極大値統合部163eは、図9の第2のID別極大値処理(ステップS304)で極大値タイムコード変数MTvに(b)の時点のタイムコードをセットする(ステップS404)。ただし、基準タイムコード変数STvには(a)の時点のタイムコードがセットされているため、STvの値はそのまま保持される。
第3のID別極大値検出部163dは、(c)の時点で極大値となる表情評価値を検出した後、(c’)の時点の画像フレームに対する処理を終了すると、(c)の時点のタイムコードを含む極大値検出情報を出力する(ステップS216)。極大値統合部163eは、図9の第3のID別極大値処理(ステップS305)で極大値タイムコード変数MTvに(c)の時点のタイムコードをセットする(ステップS404)。ただし、基準タイムコード変数STvには(a)の時点のタイムコードがセットされているため、STvの値はそのまま保持される。
その後、(a’’)の時点の画像フレームに対する処理を終了するまでに他の極大値検出情報が入力されない。そのため、(a’’)の時点の画像フレームに対する処理を終了したときに基準タイムコードからの経過時間が一定の時間2T0vより大きくなる(ステップS216でYes)。このため、極大値統合部163eは、極大値タイムコード変数MTvにセットされている(c)の時点のタイムコードを含む極大値検出情報を制御部110に出力する。
以上の処理により、図12の例のように各顔領域が近いタイミングで笑顔になっている場合には、全ての顔領域が笑顔となっている画像フレームのタイムコードが制御部101に出力される。
図13は、複数の顔領域が近いタイミングで笑顔になっているが、一つの顔領域の笑顔が途中で検出されなくなる例における表情評価値の変化を示すグラフである。第1のID別極大値検出部163bは、(a)の時点で極大値となる表情評価値を検出した後、(a’)の時点の画像フレームに対する処理を終了すると、(a)の時点のタイムコードを含む極大値検出情報を出力する(ステップS216)。極大値統合部163eは、第1のID別極大値処理(ステップS303)において、(a)の時点のタイムコードを極大値タイムコード変数MTvおよび基準タイムコード変数STvにセットする(ステップS404,406)。
第2のID別極大値検出部163cは、(b)の時点で極大値となる表情評価値を検出した後、(b’)の時点の画像フレームに対する処理を終了すると、表情評価値がしきい値を下回る。このため、第2のID別極大値検出部163cは、極大値統合部163eに打ち切り情報を出力し(ステップS215)、(b)の時点のタイムコードを含む極大値検出情報を出力する(ステップS216)。つまり、それまでしきい値を超えていたいずれかの顔の表情評価値が、しきい値を下回ったことを検出した時点で、他の顔の表情評価値に関わらずに、最後に得られた極大値検出情報を出力する。極大値統合部163eは、図9の第2のID別極大値処理(ステップS304)で極大値タイムコード変数MTvに(b)の時点のタイムコードをセットする(ステップS404)。また、極大値統合部163eは、(b)の時点のタイムコードを含む極大値検出情報を制御部110に出力し(ステップS311)、基準タイムコード変数STvを−1に初期化する(ステップS312)。
第1のID別極大値検出部163bは、(a’)の時点の画像フレームを処理した後に、極大値を記録した(a)の時点のタイムコードを含む極大値検出情報を出力する(ステップS216)。極大値統合部163eは、(a)の時点のタイムコードがセットされたID別極大値タイムコード変数RTvの値が、(b)の時点のタイムコードがセットされている極大値タイムコード変数MTvの値より小さいと判別する(ステップS403でNo)。したがって、極大値タイムコード変数MTvの値は更新されず、(a)の時点のタイムコードは制御部110には出力されない。
第3のID別極大値検出部163dは、(c)の時点で極大値となる表情評価値を検出した後、(c’)の時点の画像フレームに対する処理を終了すると、(c)の時点のタイムコードを含む極大値検出情報を出力する(ステップS216)。極大値統合部163eは、図9の第3のID別極大値処理(ステップS305)で極大値タイムコード変数MTvに(c)の時点のタイムコードをセットする(ステップS404)。また、基準タイムコード変数STvは、(b’)の時点で−1に初期化されているため、(c)の時点のタイムコードがセットされる(ステップS406)。
その後、(c’’)の時点の画像フレームに対する処理を終了するまでに他の極大値検出情報が入力されない。このため、(c’’)の時点の画像フレームに対する処理を終了したときに基準タイムコードからの経過時間が一定の時間2T0vより大きくなる(ステップS216でYes)。そこで、極大値統合部163eは、極大値タイムコード変数MTvにセットされている(c)の時点のタイムコードを含む極大値検出情報を制御部110に出力する。
以上の処理により、図13の例のように複数の顔領域が近いタイミングで笑顔になっているが、いずれかの顔領域の笑顔が途中で検出されなくなる場合には、次のようなタイムレコードが制御部110に出力される。すなわち、笑顔が非検出となる前の表情評価値が極大値である画像フレームのタイムコードが出力された後、他の顔領域が笑顔となっている画像フレームのタイムコードが制御部110に出力される。図13では、表情評価値がしきい値を下回る例を示したが、図13中の(b’)の時点の画像フレーム以降、ID2の顔領域自体が非検出となる場合も同様の処理となり、同様の効果が得られる。
次に、本発明の第3の実施の形態に係る動画像処理装置について説明する。本実施の形態は、その構成、作用が上述した第2の実施の形態と基本的に同じであるので、重複した構成、作用については説明を省略し、以下に異なる構成、作用について説明する。
第2の実施の形態の動画像処理装置は、記録媒体に記録された動画像ファイルから笑顔である画像フレームの笑顔検出ファイルを作成するものである。これに対して、本実施の形態の動画像処理装置は、撮像部により撮像される動画像により動画像ファイルを作成する時に、笑顔検出ファイルを作成するものである。
図14は、本発明の第3の実施の形態における動画像処理装置100Bの構成を概略的に示すブロック図である。装置全体の基本的な構成は図6と同一であるが、撮像部170を備える点、動画像復号部に代えて動画像符号化部180を有する点が異なる。他の構成は図6と同一であるため、同一符号を付して重複した説明は省略する。
撮像部170は、撮影レンズと、この撮影レンズにより形成される被写体像を検出するCMOSセンサ等の撮像素子から構成され、連続した画像フレームのデータとして動画像データを出力する。動画像データは、笑顔画像検出部160に入力されて笑顔が検出されると共に、動画像符号化部180に入力されて符号化され、記録媒体200に動画像ファイルとして記録される。
ユーザが操作部150を操作して撮影の開始を指示すると、制御部110は動画像符号化部180を制御して、撮像部170から入力される画像フレームを符号化し、記録媒体200に順次記録する。また、処理中の画像フレームに対するタイムコードが制御部110から極大値検出部163に入力される。
撮像部170から出力される画像フレームデータは、顔検出部161にも入力され、順次表情評価部162、極大値検出部163で処理される。極大値検出部163から極大値を検出したことを示す極大値検出情報が入力された場合、制御部110は第2の実施の形態と同様、極大値検出情報内のタイムコード情報を笑顔検出ファイルに記録する。
ユーザが操作部150を操作して撮影の終了を指示すると、制御部110は動画像ファイルの作成を終了するとともに、極大値検出部163に処理の終了を通知し、極大値検出部163からの最終検出結果を受信した後、笑顔検出ファイルの作成を終了する。
なお、本実施の形態では、動画像ファイルとは別の笑顔検出ファイルを作成する例について述べた。ただし、制御部110内に検出結果を保持するためのバッファを設け、動画像ファイル作成終了後に、同一動画像ファイルのヘッダー領域やフッター領域等に検出結果を記録することも可能である。この場合、制御部110は、動画像データを動画像ファイルとして記録媒体200に記録し、選択された画像フレームデータに関する情報を笑顔検出ファイルとして、動画像ファイルの付加データの形で記録媒体200に記録する記録制御部としての機能を果たす。
次に、本発明の第4の実施の形態に係る動画像処理装置について説明する。本実施の形態は、その構成、作用が上述した第3の実施の形態と基本的に同じであるので、重複した構成、作用については説明を省略し、以下に異なる構成、作用について説明する。
第3の実施の形態の動画像処理装置は、動画像データから笑顔である画像フレームのタイムコードから成る笑顔検出ファイルを作成するものであるが、本実施の形態の動画像処理装置は、笑顔である画像フレームを静止画像ファイルとして記録するものである。
図15は、本発明の第4の実施の形態における動画像処理装置100Cの構成を概略的に示すブロック図である。装置全体の基本的な構成は図14と同一であるが、動画像符号化部に代えてフレームバッファ191と静止画像符号化部192とを備える点が異なる。他の構成は図14と同一であるため、同一符号を付して重複した説明は省略する。
フレームバッファ191は、撮像部170から入力される画像フレームデータを一定時間分保持するFIFO(First In First Out)形のメモリである。フレームバッファ191は、図9のステップS309の判別に利用される一定の時間2T0vの期間の画像フレームを保持できる容量がある。
静止画像符号化部192は、フレームバッファ191に保持された画像フレームデータをJPEGなどの静止画像データとして符号化する機能を有する。符号化された静止画像データは、静止画像ファイルを記録するための記録媒体である。
制御部110は、フレームバッファ191に保存された画像フレームデータから選択部により選択された画像フレームデータを記録媒体200に記録する第2の記録制御部としての機能(第2の記録制御ステップ)を果たす。
ユーザが操作部150を操作して撮影の開始を指示すると、制御部110はフレームバッファ191を制御して、撮像部170から入力される画像フレームデータを格納していく。なお、格納して2T0v時間が経過した画像フレームデータは順番に破棄されていく。また、処理中の画像フレームに対するタイムコードが制御部110から極大値検出部163に入力される。
撮像部170から出力される画像フレームデータは、顔検出部161にも入力され、順次表情評価部162、極大値検出部163で処理される。極大値検出部163から極大値の検出を示す極大値検出情報が入力されると、制御部110はフレームバッファ191に格納した画像フレームデータから極大値検出情報が示すタイムコードに対応した画像フレームデータを静止画像符号化部192に入力する。そして、制御部110は、静止画像符号化処理が終了したデータを記録媒体200に静止画ファイルとして記録する。
ユーザが操作部150を操作して撮影の終了を指示すると、制御部110は、極大値検出部163に処理の終了を通知し、極大値検出部163からの最終検出結果を受信した後、処理を終了する。
なお、本実施の形態では、ユーザが撮影開始を指示してから撮影終了を指示するまでの期間内で、笑顔が得られた場合には複数の静止画ファイルを記録できる。ただし、ユーザが操作部150を操作して撮影の開始を指示した後、最初の静止画ファイルの記録が終了した時点で制御部が極大値検出部163に処理の終了を通知することにより、1回の操作で1枚の静止画ファイルのみ作成することも可能である。
また、本発明の目的は、以下の処理を実行することによって達成される。即ち、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)が記憶媒体に格納されたプログラムコードを読み出す処理である。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
また、プログラムコードを供給するための記憶媒体としては、次のものを用いることができる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光磁気ディスク、CD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、DVD+RW、磁気テープ、不揮発性のメモリカード、ROM等である。または、プログラムコードをネットワークを介してダウンロードしてもよい。
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
更に、前述した実施形態の機能が以下の処理によって実現される場合も本発明に含まれる。即ち、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う場合である。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現される場合も本発明に含まれる。加えて、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOSなどが実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現する場合も含まれる。
この場合、上記プログラムは、該プログラムを記憶した記憶媒体から直接、又はインターネット、商用ネットワーク、若しくはローカルエリアネットワーク等に接続された不図示の他のコンピュータやデータベース等からダウンロードすることにより供給される。