≪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は、該ハードウェアとして、CPU(Central Processing Unit)2aと、BIOSが実装されるROM(Read-Only Memory)2bと、コンピュータのメインメモリであるRAM(Random Access Memory)2cと、外部記憶装置として大容量のデータ記憶装置(例えば,ハードディスク)2dと、外部デバイス(ビデオカメラ4)とデータ通信するための入出力インタフェース2eと、ネットワーク通信するためのネットワークインタフェース2fと、表示デバイス(ディスプレイ3)に情報を送出するための表示出力インタフェース2gと、文字入力デバイス(例えば、キーボード)2hと、ポインティングデバイス(例えば、マウス)2iを備えている。
画像処理装置2のデータ記憶装置2dには、CPU2aを動作させるためのコンピュータプログラムが実装され、このコンピュータプログラムによって、画像処理装置2には図3で図示した手段が備えられる。また、データ記憶装置2dは、画像表示システムに必要な様々なデータを格納することが可能となっており、映像上の1人以上の人物とコンテンツとの合成のタイミングを定めたシナリオデータを記憶したシナリオデータ記憶手段、合成に用いるコンテンツを記憶したコンテンツ記憶手段としての役割も果たしている。また、RAM2cは、表示出力インタフェース2gを介してディスプレイ3に表示する画像を一時的に記録するための表示用メモリ領域を有している。
ここで、コンテンツ記憶手段に格納されているコンテンツ画像について説明しておく。コンテンツ画像は、撮影された映像を構成する各フレーム(撮影画像)、および顔画像と合成して挿入画像を得る際の素材画像である。図11にコンテンツ記憶手段に記憶されているデータの一例を示す。コンテンツ画像としては、特に限定されず、様々な内容のものを用いることができるが、図11の例では、コンテンツ画像として絵画を内容とするものを示している。図11(a)は、絵画のコンテンツ画像であり、図11(b)は、図11(a)のコンテンツ画像と顔画像を合成する際に用いるコンテンツ用マスクであり、図11(c)は、図11(a)のコンテンツ画像と顔画像を合成して得られる挿入画像と撮影映像のフレームを合成する際に用いる全体マスクである。コンテンツ画像は矩形状の基準枠(x,y方向の位置、幅、高さにより規定される)を有しており、この基準枠を用いて、表示用メモリ領域においてフレームとの位置合わせが可能になっている。
また、コンテンツ用マスクは、コンテンツ画像と同サイズ(同画素数)であり、顔画像とコンテンツ画像を合成する際にコンテンツ画像をマスクする箇所が画素単位で設定されている。図11(b)の例では、コンテンツ用マスクは、コンテンツ画像をマスクする箇所を白く、コンテンツ画像をマスクしない箇所を黒く表現している。実際には、0〜255の256階調の場合、黒い部分の画素には“0”が設定され、白い部分の画素には“255”が設定されている。図11(b)の例では、コンテンツ画像をマスクする箇所は、白い円形状となっており、図11(a)と対比するとわかるように、絵画の顔の部分に対応している。また、コンテンツ用マスクには、顔画像と位置合わせするための矩形状の顔画像割付枠が設定される。この顔画像割付枠は、当然のことながら、白い円形状の部分に対応する位置に設定される。本実施形態では、顔画像割付枠は、後述するシナリオデータ上で設定される。また、全体マスクは、コンテンツ画像と同サイズ(同画素数)であり、挿入画像とフレームを合成する際にフレームをマスクする箇所が画素単位で設定されている。図11(c)の例では、全体マスクは、フレームをマスクする箇所を白く表現しており、挿入画像に対応する全ての画素がマスクされる。実際には、0〜255の256階調の場合、白い部分の画素には“255”が設定されている。
図3で図示したように、画像処理装置2の入力は、ビデオカメラ4によって撮影された撮影映像であり、画像処理装置2の出力は、この撮影映像を加工した加工映像である。撮影映像、加工映像は、それぞれ複数のフレーム、複数の加工画像により構成されているため、実際には、フレームを入力し、加工画像を出力することになる。
画像処理装置2には、ビデオカメラ4によって撮影された映像のフレームを解析する手段として、ビデオカメラ4によって撮影された映像のフレームの背景画像を除去する背景除去手段20と、背景除去手段20によって背景が除去されたフレームから人物の顔を検出する顔検出手段21と、背景除去手段20によって背景画像が除去されたフレームから人体を検出する人体検出手段22と、顔検出手段21が検出した顔を前後のフレームで対応付けるトラッキング手段23と、パーティクルフィルタなどの動画解析手法を用い、指定された顔画像をフレームから検出する動画解析手段24と、顔検出手段21が新規に検出した顔画像毎に顔オブジェクトを生成し、トラッキング手段23から得られる一つ前と今回の顔検出枠データの対応付け結果を参照し、事前に定めた状態遷移表に従い顔オブジェクトの状態を遷移させ、顔オブジェクトの状態遷移に応じたログを記憶する状態遷移管理手段25と、顔検出手段21により検出され、状態遷移管理手段25により状態遷移された顔オブジェクトと、用意されたシナリオデータの対応付けを行うシナリオデータ対応付け手段83と、ビデオカメラ4によって撮影された映像の各フレームをシナリオデータに従って加工して、挿入画像、表示用画像等の合成画像を作成する合成画像作成手段84を備える。更に、本実施形態では、ディスプレイ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は、XML形式のシナリオデータの一例を示す図である。ここからは、図10のシナリオデータを参照しながら、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82について詳細に説明する。合成ターゲット定義手段80は、ヒューマンID(HumanID)、タイプ(Type)、サイクル間隔(CycleInterval)、自動ループ(IsAutoLoop)の4つの項目を設定することにより処理対象となるターゲットを定義する。図10の例では、1行目の<Simulation Targets>と、4行目の</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(DynamicImageContents ID)、合成手法(MontageType)、コンテンツパス(ContentsPath)、コンテンツ用マスクパス(InsertMontageMaskFilePath)、全体マスクパス(MaskFilePath)、基礎エリア(BaceArea)、挿入エリア(InsertMontageArea)、消失時間(DisapearanceTime)、動的コンテンツ再作成(IsEnableReCreateDynamicImageContents)、更新時間(RefleshTime)の10の項目を設定することにより合成対象のコンテンツを定義する。図10の例では、5行目の<Simulation Contents>と、17行目の</Simulation Contents >の2つのタグで囲まれた範囲に対応する。
動的コンテンツIDは、動的コンテンツを特定するIDである。動的コンテンツは複数定義することもできるが、図10の例では、6行目の< DynamicImageContents>と、16行目の</ DynamicImageContents>の2つのタグで囲まれた範囲により、動的コンテンツが1つだけ定義されている。動的コンテンツとは、ハードディスク等の不揮発性の記憶手段に記憶されたものでなく、閲覧者の撮影を開始した後、表示用メモリ領域上に動的に作成されるものである。本実施形態では、顔画像とコンテンツ画像を合成した挿入画像を動的コンテンツとして用いる。
合成手法(MontageType)とは、閲覧者の顔画像とコンテンツ画像をどのような手法により合成するかを示すものであり、本実施形態では、アルファブレンディング、ポアソンブレンディング、MeanValueCloningの3タイプが用意されている。図10の例では、合成手法として、ポアソンブレンディング(PoissonBlendMontage)が設定されている。
コンテンツパスは、図11(a)に示したようなコンテンツ画像の記憶位置を特定するパスである。コンテンツ用マスクパスは、図11(b)に示したようなコンテンツ用マスクの記憶位置を特定するパスである。全体マスクパスは、図11(c)に示したような全体マスクの記憶位置を特定するパスである。基礎エリアは、表示用メモリ領域における顔画像の配置位置を指定するものである。挿入エリアは、表示用メモリ領域における挿入画像の配置位置を指定するものである。
消滅時間は、表示用メモリ領域上に作成された挿入画像(動的コンテンツ)を、消去するまでの時間を示すものである。動的コンテンツ再作成は、表示用メモリ領域上に作成された挿入画像が表示用メモリ領域上に存在している状態で、新たなターゲットが検出された場合に、新たな挿入画像を作成するかどうかを示すものである。更新時間は、挿入画像における顔画像の更新時間間隔を示すものである。
アニメーションシナリオ定義手段82は、コマンドID(CommandID)、コマンドタイプ(CommandType)、開始キー(StartKey)、終了キー(EndKey)、キータイプ(KeyType)、ターゲットID(TargetsID)、コンテンツID(ContentsID)の7つの項目を設定することによりアニメーションシナリオを定義する。図10の例では、18行目の<Animation Commands>と、23行目の</Animation Commands>の2つのタグで囲まれた範囲に対応する。図10の例では、コマンドID(CommandID)が“0”と“1”の2つのコマンドについて定義されている。図10に示すように、コマンドID“0”のコマンドについては、コマンドタイプ、キータイプ、ターゲットID、コンテンツIDが設定され、コマンドID“1”のコマンドについては、コマンドタイプ、キータイプ、開始キー、終了キー、ターゲットID、コンテンツIDが設定されている。
開始キー、終了キーは各コマンドの開始時点、終了時点を設定するものである。本実施形態では、シナリオデータの時間を、シナリオ開始時を“0.0”、シナリオ終了時を“1.0”として管理している。したがって、最初に開始するコマンドの開始キー(StartKey)は“0.0”、最後に終了するコマンドの終了キー(EndKey)は“1.0”となる。キータイプとは、開始キー、終了キーの基準とする対象を設定するものであり、own、base、globalの3つが用意されている。ownは各ターゲットIDに対応する顔オブジェクトの閲覧時間を基準とし、baseはターゲットID=0に対応する顔オブジェクトの閲覧時間を基準とし、globalは撮影映像の最初のフレームを取得した時間を基準とする。図10の例では、コマンドID“1”のキータイプ(KeyType)として、globalが設定されているので、撮影映像の最初のフレームが取得された時点を“0.0”として、開始キー、終了キーが認識されることになる。
図10の例では、2行目に示したようにサイクル間隔(CycleInterval)として“10”が設定されているので、シナリオの開始から終了まで10秒であることを示している。したがって、開始キー、終了キーの値を10倍した実時間でシナリオは管理されることになる。ターゲットID(TargetsID)は、<SimulationTargets>タグ内のID(HumanID、SceanID)に1対1で対応している。コンテンツID(ContentsID)は、検出された人物と合成するコンテンツを特定する識別情報である。このようにして、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82により作成されたシナリオデータは、シナリオデータ記憶手段としてのデータ記憶装置2dに格納される。
画像処理装置2が、ビデオカメラ4によって撮影された映像のフレームを時系列で解析することで、画像処理装置2のデータ記憶装置2dには、閲覧測定に利用可能なログファイルとして、ディスプレイの閲覧時間が記憶される閲覧時間ログファイルと、ディスプレイを閲覧した人物の位置が記憶される位置ログファイルと、ディスプレイを閲覧した人物の人物属性(例えば,年齢・性別)が記憶される人物属性ログファイルと、ディスプレイの前にいる人物の総人数、ディスプレイを閲覧していない人物の人数、ディスプレイを閲覧した人物の人数が記憶される人数ログファイルが記憶され、これらのログファイルを出力するログファイル出力手段27が画像処理装置2には備えられている。本発明では、ログファイルを作成することは必須ではないが、ログファイルを作成する過程における顔オブジェクト、閲覧開始時刻が、合成画像の作成に利用される。
≪2.処理動作≫
まず、ビデオカメラ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について説明する。人体を検出する手法としては赤外線センサを用い、人物の体温を利用して人体を検出する手法が良く知られているが、本実施形態では、人体検出処理S3で実施する人体検出方法として、弱い識別器として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,7b),ニアレストネイバー法の評価値からでは、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.」で述べられている。
そして、トラッキング対象である人物にオクルージョンはない可能性が高いと判定できた場合([数2]の判定基準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を定義しておくことで、顔を見失った後に、同じ顔を検出した場合でも、同じ顔として取り扱うことができるようになる。
≪3.シナリオデータを用いた合成処理≫
図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)。具体的には、まず、シナリオデータの<Animation Commands>を参照する。そして、コマンドID“0”のコマンドを実行する。図10の例では、キータイプ“own”、コマンドタイプ“CreateDynamicImageContents (挿入画像作成)”、ターゲットID“0”、コンテンツID“0”であるので、合成画像作成手段84は、ターゲットID “0”で特定されるヒューマンID“0”に対応付けられた顔検出枠データを用いて、コンテンツID“0”で特定される挿入画像を作成することになる。
挿入画像の作成は、合成画像作成手段84が、<Simulation Contents>タグ内の、< DynamicImageContents>タグに規定された内容に従った処理を実行することにより行われる。図10の20行目に示すように、<Animation Commands>におけるコマンドID“0”のコンテンツIDが“0”であるため、<Simulation Contents>タグ内のコンテンツIDが“0”の< DynamicImageContents>タグが選択される。
合成画像作成手段84は、選択された< DynamicImageContents>タグの内容に従い、画像パス"Contents/picture.bmp"で特定されるコンテンツ画像をコンテンツ記憶手段(データ記憶装置2d)から抽出する。例えば、図11(a)に示したようなコンテンツ画像が抽出される。また、合成画像作成手段84は、コンテンツ用マスクパス"Contents/picture#facemask.bmp"で特定されるコンテンツ用マスクをコンテンツ記憶手段から抽出する。例えば、図11(b)に示したようなコンテンツ用マスクが抽出される。さらに、合成画像作成手段84は、全体マスクパス"Contents/picture#mask.bmp"で特定される全体マスクをコンテンツ記憶手段から抽出する。例えば、図11(c)に示したような全体マスクが抽出される。
次に、合成画像作成手段84は、S23において取得された顔オブジェクトデータの顔検出枠データ内の画像を顔画像としてフレームから切り出す。具体的には、図12(a)に示したようなフレームから図12(b)に示したような顔画像が切り出されることになる。
続いて、コンテンツ用マスクを用いて、指定された合成手法であるポアソンブレンディング("PoissonBlendMontage")によりコンテンツ画像と顔画像を合成する。ポアソンブレンディングとは、マスク部分の最終結果画像の画素値を疎な連立微分方程式である以下のポアソン方程式〔数3〕で表現し、ポアソン方程式をガウスサイデル法、Mutigrid法等の数値解法で解く公知の手法である。得られた値を各画素の画素値とすることにより、図12(c)に示すようなコンテンツ画像と顔画像を合成した挿入画像が得られる。
〔数3〕ポアソン方程式
ResultValue−dxdy=TargetValue−dxdy
ResultValue(境界値)=SourceValue(境界値)
上記〔数3〕において、ResultValueは合成後の挿入画像の画素値、SourceValueはコンテンツ画像の画素値、TargetValueは顔画像の画素値である。
顔画像とコンテンツ画像の位置合わせは、RAM2c内に確保された表示用メモリ領域の所定の位置を基準(0,0)とする座標(x,y)で特定することにより行われる。具体的には、シナリオデータ中で設定された基礎エリア、挿入エリアに従って行われる。図10の例では、10行目のBaceAreaX="0" BaceAreaY="0" BaceAreaWidth="50" BaceAreaHeight="50"に示すように、コンテンツ画像を配置する基礎エリアの基点は(0,0)、幅が(50,50)である。合成画像作成手段84は、この基礎エリアと、コンテンツ画像に設定されている基準枠の矩形サイズが一致するようにコンテンツ画像のサイズを変更し、サイズ変更したコンテンツ画像を、表示用メモリ領域に記録する。このように、コンテンツ画像に基準枠を設定しておくことにより、基礎エリアのサイズをシナリオデータ上で設定することにより、フレーム上におけるコンテンツ画像のサイズを自由に変更することが可能である。
顔画像のコンテンツ画像に対する挿入位置も、表示用メモリ領域の所定の位置を基準(0,0)とする座標(x,y)で特定することにより行われる。図10の例では、11、12行目のInsertMontageAreaX="450" InsertMontageAreaY="400"InsertMontageAreaWidth="134"InsertMontageAreaHeight="134"に示すように、挿入画像を配置する挿入エリアの基点は(450,400)、幅が(134,134)であるので、これが顔画像割付枠となる。合成画像作成手段84は、この顔画像割付枠と顔検出枠データの矩形サイズが一致するように顔画像のサイズを変更し、サイズ変更した顔画像を、コンテンツ画像と合成する。したがって、フレームから切り出した顔画像のサイズと、コンテンツ画像上の顔画像割付枠のサイズが異なっていても、顔画像のサイズを変更して挿入画像を表示用メモリ領域に得ることができる。
挿入画像を表示用メモリ領域上に作成したら、次に、合成画像作成手段84は、フレーム単位で表示用画像を作成する処理を行う(S26)。具体的には、図10の21、22行目のコマンドID“1”(Command ID="1")のコマンドを実行する。コマンドID“1”のコマンドは、挿入画像が作成済みの場合にのみ、実行される。まず、開始時点を経過時刻“0.0”と設定し、この経過時刻“0.0”で、シナリオデータの<Animation Commands>を参照する。図10に示すように、コマンドID“1”のコマンドが、開始キー“0.0”から終了キー“1.0”まで、キータイプ“own”、コマンドタイプ“LayerMontage(レイヤ合成)”、ターゲットID“1”、コンテンツID“0”であるので、合成画像作成手段84は、ターゲットID “1” に対応するシーンID“1”に対応付けられたフレームと、表示用メモリ領域にコマンドID“0” のコマンドにより既に作成されている挿入画像をレイヤ合成することにより、表示用画像を作成する。レイヤ合成を行う際、全体マスクを用いてフレームの対応する領域をマスクする。全体マスクのサイズは、コンテンツ画像と同サイズに設定されているので、マスクされた領域には、挿入画像全体が配置されることになる。
この結果、図12(d)に示すような表示用画像が表示用メモリ領域に作成されることになる。表示用メモリ領域に記録された表示用画像は、ディスプレイ3により表示される。この結果、ディスプレイ3には、図12(d)に示したような、撮影映像のフレームに加工が施された表示用画像が表示されることになる。
1つのフレームについて表示用画像の作成を終えたら、シナリオデータ対応付け手段83は、シナリオ実行中であるかどうかを判断する(S26)。具体的には、シナリオデータに従った画像作成開始からの経過時間でシナリオデータ内のサイクル間隔(CycleInterval)を参照し、経過時間がサイクル間隔未満である場合は、シナリオ実行中であると判断し、経過時間がサイクル間隔以上である場合は、シナリオ終了であると判断する。シナリオ実行中であると判断した場合には、シナリオデータ対応付け手段83は、S23に戻って、顔オブジェクトデータを取得する。
そして、S24において、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した次の顔オブジェクトデータをシナリオデータに対応付ける処理を行う。このときも1回目のループと同様、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。そして、シナリオデータに従って、シナリオデータ対応付け手段83は、ヒューマンID“0”が対応付けられたオブジェクトIDで特定される顔検出枠データ内の顔画像を処理対象とする。
次に、S26において、合成画像作成手段84が、フレーム単位で表示用画像を作成する処理を行う。具体的には、経過時間を取得し、取得した経過時間で、シナリオデータの<Animation Commands>を参照する。図10の例では、開始時点、終了時点が規定されているのは、コマンドID“1”のコマンドのみであり、コマンドID“1”のコマンドは、シナリオの開始(0.1)から終了(1.0)まで設定されているので、シナリオ実行中、同一の処理を継続して行うことになる。図10の例では、キータイプ“own”、コマンドタイプ“LayerMontage(レイヤ合成)”、ターゲットID“1”、コンテンツID“0”であるので、合成画像作成手段84は、ターゲットID“1”のフレーム(撮影映像を構成する1つの撮影画像)と、コンテンツID“0”の挿入画像をレイヤ合成することにより、表示用画像を表示用メモリ領域上に作成する。このようにして、S27においてシナリオ終了であると判断されるまでは、経過時間に従い、シナリオデータを実行する処理を繰り返し行う。
S27において、シナリオ終了であると判断した場合には、シナリオデータ対応付け手段83は、ループ処理を行うかどうかを判断する(S28)。具体的には、シナリオデータ内の<IsAutoLoop>タグを参照し、“true”が設定されている場合は、ループ処理(繰り返し処理)を行うと判断する。ループ処理を行うと判断した場合には、シナリオデータ対応付け手段83は、経過時間を“0”にリセットし、経過時間の計測を再び開始するとともに、S22に戻って、シナリオデータに従った画像の作成を開始する。このように、撮影映像の各フレームから得られた表示用画像を順次ディスプレイに表示することにより、加工映像として表示されることになる。
一方、図10の例では、13行目(DisapearanceTimeMinutes="30" DisapearanceTimeSeconds="0" DisapearanceTimeMilliseconds="0")に示すように、消滅時間は30分0秒0と設定されている。したがって、合成画像作成手段84は、挿入画像を表示用メモリ領域に記録した時点から30分0秒0経過した時点で挿入画像を表示用メモリ領域から消去する。また、図10の例では、14行目( IsEnableReCreateDynamicImageContents="false")に示すように、動的コンテンツ再作成は“しない(false)”に設定されている。したがって、表示用メモリ領域に挿入画像が記録されている状態で、新たな閲覧者をターゲットとして検出した場合であっても、新たな挿入画像を作成せず、以前の挿入画像が設定された消滅時間まで保持され続けることになる。また、図10の例では、15行目(RefleshTimeMinutes="30" RefleshTimeSeconds="0" RefleshTimeMilliseconds="0")に示すように、更新時間は30分0秒0と設定されている。したがって、合成画像作成手段84は、表示用メモリ領域に記録した時点から30分0秒0経過した時点で新たな顔画像をフレームから抽出し、コンテンツ画像と合成して挿入画像として表示用メモリ領域に記録する。
図10の例では、合成手法として、ポアソンブレンディングを用いたが、上述のように、公知のアルファブレンディングやMeanValueCloningを選択することも可能である。アルファブレンディングは、2つの画像を係数(α値)により合成する手法である。アルファブレンディングの場合は、以下の〔数4〕に従った処理により挿入画像の各画素の値を算出する。
〔数4〕
ResultValue=TargetValue×(MaskValue/255)+SourceValue×((255−MaskValue)/255)
上記〔数4〕において、ResultValueは合成後の挿入画像の画素値、SourceValueはコンテンツ画像の画素値、MaskValueはコンテンツ用マスクの画素値、TargetValueは顔画像の画素値である。
MeanValueCloningは、ポアソンブレンディングで算出される値とコンテンツ画像の変化量を高速算出できる手法で近似するものであり、ポアソンブレンディングには、品質は劣るが、高速な処理を行うことができる。また、アルファブレンディングより処理は遅いが、品質は高い。MeanValueCloningの場合も、コンテンツ画像の画素値、コンテンツ用マスクの画素値、顔画像の画素値を用いて、挿入画像の各画素の値を算出する。
≪4.状態遷移管理手段を用いない構成≫
上記実施形態の画像表示システムは、状態遷移管理手段25を用い、検出された顔画像がノイズであったと判定される場合に、閲覧状態と判断しないようにしたが、状態遷移管理手段25を用いず、検出された顔画像を全て閲覧状態と判断するようにすることも可能である。次に、状態遷移管理手段25を用いない構成について説明する。
図13は、状態遷移管理手段25を用いない場合の画像処理装置2´に実装されたコンピュータプログラムで実現される機能ブロック図である。図13において、図3と同一機能を有するものについては、同一符号を付して詳細な説明を省略する。
図13に示す画像処理装置2´は、図3に示したトラッキング手段23に代えて、トラッキング手段23´を有している。このトラッキング手段23´は、図3に示した動画解析手段24に相当する機能も備えている。
図13に示す画像処理装置2´は、フレームを解析するにあたり、図4に示したS1〜S5の処理のうち、S1、S3の処理は、画像処理装置2と同様にして行う。また、顔検出処理とトラッキング処理は、連携させて実行する。上述のように、S5の状態遷移管理処理は行わない。
図14は、顔検出処理とトラッキング処理を示すフロー図である。まず、背景除去処理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により背景処理が行われた各フレームについて、図14に示した処理を繰り返し実行する。
図14に示した処理において付与された顔オブジェクトは、図9に示したS24において、シナリオデータ対応付け手段83によりシナリオデータと対応付けられる。図14に示した処理においては、顔オブジェクトのオブジェクトIDは、顔検出枠が検出された順に、“0”“1” “2”“3”と数を1ずつ増加させながら設定される。