≪1.システム構成≫
以下、本発明の好適な実施形態について図面を参照して詳細に説明する。図1は、本実施形態における画像表示システム1の構成を説明する図、図2は、画像表示システム1を構成する画像処理装置2のハードウェア構成図、図3は、画像処理装置2に実装されたコンピュータプログラムで実現される機能ブロック図である。
図1で図示したように、画像表示システム1には、液晶ディスプレイ等の表示デバイスであるディスプレイ3が含まれる。このディスプレイ3には、撮影した画像だけでなく、表示領域を分けて広告を表示するようにしても良い。
この場合、ディスプレイ3を街頭や店舗などに設置することにより、画像表示システム1はデジタルサイネージとしても機能する。画像表示システム1をデジタルサイネージとして機能させる場合、ディスプレイ3で表示する広告映像を制御するサーバが必要となる。
ディスプレイ3には、ディスプレイ3で再生されている映像を見ている人物の顔が撮影されるようにアングルが設定され、ディスプレイ3で再生されている広告映像を閲覧している人物を撮影するビデオカメラ4が設置されている。
このビデオカメラ4で撮影された映像は、USBポートなどを利用して画像処理装置2に入力され、画像処理装置2は、ビデオカメラ4から送信された映像に含まれるフレームを解析し、ディスプレイ3の前にいる人物や,ディスプレイ3で再生されている映像を閲覧した人物の顔を検出し、閲覧者に関するログ(例えば、ディスプレイ3の閲覧時間)を記憶する。
図1で図示した画像表示システム1を構成する装置において、ディスプレイ3およびビデオカメラ4は市販の装置を利用できるが、画像処理装置2は、従来技術にはない特徴を備えているため、ここから、画像処理装置2について詳細に説明する。
画像処理装置2は汎用のコンピュータを利用して実現することができ、汎用のコンピュータと同様なハードウェアを備えている。図2の例では、画像処理装置2は、該ハードウェアとして、CPU2a(CPU: Central Processing Unit)と、BIOSが実装されるROM2b(ROM: Read-Only Memory)と、コンピュータのメインメモリであるRAM2c(RAM: Random Access Memory)と、外部記憶装置として大容量のデータ記憶装置2d(例えば,ハードディスク)と、外部デバイス(ビデオカメラ4)とデータ通信するための入出力インタフェース2eと、ネットワーク通信するためのネットワークインタフェース2fと、表示デバイス(ディスプレイ3)に情報を送出するための表示出力インタフェース2gと、文字入力デバイス2h(例えば、キーボード)と、ポインティングデバイス2i(例えば、マウス)を備えている。
画像処理装置2のデータ記憶装置2dには、CPU2aを動作させるためのコンピュータプログラムが実装され、このコンピュータプログラムによって、画像処理装置2には図3で図示した手段が備えられる。また、データ記憶装置2dは、画像表示システムに必要な様々なデータを格納することが可能となっており、映像上の1人以上の人物とコンテンツとの合成のタイミングを定めたシナリオデータを記憶したシナリオデータ記憶手段、合成に用いるコンテンツを記憶したコンテンツ記憶手段、人物の顔の特徴を表現した顔特徴データを記憶した顔特徴データベースとしての役割も果たしている。
ここで、コンテンツ記憶手段に格納されているコンテンツについて説明しておく。コンテンツは、撮影された映像のフレームと合成して合成画像を得る際の素材画像である。図12(a)にコンテンツの一例を示す。コンテンツとしては、特に限定されず、様々な形態のものを用いることができるが、図12(a)の例では、コンテンツとしてカツラを用意した場合を示している。このコンテンツは矩形情報(x,y方向の位置、幅、高さ)を有しており、この矩形情報を用いて、撮影されたフレームとの位置合わせが可能になっている。
図3で図示したように、画像処理装置2の入力は、ビデオカメラ4によって撮影された映像で、画像処理装置2の出力は、撮影された映像を加工した加工映像である。
画像処理装置2には、ビデオカメラ4によって撮影された映像のフレームを解析する手段として、ビデオカメラ4によって撮影された映像のフレームの背景画像を除去する背景除去手段20と、背景除去手段20によって背景が除去されたフレームから人物の顔を検出する顔検出手段21と、背景除去手段20によって背景画像が除去されたフレームから人体を検出する人体検出手段22と、顔検出手段21が検出した顔を前後のフレームで対応付けるトラッキング手段23と、パーティクルフィルタなどの動画解析手法を用い、指定された顔画像をフレームから検出する動画解析手段24と、顔検出手段21が新規に検出した顔画像毎に顔オブジェクトを生成し、トラッキング手段23から得られる一つ前と今回の顔検出枠データの対応付け結果を参照し、事前に定めた状態遷移表に従い顔オブジェクトの状態を遷移させ、顔オブジェクトの状態遷移に応じたログを記憶する状態遷移管理手段25と、顔検出手段21により検出され、状態遷移管理手段25により状態遷移された顔オブジェクトと、用意されたシナリオデータの対応付けを行うシナリオデータ対応付け手段83と、ビデオカメラ4によって撮影された映像の各フレームをシナリオデータに従って加工して、合成画像を作成する合成画像作成手段84と、顔検出手段21により検出された顔画像から顔の特徴を表現した顔特徴データを生成する顔特徴データ生成手段87を備える。更に、本実施形態では、ディスプレイ3を閲覧した人物の属性(年齢や性別)をログデータに含ませるために、顔検出手段21が検出した顔画像から人物の人物属性(年齢や性別)を推定する人物属性推定手段26、状態遷移管理手段25が記憶したログをファイル形式で出力するログファイル出力手段27、加工対象のターゲット(人または場所)をシナリオデータ中に定義する合成ターゲット定義手段80、加工に用いるコンテンツ(画像、音声、CG等)をシナリオデータ中に定義する合成コンテンツ定義手段81、加工内容をシナリオデータ中に定義するアニメーションシナリオ定義手段82を備えている。
シナリオデータは、別のシステムで事前に作成し、シナリオデータ記憶手段としてのデータ記憶装置2dに格納しておくことができるが、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82により、作成することもできる。合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82は、撮影により得られた映像の各フレームをどのように加工するかを示したシナリオデータを作成するために用いられるものである。シナリオデータの形式は特に限定されないが、本実施形態では、XML(eXtensible Markup Language)を採用している。シナリオデータとしてXMLを採用した本実施形態では、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82は、テキストエディタで実現することができる。したがって、テキストエディタを起動し、管理者が文字入力デバイスを用いて文字入力を行うことにより、シナリオデータが作成される。
図10は、ターゲットが1人の場合のXML形式のシナリオデータの一例を示す図である。ここからは、図10のシナリオデータを参照しながら、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82について詳細に説明する。合成ターゲット定義手段80は、ヒューマンID(humanID)、タイプ(Type)、サイクル間隔(CycleInterval)、自動ループ(IsAutoLoop)の4つの項目を設定することにより処理対象となるターゲットを定義する。図10の例では、1行目の<Simulation Targets>と、3行目の</Simulation Targets>の2つのタグで囲まれた範囲に対応する。
ヒューマンIDは、検出されたある人物を識別する識別情報であり、図10に示すように、1つしか設定されていない場合、1人に対してだけ処理が行われる。タイプについては、人間以外についても設定可能であるが、図10の例では、“human”を用いて人間についてのみ設定している。サイクル間隔(CycleInterval)は、シナリオの開始から終了までの時間を秒単位で設定するものであり、図10の例では、“10”が設定されているので、シナリオの開始から終了まで10秒であることを示している。自動ループ(IsAutoLoop)は、自動ループ処理(自動繰り返し処理)を行うかどうかを設定するものであり、図10の例では、“true”が設定されているので、自動ループ処理を行うことを示している。図10の例では、2行目のタグで、ヒューマンID、タイプ、サイクル間隔、自動ループの4項目を設定しており、ヒューマンIDは“0”、タイプは“human(人間)” 、サイクル間隔は“10(秒)”、自動ループは“true(設定する)”となっている。
合成コンテンツ定義手段81は、コンテンツID、コンテンツのパス、重なり設定の3つの項目を設定することによりコンテンツを定義する。図10の例では、4行目の<Simulation Contents>と、8行目の</Simulation Contents >の2つのタグで囲まれた範囲に対応する。図10の例では、コンテンツID(ContentsID)が“0”から“2”までの3つのコンテンツについて定義されている。図10に示すように、各コンテンツについて1行単位で、コンテンツのパス(ContentsPath)、重なり設定(OverlapOrder)が設定される。
アニメーションシナリオ定義手段82は、コマンドID(CommandID)、コマンドタイプ(CommandType)、属性確認フラグ(IsHumanIdentificationAttributeCheck)、属性ID(TargetHumanIdentificationAttributeID)、開始キー(StartKey)、終了キー(EndKey)、キータイプ(KeyType)、ターゲットID(TargetID)、コンテンツID(ContentsID)の9つの項目を設定することによりアニメーションシナリオを定義する。図10の例では、9行目の<Animation Commands>と、22行目の</Animation Commands>の2つのタグで囲まれた範囲に対応する。図10の例では、コマンドID(CommandID)が“0”から“2”までの3つのコマンドについて定義されている。図10に示すように、各コマンドについて4行単位で、コマンドタイプ、属性確認フラグ、属性ID、開始キー、終了キー、キータイプ、ターゲットID、コンテンツIDが設定される。
コマンドタイプとは、どのようなフレームを基にどのようなタイプの効果を生じさせるかを示すものであり、レイヤ合成、αブレンド合成、音声再生開始、シーン合成が用意されている。このうち、レイヤ合成、αブレンド合成、シーン合成は、画像合成のタイプを示すものであり、レイヤ合成は、コンテンツを上書き合成するものであり、αブレンド合成は、設定されたα比率に応じてコンテンツとフレームを透過させて合成するものであり、シーン合成は、人体部分を切り抜き、背景画像と合成するものである。図10の例では、コマンドタイプ(CommandType)として、レイヤ合成(LayerMontage)が設定されている。属性確認フラグは、属性確認を行うかどうかのフラグであり、図10の例では、“true”に設定されているので、属性確認を行うことになる。属性IDは、顔の特徴に応じた属性を示す属性識別情報である。属性確認フラグが“true”に設定されている場合、検出された人物の顔特徴データで顔特徴データベースを参照し、対応する属性IDが、アニメーションシナリオ中の属性IDと一致する場合に、コマンドの処理を行うことになる。
開始キー、終了キーは各コマンドの開始時点、終了時点を設定するものである。本実施形態では、シナリオデータの時間を、シナリオ開始時を“0.0”、シナリオ終了時を“1.0”として管理している。したがって、最初に開始するコマンドの開始キー(StartKey)は“0.0”、最後に終了するコマンドの終了キー(EndKey)は“1.0”となる。キータイプとは、開始キー、終了キーの基準とする対象を設定するものであり、own、base、globalの3つが用意されている。ownは各ターゲットIDに対応する顔オブジェクトの閲覧時間を基準とし、baseはターゲットID=0に対応する顔オブジェクトの閲覧時間を基準とし、globalは撮影映像の最初のフレームを取得した時間を基準とする。図10の例では、キータイプ(KeyType)として、ownが設定されているので、顔オブジェクトがフレームに登場した時点(顔オブジェクトが“閲覧開始”と判断された時点)を“0.0”として、開始キー、終了キーが認識されることになる。
図10の例では、2行目に示したようにサイクル間隔(CycleInterval)として“10”が設定されているので、シナリオの開始から終了まで10秒であることを示している。したがって、開始キー、終了キーの値を10倍した実時間でシナリオは管理されることになる。ターゲットID(TargetID)は、ヒューマンID(HumanID)に1対1で対応している。コンテンツID(ContentsID)は、検出された人物と合成するコンテンツを特定する識別情報である。このようにして、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82により作成されたシナリオデータは、シナリオデータ記憶手段としてのデータ記憶装置2dに格納される。
画像処理装置2が、ビデオカメラ4によって撮影された映像のフレームを時系列で解析することで、画像処理装置2のデータ記憶装置2dには、閲覧測定に利用可能なログファイルとして、ディスプレイの閲覧時間が記憶される閲覧時間ログファイルと、ディスプレイを閲覧した人物の位置が記憶される位置ログファイルと、ディスプレイを閲覧した人物の人物属性(例えば,年齢・性別)が記憶される人物属性ログファイルと、ディスプレイの前にいる人物の総人数、ディスプレイを閲覧していない人物の人数、ディスプレイを閲覧した人物の人数が記憶される人数ログファイルが記憶され、これらのログファイルを出力するログファイル出力手段27が画像処理装置2には備えられている。本発明では、ログファイルを作成することは必須ではないが、ログファイルを作成する過程における顔オブジェクト、閲覧開始時刻が、合成画像の作成に利用される。
≪2.顔特徴データベースの準備≫
まず、事前に顔特徴データベースの準備を行う。具体的には、顔画像から顔の特徴を表現した顔特徴データを生成し、顔タイプを識別する顔タイプ識別情報である顔タイプID、または個人を識別する個人識別情報である個人IDと対応付けて顔特徴データベースに登録する。顔特徴データを生成する処理は、顔特徴データ生成手段87により行われる。
顔画像は、顔写真をスキャナにより取り込んだり、ビデオカメラ4に映った画像を取り込んだりして、インタフェース2eを介してデータ記憶装置2dに格納したものを用いることができる。顔特徴データ生成手段87は、まず、顔画像を読み込み、読み込んだ顔画像から顔の特徴を表現した顔特徴データを生成する。
顔特徴データ作成の前段階として、顔の特徴量を求める。特徴量としては、公知の種々の形式のものを用いることができるが、本実施形態では、LBP(Local Binary Pattern)特徴量を用いる。LBP特徴量とは、画像の局所領域のパターンを比較して、バイナリパターンとして記述したものであり、計算コストが少なく、現場の照明変化などの変動に影響を受けにくいという利点がある。
LBP特徴量は、注目点の画素値と、その周辺の8近傍にある画素を比較し、重み付けをして算出することにより得られる。LBP特徴量を抽出する場合、顔画像を複数のブロックに分割し、ブロック内の画素についてLBPを算出する。そして、ブロックごとにLBPのヒストグラムを生成し、ブロック数分のヒストグラムを連結して特徴表現することにより、その顔画像についてのLBP特徴量が得られる。
特徴量が得られたら、次に、所定の機械学習手法により、複数人の特徴量を用いて各個人の顔特徴データを作成する。複数人の特徴量から顔特徴データを作成するための手法としては、公知の種々のものを用いることができるが、本実施形態では、SVM(Support Vector Machine)を用いる。
SVMとは、教師有り学習を用いる識別手法の一つであり、各データ点との距離が最大となる分離平面(超平面)を求める「マージン最大化」により高い汎化性能を持ち、高次元に擬似的に射影するカーネルトリックにより非線形の識別境界も学習可能なものである。
本実施形態では、SVMを実現する手段を顔特徴データ生成手段87の一部として組み込み(実際にはSVMの手順が記述されたプログラムをCPU2aが実行)、各グループまたは各個人について、そのLBP特徴量を、他の複数人の個人と識別するための識別境界情報を求める。この識別境界情報は、SVM学習時のパラメータ、サポートベクトル、線形式のパラメータとして表現することができる。
本実施形態では、識別境界情報を復元するためのSVM学習時のパラメータ、サポートベクトルおよび線形式のパラメータを顔特徴データとして顔特徴データベースに登録する。
本実施形態では、後述する2つの態様により合成処理が可能となっており、顔特徴データベースに登録されるデータにも2つの形式がある。図14は、顔特徴データベースに登録された情報の一例を示す図である。図14(a)は顔タイプ別に顔特徴データを登録したものであり、図14(b)は個人別に顔特徴データを登録したものである。
いずれの形式においても、図14(a)(b)に示すように、文字の連続で表現される顔特徴データが、属性ID(顔タイプIDまたは個人ID)に対応付けて記憶されることになる。図14(a)(b)の例では、便宜上、10文字程度の文字で表現しているが、実際には、例えば6400次元分の文字が並ぶ。
図14(a)に示すような顔タイプ別の顔特徴データを生成する場合には、顔タイプ別(丸顔、小顔、ニキビ顔など)にグループ分けして顔画像を入力されると、顔特徴データ生成手段87が、各顔画像からLBP特徴量を算出する。さらに、顔特徴データ生成手段87は、グループごとのLBP特徴量を利用して、SVMにより、各顔タイプ別の顔特徴データを生成する。顔特徴データ生成手段87は、生成された顔特徴データと別途入力された顔タイプIDを対応付けて顔特徴データベースに登録する。
図14(b)に示すような個人別の顔特徴データを生成する場合には、個人ごとに顔画像を入力されると、顔特徴データ生成手段87が、各顔画像からLBP特徴量を算出し、その顔画像を特定する個人IDと対応付けてデータ記憶装置2dに格納する。そして、ある程度の人数のLBP特徴量が蓄積された段階で、顔特徴データ生成手段87は、SVMにより、各個人のLBP特徴量と、他の個人のLBP特徴量を利用して、各個人別の顔特徴データを生成する。顔特徴データ生成手段87は、生成された顔特徴データと個人IDを対応付けて顔特徴データベースに登録する。なお、本実施形態では、画像処理装置2の顔特徴データ生成手段87が顔特徴データを作成したが、顔特徴データ生成手段87と同一の処理を記述したプログラムを別のコンピュータに実行させ、顔特徴データを生成し、顔特徴データベースを準備するようにしても良い。
≪3.処理動作≫
まず、ビデオカメラ4から送信された映像のフレームを画像処理装置2が解析する処理を説明しながら、ビデオカメラ4によって撮影された映像のフレームを解析、加工するために備えられた各手段について説明する。
図4は、ビデオカメラ4から送信された映像のフレームを画像処理装置2が解析する処理を説明するフロー図である。それぞれの処理の詳細は後述するが、画像処理装置2に映像の一つのフレームが入力されると、画像処理装置2は該フレームについて背景除去処理S1を行い、背景除去処理S1した後のフレームについて、顔検出処理S2および人体検出処理S3を行う。
画像処理装置2は、背景除去処理S1した後のフレームについて、顔検出処理S2および人体検出処理S3を行った後、顔検出処理S2の結果を利用して、今回の処理対象となるフレームであるNフレームから検出された顔と、一つ前のフレームであるN−1フレームから検出された顔を対応付けるトラッキング処理S4を行い、トラッキング処理S4の結果を踏まえて顔オブジェクトの状態を遷移させる状態遷移管理処理S5を実行する。
まず、背景除去処理S1について説明する。背景除去処理S1を担う手段は、画像処理装置2の背景除去手段20である。画像処理装置2が背景除去処理S1を実行するのは、図1に図示しているように、ディスプレイ3の上部に設けられたビデオカメラ4の位置・アングルは固定であるため、ビデオカメラ4が撮影した映像には変化しない背景が含まれることになり、この背景を除去することで、精度よく人体および顔を検出できるようにするためである。
画像処理装置2の背景除去手段20が実行する背景除去処理としては既存技術を利用でき、ビデオカメラ4が撮影する映像は、例えば、朝、昼、夜で光が変化する場合があるので、背景の時間的な変化を考慮した動的背景更新法を用いることが好適である。
背景の時間的な変化を考慮した動的背景更新法としては、例えば、「森田 真司, 山澤 一誠, 寺沢 征彦, 横矢 直和: "全方位画像センサを用いたネットワーク対応型遠隔監視システム", 電子情報通信学会論文誌(D-II), Vol. J88-D-II, No. 5, pp. 864-875, (2005.5)」に記載されている手法を用いることができる。
次に、画像処理装置2の顔検出手段21によって実行される顔検出処理S2について説明する。顔検出処理S2で実施する顔検出方法としては、特許文献1に記載されているような顔検出方法も含め、様々な顔検出方法が開示されているが、本実施形態では、弱い識別器として白黒のHaar-Like特徴を用いたAdaboostアルゴリズムによる顔検出法を採用している。なお、弱い識別器として白黒のHaar-Like特徴を用いたAdaboostアルゴリズムによる顔検出法については、「Paul Viola and Michael J. Jones, "Rapid Object Detection using a Boosted Cascade of Simple Features", IEEE CVPR, 2001.」、「Rainer Lienhart and Jochen Maydt, "An Extended Set of Haar-like Features for Rapid Object Detection", IEEE ICIP 2002, Vol. 1, pp. 900-903, Sep. 2002.」で述べられている。
弱い識別器として白黒のHaar-Like特徴を用いたAdaboostアルゴリズムによる顔検出法を実行することで、フレームに含まれる顔画像毎に顔検出枠データが得られ、この顔検出枠データには、顔画像を検出したときに利用した顔検出枠の位置(例えば、左上隅の座標)および矩形サイズ(幅および高さ)が含まれる。
次に、画像処理装置2の人体検出手段22によって実行される人体検出処理S3について説明する。人体を検出する手法としては赤外線センサを用い、人物の体温を利用して人体を検出する手法が良く知られているが、本実施形態では、顔検出処理S2で実施する人体検出方法として、弱い識別器としてHOG(Histogram of Oriented Gradients)特徴を用いたAdaboostアルゴリズムによる人体検出法を採用している。なお、弱い識別器としてHOG(Histogram of Oriented Gradients)特徴を用いたAdaboostアルゴリズムによる人体検出法については、「N. Dalal and B. Triggs,"Histograms of Oriented Gradientstional Conference on Computer Vision,pp. 734-741,2003.」で述べられている。
弱い識別器としてHOG特徴を用いたAdaboostアルゴリズムによる人体検出法を実行することで、フレームに含まれる人体毎に人体検出枠データが得られ、この人体検出枠データには、人体画像を検出したときに利用した人体検出枠の位置(例えば、左上隅の座標)および矩形サイズ(幅および高さ)が得られる。
図8は、人体および顔検出結果を説明するための図である。図8のフレーム7で撮影されている人物は、人物7a〜7fの合計6人が含まれ,画像処理装置2の人体検出手段22はそれぞれの人物7a〜7fを検出し、それぞれの人物7a〜7fに対応する人体検出枠データ70a〜70fを出力する。また、画像処理装置2の顔検出手段21は、両眼が撮影されている人物7a〜7cの顔を検出し、それぞれの顔に対応する顔検出枠データ71a〜71cを出力する。
次に、画像処理装置2のトラッキング手段23によって実行されるトラッキング処理S4について説明する。トラッキング処理S4では、画像処理装置2のトラッキング手段23によって、顔検出手段21がN−1フレームから検出した顔検出枠データと、顔検出手段21がNフレームから検出した顔検出枠データを対応付ける処理が実行される。
ここから,画像処理装置2のトラッキング手段23によって実行されるトラッキング処理S4について詳細に説明する。図5は、画像処理装置2のトラッキング手段23によって実行されるトラッキング処理S4を説明するためのフロー図である。
画像処理装置2のトラッキング手段23は、Nフレームをトラッキング処理S4するために、まず、Nフレームから得られた顔検出枠データおよび人体検出枠データをそれぞれ顔検出手段21および人体検出手段22から取得する(S10)。
なお、次回のトラッキング処理S4において、Nフレームから得られた顔検出枠データは、N−1フレームの顔検出枠データとして利用されるため、画像処理装置2のトラッキング手段23は、Nフレームから得られた顔検出枠データをRAM2cまたはデータ記憶装置2dに記憶する。
画像処理装置2のトラッキング手段23は、Nフレームの顔検出枠データおよび人体検出枠データを取得すると、Nフレームの人体検出枠データ毎に、ディスプレイの閲覧判定を行う(S11)。
上述しているように、人体検出枠データには人体検出枠の位置および矩形サイズが含まれ、顔検出枠データには顔検出枠の位置および矩形サイズが含まれるため、顔検出枠が含まれる人体検出枠データは、ディスプレイ3を閲覧している人物の人体検出枠データと判定でき、また、顔検出枠が含まれない人体検出枠データは、ディスプレイ3を閲覧していない人物の人体検出枠データと判定できる。
画像処理装置2のトラッキング手段23は、このようにして、Nフレームの人体検出枠データ毎にディスプレイの閲覧判定を行うと、Nフレームが撮影されたときの人数ログファイルとして、ディスプレイ3の前にいる人物の総人数、すなわち、人体検出手段22によって検出された人体検出枠データの数と、ディスプレイ3を閲覧していない人物の人数、すなわち、顔検出枠が含まれていない人体検出枠データの数と、ディスプレイ3を閲覧している人物の人数、すなわち、顔検出枠が含まれる人体検出枠データの数を記載した人数ログファイルを生成し、Nフレームのフレーム番号などを付与してデータ記憶装置2dに記憶する。
画像処理装置2のトラッキング手段23は、Nフレームの人体検出枠データ毎に、ディスプレイの閲覧判定を行うと、顔検出手段21がN−1フレームから検出した顔検出枠データと、顔検出手段21がNフレームから検出した顔検出枠データを対応付ける顔検出枠データ対応付け処理S12を実行する。
図6は、顔検出枠データ対応付け処理S12を説明するためのフロー図で、本実施形態では、図6で図示したフローにおいて、以下に記述する[数1]の評価関数を用いて得られる評価値を利用して、顔検出枠データの対応付けがなされる。
なお、[数1]の評価関数f1()は、ニアレストネイバー法を用いた評価関数で、評価関数f1()で得られる評価値は、顔検出枠データの位置および矩形サイズの差を示した評価値になる。また、[数1]の評価関数f2()で得られる評価値は、評価関数f1()から求められる評価値に、顔検出枠データで特定される顔検出枠に含まれる顔画像から得られ、顔画像の特徴を示すSURF特徴量の差が重み付けして加算された評価値になる。
N−1フレームから検出した顔検出枠データとNフレームから検出した顔検出枠データを対応付けるために、画像処理装置2のトラッキング手段23は、まず、Nフレームから得られた顔検出枠データの数だけループ処理L1を実行する。
このループ処理L1において、画像処理装置2のトラッキング手段23は、まず、N−1フレームから検出された顔検出枠データの数だけループ処理L2を実行し、このループ処理L2では、ループ処理L1の処理対象となる顔検出枠データの位置および矩形サイズと、ループ処理L2の処理対象となる顔検出枠データの位置および矩形サイズを、[数1]の評価関数f1()に代入して評価値を算出し(S120)、ループ処理L1の対象となる顔検出枠データとの位置および矩形サイズの差を示す評価値が、N−1フレームから検出された顔検出枠データ毎に算出される。
画像処理装置2のトラッキング手段23は、ループ処理L1の処理対象となる顔検出枠データとの位置および矩形サイズの差を示す評価値を、N−1フレームから検出された顔検出枠データ毎に算出すると、該評価値の最小値を検索し(S121)、該評価値の最小値と他の評価値との差分を算出した後(S122)、閾値以下の該差分値があるか判定する(S123)。
そして、画像処理装置2のトラッキング手段23は、ループ処理L1の処理対象となる顔検出枠データとの位置・矩形サイズの差を示す評価値の最小値と他の評価値との差分の中に、閾値以下の差分がある場合,画像処理装置2のトラッキング手段23は、評価値が閾値以内である顔検出枠データ数だけループ処理L3を実行する。
このループ処理L3では、ループ処理L1の処理対象となる顔検出枠データで特定される顔検出枠内の顔画像と、ループ処理L3の処理対象となるN−1フレームの顔検出枠データで特定される顔検出枠内の顔画像とのSURF特徴量の差が求められ、SURF特徴量の差が[数1]の評価関数f2()に代入され、SURF特徴量の差を加算した評価値が、N−1フレームから検出された顔検出枠データ毎に算出される(S124)。
[数1]で示した評価関数f2()を用い、SURF特徴量の差を加算した評価値を算出するのは、ニアレストネイバー法のみを利用した評価関数f1()を用いて求められた評価値の最小値と他の評価値との差分値に閾値以下がある場合、サイズの似た顔検出枠が近接していると考えられ(例えば,図8の人物7a,b),ニアレストネイバー法の評価値からでは、Nフレームの顔検出枠データに対応付けるN−1フレームの顔検出枠データが判定できないからである。
[数1]で示した評価関数f2()を用い、SURF特徴量の差を加算した評価値を算出することで、顔の特徴が加味された評価値が算出されるので、該評価値を用いることで、サイズの似た顔検出枠が近接している場合は、顔が似ているN−1フレームの顔検出枠データがNフレームの顔検出枠データに対応付けられることになる。
そして、画像処理装置2のトラッキング手段23は、[数1]の評価関数から得られた評価値が最小値であるN−1フレームの顔検出枠データを、ループ処理L1の対象となるNフレームの顔検出枠データに対応付ける処理を実行する(S125)。なお、[数1]で示した評価関数f2()を用いた評価値を算出していない場合、この処理で利用される評価値は、[数1]で示した評価関数f1()から求められた値になり、[数1]で示した評価関数f2()を用いた評価値を算出している場合、この処理で利用される評価値は、[数1]で示した評価関数f2()から求められた値になる。
ループ処理L1が終了し、画像処理装置2のトラッキング手段23は、Nフレームの顔検出枠データとN−1フレームの顔検出枠データを対応付けすると、N−1フレームの顔検出枠データが重複して、Nフレームの顔検出枠データに対応付けられていないか確認する(S126)。
N−1フレームの顔検出枠データが重複して、Nフレームの顔検出枠データに対応付けられている場合、画像処理装置2のトラッキング手段23は、重複して対応付けられているN−1フレームの顔検出枠データの評価値を参照し、評価値が小さい方を該Nフレームの顔検出枠データに対応付ける処理を再帰的に実行することで、最終的に、Nフレームの顔検出枠データに対応付けるN−1フレームの顔検出枠データを決定する(S127)。
ここから、図4で図示したフローの説明に戻る。トラッキング処理S4が終了すると、画像処理装置2の状態遷移管理手段25によって、トラッキング処理S4から得られ、一つ前と今回の顔検出枠データの対応付け結果を参照し、事前に定めた状態遷移表に従い顔オブジェクトの状態を遷移させ、顔オブジェクトの状態遷移に応じたログを記憶する状態遷移管理処理S5が実行され、この状態遷移管理処理S5で所定の状態遷移があると、該状態遷移に対応した所定のログファイルがデータ記憶装置2dに記憶される。
画像処理装置2の状態遷移管理手段25には、顔オブジェクトの状態遷移を管理するために、予め、顔オブジェクトの状態と該状態を状態遷移させるルールが定義された状態遷移表が定められており、画像処理装置2のトラッキング手段23は、この状態遷移表を参照し、顔検出枠データ対応付け処理S12の結果に基づき顔オブジェクトの状態を遷移させる。
ここから、状態遷移表の一例を例示し、該状態遷移表の説明をしながら、画像処理装置2の状態遷移管理手段25によって実行される状態遷移管理処理S5について説明する。
図7は、本実施形態における状態遷移表6を説明する図である。図7で図示した状態遷移表6によって、顔オブジェクトの状態と、N−1フレームの状態からNフレームの状態への遷移が定義され、状態遷移表6の縦軸はN−1フレームの状態で、横軸はNフレームの状態で,縦軸と横軸が交差する箇所に状態遷移する条件が記述されている。なお、状態遷移表に「―」は不正な状態遷移を示している。
図7で図示した状態遷移表6には、顔オブジェクトの状態として、None、候補Face、現在Face、待機Face、ノイズFaceおよび終了Faceが定義されている。状態遷移表で定義された状態遷移を説明しながら、それぞれの状態について説明する。
顔オブジェクトの状態の一つであるNoneとは、顔オブジェクトが存在しない状態を意味している。Nフレームの顔検出枠データに対応付けるN−1フレームの顔検出枠データが無い場合(図7の条件1)、画像処理装置2の状態遷移管理手段25は、顔オブジェクトを識別するためのID、該Nフレームの顔検出枠データ、顔オブジェクトに付与された状態に係わるデータなどを属性値と有する顔オブジェクトを新規に生成し、該顔オブジェクトの状態を候補Faceに設定する。
顔オブジェクトの状態の一つである候補Faceとは、新規に検出した顔画像がノイズである可能性がある状態を意味し、顔オブジェクトの状態の一つに候補Faceを設けているのは、複雑な背景の場合、背景除去処理を行っても顔画像の誤検出が発生し易く、新規に検出できた顔画像がノイズの可能性があるからである。
候補Faceの状態である顔オブジェクトには、候補Faceの状態に係わるデータとして、候補Faceの状態であることを示す状態IDと、候補Faceへ状態遷移したときの日時およびカウンタが付与される。
候補Faceから状態遷移可能な状態は、候補Face、現在FaceおよびノイズFaceで、事前に定められた設定時間内において、候補Faceの状態である顔オブジェクトに対応する顔検出枠が所定の数だけ連続してトラッキングできた場合(図7の条件2−2)、該顔オブジェクトの状態は候補Faceから現在Faceに遷移する。
候補Faceの状態である顔オブジェクトの属性にカウンタを設けているのは、設定時間内において、候補Faceの状態である顔オブジェクトに対応する顔検出枠を連続してトラッキングできた回数をカウントするためで、画像処理装置2の状態遷移管理手段25は、Nフレームの顔検出枠データに対応付けられたN−1フレームの顔検出枠データが含まれている顔オブジェクトの状態が候補Faceの場合、該顔オブジェクトに付与されている顔検出枠データをNフレームの顔検出枠データに更新すると共に、該顔オブジェクトのカウンタをインクリメントする。
そして、画像処理装置2の状態遷移管理手段25は、状態遷移管理処理S5を実行する際、候補Faceである顔オブジェクト毎に、候補Faceへ状態遷移したときの日時を参照し、設定時間以内に該カウンタの値が事前に定めた設定値に達している場合は、顔オブジェクトの状態を現在Faceに状態遷移させる。また、画像処理装置2の状態遷移管理手段25は、この時点で設定時間が経過しているが、該カウンタが設定値に達しなかった該顔オブジェクトの状態をノイズFaceに状態遷移させ(図7の条件2−3)、該設定時間が経過していない該顔オブジェクトについては状態を状態遷移させない(図7の条件2−1)。
顔オブジェクトの状態の一つであるノイズFaceとは、画像処理装置2の顔検出手段21が検出した顔画像がノイズと判定された状態で、ノイズFaceに状態遷移した顔オブジェクトは消滅したと見なされ、これ以降の状態遷移管理処理S5に利用されない。
顔オブジェクトの状態の一つである現在Faceとは、顔オブジェクトに対応する人物がディスプレイ3を閲覧状態と判定できる状態で、現在Faceの状態にある時間が、顔オブジェクトに対応する人物がディスプレイ3を閲覧している時間となる。
画像処理装置2の状態遷移管理手段25は、顔オブジェクトの状態を候補Faceから現在Faceに状態遷移すると、該顔オブジェクトの顔検出枠データをNフレームの顔検出枠データに更新すると共に、現在Faceに係わるデータとして、現在Faceの状態であることを示す状態IDと現在Faceに状態遷移させたときの日時を顔オブジェクトに付与する。
また、ディスプレイを閲覧している人物の人物属性(例えば、年齢・性別)をログとして記憶するために、顔オブジェクトの状態を現在Faceに状態遷移すると、画像処理装置2の状態遷移管理手段25は人物属性推定手段26を作動させ、現在Faceに状態遷移させた顔オブジェクトの顔検出枠データで特定される顔検出枠から得られる人物属性を取得し、該顔オブジェクトのオブジェクトID、人物属性が記述された属性ログファイルをデータ記憶装置2dに記憶する。
なお、画像処理装置2に備えられた人物属性推定手段26については詳細な記載はしないが、人物の顔画像から人物の人物属性(年齢・性別)を自動で識別することは、タバコの自動販売機などでも広く利用されており、例えば、特開2007―080057号公報の技術を利用できる。
更に、画像処理装置2の状態遷移管理手段25は、顔オブジェクトの状態を現在Faceに状態遷移すると、ディスプレイ3を閲覧している人物の位置を時系列で記憶するための位置ログファイルをデータ記憶装置2dに新規に生成する。生成時の位置ログファイルには、現在Faceに状態遷移した顔オブジェクトのオブジェクトIDと、現在Faceに状態遷移した顔オブジェクトに含まれる顔検出枠データが付与される。
現在Faceの状態から状態遷移可能な状態は、現在Faceおよび待機Faceである。画像処理装置2の状態遷移管理手段25は、Nフレームの顔検出枠データに対応付けられたN−1フレームの顔検出枠データを含む顔オブジェクトの状態が現在Faceの場合(条件3−1)、該顔オブジェクトに付与されている顔検出枠データをNフレームにおける顔検出枠データに更新すると共に、該顔検出枠データを、該顔オブジェクトのオブジェクトIDで特定される位置ログファイルに追加する。
また、画像処理装置2の状態遷移管理手段25は、状態遷移管理処理S5を行う際、Nフレームの顔検出枠データが対応付けられなかったN−1フレームの顔検出枠データが付与されている顔オブジェクトの状態が現在Faceの場合、動画解析手段24を作動させて、動画解析手法により、該N−1フレームの顔検出枠データに対応する顔画像をNフレームから検出する処理を実施する。
本実施形態において、画像処理装置2の動画解析手段24は、まず、Nフレームの顔検出枠データが対応付けられなかったN−1フレームの顔検出枠データと既に対応付けられているNフレームの顔検出枠データの間で、オクルージョン状態の判定を行い、対象となる人物の顔が完全に隠れた状態のオクルージョンであるか確認する。
画像処理装置2の動画解析手段24は、この時点で存在し、現在Face、候補Faceおよび待機Faceの状態である全ての顔オブジェクトについて、[数2]に従い,顔オブジェクトのオクルージョン状態を判定する処理を実行する。
画像処理装置2の動画解析手段24は、[数2]に従い、顔オブジェクトのオクルージョン状態を判定する処理を実行すると、判定結果に基づき処理を分岐する。
トラッキング対象である人物が完全に隠れた状態のオクルージョンである可能性が高いと判断できた場合([数2]の判定基準1に該当する場合)、パーティクルフィルタによるトラッキングを行い、対象となる顔オブジェクトの位置および矩形サイズを検出する。なお、パーティクルフィルタについては,「加藤丈和: 「パーティクルフィルタとその実装法」、情報処理学会研究報告, CVIM-157, pp.161-168 (2007).」など数多くの文献で述べられている。
また、トラッキング対象である人物が半分隠れた状態のオクルージョンの可能性が高いと判断できた場合([数2]の判定基準2に該当する場合)、LK法(Lucus-Kanadeアルゴリズム)によるトラッキング行い、対象となる顔オブジェクトの位置および矩形サイズを検出する。なお、LK法については、「Lucas, B.D. and Kanade, T.:" An Iterative Image Registration Technique with an Application to Stereo Vision",Proc.DARPA Image Understanding Workshop,pp.121-130,1981.」で述べられている。
そして、トラッキング対象である人物にオクルージョンはない可能性が高いと判定できた場合(数式3の判定基準3に該当する場合)、画像処理装置2の動画解析手段24は、CamShift手法を用いたトラッキングを行い、対象となる顔オブジェクトの位置および矩形サイズを検出する。なお、CamShift手法については、「G. R. Bradski: "Computer vision face tracking foruse in a perceptual user interface," Intel Technology Journal, Q2, 1998.」で述べられている。
画像処理装置2の状態遷移管理手段25は、これらのいずれかの手法で対象となる顔画像がNフレームから検出できた場合、現在Faceの状態である顔オブジェクトの顔検出枠データを、これらの手法で検出された位置・矩形サイズに更新し、これらのいずれかの手法でも対象となる顔画像がトラッキングできなかった場合、現在Faceの状態である顔オブジェクトの状態を待機Faceに状態遷移させる(図7の条件3−2)。
顔オブジェクトの状態の一つである待機Faceとは、画像処理装置2に備えられた動画解析手段24を用いても、顔オブジェクトに対応する顔画像を検出できなくなった状態である。
また、画像処理装置2の状態遷移管理手段25は、顔オブジェクトの状態を待機Faceに状態遷移する際、顔オブジェクトの顔検出枠データは更新せず、待機Faceに係わるデータとして、待機Faceの状態であることを示す状態IDと、該顔オブジェクトが現在Faceに状態遷移したときの日時と、該顔オブジェクトが待機Faceに状態遷移したときの日時を顔オブジェクトに付与する。
待機Faceから状態遷移可能な状態は、現在Faceまたは終了Faceである。画像処理装置2の状態遷移管理手段25は、待機Faceに状態遷移してからの時間が所定時間経過する前に、Nフレームの顔検出枠データを含む顔オブジェクトを検索し、該顔オブジェクトの状態が待機Faceであった場合、該顔オブジェクトの状態を待機Faceから現在Faceに状態遷移させる(図7の条件4−1)。
なお、顔オブジェクトの状態を待機Faceから現在Faceに状態遷移させる際、画像処理装置2の状態遷移管理手段25は、該顔オブジェクトが現在Faceに状態遷移したときの日時は、待機Faceの状態のときに顔オブジェクトに付与されていた該日時を利用する。
また、画像処理装置2のトラッキング手段23は、顔オブジェクトの状態遷移を管理する処理を実行する際、待機Faceに状態遷移してからの時間が所定時間経過した顔オブジェクトの状態を終了Faceに状態遷移させ(図7の条件4−3)、該設定時間が経過していない該顔オブジェクトについては状態を遷移させない(図7の条件4−2)。
顔オブジェクトの状態の一つである終了Faceとは、画像処理装置2が検出できなくなった人物に対応する状態で、状態が終了Faceになった顔オブジェクトは消滅したと見なされ、これ以降の状態遷移管理処理S5で利用されない。
なお、画像処理装置2の状態遷移管理手段25は、顔オブジェクトの状態を終了Faceに状態遷移する前に、該顔オブジェクトのオブジェクトID、該顔オブジェクトが現在Faceに状態遷移したときの日時である閲覧開始時刻、該顔オブジェクトが待機Faceに状態遷移したときの日時である閲覧終了時刻を記述した閲覧時間ログファイルを生成しデータ記憶装置2dに記憶させる。
以上詳しく説明したように、画像処理装置2は、顔検出手段21が検出した顔毎に生成する顔オブジェクトの状態として、None、候補Face、現在Face、待機Face、ノイズFaceおよび終了Faceの5つを状態遷移表6で定義し,顔オブジェクトに対応する顔のトラッキング結果に従い、顔オブジェクトの状態を遷移させることで、顔オブジェクトの状態遷移に従い、ディスプレイ3の閲覧時間をログとして記憶することが可能になる。
上述した内容に従えば、顔オブジェクトの状態が現在Faceである間は、顔オブジェクトに対応する顔を連続して検出できたことになるため、現在Faceの状態にあった時間は、ディスプレイ3の閲覧時間になる。
また、顔オブジェクトの状態として候補Faceを定義しておくことで、ノイズによって顔を誤検出した場合でも、ディスプレイ3の閲覧時間への影響はなくなる。また、顔オブジェクトの状態として待機Faceを定義しておくことで、顔を見失った後に、同じ顔を検出した場合でも、同じ顔として取り扱うことができるようになる。
≪4.シナリオデータを用いた合成処理≫
≪4.1.ターゲットが1人の場合≫
図9は、ビデオカメラ4から送信された映像のフレームを基に、画像処理装置2が合成画像を作成する処理を説明するフロー図である。画像処理装置2を起動し、使用するシナリオデータを指定すると、まず、シナリオデータ対応付け手段83が、指定されたシナリオデータをデータ記憶装置2dから読み込む(S21)。そして、シナリオデータ対応付け手段83は、シナリオデータを解釈し、シナリオデータに従った画像の作成を開始する(S22)。
次に、シナリオデータ対応付け手段83は、状態遷移管理手段25により生成された顔オブジェクトデータを取得する(S23)。顔オブジェクトデータは、オブジェクトID、顔検出枠データ(位置および矩形サイズ)、閲覧時間で構成される。
続いて、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した顔オブジェクトデータをシナリオデータに対応付ける処理を行う(S24)。具体的には、顔オブジェクトデータに含まれる顔検出枠データのオブジェクトIDとシナリオデータ中のヒューマンIDを対応付ける。状態遷移管理手段25から複数の顔検出枠データを取得した場合は、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。図10の例では、シナリオデータには、ヒューマンID“0”の1つだけ設定されているので、シナリオデータ対応付け手段83は、ヒューマンID“0”が対応付けられたオブジェクトIDで特定される顔検出枠データをターゲットとすることになる。
次に、合成画像作成手段84が、フレーム単位で表示用の合成画像を作成する処理を行う(S25)。具体的には、まず、開始時点を経過時刻“0.0”と設定し、この経過時刻“0.0”で、シナリオデータの<Animation Commands>を参照する。そして、経過時刻が開始キー以上、終了キー以下となるコマンドに対して、実行するか否かの判断を行う。
各コマンドは、属性確認フラグ(IsHumanIdentificationAttributeCheck)が“true”となったときに実行されるようになっている。図10の例では、属性確認フラグの値に応じて、Command ID="0"〜"2"のいずれか一つのコマンドが実行される。合成画像作成手段84は、顔オブジェクトデータが得られたら、顔オブジェクトデータに含まれる顔画像を顔特徴データ生成手段87に渡し、顔特徴データ生成手段87は、渡された顔画像の顔特徴データを生成する。具体的には、上述の顔特徴データベースの準備の際と同様に、LBP特徴量を算出した後、SVMを用いて、SVM学習時のパラメータ、サポートベクトルおよび線形式のパラメータで構成される識別境界情報を顔特徴データとして生成する。そして、各コマンドの属性IDで顔特徴データを参照して対応する顔特徴データを取得し、各コマンドに対応する顔特徴データと生成された顔特徴データを比較する。ここでの比較とは、差分演算を行い、その差分を得ることを意味する。比較の結果、差分が最小となるコマンドについて、その属性確認フラグに“true”を返す。
合成画像作成手段84は、属性確認フラグが“true”となったコマンドを実行する。例えば、コマンドID“0”の属性確認フラグが“true”となった場合、コマンドID“0”のコマンドを実行する。図10の例では、開始キー“0.0”から終了キー“1.0”まで、キータイプ“own”、コマンドタイプ“LayerMontage(レイヤ合成)”、ターゲットID“0”、コンテンツID“0”であるので、合成画像作成手段84は、ターゲットID “0” に対応するヒューマンID“0”に対応付けられた顔検出枠データに、コンテンツID“0”をレイヤ合成することにより、合成画像を作成することになる。
コンテンツID“0”のコンテンツ(合成用素材)は、シナリオデータの<Simulation Contents>を参照することにより、コンテンツのパスが特定できるので、そのパスで特定されるデータ記憶装置2d内の記憶位置からコンテンツを取得する。上述のように、コンテンツには矩形情報が設定されているので、合成画像作成手段84は、この矩形情報と顔検出枠データの矩形サイズが一致するように矩形情報とコンテンツのサイズを変更し、変更したコンテンツを、変更後の矩形情報と顔検出枠データの位置が一致する位置にレイヤ合成を行う。具体的には、図12(b)に示すような顔画像に設定された顔検出枠データの矩形に合わせて、コンテンツに設定された矩形の大きさを変更し、コンテンツに設定された矩形の変更割合に合わせてコンテンツをリサイズし、2つの矩形が一致するように合成処理を行う。この結果、例えば、図12(a)のようにコンテンツがカツラである場合、人の顔に合わせてカツラを被せたような状態の合成画像(図12(c))が得られることになる。合成画像作成手段84は、得られた合成画像を、ディスプレイ3に表示させる。この結果、ディスプレイ3には、撮影映像のフレームに加工が施された合成画像が表示されることになる。
1つのフレームについて合成画像の作成を終えたら、シナリオデータ対応付け手段83は、シナリオ実行中であるかどうかを判断する(S26)。具体的には、シナリオデータに従った画像作成開始からの経過時間でシナリオデータ内のサイクル間隔(CycleInterval)を参照し、経過時間がサイクル間隔未満である場合は、シナリオ実行中であると判断し、経過時間がサイクル間隔以上である場合は、シナリオ終了であると判断する。シナリオ実行中であると判断した場合には、シナリオデータ対応付け手段83は、S23に戻って、顔オブジェクトデータを取得する。
そして、S24において、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した次の顔オブジェクトデータをシナリオデータに対応付ける処理を行う。このときも1回目のループと同様、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。そして、シナリオデータに従って、シナリオデータ対応付け手段83は、ヒューマンID“0”が対応付けられたオブジェクトIDで特定される顔検出枠データを処理対象とする。
次に、S25において、合成画像作成手段84が、フレーム単位で合成画像を作成する処理を行う。具体的には、経過時間を取得し、取得した経過時間で、シナリオデータの<Animation Commands>を参照する。図10の例では、いずれのコマンドもシナリオの開始(0.1)から終了(1.0)まで設定されているので、シナリオ実行中、同一の処理を継続して行うことになる。図10の例では、キータイプ“own”、コマンドタイプ“LayerMontage(レイヤ合成)”、ターゲットID“0”、コンテンツID“0”であるので、合成画像作成手段84は、ヒューマンID“0”の顔検出枠データに、コンテンツID“0”をレイヤ合成することにより、合成画像を作成する。このようにして、S26においてシナリオ終了であると判断されるまでは、経過時間に従い、シナリオデータを実行する処理を繰り返し行う。
S26において、シナリオ終了であると判断した場合には、シナリオデータ対応付け手段83は、ループ処理を行うかどうかを判断する(S27)。具体的には、シナリオデータ内の<IsAutoLoop>タグを参照し、“true”が設定されている場合は、ループ処理(繰り返し処理)を行うと判断する。ループ処理を行うと判断した場合には、シナリオデータ対応付け手段83は、経過時間を“0”にリセットし、経過時間の計測を再び開始するとともに、S22に戻って、シナリオデータに従った画像の作成を開始する。このように、映像の各フレームから得られた合成画像を順次ディスプレイに表示することにより、加工映像として表示されることになる。
図13は、図10のシナリオデータに従って得られた合成画像の表示状態を示す図である。図13(a)は、合成前の表示状態、図13(b)はシナリオ実行中の表示状態である。図13(a)のように人物が撮影された後、顔オブジェクトデータが取得されると、経過時間0秒からシナリオデータが実行され、図13(b)に示すようにフレームに丸顔向けの黒いカツラ(ContentsID="0")が合成された合成画像が表示される。この際、ContentsID="0"で<SimulationContents>を参照することにより、コンテンツのコンテンツ記憶手段内における所在“EffectForCircleFace.jpg”を特定し、丸顔向けの黒いカツラのコンテンツを取得する。経過時間6秒(StartKey="0.0")から経過時間7秒(EndKey="1.0")までのフレームについては、全て丸顔向けの黒いカツラが合成された合成画像が表示されることになる。
上記の例では、コンテンツとしてカツラの画像を採用した場合について説明したが、コンテンツとして例えば化粧品による加工の程度を示す画像を採用し、これらの画像を顔タイプ別に用意しても良い。この場合、顔タイプ別に適した化粧品で化粧された画像が得られることになり、化粧品の販促に役立つことになる。
≪4.2.ターゲットが2人の場合≫
次に、ターゲットが2人の場合について説明する。図11は、ターゲットが2人の場合のXML形式のシナリオデータの一例を示す図である。図10の例と大きく異なるのは、<Simulation Targets>タグで挟まれた<HumanID>タグ内に、ヒューマンIDが2つ設定されている点である。図11の例では、ヒューマンID“0”と“1”が設定されている。<Animation Commands>タグ内では、各コマンドIDについて、1つのターゲットIDが設定される。図11の例では、コマンドID“0”“1”“2”については、ターゲットID“0”が設定され、コマンドID“3”“4”“5”については、ターゲットID“1”が設定されている。また、属性ID(TargetHumanIdentificationAttributeID)として、図14(b)に示した個人IDが特定されている点も異なっている。
ターゲットが2人の場合も、ターゲットが1人の場合と同様に、図9のフロー図に従って実行される。ターゲットが2人の場合は、S23において、シナリオデータ対応付け手段83が、状態遷移管理手段25により生成された顔オブジェクトデータを複数取得するので、S24において、取得したそれぞれの顔オブジェクトデータをシナリオデータに対応付ける。図11の例では、シナリオデータには、ターゲットID“0”“1”の2つが設定されているので、シナリオデータ対応付け手段83は、ターゲットID“0”“1”が対応付けられたオブジェクトIDで特定される顔検出枠データをターゲットとすることになる。これにより、ターゲットとする顔オブジェクトの顔検出枠がフレームで入れ替わるように移動したとしても、合成画像作成手段84は、それぞれの顔検出枠に合わせてコンテンツを合成することができる。
≪5.状態遷移管理手段を用いない構成≫
上記実施形態の画像表示システムは、状態遷移管理手段25を用い、検出された顔画像がノイズであったと判定される場合に、閲覧状態と判断しないようにしたが、状態遷移管理手段25を用いず、検出された顔画像を全て閲覧状態と判断するようにすることも可能である。次に、状態遷移管理手段25を用いない構成について説明する。
図15は、状態遷移管理手段25を用いない場合の画像処理装置2´に実装されたコンピュータプログラムで実現される機能ブロック図である。図15において、図3と同一機能を有するものについては、同一符号を付して詳細な説明を省略する。
図15に示す画像処理装置2´は、図3に示したトラッキング手段23に代えて、トラッキング手段23´を有している。このトラッキング手段23´は、図3に示した動画解析手段24に相当する機能も備えている。
図15に示す画像処理装置2´は、フレームを解析するにあたり、図4に示したS1〜S5の処理のうち、S1、S3の処理は、画像処理装置2と同様にして行う。また、顔検出処理とトラッキング処理は、連携させて実行する。上述のように、S5の状態遷移管理処理は行わない。
図16は、顔検出処理とトラッキング処理を示すフロー図である。まず、背景除去処理S1を行った後、Nフレームを処理するにあたり、N−1フレームの顔検出枠の数が0より大であるかどうかの判断を行う(S31)。N−1フレームの顔検出枠の数が0より大である場合は、トラッキング手段23´がトラッキング処理を実行する(S32)。
トラッキング手段23´は、N−1フレームにおける各顔検出枠を追跡してNフレームにおける対応する顔検出枠を特定するものである。トラッキング手段23´としては、上述の動画解析手段24が実行する“パーティクルフィルタ”、“LK法”、“CamShift手法”等の公知のトラッキング手法を採用することができる。
N−1フレームからNフレームへの顔検出枠のトラッキング処理を終えたら、顔検出手段21がNフレームにおける顔検出処理を行う(S33)。S33における顔検出処理は、図4に示したS2の顔検出処理と同一である。また、S31において、N−1フレームの顔検出枠の数が0より大でないと判定された場合は、N−1フレームからNフレームへのトラッキング処理を行わずに、顔検出手段21がNフレームにおける顔検出処理を行う。
続いて、顔検出処理S33において新規に検出されたNフレームの顔検出枠の数が0より大であるかどうかを判断する(S34)。新規に検出されたNフレームの顔検出枠とは、Nフレームで検出された顔検出枠のうち、N−1フレームからNフレームへトラッキングされた顔検出枠を除外したものである。
次に、顔検出手段21が、Nフレームにおいて新規に検出された各顔検出枠データに、オブジェクトIDを付与し、顔検出枠データ、オブジェクトID、トラッキング時間で構成される顔オブジェクトを設定する(S35)。顔オブジェクトは、オブジェクトIDにより特定され、トラッキングにより対応付けられた顔検出枠は、同一のオブジェクトIDで特定されることになる。また、トラッキング時間の初期値は0に設定される。
続いて、Nフレームにおける顔検出枠の数が0より大であるかどうかの判断を行う(S36)。S36においては、Nフレームにおいて新規に検出されたかどうかを問わず、既にオブジェクトIDが発行された顔検出枠がNフレームに存在するかどうかを判断する。
顔検出枠が存在した場合には、各顔検出枠の顔オブジェクトについて、トラッキング時間を算出する(S37)。具体的には、直前のN−1フレームまでに算出されているトラッキング時間に1フレームに相当する時間を加算することによりNフレームまでの各顔オブジェクトのトラッキング時間を算出する。トラッキング時間を算出し終えたら、Nをインクリメントして(S38)、次のNフレームについての処理に移行する。S36における判断の結果、顔検出枠が存在しなかった場合には、Nフレームには、追跡すべき対象が存在しないことになるので、トラッキング時間の算出は行わず、Nをインクリメントして(S38)、次のNフレームについての処理に移行する。
画像処理装置2´の顔検出手段21、トラッキング手段23´は、背景除去手段20により背景処理が行われた各フレームについて、図16に示した処理を繰り返し実行する。
図16に示した処理において付与された顔オブジェクトは、図9に示したS24において、シナリオデータ対応付け手段83によりシナリオデータと対応付けられる。図16に示した処理においては、顔オブジェクトのオブジェクトIDは、顔検出枠が検出された順に、“0”“1” “2”“3”と数を1ずつ増加させながら設定される。
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、顔特徴データを作成するための特徴抽出手法としてLBP特徴量を抽出する手法を用い、学習手法としてSVMを用いたが、顔特徴データを作成することができれば、どのようなものを用いても良い。例えば、特徴抽出手法としては、画像ベクトル化、AAM、SIFT、SURF、学習手法としては、単純ベイズ分類器、ニューラルネットワーク、ブースティング等を用いることが可能である。