説明

画像表示システム

【課題】撮影されている閲覧者の輪郭部分を明確にして背景画像と合成し、リアルタイムに表示することが可能な画像表示システムを提供する。
【解決手段】画像処理装置2は、映像上の1人以上の人物とコンテンツとの合成のタイミングを定めたシナリオデータを記憶したシナリオデータ記憶手段、合成に用いる背景画像をコンテンツとして記憶したコンテンツ記憶手段、顔検出枠の位置・矩形サイズを顔検出枠データとして出力する顔検出手段21、取得した顔検出枠データを、他のフレームの顔検出枠データと対応付けるトラッキング手段23、顔検出枠データを含む顔オブジェクトに対して、シナリオデータに含まれる人物との対応付けを行うシナリオデータ対応付け手段83、セグメント領域を利用して人物と人物以外の部分にセグメント化したセグメント結果画像を用いて、背景画像をマスクし、フレーム中の人物と背景画像を合成した合成画像生成手段84を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、撮影した映像を加工して表示する技術に関し、特に撮影されている閲覧者の状態に応じて加工した映像を表示する技術に関する。
【背景技術】
【0002】
ディスプレイやプロジェクタなどの表示装置を用いて広告を表示する広告媒体であるデジタルサイネージ(Digital Signage)が、様々な場所に設置され始めている。デジタルサイネージを用いることで、動画や音声を用いた豊かなコンテンツの提供が可能になるばかりか、デジタルサイネージの設置場所に応じた効率的な広告配信が可能になるため、今後、デジタルサイネージのマーケット拡大が期待されている。
【0003】
最近では、デジタルサイネージについて、様々な改良が施されており、デジタルサイネージの前に存在する閲覧者の動きに応じて表示させる画像を変化させる技術が提案されている(特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第4238371号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記特許文献1に記載の技術では、人の認識情報と動き情報を基に合成画像を生成するが、トラッキング処理を行っていないために、各人の動きに応じて背景画像を合成することができない。特に、人物と背景を違和感なく合成することはできない。また、人と背景画像を合成する手法としては、クロマキー合成技術が存在するが、クロマキー合成技術では、背景を人物とは明確に異なる色で区別しておかなければならないという問題がある。
【0006】
そこで、本発明は、撮影されている閲覧者と背景画像を違和感なく合成し、リアルタイムに表示することが可能な画像表示システムを提供することを課題とする。
【課題を解決するための手段】
【0007】
上記課題を解決するため、本発明第1の態様では、人物を撮影するカメラと、カメラから送出される撮影映像を合成処理する画像処理装置と、合成処理された合成映像を表示するディスプレイとを備えた画像表示システムであって、前記画像処理装置は、映像上の1人以上の人物とコンテンツとの合成のタイミングを定めたシナリオデータを記憶したシナリオデータ記憶手段と、合成に用いる背景画像をコンテンツとして記憶したコンテンツ記憶手段と、前記カメラから送出された映像の1つのフレームに撮影されている顔画像を検出し、検出した前記顔画像毎に、顔検出枠の位置・矩形サイズを顔検出枠データとして出力する顔検出手段と、前記顔検出手段から取得した前記顔検出枠データを、他のフレームの顔検出枠データと対応付けるトラッキング手段と、前記顔検出手段により検出された顔検出枠データを含む顔オブジェクトに対して、前記シナリオデータに含まれる人物との対応付けを行うシナリオデータ対応付け手段と、前記各フレームにおいて前記シナリオデータに含まれる人物との対応付けがなされた顔検出枠を含む範囲にセグメント領域を設定し、このセグメント領域を利用して人物と人物以外の部分にセグメント化したセグメント結果画像を用いて、前記背景画像をマスクし、前記フレーム中の人物と背景画像を合成した合成画像を生成する合成画像生成手段と、を備えた画像表示システムを提供する。
【0008】
本発明第1の態様によれば、撮影映像中の人物とコンテンツとの合成のタイミングを定めたシナリオデータを用意しておき、撮影映像のフレームから顔検出枠を検出し、顔検出枠のトラッキングを行い、得られた顔オブジェクトをシナリオデータの人物に割り当て、顔オブジェクトの顔検出枠を含む範囲にセグメント領域を設定し、このセグメント領域を利用して人物と人物以外の部分にセグメント化したセグメント結果画像を用いて、背景画像をマスクし、フレーム中の人物と背景画像を合成するようにしたので、撮影されている閲覧者と背景画像を違和感なく合成し、リアルタイムに表示することが可能となる。特に、撮影されている閲覧者の輪郭部分を明確にすることにより、違和感なく背景画像と合成することが可能となる。
【0009】
また、本発明第2の態様では、本発明第1の態様による画像表示システムにおいて、前記コンテンツ記憶手段は、さらに前記人物または背景に重ねる画像である重畳画像をコンテンツとして記憶し、前記合成画像生成手段は、前記シナリオデータ対応付け手段による対応付けに従って、前記顔オブジェクトを前記シナリオデータの人物に割り当て、前記顔オブジェクトの顔検出枠データの位置、サイズに合わせて、前記重畳画像の位置、サイズを変更し、前記フレーム上に前記重畳画像を合成した合成画像を生成するものであることを特徴とする。
【0010】
本発明第2の態様によれば、顔オブジェクトの顔検出枠データの位置、サイズに合わせて、重畳画像の位置、サイズを変更し、フレーム上に重畳画像を合成するようにしたので、撮影した映像に映っている人物にリアルタイムで重畳画像を重ねた映像を表示することができる。ここで、重畳画像とは、撮影映像中のフレームにおける人物部分または背景画像と重ねられる画像であり、その重ね方としては、完全に上書きされる場合や、いわゆるαブレンドの手法により、人物部分または背景画像の画素の値を反映させながら重ねる手法もある。
【0011】
また、本発明第3の態様では、本発明第1または第2の態様による画像表示システムにおいて、前記合成画像生成手段は、前記セグメント領域を、前記顔検出枠の位置に基づいて、前記顔検出枠と左右方向の中心が一致し、上下方向については前記顔検出枠の中心が前記セグメント領域の中心より上方に位置するように設定し、前記セグメント領域内における所定の位置に設定される、人物の存在する領域と人物の存在しない領域において指定された画素を利用して、セグメント化するものであることを特徴とする。
【0012】
本発明第3の態様によれば、セグメント領域を、顔検出枠の位置に基づいて、顔検出枠と左右方向の中心が一致し、上下方向については顔検出枠の中心がセグメント領域の中心より上方に位置するように設定し、セグメント領域内において設定される人物の存在する領域と人物の存在しない領域において、指定された画素を利用して、セグメント化するようにしたので、人物の存在する領域に指定された画素の値、人物の存在しない領域に指定された画素の値の特徴に基づき、人物と人物以外の境界の画素が特定でき、人物の輪郭を明確にすることが可能となる。
【0013】
また、本発明第4の態様では、人物を撮影するカメラと、カメラから送出される撮影映像を合成処理する画像処理装置と、合成処理された合成映像を表示するディスプレイとを備えた画像表示システムであって、前記画像処理装置は、映像上の1人以上の人物とコンテンツとの合成のタイミングを定めたシナリオデータを記憶したシナリオデータ記憶手段と、背景画像と周囲を囲まれた一部が開いている重畳画像をコンテンツとして記憶したコンテンツ記憶手段と、前記カメラから送出された映像の1つのフレームに撮影されている顔画像を検出し、検出した前記顔画像毎に、顔検出枠の位置・矩形サイズを顔検出枠データとして出力する顔検出手段と、前記顔検出手段から取得した前記顔検出枠データを、他のフレームの顔検出枠データと対応付けるトラッキング手段と、前記顔検出手段により検出された顔検出枠データを含む顔オブジェクトに対して、前記シナリオデータに含まれる人物との対応付けを行うシナリオデータ対応付け手段と、前記対応付けに従って、前記顔オブジェクトを前記シナリオデータの人物に割り当て、前記顔オブジェクトの顔検出枠データの位置、サイズに合わせて、前記重畳画像の位置、サイズを変更して合成するとともに、前記重畳画像に対応したマスク画像によりマスクされた前記背景画像と合成した合成画像を生成する合成画像生成手段と、を備えた画像表示システムを提供する。
【0014】
本発明第4の態様によれば、撮影映像中の人物とコンテンツとの合成のタイミングを定めたシナリオデータを用意しておき、撮影映像のフレームから顔検出枠を検出し、顔検出枠のトラッキングを行い、得られた顔オブジェクトをシナリオデータの人物に割り当て、顔オブジェクトの顔検出枠データの位置、サイズに合わせて、周囲を囲まれた一部が開いている重畳画像の位置、サイズを変更して合成するとともに、重畳画像に対応したマスク画像によりマスクされた背景画像と合成するようにしたので、撮影されている閲覧者と背景画像を違和感なく合成し、リアルタイムに表示することが可能となる。
【発明の効果】
【0015】
本発明によれば、撮影されている閲覧者と背景画像を違和感なく合成し、リアルタイムに表示することが可能となるという効果を奏する。
【図面の簡単な説明】
【0016】
【図1】本実施形態における画像表示システム1の構成を説明する図。
【図2】画像表示システム1を構成する画像処理装置2のハードウェアブロック図。
【図3】画像処理装置2に実装されたコンピュータプログラムで実現される機能ブロック図。
【図4】画像処理装置2がフレームを解析する処理を説明するフロー図。
【図5】トラッキング処理を説明するためのフロー図。
【図6】顔検出枠データ対応付け処理を説明するためのフロー図。
【図7】本実施形態における状態遷移表を説明する図。
【図8】人体及び顔検出結果を説明するための図。
【図9】画像処理装置2が合成画像を作成する処理を説明するフロー図。
【図10】ターゲットが1人の場合のXML形式のシナリオデータの一例を示す図。
【図11】ターゲットが2人の場合のXML形式のシナリオデータの一例を示す図。
【図12】顔検出枠を用いたコンテンツの合成の様子を示す図。
【図13】ターゲットが1人の場合の合成画像の表示状態を示す図。
【図14】ターゲットが2人の場合の合成画像の表示状態を示す図。
【図15】タッチボタン対応の場合のXML形式のシナリオデータの一例を示す図。
【図16】タッチボタン対応の場合の合成画像の表示状態を示す図。
【図17】指示判定処理における画像処理の様子を示す図。
【図18】画像処理装置2´に実装されたコンピュータプログラムで実現される機能ブロック図。
【図19】顔検出処理及びトラッキング処理を説明するためのフロー図。
【図20】シーン合成の場合のXML形式のシナリオデータの一例を示す図。
【図21】撮影画像における顔検出枠とセグメント領域の関係を示す図である。
【図22】イニシャル領域の形状を示す図である。
【図23】図20のシナリオデータの例に従って設定されたイニシャル領域を示す図である。
【図24】合成マスク画像作成の様子を示す図である。
【図25】背景マスク画像作成の様子を示す図である。
【図26】撮影画像に対してシーン合成を行い、合成画像を作成する様子を示す図である。
【発明を実施するための形態】
【0017】
≪1.システム構成≫
以下、本発明の好適な実施形態について図面を参照して詳細に説明する。図1は、本実施形態における画像表示システム1の構成を説明する図、図2は、画像表示システム1を構成する画像処理装置2のハードウェアブロック図、図3は、画像処理装置2に実装されたコンピュータプログラムで実現される機能ブロック図である。
【0018】
図1で図示したように、画像表示システム1には、液晶ディスプレイ等の表示デバイスであるディスプレイ3が含まれる。このディスプレイ3には、撮影した画像だけでなく、表示領域を分けて広告を表示するようにしても良い。
【0019】
この場合、ディスプレイ3を街頭や店舗などに設置することにより、画像表示システム1はデジタルサイネージとしても機能する。画像表示システム1をデジタルサイネージとして機能させる場合、ディスプレイ3で表示する広告映像を制御するサーバが必要となる。
【0020】
ディスプレイ3には、ディスプレイ3で再生されている映像を見ている人物の顔が撮影されるようにアングルが設定され、ディスプレイ3で再生されている広告映像を閲覧している人物を撮影するビデオカメラ4が設置されている。
【0021】
このビデオカメラ4で撮影された映像は、USBポートなどを利用して画像処理装置2に入力され、画像処理装置2は、ビデオカメラ4から送信された映像に含まれるフレームを解析し、ディスプレイ3の前にいる人物や,ディスプレイ3で再生されている映像を閲覧した人物の顔を検出し、閲覧者に関するログ(例えば、ディスプレイ3の閲覧時間)を記憶する。
【0022】
図1で図示した画像表示システム1を構成する装置において、ディスプレイ3及びビデオカメラ4は市販の装置を利用できるが、画像処理装置2は、従来技術にはない特徴を備えているため、ここから、画像処理装置2について詳細に説明する。
【0023】
画像処理装置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(例えば、マウス)を備えている。
【0024】
画像処理装置2のデータ記憶装置2dには、CPU2aを動作させるためのコンピュータプログラムが実装され、このコンピュータプログラムによって、画像処理装置2には図3で図示した手段が備えられる。また、データ記憶装置2dは、画像表示システムに必要な様々なデータを格納することが可能となっており、映像上の1人以上の人物とコンテンツとの合成のタイミングを定めたシナリオデータを記憶したシナリオデータ記憶手段、合成に用いるコンテンツを記憶したコンテンツ記憶手段としての役割も果たしている。
【0025】
ここで、コンテンツ記憶手段に格納されているコンテンツについて説明しておく。コンテンツは、撮影された映像のフレームと合成して合成画像を得る際の素材画像である。コンテンツとしては、背景となる背景画像と、撮影画像中の人物または背景画像上に重ねる重畳画像の2種類が存在する。図12(a)に重畳画像としてのコンテンツの一例を示す。重畳画像としては、特に限定されず、様々な形態のものを用いることができるが、図12(a)の例では、重畳画像としてカツラを用意した場合を示している。この重畳画像は矩形情報(x,y方向の位置、幅、高さ)を有しており、この矩形情報を用いて、撮影されたフレームとの位置合わせが可能になっている。
【0026】
図3で図示したように、画像処理装置2の入力は、ビデオカメラ4によって撮影された映像で、画像処理装置2の出力は、撮影された映像を加工した加工映像である。
【0027】
画像処理装置2には、ビデオカメラ4によって撮影された映像のフレームを解析する手段として、ビデオカメラ4によって撮影された映像のフレームの背景画像を除去する背景除去手段20と、背景除去手段20によって背景が除去されたフレームから人物の顔を検出する顔検出手段21と、背景除去手段20によって背景画像が除去されたフレームから人体を検出する人体検出手段22と、顔検出手段21が検出した顔を前後のフレームで対応付けるトラッキング手段23と、パーティクルフィルタなどの動画解析手法を用い、指定された顔画像をフレームから検出する動画解析手段24と、顔検出手段21が新規に検出した顔画像毎に顔オブジェクトを生成し、トラッキング手段23から得られる一つ前と今回の顔検出枠データの対応付け結果を参照し、事前に定めた状態遷移表に従い顔オブジェクトの状態を遷移させ、顔オブジェクトの状態遷移に応じたログを記憶する状態遷移管理手段25と、顔検出手段21により検出され、状態遷移管理手段25により状態遷移された顔オブジェクトと、用意されたシナリオデータの対応付けを行うシナリオデータ対応付け手段83と、ビデオカメラ4によって撮影された映像の各フレームを、シナリオデータに従って加工した合成画像を作成する合成画像作成手段84と、閲覧者が所定の位置に定義されたタッチレスボタンに対して指示を行っているかどうかを判定する指示判定手段85と、指示判定手段85による判定に従ってシナリオデータ中のコマンドの切替を行うコマンド切替手段86を備え、更に、本実施形態では、ディスプレイ3を閲覧した人物の属性(年齢や性別)をログデータに含ませるために、顔検出手段21が検出した顔画像から人物の人物属性(年齢や性別)を推定する人物属性推定手段26、状態遷移管理手段25が記憶したログをファイル形式で出力するログファイル出力手段27、加工対象のターゲット(人または場所)をシナリオデータ中に定義する合成ターゲット定義手段80、加工に用いるコンテンツ(画像、音声、CG等)をシナリオデータ中に定義する合成コンテンツ定義手段81、加工内容をシナリオデータ中に定義するアニメーションシナリオ定義手段82を備えている。
【0028】
シナリオデータは、別のシステムで事前に作成し、シナリオデータ記憶手段としてのデータ記憶装置2dに格納しておくことができるが、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82により、作成することもできる。合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82は、撮影により得られた映像の各フレームをどのように加工するかを示したシナリオデータを作成するために用いられるものである。シナリオデータの形式は特に限定されないが、本実施形態では、XML(eXtensible Markup Language)を採用している。シナリオデータとしてXMLを採用した本実施形態では、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82は、テキストエディタで実現することができる。したがって、テキストエディタを起動し、管理者が文字入力デバイスを用いて、文字入力を行うことにより、シナリオデータが作成される。
【0029】
図10は、ターゲットが1人の場合のXML形式のシナリオデータの一例を示す図である。ここからは、図10のシナリオデータを参照しながら、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82について詳細に説明する。合成ターゲット定義手段80は、ターゲットID、タイプ、絶対座標、移り変わり設定の4つの属性を設定することによりターゲットを定義する。図10の例では、3行目の<Simulation Targets>と、9行目の</Simulation Targets>の2つのタグで囲まれた範囲に対応する。タイプについては、人と場所の2種を設定可能であるが、図10の例では、<Human>タグを用いて人についてのみ設定している。移り変わり設定は、人に対してのみ設定可能となっており、対応付け済みの人が消失した場合、新たな人に対応付けるかどうかを設定するものである。図10の例では、5行目のタグで、ターゲットID、タイプ、移り変わり設定の3属性を設定しており、ターゲットIDは“0”、タイプは“human(人)”、移り変わり設定(IsTransfer)は“false(設定しない)”となっている。
【0030】
合成コンテンツ定義手段81は、コンテンツID、コンテンツのパス、重なり設定の3つの属性を設定することによりコンテンツを定義する。図10の例では、10行目の<Simulation Contents>と、18行目の</Simulation Contents >の2つのタグで囲まれた範囲に対応する。図10の例では、コンテンツID(ContentsID)が“0”から“6”までの7つのコンテンツについて定義されている。図10に示すように、各コンテンツについて1行単位で、コンテンツのパス(ContentsPath)、重なり設定(OverlapOrder)が設定される。
【0031】
アニメーションシナリオ定義手段82は、コマンドID、コマンドタイプ、開始キー、終了キー、キータイプ、ターゲットID、コンテンツIDの7つの属性を設定することによりアニメーションシナリオを定義する。図10の例では、19行目の<Animation Commands>と、34行目の</Animation Commands>の2つのタグで囲まれた範囲に対応する。図10の例では、コマンドID(CommandID)が“0”から“6”までの7つのコマンドについて定義されている。図10に示すように、各コマンドについて2行単位で、コマンドタイプ、開始キー、終了キー、キータイプ、ターゲットID、コンテンツIDが設定される。コマンドタイプとは、どのようなフレームを基にどのようなタイプの効果を生じさせるかを示すものであり、レイヤ合成、αブレンド合成、音声再生開始、シーン合成が用意されている。このうち、レイヤ合成、αブレンド合成、シーン合成は、画像合成のタイプを示すものであり、レイヤ合成は、コンテンツを上書き合成するものであり、αブレンド合成は、設定されたα比率に応じてコンテンツとフレームを透過させて合成するものであり、シーン合成は、人体部分を切り抜き、背景画像と合成するものである。図10の例では、コマンドタイプ(CommandType)として、レイヤ合成(LayerMontage)が設定されている。開始キー、終了キーは各コマンドの開始時点、終了時点を設定するものである。本実施形態では、シナリオデータの時間を、シナリオ開始時を“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”として、開始キー、終了キーが認識されることになる。
【0032】
シナリオデータの<CycleInterval>タグは、シナリオの開始から終了までの時間を秒単位で設定するものであり、図10の例では、1行目の<CycleInterval>タグにおいて“10”が設定されているので、シナリオの開始から終了まで10秒であることを示している。開始キー、終了キーの値を10倍した実時間でシナリオは管理されることになる。シナリオデータの<IsAutoLoop>タグは、ループ処理(繰り返し処理)を行うかどうかを設定するものであり、図10の例では、2行目の<IsAutoLoop>タグにおいて“true”が設定されているので、ループ処理を行うことを示している。<CycleInterval>タグおよび<IsAutoLoop>タグについても、テキストエディタにより設定が可能である。このようにして、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82により作成されたシナリオデータは、シナリオデータ記憶手段としてのデータ記憶装置2dに格納される。
【0033】
画像処理装置2が、ビデオカメラ4によって撮影された映像のフレームを時系列で解析することで、画像処理装置2のデータ記憶装置2dには、閲覧測定に利用可能なログファイルとして、ディスプレイの閲覧時間が記憶される閲覧時間ログファイルと、ディスプレイを閲覧した人物の位置が記憶される位置ログファイルと、ディスプレイを閲覧した人物の人物属性(例えば,年齢・性別)が記憶される人物属性ログファイルと、ディスプレイの前にいる人物の総人数、ディスプレイを閲覧していない人物の人数、ディスプレイを閲覧した人物の人数が記憶される人数ログファイルが記憶され、これらのログファイルを出力するログファイル出力手段27が画像処理装置2には備えられている。本発明では、ログファイルを作成することは必須ではないが、ログファイルを作成する過程における顔オブジェクト、閲覧開始時刻が、合成画像の生成に利用される。
【0034】
まず、ビデオカメラ4から送信された映像のフレームを画像処理装置2が解析する処理を説明しながら、ビデオカメラ4によって撮影された映像のフレームを解析、加工するために備えられた各手段について説明する。
【0035】
≪2.処理動作≫
図4は、ビデオカメラ4から送信された映像のフレームを画像処理装置2が解析する処理を説明するフロー図である。それぞれの処理の詳細は後述するが、画像処理装置2に映像の一つのフレームが入力されると、画像処理装置2は該フレームについて背景除去処理S1を行い、背景除去処理S1した後のフレームについて、顔検出処理S2及び人体検出処理S3を行う。
【0036】
画像処理装置2は、背景除去処理S1した後のフレームについて、顔検出処理S2及び人体検出処理S3を行った後、顔検出処理S3の結果を利用して、今回の処理対象となるフレームであるNフレームから検出された顔と、一つ前のフレームであるN−1フレームから検出された顔を対応付けるトラッキング処理S4を行い、トラッキング処理S4の結果を踏まえて顔オブジェクトの状態を遷移させる状態遷移管理処理S5を実行する。
【0037】
まず、背景除去処理S1について説明する。背景除去処理S1を担う手段は、画像処理装置2の背景除去手段20である。画像処理装置2が背景除去処理S1を実行するのは、図1に図示しているように、ディスプレイ3の上部に設けられたビデオカメラ4の位置・アングルは固定であるため、ビデオカメラ4が撮影した映像には変化しない背景が含まれることになり、この背景を除去することで、精度よく人体・顔を検出できるようにするためである。
【0038】
画像処理装置2の背景除去手段20が実行する背景除去処理としては既存技術を利用でき、ビデオカメラ4が撮影する映像は、例えば、朝、昼、夜で光が変化する場合があるので、背景の時間的な変化を考慮した動的背景更新法を用いることが好適である。
【0039】
背景の時間的な変化を考慮した動的背景更新法としては、例えば、「森田 真司, 山澤 一誠, 寺沢 征彦, 横矢 直和: "全方位画像センサを用いたネットワーク対応型遠隔監視システム", 電子情報通信学会論文誌(D-II), Vol. J88-D-II, No. 5, pp. 864-875, (2005.5)」に記載されている手法を用いることができる。
【0040】
次に、画像処理装置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.」で述べられている。
【0041】
弱い識別器として白黒のHaar-Like特徴を用いたAdaboostアルゴリズムによる顔検出法を実行することで、フレームに含まれる顔画像毎に顔検出枠データが得られ、この顔検出枠データには、顔画像を検出したときに利用した顔検出枠の位置(例えば、左上隅の座標)・矩形サイズ(幅及び高さ)が含まれる。
【0042】
次に、画像処理装置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.」で述べれられている。
【0043】
弱い識別器としてHOG特徴を用いたAdaboostアルゴリズムによる人体検出法を実行することで、フレームに含まれる人体毎に人体検出枠データが得られ、この人体検出枠データには、人体画像を検出したときに利用した人体検出枠の位置(例えば、左上隅の座標)・矩形サイズ(幅及び高さ)が得られる。
【0044】
図8は、人体及び顔検出結果を説明するための図である。図8のフレーム7で撮影されている人物は、人物7a〜7fの合計6人が含まれ,画像処理装置2の人体検出手段22はそれぞれの人物7a〜7fを検出し、それぞれの人物7a〜7fに対応する人体検出枠データ70a〜70fを出力する。また、画像処理装置2の顔検出手段21は、両眼が撮影されている人物7a〜7cの顔を検出し、それぞれの顔に対応する顔検出枠データ71a〜71cを出力する。
【0045】
次に、画像処理装置2のトラッキング手段23によって実行されるトラッキング処理S4について説明する。トラッキング処理S4では、画像処理装置2のトラッキング手段23によって、顔検出手段21がN−1フレームから検出した顔検出枠データと、顔検出手段21がNフレームから検出した顔検出枠データを対応付ける処理が実行される。
【0046】
ここから,画像処理装置2のトラッキング手段23によって実行されるトラッキング処理S4について詳細に説明する。図5は、画像処理装置2のトラッキング手段23によって実行されるトラッキング処理S4を説明するためのフロー図である。
【0047】
画像処理装置2のトラッキング手段23は、Nフレームをトラッキング処理S4するために、まず、Nフレームから得られた顔検出枠データ及び人体検出枠データをそれぞれ顔検出手段21及び人体検出手段22から取得する(S10)。
【0048】
なお、次回のトラッキング処理S4において、Nフレームから得られた顔検出枠データは、N−1フレームの顔検出枠データとして利用されるため、画像処理装置2のトラッキング手段23は、Nフレームから得られた顔検出枠データをRAM2cまたはデータ記憶装置2dに記憶する。
【0049】
画像処理装置2のトラッキング手段23は、Nフレームの顔検出枠データ及び人体検出枠データを取得すると、Nフレームの人体検出枠データ毎に、ディスプレイの閲覧判定を行う(S11)。
【0050】
上述しているように、人体検出枠データには人体検出枠の位置及び矩形サイズが含まれ、顔検出枠データには顔検出枠の位置及び矩形サイズが含まれるため、顔検出枠が含まれる人体検出枠データは、ディスプレイ3を閲覧している人物の人体検出枠データと判定でき、また、顔検出枠が含まれない人体検出枠データは、ディスプレイ3を閲覧していない人物の人体検出枠データと判定できる。
【0051】
画像処理装置2のトラッキング手段23は、このようにして、Nフレームの人体検出枠データ毎にディスプレイの閲覧判定を行うと、Nフレームが撮影されたときの人数ログファイルとして、ディスプレイ3の前にいる人物の総人数、すなわち、人体検出手段22によって検出された人体検出枠データの数と、ディスプレイ3を閲覧していない人物の人数、すなわち、顔検出枠が含まれていない人体検出枠データの数と、ディスプレイ3を閲覧している人物の人数、すなわち、顔検出枠が含まれる人体検出枠データの数を記載した人数ログファイルを生成し、Nフレームのフレーム番号などを付与してデータ記憶装置2dに記憶する。
【0052】
画像処理装置2のトラッキング手段23は、Nフレームの人体検出枠データ毎に、ディスプレイの閲覧判定を行うと、顔検出手段21がN−1フレームから検出した顔検出枠データと、顔検出手段21がNフレームから検出した顔検出枠データを対応付ける顔検出枠データ対応付け処理S12を実行する。
【0053】
図6は、顔検出枠データ対応付け処理S12を説明するためのフロー図で、本実施形態では、図6で図示したフローにおいて、以下に記述する数式1の評価関数を用いて得られる評価値を利用して、顔検出枠データの対応付けがなされる。
【0054】
なお、数式1の評価関数f1()は、ニアレストネイバー法を用いた評価関数で、評価関数f1()で得られる評価値は、顔検出枠データの位置・矩形サイズの差を示した評価値になる。また、数式1の評価関数f2()で得られる評価値は、評価関数f1()から求められる評価値に、顔検出枠データで特定される顔検出枠に含まれる顔画像から得られ、顔画像の特徴を示すSURF特徴量の差が重み付けして加算された評価値になる。
【数1】

【0055】
N−1フレームから検出した顔検出枠データとNフレームから検出した顔検出枠データを対応付けるために、画像処理装置2のトラッキング手段23は、まず、Nフレームから得られた顔検出枠データの数だけループ処理L1を実行する。
【0056】
このループ処理L1において、画像処理装置2のトラッキング手段23は、まず、N−1フレームから検出された顔検出枠データの数だけループ処理L2を実行し、このループ処理L2では、ループ処理L1の処理対象となる顔検出枠データの位置・矩形サイズと、ループ処理L2の処理対象となる顔検出枠データの位置・矩形サイズが、数式1の評価関数f1()に代入して評価値を算出し(S120)、ループ処理L1の対象となる顔検出枠データとの位置・サイズの差を示す評価値が、N−1フレームから検出された顔検出枠データ毎に算出される。
【0057】
画像処理装置2のトラッキング手段23は、ループ処理L1の処理対象となる顔検出枠データとの位置・サイズの差を示す評価値を、N−1フレームから検出された顔検出枠データ毎に算出すると、該評価値の最小値を検索し(S121)、該評価値の最小値と他の評価値との差分を算出した後(S122)、閾値以下の該差分値があるか判定する(S123)。
【0058】
そして、画像処理装置2のトラッキング手段23は、ループ処理L1の処理対象となる顔検出枠データとの位置・サイズの差を示す評価値の最小値と他の評価値との差分の中に、閾値以下の差分がある場合,画像処理装置2のトラッキング手段23は、評価値が閾値以内である顔検出枠データ数だけループ処理L3を実行する。
【0059】
このループ処理L3では、ループ処理L1の処理対象となる顔検出枠データで特定される顔検出枠内の顔画像と、ループ処理L3の処理対象となるN−1フレームの顔検出枠データで特定される顔検出枠内の顔画像とのSURF特徴量の差が求められ、SURF特徴量の差が数式1の評価関数f2()に代入され、SURF特徴量の差を加算した評価値が、N−1フレームから検出された顔検出枠データ毎に算出される(S124)。
【0060】
数式1で示した評価関数f2()を用い、SURF特徴量の差を加算した評価値を算出するのは、ニアレストネイバー法のみを利用した評価関数f1()を用いて求められた評価値の最小値と他の評価値との差分値に閾値以下がある場合、サイズの似た顔検出枠が近接していると考えられ(例えば,図8の人物7a,b),ニアレストネイバー法の評価値からでは、Nフレームの顔検出枠データに対応付けるN−1フレームの顔検出枠データが判定できないからである。
【0061】
数式1で示した評価関数f2()を用い、SURF特徴量の差を加算した評価値を算出することで、顔の特徴が加味された評価値が算出されるので、該評価値を用いることで、サイズの似た顔検出枠が近接している場合は、顔が似ているN−1フレームの顔検出枠データがNフレームの顔検出枠データに対応付けられることになる。
【0062】
そして、画像処理装置2のトラッキング手段23は、数式1の評価関数から得られた評価値が最小値であるN−1フレームの顔検出枠データを、ループ処理L1の対象となるNフレームの顔検出枠データに対応付ける処理を実行する(S125)。なお、数式1で示した評価関数f2()を用いた評価値を算出していない場合、この処理で利用される評価値は、数式1で示した評価関数f1()から求められた値になり、数式1で示した評価関数f2()を用いた評価値を算出している場合、この処理で利用される評価値は、数式1で示した評価関数f2()から求められた値になる。
【0063】
ループ処理L1が終了し、画像処理装置2のトラッキング手段23は、Nフレームの顔検出枠データとN−1フレームの顔検出枠データを対応付けすると、N−1フレームの顔検出枠データが重複して、Nフレームの顔検出枠データに対応付けられていないか確認する(S126)。
【0064】
N−1フレームの顔検出枠データが重複して、Nフレームの顔検出枠データに対応付けられている場合、画像処理装置2のトラッキング手段23は、重複して対応付けられているN−1フレームの顔検出枠データの評価値を参照し、評価値が小さい方を該Nフレームの顔検出枠データに対応付ける処理を再帰的に実行することで、最終的に、Nフレームの顔検出枠データに対応付けるN−1フレームの顔検出枠データを決定する(S127)。
【0065】
ここから、図4で図示したフローの説明に戻る。トラッキング処理S4が終了すると、画像処理装置2の状態遷移管理手段25によって、トラッキング処理S4から得られ、一つ前と今回の顔検出枠データの対応付け結果を参照し、事前に定めた状態遷移表に従い顔オブジェクトの状態を遷移させ、顔オブジェクトの状態遷移に応じたログを記憶する状態遷移管理処理S5が実行され、この状態遷移管理処理S5で所定の状態遷移があると、該状態遷移に対応した所定のログファイルがデータ記憶装置2dに記憶される。
【0066】
画像処理装置2の状態遷移管理手段25には、顔オブジェクトの状態遷移を管理するために、予め、顔オブジェクトの状態と該状態を状態遷移させるルールが定義された状態遷移表が定められており、画像処理装置2のトラッキング手段23は、この状態遷移表を参照し、顔検出枠データ対応付け処理S12の結果に基づき顔オブジェクトの状態を遷移させる。
【0067】
ここから、状態遷移表の一例を例示し、該状態遷移表の説明をしながら、画像処理装置2の状態遷移管理手段25によって実行される状態遷移管理処理S5について説明する。
【0068】
図7は、本実施形態における状態遷移表6を説明する図である。図7で図示した状態遷移表6によって、顔オブジェクトの状態と、N−1フレームの状態からNフレームの状態への遷移が定義され、状態遷移表6の縦軸はN−1フレームの状態で、横軸はNフレームの状態で,縦軸と横軸が交差する箇所に状態遷移する条件が記述されている。なお、状態遷移表に「―」は不正な状態遷移を示している。
【0069】
図7で図示した状態遷移表6には、顔オブジェクトの状態として、None、候補Face、現在Face、待機Face、ノイズFace及び終了Faceが定義され、状態遷移表で定義された状態遷移を説明しながら、それぞれの状態について説明する。
【0070】
顔オブジェクトの状態の一つであるNoneとは、顔オブジェクトが存在しない状態を意味し、Nフレームの顔検出枠データに対応付けるN−1フレームの顔検出枠データが無い場合(図7の条件1)、画像処理装置2の状態遷移管理手段25は、顔オブジェクトを識別するためのID、該Nフレームの顔検出データ、顔オブジェクトに付与された状態に係わるデータなどを属性値と有する顔オブジェクトを新規に生成し、該顔オブジェクトの状態を候補Faceに設定する。
【0071】
顔オブジェクトの状態の一つである候補Faceとは、新規に検出した顔画像がノイズである可能性がある状態を意味し、顔オブジェクトの状態の一つに候補Faceを設けているのは、複雑な背景の場合、背景除去処理を行っても顔画像の誤検出が発生し易く、新規に検出できた顔画像がノイズの可能性があるからである。
【0072】
候補Faceの状態である顔オブジェクトには、候補Faceの状態に係わるデータとして、候補Faceの状態であることを示す状態IDと、候補Faceへ状態遷移したときの日時及びカウンタが付与される。
【0073】
候補Faceから状態遷移可能な状態は、候補Face、現在Face及びノイズFaceで、事前に定められた設定時間内において、候補Faceの状態である顔オブジェクトに対応する顔検出枠が所定の数だけ連続してトラッキングできた場合(図7の条件2−2)、該顔オブジェクトの状態は候補Faceから現在Faceに遷移する。
【0074】
候補Faceの状態である顔オブジェクトの属性にカウンタを設けているのは、設定時間内において、候補Faceの状態である顔オブジェクトに対応する顔検出枠を連続してトラッキングできた回数をカウントするためで、画像処理装置2の状態遷移管理手段25は、Nフレームの顔検出枠データに対応付けられたN−1フレームの顔検出データが含まれている顔オブジェクトの状態が候補Faceの場合、該顔オブジェクトに付与されている顔検出枠データをNフレームの顔検出枠データに更新すると共に、該顔オブジェクトのカウンタをインクリメントする。
【0075】
そして、画像処理装置2の状態遷移管理手段25は、状態遷移管理処理S5を実行する際、候補Faceである顔オブジェクト毎に、候補Faceへ状態遷移したときの日時を参照し、設定時間以内に該カウンタの値が事前に定めた設定値に達している場合は、顔オブジェクトの状態を現在Faceに状態遷移させる。また、画像処理装置2の状態遷移管理手段25は、この時点で設定時間が経過しているが、該カウンタが設定値に達しなかった該顔オブジェクトの状態をノイズFaceに状態遷移させ(図7の条件2−3)、該設定時間が経過していない該顔オブジェクトについては状態を状態遷移させない(図7の条件2−1)。
【0076】
顔オブジェクトの状態の一つであるノイズFaceとは、画像処理装置2の顔検出手段21が検出した顔画像がノイズと判定された状態で、ノイズFaceに状態遷移した顔オブジェクトは消滅したと見なされ、これ以降の状態遷移管理処理S5に利用されない。
【0077】
顔オブジェクトの状態の一つである現在Faceとは、顔オブジェクトに対応する人物がディスプレイ3を閲覧状態と判定できる状態で、現在Faceの状態にある時間が、顔オブジェクトに対応する人物がディスプレイ3を閲覧している時間となる。
【0078】
画像処理装置2の状態遷移管理手段25は、顔オブジェクトの状態を候補Faceから現在Faceに状態遷移すると、該顔オブジェクトの顔検出枠データをNフレームの顔検出枠データに更新すると共に、現在Faceに係わるデータとして、現在Faceの状態であることを示す状態IDと現在Faceに状態遷移させたときの日時を顔オブジェクトに付与する。
【0079】
また、ディスプレイを閲覧している人物の人物属性(例えば、年齢・性別)をログとして記憶するために、顔オブジェクトの状態を現在Faceに状態遷移すると、画像処理装置2の状態遷移管理手段25は人物属性推定手段26を作動させ、現在Faceに状態遷移させた顔オブジェクトの顔検出枠データで特定される顔検出枠から得られる人物属性を取得し、該顔オブジェクトのオブジェクトID、人物属性が記述された属性ログファイルをデータ記憶装置2dに記憶する。
【0080】
なお、画像処理装置2に備えられた人物属性推定手段26については詳細な記載はしないが、人物の顔画像から人物の人物属性(年齢・性別)を自動で識別することは、タバコの自動販売機などでも広く利用されており、例えば、特開2007―080057号公報の技術を利用できる。
【0081】
更に、画像処理装置2の状態遷移管理手段25は、顔オブジェクトの状態を現在Faceに状態遷移すると、ディスプレイ3を閲覧している人物の位置を時系列で記憶するための位置ログファイルをデータ記憶装置2dに新規に生成する。生成時の位置ログファイルには、現在Faceに状態遷移した顔オブジェクトのオブジェクトIDと、現在Faceに状態遷移した顔オブジェクトに含まれる顔検出枠データが付与される。
【0082】
現在Faceの状態から状態遷移可能な状態は、現在Face及び待機Faceである。画像処理装置2の状態遷移管理手段25は、Nフレームの顔検出枠データに対応付けられたN−1フレームの顔検出データを含む顔オブジェクトの状態が現在Faceの場合(条件3−1)、該顔オブジェクトに付与されている顔検出枠データをNフレームにおける顔検出枠データに更新すると共に、該顔検出枠データを、該顔オブジェクトのオブジェクトIDで特定される位置ログファイルに追加する。
【0083】
また、画像処理装置2の状態遷移管理手段25は、状態遷移管理処理S5を行う際、Nフレームの顔検出枠データが対応付けられなかったN−1フレームの顔検出枠データが付与されている顔オブジェクトの状態が現在Faceの場合、動画解析手段24を作動させて、動画解析手法により、該N−1フレームの顔検出枠データに対応する顔画像をNフレームから検出する処理を実施する。
【0084】
本実施形態において、画像処理装置2の動画解析手段24は、まず、Nフレームの顔検出枠データが対応付けられなかったN−1フレームの顔検出枠データと既に対応付けられているNフレームの顔検出枠データの間で、オクルージョン状態の判定を行い、対象となる人物の顔が完全に隠れた状態のオクルージョンであるか確認する。
【0085】
画像処理装置2の動画解析手段24は、この時点で存在し、現在Face、候補Face及び待機Faceの状態である全ての顔オブジェクトについて、数式2に従い,顔オブジェクトのオクルージョン状態を判定する処理を実行する。
【数2】

【0086】
画像処理装置2の動画解析手段24は、数式2に従い、顔オブジェクトのオクルージョン状態を判定する処理を実行すると、判定結果に基づき処理を分岐する。
【0087】
トラッキング対象である人物が完全に隠れた状態のオクルージョンである可能性が高いと判断できた場合(数式2の判定基準1に該当する場合)、パーティクルフィルタによるトラッキング行い、対象となる顔オブジェクトの位置・矩形サイズを検出する。なお、パーティクルフィルタについては,「加藤丈和: 「パーティクルフィルタとその実装法」、情報処理学会研究報告, CVIM-157, pp.161-168 (2007).」など数多くの文献で述べられている。
【0088】
また、トラッキング対象である人物が半分隠れた状態のオクルージョンで可能性が高いと判断できた場合(数式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.」で述べられている。
【0089】
そして、トラッキング対象である人物にオクルージョンはない可能性が高いと判定できた場合(数式3の判定基準3に該当する場合)、画像処理装置2の動画解析手段24は、CamShift手法を用いたトラッキングを行い、対象となる顔オブジェクトの位置・矩形サイズを検出する。なお、CamShift手法については、「G. R. Bradski: "Computer vision face tracking foruse in a perceptual user interface," Intel Technology Journal, Q2, 1998.」で述べられている。
【0090】
画像処理装置2の状態遷移管理手段25は、これらのいずれかの手法で対象となる顔画像がNフレームから検出できた場合、現在Faceの状態である顔オブジェクトの顔検出データを、これらの手法で検出された位置・矩形サイズに更新し、これらのいずれかの手法でも対象となる顔画像がトラッキングできなかった場合、現在Faceの状態である顔オブジェクトの状態を待機Faceに状態遷移させる(図7の条件3−2)。
【0091】
顔オブジェクトの状態の一つである待機Faceとは、画像処理装置2に備えられた動画解析手段24を用いても、顔オブジェクトに対応する顔画像を検出できなくなった状態である。
【0092】
また、画像処理装置2の状態遷移管理手段25は、顔オブジェクトの状態を待機Faceに状態遷移する際、顔オブジェクトの顔検出枠データは更新せず、待機Faceに係わるデータとして、待機Faceの状態であることを示す状態IDと、該顔オブジェクトが現在Faceに状態遷移したときの日時と、該顔オブジェクトが待機Faceに状態遷移したときの日時を顔オブジェクトに付与する。
【0093】
待機Faceから状態遷移可能な状態は、現在Faceまたは終了Faceである。画像処理装置2の状態遷移管理手段25は、待機Faceに状態遷移してからの時間が所定時間経過する前に、Nフレームの顔検出枠データを含む顔オブジェクトを検索し、該顔オブジェクトの状態が待機Faceであった場合、該顔オブジェクトの状態を待機Faceから現在Faceに状態遷移させる(図7の条件4−1)。
【0094】
なお、顔オブジェクトの状態を待機Faceから現在Faceに状態遷移させる際、画像処理装置2の状態遷移管理手段25は、該顔オブジェクトが現在Faceに状態遷移したときの日時は、待機Faceの状態のときに顔オブジェクトに付与されていた該日時を利用する。
【0095】
また、画像処理装置2のトラッキング手段23は、顔オブジェクトの状態遷移を管理する処理を実行する際、待機Faceに状態遷移してからの時間が所定時間経過した顔オブジェクトの状態を終了Faceに状態遷移させ(図7の条件4−3)、該設定時間が経過していない該顔オブジェクトについては状態を遷移させない(図7の条件4−2)。
【0096】
顔オブジェクトの状態の一つである終了Faceとは、画像処理装置2が検出できなくなった人物に対応する状態で、状態が終了Faceになった顔オブジェクトは消滅したと見なされ、これ以降の状態遷移管理処理S5で利用されない。
【0097】
なお、画像処理装置2の状態遷移管理手段25は、顔オブジェクトの状態を終了Faceに状態遷移する前に、該顔オブジェクトのオブジェクトID、該顔オブジェクトが現在Faceに状態遷移したときの日時である閲覧開始時刻、該顔オブジェクトが待機Faceに状態遷移したときの日時である閲覧終了時刻を記述した閲覧時間ログファイルを生成しデータ記憶装置2dに記憶させる。
【0098】
以上詳しく説明したように、画像処理装置2は、顔検出手段21が検出した顔毎に生成する顔オブジェクトの状態として、None、候補Face、現在Face、待機Face、ノイズFace及び終了Faceの5つを状態遷移表6で定義し,顔オブジェクトに対応する顔のトラッキング結果に従い、顔オブジェクトの状態を遷移させることで、顔オブジェクトの状態遷移に従い、ディスプレイ3の閲覧時間をログとして記憶することが可能になる。
【0099】
上述した内容に従えば、顔オブジェクトの状態が現在Faceである間は、顔オブジェクトに対応する顔を連続して検出できたことになるため、現在Faceの状態にあった時間は、ディスプレイ3の閲覧時間になる。
【0100】
また、顔オブジェクトの状態として候補Faceを定義しておくことで、ノイズによって顔を誤検出した場合でも、ディスプレイ3の閲覧時間への影響はなくなる。また、顔オブジェクトの状態として待機Faceを定義しておくことで、顔を見失った後に、同じ顔を検出した場合でも、同じ顔として取り扱うことができるようになる。
【0101】
≪3.シナリオデータを用いた合成処理≫
≪3.1.ターゲットが1人の場合≫
図9は、ビデオカメラ4から送信された映像のフレームを基に、画像処理装置2が合成画像を作成する処理を説明するフロー図である。画像処理装置2を起動し、使用するシナリオデータを指定すると、まず、シナリオデータ対応付け手段83が、指定されたシナリオデータをデータ記憶装置2dから読み込む(S21)。そして、シナリオデータ対応付け手段83は、シナリオデータを解釈し、シナリオデータに従った画像の作成を開始する(S22)。
【0102】
次に、シナリオデータ対応付け手段83は、状態遷移管理手段25により生成された顔オブジェクトデータを取得する(S23)。顔オブジェクトデータは、オブジェクトID、顔検出枠データ(位置、矩形サイズ)、閲覧時間で構成される。
【0103】
続いて、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した顔オブジェクトデータをシナリオデータに対応付ける処理を行う(S24)。具体的には、顔オブジェクトデータに含まれる顔検出枠データのオブジェクトIDとターゲットIDを対応付ける。状態遷移管理手段25から複数の顔検出枠データを取得した場合は、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。図10の例では、シナリオデータには、ターゲットID“0”の1つだけ設定されているので、シナリオデータ対応付け手段83は、ターゲットID“0”が対応付けられたオブジェクトIDで特定される顔検出枠データをターゲットとすることになる。
【0104】
次に、合成画像作成手段84が、フレーム単位で表示用の合成画像を作成する処理を行う(S25)。具体的には、まず、開始時点を時刻“0.0”と設定し、この時刻“0.0”で、シナリオデータの<Animation Commands>を参照する。すると、図10に示すように、開始キー“0.0”から終了キー“0.1”までは、キータイプ“own”、コマンドタイプ“LayerMontage(レイヤ合成)”、ターゲットID“0”、コンテンツID“0”であるので、合成画像作成手段84は、ターゲットID“0”の顔検出枠データに、コンテンツID“0”をレイヤ合成することにより、合成画像を作成することになる。
【0105】
コンテンツID“0”のコンテンツ(合成用素材)は、シナリオデータの<Simulation Contents>を参照することにより、コンテンツのパスが特定できるので、そのパスで特定されるデータ記憶装置2d内の記憶位置からコンテンツを取得する。上述のように、コンテンツには矩形情報が設定されているので、合成画像作成手段84は、この矩形情報と顔検出枠データの矩形サイズが一致するように矩形情報とコンテンツのサイズを変更し、変更したコンテンツを、変更後の矩形情報と顔検出枠データの位置が一致する位置にレイヤ合成を行う。具体的には、図12(b)に示すような顔画像に設定された顔検出枠データの矩形に合わせて、コンテンツに設定された矩形の大きさを変更し、コンテンツに設定された矩形の変更割合に合わせてコンテンツをリサイズし、2つの矩形が一致するように合成処理を行う。この結果、例えば、図12(a)のようにコンテンツがカツラである場合、人の顔に合わせてカツラを被せたような状態の合成画像(図12(c))が得られることになる。合成画像作成手段84は、得られた合成画像を、ディスプレイ3に表示させる。この結果、ディスプレイ3には、撮影映像のフレームに加工が施された合成画像が表示されることになる。
【0106】
1つのフレームについて合成画像の作成を終えたら、シナリオデータ対応付け手段83は、シナリオ中であるかどうかを判断する(S26)。具体的には、シナリオデータに従った画像作成開始からの経過時間でシナリオデータ内の<CycleInterval>タグを参照し、経過時間がシナリオ時間未満である場合は、シナリオ中であると判断し、経過時間がシナリオ時間以上である場合は、シナリオ終了であると判断する。シナリオ中であると判断した場合には、シナリオデータ対応付け手段83は、S23に戻って、顔オブジェクトデータを取得する。
【0107】
そして、S24において、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した次の顔オブジェクトデータをシナリオデータに対応付ける処理を行う。このときも1回目のループと同様、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。そして、シナリオデータに従って、シナリオデータ対応付け手段83は、ターゲットID“0”が対応付けられたオブジェクトIDで特定される顔検出枠データをターゲットとする。
【0108】
次に、S25において、合成画像作成手段84が、フレーム単位で合成画像を作成する処理を行う。具体的には、経過時間を取得し、取得した経過時間で、シナリオデータの<Animation Commands>を参照する。取得した経過時間が、“0.1”より小さい場合は、上述の場合と同様、図10のシナリオデータに示すように、開始キー“0.0”から終了キー“0.1”の間であるので、キータイプ“own”、コマンドタイプ“LayerMontage(レイヤ合成)”、ターゲットID“0”、コンテンツID“0”であるので、合成画像作成手段84は、ターゲットID“0”の顔検出枠データに、コンテンツID“0”をレイヤ合成することにより、合成画像を作成する。取得した経過時間が、“0.1”を超えていた場合、図10に示すように、開始キー“0.1”から終了キー“0.3”までは、キータイプ“own”、コマンドタイプ“LayerMontage(レイヤ合成)”、ターゲットID“0”、コンテンツID“1”であるので、合成画像作成手段84は、ターゲットID“0”の顔検出枠データに、コンテンツID“1”をレイヤ合成することにより、合成画像を作成することになる。このようにして、S26においてシナリオ終了であると判断されるまでは、経過時間に従い、シナリオデータを実行する処理を繰り返し行う。
【0109】
S26において、シナリオ終了であると判断した場合には、シナリオデータ対応付け手段83は、繰り返して処理を行うかどうかを判断する(S27)。具体的には、シナリオデータ内の<IsAutoLoop>タグを参照し、“true”が設定されている場合は、繰り返して処理を行うと判断する。繰り返して処理を行うと判断した場合には、シナリオデータ対応付け手段83は、経過時間を“0”にリセットし、経過時間の計測を再び開始するとともに、S22に戻って、シナリオデータに従った画像の作成を開始する。このように、映像の各フレームから得られた合成画像を順次ディスプレイに表示することにより、加工映像として表示されることになる。
【0110】
図13は、図10のシナリオデータに従って得られた合成画像の表示状態を示す図である。まず、フレームにフキダシ「こんにちは」が合成された合成画像が表示される(ア)。シナリオ開始時(StartKey="0.0")から経過時間1秒(EndKey="0.1")までのフレームについては、全てフキダシ「こんにちは」(ContentsID="0")が合成された合成画像が表示されることになる。この際、ContentsID="0"で<SimulationContents>を参照することにより、コンテンツのコンテンツ記憶手段内における所在“fukidashi001.jpg”を特定し、フキダシ「こんにちは」のコンテンツを取得する。
【0111】
次に、経過時間1秒(StartKey="0. 1")になると、フキダシ「今日の髪素敵でしょ?」(ContentsID="1")が合成された合成画像が表示される(イ)。経過時間1秒(StartKey="0. 1")から経過時間3秒(EndKey="0. 3")までのフレームについては、全てフキダシ「今日の髪素敵でしょ?」が合成された合成画像が表示されることになる。この際、ContentsID="1"で<SimulationContents>を参照することにより、コンテンツのコンテンツ記憶手段内における所在“fukidashi002.jpg”を特定し、フキダシ「今日の髪素敵でしょ?」のコンテンツを取得する。
【0112】
経過時間3秒(StartKey="0.3")になると、フキダシ「もう少しカジュアルにしようかな」(ContentsID="2")が合成された合成画像が表示される(ウ)。この際、ContentsID="2"で<SimulationContents>を参照することにより、コンテンツのコンテンツ記憶手段内における所在“fukidashi003.jpg”を特定し、フキダシ「もう少しカジュアルにしようかな」のコンテンツを取得する。
【0113】
経過時間3秒(StartKey="0.3")から経過時間6秒(EndKey="0.6")までのフレームについては、全てフキダシ「もう少しカジュアルにしようかな」が合成された合成画像が表示されることになる。経過時間6秒(StartKey="0.6")になると、黒いカツラ(ContentsID="5")が合成された合成画像が表示される(エ)。この際、ContentsID="5"で<SimulationContents>を参照することにより、コンテンツのコンテンツ記憶手段内における所在“afro.jpg”を特定し、黒いカツラのコンテンツを取得する。経過時間6秒(StartKey="0.6")から経過時間7秒(EndKey="0.7")までのフレームについては、全て黒いカツラが合成された合成画像が表示されることになる。
【0114】
経過時間7秒(StartKey="0.7")になると、フキダシ「こっちがいいかな」(ContentsID="3")と、金髪のカツラ(ContentsID="6")が合成された合成画像が表示される(オ)。この際、ContentsID="6"で<SimulationContents>を参照することにより、コンテンツのコンテンツ記憶手段内における所在“blond.jpg”を特定し、金髪のカツラのコンテンツを取得する。経過時間7秒(StartKey="0.7")から経過時間9秒(EndKey="0.9")までのフレームについては、全てフキダシ「こっちがいいかな」と、金髪のカツラが合成された合成画像が表示されることになる。経過時間9秒(StartKey="0.9")になると、フキダシ「ねっどうでしょう」(ContentsID="4")と、金髪のカツラが合成された合成画像が表示される(カ)。この際、ContentsID="4"で<SimulationContents>を参照することにより、コンテンツのコンテンツ記憶手段内における所在“fukidashi005.jpg”を特定し、フキダシ「ねっどうでしょう」のコンテンツを取得する。経過時間9秒(StartKey="0.9")から経過時間10秒(EndKey="1.0")までのフレームについては、全て黒いカツラが合成された合成画像が表示されることになる。
【0115】
≪3.2.ターゲットが2人の場合≫
次に、ターゲットが2人の場合について説明する。図11は、ターゲットが2人の場合のXML形式のシナリオデータの一例を示す図である。図10の例と大きく異なるのは、<Simulation Targets>タグで挟まれた<Human>タグ内に、ターゲットIDが2つ設定されている点である。図11の例では、ターゲットID“0”と“1”が設定されている。<Animation Commands>タグ内では、各コマンドIDについて、1つのターゲットIDが設定される。図11の例では、コマンドID“0”“2”“3”“5”については、ターゲットID“0”が設定され、コマンドID“1”“4”“6”については、ターゲットID“1”が設定されている。
【0116】
ターゲットが2人の場合も、ターゲットが1人の場合と同様に、図9のフロー図に従って実行される。ターゲットが2人の場合は、S23において、シナリオデータ対応付け手段83が、状態遷移管理手段25により生成された顔オブジェクトデータを複数取得するので、S24において、取得したそれぞれの顔オブジェクトデータをシナリオデータに対応付ける。図11の例では、シナリオデータには、ターゲットID“0”“1”の2つが設定されているので、シナリオデータ対応付け手段83は、ターゲットID“0”“1”が対応付けられたオブジェクトIDで特定される顔検出枠データをターゲットとすることになる。これにより、ターゲットとする顔オブジェクトの顔検出枠がフレームで入れ替わるように移動したとしても、合成画像作成手段84は、それぞれの顔検出枠に合わせてコンテンツを合成することができる。
【0117】
図14は、図11のシナリオデータに従って得られた合成画像の表示状態を示す図である。まず、フレームの左側にフキダシ「こんにちは」が合成された合成画像が表示され、経過時間1秒になると、フレームの右側にフキダシ「こんにちは」が合成された合成画像が表示される(ア)。経過時間3秒になると、金髪のカツラと、黒いカツラが合成された合成画像が表示される(図示省略)。経過時間4秒になると、フキダシ「今日のあなたの髪」と、金髪のカツラと、黒いカツラが合成された合成画像が表示される(イ)。経過時間6秒になると、金髪のカツラと、黒いカツラが合成された合成画像が表示される(図示省略)。経過時間7秒になると、フキダシ「今日のあなたの髪」と、金髪のカツラと、黒いカツラが合成された合成画像が表示される(ウ)。経過時間9秒になると、フキダシ「ありがとうあなたもね」と、金髪のカツラと、黒いカツラが合成された合成画像が表示される(エ)。
【0118】
≪3.3.対話的表示を行う例≫
次に、仮想のタッチレスボタンを用いて対話的表示を行う場合について説明する。対話的表示を行うためには、対話的表示に対応するシナリオデータが必要となる。図15は、タッチレスボタンに対応(ターゲット1人)の場合のXML形式のシナリオデータの一例を示す図である。ここでは、図15のシナリオデータを参照しながら、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82の機能について説明する。合成ターゲット定義手段80は、ターゲットID、タイプ、絶対座標、移り変わり設定の4つの属性を設定することによりターゲットを定義する。図15の例では、1行目の<Simulation Targets>と、7行目の</Simulation Targets>の2つのタグで囲まれた範囲に対応する。タイプについては、人と場所の2種を設定可能であるが、図15の例では、<Human>タグを用いて人についてのみ設定している。移り変わり設定は、人に対してのみ設定可能となっており、対応付け済みの人が消失した場合、新たな人に対応付けるかどうかを設定するものである。図15の例では、3行目のタグで、ターゲットID、タイプ、移り変わり設定の3属性を設定しており、ターゲットIDは“0”、タイプは“human(人)”、移り変わり設定(IsTransfer)は“false(設定しない)”となっている。
【0119】
合成コンテンツ定義手段81は、コンテンツID、コンテンツのパス、重なり設定の3つの属性を設定することによりコンテンツを定義する。図15の例では、8行目の<Simulation Contents>と、11行目の</Simulation Contents >の2つのタグで囲まれた範囲に対応する。図15の例では、コンテンツID(ContentsID)が“0”と“1”の2つのコンテンツについて定義されている。図15に示すように、各コンテンツについて1行単位で、コンテンツのパス(ContentsPath)、重なり設定(OverlapOrder)が設定される。
【0120】
アニメーションシナリオ定義手段82は、コマンドID、コマンドタイプ、セレクタID、開始キー、終了キー、キータイプ、ターゲットID、コンテンツIDの8つの属性を設定することによりアニメーションシナリオを定義する。図15の例では、12行目の<Animation Commands>と、17行目の</Animation Commands>の2つのタグで囲まれた範囲に対応する。図15の例では、コマンドID(CommandID)が“0” と“1”の2つのコマンドについて定義されている。図15に示すように、各コマンドについて2行単位で、コマンドタイプ、セレクタID(SelectorID)、開始キー、終了キー、キータイプ、ターゲットID、コンテンツIDが設定される。コマンドタイプとは、どのようなフレームを基にどのようなタイプの効果を生じさせるかを示すものであり、レイヤ合成、αブレンド合成、音声再生開始、シーン合成が用意されている。このうち、レイヤ合成、αブレンド合成、シーン合成は、画像合成のタイプを示すものであり、レイヤ合成は、コンテンツを上書き合成するものであり、αブレンド合成は、設定されたα比率に応じてコンテンツとフレームを透過させて合成するものであり、シーン合成は、人体部分を切り抜き、背景の上に合成するものである。図15の例では、コマンドタイプ(CommandType)として、レイヤ合成(LayerMontage)が設定されている。
【0121】
セレクタIDは、実行するコマンドを特定するための条件であり、そのセレクタIDに対応するコマンドIDのコマンドが実行される。セレクタにより特定された1以上のコマンドの集合が1つのシナリオを構成することになる。したがって、セレクタとシナリオは1対1で対応している。図15の例では、1つのシナリオが1つのコマンドで構成されており、セレクタID=0の場合に、コマンドID=0のコマンドが実行され、セレクタID=1の場合に、コマンドID=1のコマンドが実行されることを示している。開始キー、終了キーは、図10の例と同様、各コマンドの開始時点、終了時点を設定するものである。本実施形態では、シナリオデータの時間を、シナリオ開始時を“0.0”、シナリオ終了時を“1.0”として管理している。図15の例では、図10の例と異なり、全てのコマンドの開始キー(StartKey)は“0.0”、最後に終了するコマンドの終了キー(EndKey)は“1.0”となる。キータイプとは、開始キー、終了キーの基準とする対象を設定するものであり、own、base、globalの3つが用意されている。ownは各ターゲットIDに対応する顔オブジェクトの閲覧時間を基準とし、baseはターゲットID=0に対応する顔オブジェクトの閲覧時間を基準とし、globalは撮影映像の最初のフレームを取得した時間を基準とする。図15の例では、キータイプ(KeyType)として、ownが設定されているので、顔オブジェクトがフレームに登場した時点(顔オブジェクトが“閲覧開始”と判断された時点)を“0.0”として、開始キー、終了キーが認識されることになる。
【0122】
図15の例では、図10に示した<CycleInterval>タグ、<IsAutoLoop>タグが、2行目の< Human >と、4行目の</ Human >の2つのタグで囲まれた3行目のターゲットIDタグ内に含まれている。<CycleInterval>タグ、<IsAutoLoop>タグがターゲットIDタグ内に含まれている場合でも、図10の例と同様、シナリオデータの<CycleInterval>タグは、シナリオの開始から終了までの時間を秒単位で設定するものであり、シナリオデータの<IsAutoLoop>タグは、ループ処理(繰り返し処理)を行うかどうかを設定するものである。画像表示システム1は、シナリオデータに複数通りの記述形式を許容しており、図10、図15に示したように<CycleInterval>タグ、<IsAutoLoop>タグの記述位置が異なる場合であっても、シナリオデータ対応付け手段83は、<CycleInterval>タグ、<IsAutoLoop>タグを認識し、記述内容に従った処理を実行する。図15の例では、ターゲットIDタグ内でCycleInterval=“10”に設定されているので、シナリオの開始から終了まで10秒であることを示している。開始キー、終了キーの値を10倍した実時間でシナリオは管理されることになる。図15の例では、ターゲットIDタグ内でIsAutoLoop=“true”に設定されているので、ループ処理を行うことを示している。このようにして、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82により作成されたシナリオデータは、シナリオデータ記憶手段としてのデータ記憶装置2dに格納される。
【0123】
さらに、アニメーションシナリオ定義手段82は、セレクタID、セレクトタイプ、セレクトナンバー、トリガIDの4つの属性を設定することによりアニメーションセレクタを定義する。図15の例では、18行目の<AnimationSelectors SelectorsNum = "2" InitialSerectorID="0">と、21行目の</AnimationSelectors>の2つのタグで囲まれた範囲に対応する。図15の例では、セレクタID(SelectorID)が“0” と“1”の2つのセレクタについて定義されている。図15に示すように、各セレクタについて1行単位で、セレクタID(SelectorID)、セレクトタイプ(SelectType)、セレクトナンバー(SelectNum)、トリガID(TriggerID)が設定される。セレクタIDはセレクタを特定するIDである。セレクトタイプ(SelectType)は、セレクタIDの特定方法を定めるものであり、selectnum、incrementnum、decrementnum、returnnumの4つのタイプが存在する。selectnumは、直接指定されたセレクタIDを選択する。incrementnumは、選択中のセレクタIDにセレクトナンバー(SelectNum)を加算して得られるセレクタIDを選択する。decrementnumは、選択中のセレクタIDにセレクトナンバー(SelectNum)を減算して得られるセレクタIDを選択する。returnnumは、トリガIDに対応するセレクタIDを選択する。セレクトナンバー(SelectNum)は、incrementnum、decrementnumに用いられる番号である。トリガIDは、所定のイベントが発生した場合に、そのイベントに対応して発生するIDであり、図15の例では、タッチレスボタンが指示された場合に発生する。
【0124】
さらに、アニメーションシナリオ定義手段82は、タッチレスボタンID、ボタンイメージパス、マスクファイルパス、ボタン位置、ボタンサイズ、連続時間しきい値、マスク割合しきい値の7つの属性を設定することによりアニメーショントリガを定義する。図15の例では、22行目の<AnimationTriggers >と、31行目の</AnimationTriggers >の2つのタグで囲まれた範囲に対応する。図15の例では、タッチレスボタンID(TouchlessButton ID)が“0” と“1”の2つのボタンについて定義されている。図15に示すように、各ボタンについて4行単位で、タッチレスボタンID(TouchlessButton ID)、ボタンイメージパス(ButtonImagePath)、マスクファイルパス(MaskFilePath)、ボタン位置(PositionX, PositionY)、ボタンサイズ(ButtonWidth,ButtonHeight)、連続時間しきい値(Thtime)、マスク割合しきい値(Thmask)が設定される。タッチレスボタンIDはタッチレスボタンを特定するIDである。このタッチレスボタンIDはトリガIDと一対一で対応しており、タッチレスボタンIDが決定すると、トリガIDも同じ値に設定される。ボタンイメージパスは、ディスプレイ3に表示させるタッチレスボタンの画像を記録した位置を特定するパスである。マスクファイルパスは、ボタン形状の角を丸めるためにマスクするためのマスク画像を記録した位置を特定するパスである。ボタン位置は、タッチレスボタンを表示させる画面上のxy座標である。なお、後述するボタンの指示判定において、ボタン領域を設定する場合は、画像の左右を反転させる必要があるため、それに応じてx座標を変換して用いる。ボタンサイズは、タッチレスボタンの幅と高さである。連続時間しきい値は、タッチレスボタンが押され続けたと判断するための時間のしきい値である。マスク割合しきい値は、タッチレスボタンが押されていると判断するための面積比率のしきい値である。
【0125】
図9のフロー図を用いて、図15に示したシナリオデータを指定した場合について説明する。画像処理装置2を起動し、図15に示したシナリオデータを使用するシナリオデータとして指定すると、まず、シナリオデータ対応付け手段83が、指定されたシナリオデータをデータ記憶装置2dから読み込む(S21)。そして、シナリオデータ対応付け手段83は、シナリオデータを解釈し、シナリオデータに従った画像の作成を開始する(S22)。
【0126】
画像の作成を開始と同時に、画像処理装置2は、ディスプレイ3にタッチレスボタンのボタン画像を表示する。閲覧者はビデオカメラ4により撮影され、常に撮影映像が取得されており、閲覧者がボタン画像に触れようとした際にも、その映像は撮影されることになる。
【0127】
画像の作成を開始したら、シナリオデータ対応付け手段83は、状態遷移管理手段25により生成された顔オブジェクトデータを取得する(S23)。顔オブジェクトデータは、オブジェクトID、顔検出枠データ(位置、矩形サイズ)、閲覧時間で構成される。
【0128】
続いて、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した顔オブジェクトデータをシナリオデータに対応付ける処理を行う(S24)。具体的には、顔オブジェクトデータに含まれる顔検出枠データのオブジェクトIDとターゲットIDを対応付ける。状態遷移管理手段25から複数の顔検出枠データを取得した場合は、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。図15の例では、シナリオデータには、ターゲットID“0”の1つだけ設定されているので、シナリオデータ対応付け手段83は、ターゲットID“0”が対応付けられたオブジェクトIDで特定される顔検出枠データをターゲットとすることになる。
【0129】
次に、合成画像作成手段84が、フレーム単位で表示用の合成画像を作成する処理を行う(S25)。具体的には、まず、開始時点を時刻“0.0”と設定し、この時刻“0.0”で、シナリオデータの<Animation Commands>を参照する。図15に示すように、<Animation Commands>においては、コマンドIDが“0”と“1”の2つのコマンドが存在し、いずれも、開始キー“0.0”から終了キー“1.0”までは、キータイプ“own”、コマンドタイプ“LayerMontage(レイヤ合成)”、ターゲットID“0”となっており、コンテンツIDのみが“0” と“1”で異なっている。上述のように、コマンドIDは、セレクタIDにより決定されるが、図15の18行目に示すように、初期セレクタID(InitialSerectorID)は“0”に設定されているため、最初は、合成画像作成手段84は、ターゲットID“0”の顔検出枠データに、コンテンツID“0”のコンテンツをレイヤ合成することにより、合成画像を作成することになる。
【0130】
コンテンツID“0”のコンテンツ(合成用素材)は、シナリオデータの<Simulation Contents>を参照することにより、コンテンツのパスが特定できるので、そのパスで特定されるデータ記憶装置2d内の記憶位置からコンテンツを取得する。上述のように、コンテンツには矩形情報が設定されているので、合成画像作成手段84は、この矩形情報と顔検出枠データの矩形サイズが一致するように矩形情報とコンテンツのサイズを変更し、変更したコンテンツを、変更後の矩形情報と顔検出枠データの位置が一致する位置にレイヤ合成を行う。具体的には、図12(b)に示すような顔画像に設定された顔検出枠データの矩形に合わせて、コンテンツに設定された矩形の大きさを変更し、コンテンツに設定された矩形の変更割合に合わせてコンテンツをリサイズし、2つの矩形が一致するように合成処理を行う。この結果、例えば、図12(a)のようにコンテンツがカツラである場合、人の顔に合わせてカツラを被せたような状態の合成画像(図12(c))が得られることになる。合成画像作成手段84は、得られた合成画像を、ディスプレイ3に表示させる。この結果、ディスプレイ3には、撮影映像のフレームに加工が施された合成画像が表示されることになる。
【0131】
1つのフレームについて合成画像の作成を終えたら、シナリオデータ対応付け手段83は、シナリオ中であるかどうかを判断する(S26)。具体的には、シナリオデータに従った画像作成開始からの経過時間でシナリオデータ内の<Target ID>タグ内の“CycleInterval”を参照し、経過時間がシナリオ時間未満である場合は、シナリオ中であると判断し、経過時間がシナリオ時間以上である場合は、シナリオ終了であると判断する。シナリオ中であると判断した場合には、シナリオデータ対応付け手段83は、S23に戻って、顔オブジェクトデータを取得する。
【0132】
そして、S24において、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した次の顔オブジェクトデータをシナリオデータに対応付ける処理を行う。このときも1回目のループと同様、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。そして、シナリオデータに従って、シナリオデータ対応付け手段83は、ターゲットID“0”が対応付けられたオブジェクトIDで特定される顔検出枠データをターゲットとする。
【0133】
次に、S25において、合成画像作成手段84が、フレーム単位で合成画像を作成する処理を行う。具体的には、経過時間を取得し、取得した経過時間で、シナリオデータの<Animation Commands>を参照する。このとき、セレクタIDが“0”であれば、コンテンツID“0”のコンテンツを、セレクタIDが“1”であれば、コンテンツID“1” のコンテンツを、ターゲットID“0”の顔検出枠データにレイヤ合成することにより合成画像を作成する。このようにして、S26においてシナリオ終了であると判断されるまでは、経過時間に従い、シナリオデータを実行する処理を繰り返し行う。
【0134】
S26において、シナリオ終了であると判断した場合には、シナリオデータ対応付け手段83は、繰り返して処理を行うかどうかを判断する(S27)。具体的には、シナリオデータ内の<IsAutoLoop>タグを参照し、“true”が設定されている場合は、繰り返して処理を行うと判断する。繰り返して処理を行うと判断した場合には、シナリオデータ対応付け手段83は、経過時間を“0”にリセットし、経過時間の計測を再び開始するとともに、S22に戻って、シナリオデータに従った画像の作成を開始する。このように、映像の各フレームから得られた合成画像を順次ディスプレイに表示することにより、加工映像として表示されることになる。
【0135】
一方、S22〜S25の処理と並行して、指示判定手段85は、タッチボタンが指示されたかどうかを常に判断する(S28)。具体的には、撮影映像のフレームに対して画像処理を行うことにより、判断を行う。図17は、指示判定手段85の画像処理により得られる画像を示す図である。図17においては、白い部分が画素値“1”の画素、黒い部分が画素値“0”の画素を示している。まず、指示判定手段85は、図4のS1において、背景除去手段20により処理された背景除去画像を取得する。そして、多値である背景除去画像の各画素値を所定のしきい値で二値化する。図17(a)に、二値化された背景除去画像を示す。続いて、指示判定手段85は、入力フレーム画像に対してHSV変換を行い、所定のしきい値で二値化し、二値化されたHSV画像を得る。図17(b)に、二値化されたHSV画像を示す。このHSV変換により肌色等の色味部分を抽出する。そして、二値化された背景除去画像と二値化されたHSV画像のAnd演算処理を行う。そして、人物を抽出した人物画像を得る。図17(c)に、人物画像を示す。
【0136】
次に、指示判定手段85は、図4のS2において、顔検出手段21により取得された顔検出枠を取得する。指示判定手段85は、取得した顔検出枠をマスクした二値の顔マスク画像を生成する。図17(d)に、顔マスク画像を示す。そして、指示判定手段85は、顔マスク画像と人物画像のAnd演算処理を行う。この結果、人物から顔部分を除外した特徴画像が得られる。図17(e)に、特徴画像を示す。
【0137】
次に、指示判定手段85は、シナリオデータ中の<AnimationTriggers >と、</AnimationTriggers >の2つのタグで囲まれた範囲におけるタッチレスボタンのボタン位置(PositionX, PositionY)、ボタンサイズ(ButtonWidth,ButtonHeight)の情報を取得する。そして、このボタン位置とボタンサイズから、ボタンの領域、およびボタンに含まれる総画素数を求める。さらに、特徴画像のボタンの領域における画素値“1”(図面では白で表現)の画素数とボタンに含まれる総画素数の比率Rmaskを算出する。図17(f)に、特徴画像とボタン領域の関係を示す。図17(f)において、白線で囲まれた矩形領域がボタン領域である。なお、図15に示すように、タッチレスボタンが複数設定されている場合、指示判定手段85は、各ボタンについて、比率Rmaskを算出する処理を行う。
【0138】
指示判定手段85は、各フレームに対して、上述のような処理を実行し、各タッチレスボタンの比率Rmaskを算出する。そして、シナリオデータ中に設定されているマスクしきい値Thmaskと各タッチレスボタンの比率Rmaskの比較を行う。そして、比較の結果に基づいて、以下の1)〜3)のいずれの状態であるかの判断を行う。
【0139】
(タッチレスボタン上の特徴部分の比率および継続時間による状態の判断)
1)Rmask<Thmaskの場合 通常状態
2)Rmask>ThmaskかつTime<Thtimeの場合 手が翳された状態
3)Rmask>ThmaskかつTime>Thtimeの場合 指示された状態
【0140】
上記2)、3)において、Timeは、フレーム数にフレームレートの逆数を乗じて算出した時間であり、Thtimeはシナリオデータ中に設定されている時間のしきい値である。上記1)の場合、タッチレスボタン上における手の面積が小さいため、タッチレスボタンに手が翳された状態でなく、通常状態であると判断する。上記2)の場合、タッチレスボタン上における手の面積が大きいため、手が翳された状態ではあるが、その時間が短いため、タッチレスボタンに対する指示とまでは判断できない。上記3)の場合、タッチレスボタン上における手の面積が大きく、その時間も長いため、タッチレスボタンに対する指示と判断する。なお、図15に示したシナリオデータ中では、2つのタッチレスボタンのいずれにおいても、Thtimeは1.0秒、Thmaskは0.1(10%)が設定されている。
【0141】
すなわち、S28において、指示判定手段85は、各タッチレスボタンに対する手の面積比率がしきい値以上であるかどうかを判断する処理を、各フレームについて行い、手の面積比率がしきい値以上であるタッチレスボタンが所定フレーム数以上連続した場合に、タッチレスボタンが指示されたと判断する。
【0142】
S28において、指示判定手段85が、タッチレスボタンが指示されたと判断した場合、コマンド切替手段86は、コマンド切替を行う(S29)。具体的には、セレクタID(Selector ID)を変更する。図15の例では、“0”である場合は“1”に、“1”である場合は“0”に変更されることになる。セレクタIDの変更により、コマンドIDも変更され、コマンドが切り替えられることになる。
【0143】
図16は、図15のシナリオデータに従って得られた合成画像の表示状態を示す図である。図16(a)(b)において、角の丸い矩形は、タッチレスボタンを示している。図16の例では、“金髪”、“黒髪”と記されたタッチレスボタンが表示されている。閲覧者を認識すると、まず、図15のシナリオデータ18行目に示すように、初期のセレクタIDを定めるInitialSelectorIDが“0”であるので、セレクタIDは“0”に設定され、13行目によりコマンドIDが“0”に設定される。そして、13行目、14行目の<Command ID>タグに従って、シナリオ開始時(StartKey="0.0")から経過時間10秒(EndKey="1.0")までのフレームについては、コンテンツID“0”のコンテンツがレイヤ合成される。この際、ContentsID="0"で<SimulationContents>を参照することにより、コンテンツのコンテンツ記憶手段内における所在“afro.jpg”を特定し、黒いカツラのコンテンツを取得する。そして、図16(a)に示すように、黒いカツラが閲覧者の画像に合成される。タッチレスボタンの指示によるコマンドの切替がない場合、シナリオ開始時(StartKey="0.0")から経過時間10秒(EndKey="1.0")までのフレームについては、全て黒いカツラが合成された合成画像が表示されることになる。
【0144】
閲覧者が“金髪”のタッチレスボタンに手を翳し、<AnimationTriggers>の条件に従って、指示判定手段85が、タッチレスボタンが指示されたと判定すると、指示判定手段85は、タッチレスボタンID(TouchlessButton ID)を“1”に設定し、コマンド切替手段86が、タッチレスボタンIDに1対1で対応するトリガID を “1” に設定し、さらに、セレクタIDを “1”、コマンドIDを“1”に切り替える。そして、13行目、14行目の<Command ID>タグに従って、シナリオ開始時(StartKey="0.0")から経過時間10秒(EndKey="1.0")までのフレームについては、コンテンツID“1”のコンテンツがレイヤ合成される。この際、ContentsID="1"で<SimulationContents>を参照することにより、コンテンツのコンテンツ記憶手段内における所在“blond.jpg”を特定し、金髪のカツラのコンテンツを取得する。そして、図16(b)に示すように、黒いカツラに代えて金髪のカツラが閲覧者の画像に合成される。この後、タッチレスボタンの指示によるコマンドの切替がない場合、シナリオ開始時(StartKey="0.0")から経過時間10秒(EndKey="1.0")までのフレームについては、全て金髪のカツラが合成された合成画像が表示されることになる。
【0145】
≪3.4.シーン合成処理(1)≫
次に、本発明の特徴であるシーン合成機能について説明する。シーン合成機能としては、人物と人物以外の輪郭を明確にして合成を行う実施形態と、人物と人物以外の輪郭を特に明確にすることなく合成を行う実施形態がある。まず、第1の実施形態として、人物と人物以外の輪郭を明確にして合成を行う実施形態について説明する。シーン合成を行うためには、シーン合成機能に対応するシナリオデータが必要となる。図20は、シーン合成機能に対応(ターゲット2人)の場合のXML形式のシナリオデータの一例を示す図である。ここでは、図20のシナリオデータを参照しながら、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82の機能について説明する。合成ターゲット定義手段80は、ターゲットID、タイプ、絶対座標、移り変わり設定の4つの属性を設定することによりターゲットを定義する。図20の例では、1行目の<Simulation Targets>と、7行目の</Simulation Targets>の2つのタグで囲まれた範囲に対応する。ターゲットについては、Human、Place、Sceneの3つのタイプが設定可能である。IDタイプについては、ターゲットに対応した人、場所、場面の3種を設定可能である。図20の例では、HumanIDで始まる2つのHumanタグを用いて2人について設定し、Place IDで始まるPlaceタグを用いて場所について設定し、SceneIDで始まるSceneタグを用いて場面について設定している。移り変わり設定は、対応付けられたターゲットが消失した場合、新たなターゲットに対応付けるかどうかを設定するものである。図20の例では、2〜4行目のタグで、ターゲットID(HumanID, Place ID, SceneID)、タイプ、移り変わり設定の3属性を設定しており、移り変わり設定(IsTransfer)はいずれも“false(設定しない)”となっている。
【0146】
合成コンテンツ定義手段81は、コンテンツID、コンテンツのパス、重なり設定の3つの属性を設定することによりコンテンツを定義する。図20の例では、8行目の<Simulation Contents>と、24行目の</Simulation Contents >の2つのタグで囲まれた範囲に対応する。図20の例では、コンテンツID(ContentsID)が“0”、“1”、“2”の3つのコンテンツについて定義されている。コンテンツには、人物または背景に重ねる重畳画像と、背景画像の2種類がある。重畳画像、背景画像については、図20の9、10行目に示すように、各コンテンツについて1行単位で、コンテンツのパス(ContentsPath)、重なり設定(OverlapOrder)が設定される。
【0147】
アニメーションシナリオ定義手段82は、コマンドID、コマンドタイプ、セレクタID、開始キー、終了キー、キータイプ、ターゲットID、コンテンツIDの8つの属性を設定することによりアニメーションシナリオを定義する。図20の例では、25行目の<Animation Commands>と、28行目の</Animation Commands>の2つのタグで囲まれた範囲に対応する。図20の例では、コマンドID(CommandID)が“0”のコマンドについて定義されている。図20に示すように、1つのコマンドについて2行単位で、コマンドタイプ、セレクタID(SelectorID)、開始キー、終了キー、キータイプ、ターゲットID、コンテンツIDが設定される。コマンドタイプとは、どのようなフレームを基にどのようなタイプの効果を生じさせるかを示すものであり、レイヤ合成、αブレンド合成、音声再生開始、シーン合成が用意されている。このうち、レイヤ合成、αブレンド合成、シーン合成は、画像合成のタイプを示すものであり、レイヤ合成は、コンテンツを上書き合成するものであり、αブレンド合成は、設定されたα比率に応じてコンテンツとフレームを透過させて合成するものであり、シーン合成は、人体部分を切り抜き、背景の上に合成するものである。図20の例では、コマンドタイプ(CommandType)として、シーン合成(SceneMontage)が設定されている。
【0148】
セレクタIDは、実行するコマンドを特定するための条件であり、そのセレクタIDに対応するコマンドIDのコマンドが実行される。セレクタにより特定された1以上のコマンドの集合が1つのシナリオを構成することになる。したがって、セレクタとシナリオは1対1で対応している。図20の例では、1つのシナリオが1つのコマンドで構成されており、セレクタID=0の場合に、コマンドID=0のコマンドが実行されることを示している。開始キー、終了キーは、図10の例と同様、各コマンドの開始時点、終了時点を設定するものである。本実施形態では、シナリオデータの時間を、シナリオ開始時を“0.0”、シナリオ終了時を“1.0”として管理している。図20の例では、図15の例と同様、全てのコマンドの開始キー(StartKey)は“0.0”、最後に終了するコマンドの終了キー(EndKey)は“1.0”となる。キータイプとは、開始キー、終了キーの基準とする対象を設定するものであり、own、base、globalの3つが用意されている。ownは各ターゲットIDに対応する顔オブジェクトの閲覧時間を基準とし、baseはターゲットID=0に対応する顔オブジェクトの閲覧時間を基準とし、globalは撮影映像の最初のフレームを取得した時間を基準とする。図20の例では、キータイプ(KeyType)として、ownが設定されているので、1つ目の顔オブジェクトがフレームに登場した時点(顔オブジェクトが“閲覧開始”と判断された時点)を“0.0”として、開始キー、終了キーが認識されることになる。
【0149】
図20の例では、図15と同様、<CycleInterval>タグ、<IsAutoLoop>タグが、2行目〜4行目のHumanID、PlaceIDで表現された各ターゲットIDタグ内に含まれている。上述のように、<CycleInterval>タグ、<IsAutoLoop>タグがターゲットIDタグ内に含まれている場合でも、図10の例と同様、シナリオデータの<CycleInterval>タグは、シナリオの開始から終了までの時間を秒単位で設定するものであり、シナリオデータの<IsAutoLoop>タグは、ループ処理(繰り返し処理)を行うかどうかを設定するものである。画像表示システム1は、シナリオデータに複数通りの記述形式を許容しており、図10、図15に示したように<CycleInterval>タグ、<IsAutoLoop>タグの記述位置が異なる場合であっても、シナリオデータ対応付け手段83は、<CycleInterval>タグ、<IsAutoLoop>タグを認識し、記述内容に従った処理を実行する。図20の例では、ターゲットIDタグ内でCycleInterval=“10”に設定されているので、シナリオの開始から終了まで10秒であることを示している。開始キー、終了キーの値を10倍した実時間でシナリオは管理されることになる。図20の例では、ターゲットIDタグ内でIsAutoLoop=“true”に設定されているので、ループ処理を行うことを示している。このようにして、合成ターゲット定義手段80、合成コンテンツ定義手段81、アニメーションシナリオ定義手段82により作成されたシナリオデータは、シナリオデータ記憶手段としてのデータ記憶装置2dに格納される。
【0150】
図9のフロー図を用いて、図20に示したシナリオデータを指定した場合について説明する。画像処理装置2を起動し、図20に示したシナリオデータを使用するシナリオデータとして指定すると、まず、シナリオデータ対応付け手段83が、指定されたシナリオデータをデータ記憶装置2dから読み込む(S21)。そして、シナリオデータ対応付け手段83は、シナリオデータを解釈し、シナリオデータに従った画像の作成を開始する(S22)。
【0151】
次に、シナリオデータ対応付け手段83は、状態遷移管理手段25により生成された顔オブジェクトデータを取得する(S23)。顔オブジェクトデータは、オブジェクトID、顔検出枠データ(位置、矩形サイズ)、閲覧時間で構成される。
【0152】
続いて、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した顔オブジェクトデータをシナリオデータに対応付ける処理を行う(S24)。具体的には、顔オブジェクトデータに含まれる顔検出枠データのオブジェクトIDとターゲットIDを対応付ける。状態遷移管理手段25から複数の顔検出枠データを取得した場合は、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。図20の例では、シナリオデータには、ターゲットIDとして、HumanID="0"、 HumanID="1" 、PlaceID="2"、 SceneID="3"の4つが設定されているので、シナリオデータ対応付け手段83は、ターゲットID“0”が対応付けられたオブジェクトIDで特定されるデータをターゲットとすることになる。
【0153】
次に、合成画像作成手段84が、フレーム単位で表示用の合成画像を作成する処理を行う(S25)。具体的には、まず、開始時点を時刻“0.0”と設定し、この時刻“0.0”で、シナリオデータの<Animation Commands>を参照する。図20に示すように、<Animation Commands>においては、コマンドIDが“0”のコマンドのみが存在し、開始キー“0.0”から終了キー“1.0”までは、キータイプ“own”、コマンドタイプ“SceneMontage(シーン合成)”、ターゲットID“3”、コンテンツID“2”となっている。上述のように、コマンドIDは、セレクタIDにより決定されるが、図20では、コマンドIDは1つのみであるため、合成画像作成手段84は、ターゲットID“3”で特定される対象に、コンテンツID“2”のコンテンツをシーン合成することにより、合成画像を作成することになる。
【0154】
コンテンツID“2”のコンテンツ(合成用素材画像)は、シナリオデータの<Simulation Contents>を参照することにより、コンテンツのパスが特定できる。具体的には、コンテンツID“2”は、11行目の“SceneContentsID=2”を示しており、SceneContentsIDタグ内の“Human ContentsID=0”と“Place ContentsID=1”の2つのコンテンツからなることがわかる。さらに、“Human ContentsID=0”は、9行目の“ContentsID=0”を示し、“Place ContentsID=1”は、10行目の“ContentsID=1”を示しているので、そのパスで特定されるデータ記憶装置2d内の記憶位置から各コンテンツを取得する。そして、“Place ContentsID=1”で特定されるコンテンツ(背景画像)のうち、輪郭により切り抜かれた人物部分をマスクする。具体的には、12行目から22行目までのSegmentationArea、SourceArea、SinkAreaに記述された内容に従って得られた輪郭線の内部をマスクしたマスク画像を生成し、“Place ContentsID=1”で特定される背景画像と合成する。一方、“Human ContentsID=0”で特定されるコンテンツ(重畳画像)は、既にマスク加工が行われているので、そのまま重畳画像として用いる。
【0155】
続いて、合成画像作成手段84は、12行目から22行目までのSegmentationArea、SourceArea、SinkAreaに記述された内容に従って得られた輪郭線の内部を撮影画像から切り抜いて、マスク加工された背景画像と合成する。さらに、撮影画像の顔検出枠データに対応する部分を用いて、重畳画像と合成する。この重畳画像にも、上述のコンテンツのように、矩形情報が設定されているので、合成画像作成手段84は、この矩形情報と顔検出枠データの矩形サイズが一致するように矩形情報と重畳画像のサイズを変更し、変更した重畳画像を、変更後の矩形情報と顔検出枠データの位置が一致する位置にレイヤ合成を行う。具体的には、図12(b)に示すような顔画像に設定された顔検出枠データの矩形に合わせて、コンテンツに設定された矩形の大きさを変更し、コンテンツに設定された矩形の変更割合に合わせてコンテンツをリサイズし、2つの矩形が一致するように合成処理を行う。この結果、例えば、図12(a)のようにコンテンツがカツラである場合、人の顔に合わせてカツラを被せたような状態の合成画像(図12(c))が得られることになる。背景画像と重畳画像が重なる部分については、9行目と10行目のOverlapOrderの値により、重畳画像が優先する。合成画像作成手段84は、得られた合成画像を、ディスプレイ3に表示させる。この結果、ディスプレイ3には、撮影映像のフレームに加工が施された合成画像が表示されることになる。
【0156】
1つのフレームについて合成画像の作成を終えたら、シナリオデータ対応付け手段83は、シナリオ中であるかどうかを判断する(S26)。具体的には、シナリオデータに従った画像作成開始からの経過時間でシナリオデータ内のターゲットIDタグ(HumanID 、PlaceID)内の“CycleInterval”を参照し、経過時間がシナリオ時間未満である場合は、シナリオ中であると判断し、経過時間がシナリオ時間以上である場合は、シナリオ終了であると判断する。シナリオ中であると判断した場合には、シナリオデータ対応付け手段83は、S23に戻って、顔オブジェクトデータを取得する。
【0157】
そして、S24において、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した次の顔オブジェクトデータをシナリオデータに対応付ける処理を行う。このときも1回目のループと同様、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。ただし、図20ではPlaceID="2"に設定されているため、HumanIDは“0”か“1”しか設定することができない。すなわち、図20のシナリオデータでは、最大2人までしか対応できない。もちろん、シナリオデータを書き換えれば、より多くの人数に対応することも可能である。そして、シナリオデータに従って、シナリオデータ対応付け手段83は、ターゲットID“0”が対応付けられたオブジェクトIDで特定される顔検出枠データをターゲットとする。
【0158】
次に、S25において、合成画像作成手段84が、フレーム単位で合成画像を作成する処理を行う。具体的には、経過時間を取得し、取得した経過時間で、シナリオデータの<Animation Commands>を参照する。そして、<Animation Commands>に従い、TargetID=“3”で特定されるターゲットに、ContentsID=“2”で特定されるコンテンツをシーン合成することにより合成画像を作成する。このようにして、S26においてシナリオ終了であると判断されるまでは、経過時間に従い、シナリオデータを実行する処理を繰り返し行う。
【0159】
S26において、シナリオ終了であると判断した場合には、シナリオデータ対応付け手段83は、繰り返して処理を行うかどうかを判断する(S27)。具体的には、シナリオデータ内の<IsAutoLoop>タグを参照し、“true”が設定されている場合は、繰り返して処理を行うと判断する。繰り返して処理を行うと判断した場合には、シナリオデータ対応付け手段83は、経過時間を“0”にリセットし、経過時間の計測を再び開始するとともに、S22に戻って、シナリオデータに従った画像の作成を開始する。このように、映像の各フレームから得られた合成画像を順次ディスプレイに表示することにより、加工映像として表示されることになる。
【0160】
次に、図20のシナリオデータの12行目〜22行目における撮影画像の切り抜き処理の詳細について説明する。12行目〜22行目は、12、13行目のSegmentationAreaタグ、14〜18行目のSourceAreaタグ、19〜22行目のSinkAreaタグで構成されている。SegmentationAreaタグ、SourceAreaタグ、SinkAreaタグでは、それぞれセグメント領域、Sourceデータ列のイニシャル領域、Sinkデータ列のイニシャル領域が設定されている。
【0161】
まず、セグメント領域について説明する。セグメント領域とは、イニシャル領域設定に必要な領域であり、顔検出枠を含む範囲のものである。図20の12、13行目に示すように、セグメント領域は、顔検出枠上部倍率(TopRate)、顔検出枠下部倍率(BottomRate)、アスペクト比(AspectWidth、AspectHeight)により設定される。
【0162】
図21は、撮影画像における顔検出枠とセグメント領域の関係を示す図である。図21における2つの矩形のうち、内側の矩形が顔検出枠、外側の矩形がセグメント領域の枠を示している。図21に示したセグメント領域は、図20のシナリオデータの内容(TopRate="1.2、BottomRate="2.0、 AspectWidth="5"、 AspectHeight="3")に従って設定されたものである。顔検出枠上部倍率とは、顔検出枠中央から顔検出枠上辺までの長さと、顔検出枠中央からセグメント領域上辺までの長さの比であり、顔検出枠下部倍率とは、顔検出枠中央から顔検出枠下辺までの長さと、顔検出枠中央からセグメント領域下辺までの長さの比である。顔検出枠上部倍率、顔検出枠下部倍率とアスペクト比に従って顔検出枠全体を含む範囲にセグメント領域が設定される。図20、図21に示したように、セグメント領域は、顔検出枠の位置・大きさを基準にして数値指定されることにより設定され、数値は適宜変更可能であるが、顔検出枠と左右方向の中心が一致し、上下方向については顔検出枠の中心がセグメント領域の中心より上方に位置するように設定されることが望ましい。そのような数値は、合成コンテンツ定義手段81が自動で設定するようにしても良い。
【0163】
図22は、イニシャル領域の形状を示す図である。本実施形態では、イニシャル領域は、円、楕円、長方形(正方形含む)の3つの形状で設定可能である。各イニシャル領域は、セグメント領域を0〜1とした場合の相対位置、相対幅、相対高さで表現される。具体的には、円の場合は、中心位置(CenterX、CenterY)と半径(Radius)、楕円の場合は、中心位置(CenterX、CenterY)とX軸半径(XRadius)とY軸半径(YRadius)、長方形の場合は、左上頂点位置(X、Y)と幅(Width)と高さ(Height)で設定される。本実施形態の3つの形状以外で設定することも、もちろん可能である。
【0164】
図23は、図20のシナリオデータの例に従って設定されたイニシャル領域を示す図である。図23(a)は、撮影フレームにおけるイニシャル領域を示す図であり、図23(b)は、図23(a)のイニシャル領域を設定するためのシナリオデータにおけるSourceAreaタグとSinkAreaタグ部分のスクリプトである。
【0165】
イニシャル領域を用いて後述する処理により人物の輪郭を切り抜くためには、Sourceのイニシャル領域は、人物が存在する位置に、Sinkのイニシャル領域は、人物が存在しない位置に設定される必要がある。図20のシナリオデータでは、イニシャル領域が数値指定されているが、この数値は、顔検出枠とセグメント領域の関係に基づいて計算され、得られた数値である。また、SourceAreaタグ、SinkAreaタグでは、SamplingNum = "50"として、イニシャル領域においてランダムに選ばれる画素数が指定されている。
【0166】
イニシャル領域が設定されたら、合成画像作成手段84によりセグメント領域における画像のセグメント化が行われる。このセグメント化は、対象と対象以外を分ける処理であり、Sourceのイニシャル領域が対象、Sinkのイニシャル領域が対象以外の部分に含まれるように行われる。セグメント化の手法としては、公知の様々な技術を用いることが可能であるが、本実施形態では、公知のグラフカットセグメンテーションの手法を用いている。したがって、合成画像作成手段84は、Sourceのイニシャル領域、Sinkのイニシャル領域それぞれにおいてランダムに50画素ずつ選択し、各画素の値を用いてグラフカットセグメンテーションの手法を実行することにより、セグメント領域における画像を、対象と対象以外にセグメント化する。Sourceのイニシャル領域、Sinkのイニシャル領域それぞれにおいてランダムに選択する画素数は、SourceAreaタグ内の“SamplingNum”により任意に設定可能である。セグメント化により得られたセグメント結果画像を図24(b)に示す。図24(b)において、白い部分が対象(人物)を示す部分であり、両側の黒い部分が対象(人物)以外を示す部分である。セグメント結果画像は2値画像として作成される。
【0167】
セグメント結果画像が得られたら、合成画像作成手段84は、コンテンツマスク画像とセグメント結果画像を合成して合成マスク画像を作成する。コンテンツマスク画像は、Human ContentsIDで指定されたコンテンツ画像に対応するマスク画像であり、そのコンテンツ画像で抜き出す部分以外がマスクされた画像である。このコンテンツマスク画像は、各コンテンツ画像について予め作成された2値画像であり、データ記憶装置2dに格納されている。図24に示すように、図24(c)の合成マスク画像は、図24(a)に示すようなコンテンツマスク画像と図24(b)に示すようなセグメント結果画像のマスクされない部分をOR演算することにより、両者のマスクされない部分を足し合わせた2値画像として得られる。したがって、コンテンツ画像がヘルメットと服である場合、コンテンツマスク画像は、ヘルメット、服、人物の部分がマスクされない画像となる。
【0168】
次に、合成画像作成手段84は、合成マスク画像を反転して背景マスク画像を作成する。具体的には、二値画像である合成マスク画像の各画素の値を他方の値に変更する。この結果、マスクする画素とマスクされない画素が逆になった二値画像である背景マスク画像が得られる。図25に合成マスク画像と背景マスク画像の一例を示す。図25(a)は、合成マスク画像、図25(b)は、背景マスク画像である。背景マスク画像では、ヘルメット、服、人物の部分がマスクされる画像となる。
【0169】
続いて、合成画像作成手段84は、背景マスク画像を用いて背景画像をマスクし、重畳画像をコンテンツマスク画像でマスクし、得られた画像を撮影画像に重ねることにより、合成画像を作成する。この結果、図26(f)に示すような合成画像が得られる。図26に合成画像作成の様子を示す。図26(a)は、撮影画像、図26(b)は、背景画像、図26(c)は、背景マスク画像、図26(d)は、重畳画像、図26(e)は、重畳マスク画像、図26(f)は、合成画像である。図26(f)においては、図面の都合上、背景の幅を狭めた状態で示しているが、現実には、ディスプレイ3の表示範囲に合わせた縦横比で合成が行われる。このようにして、ディスプレイ3を閲覧している人物に服等のコンテンツと背景を合成してディスプレイ3に表示することが可能となる。
【0170】
≪3.5.シーン合成処理(2)≫
上記のシーン合成処理では、セグメント領域をセグメント化することにより、人物と人物以外の境界を明確にして、背景画像と合成するようにした。第2の実施形態では、セグメント領域を用いず、人物と人物以外の境界を明確にすることなく、人物と背景画像を合成する処理を行う。第2の実施形態においても、図1〜3に示した装置構成により、図4〜6、9に示したフロー図に従った処理を実行する点は第1の実施形態と同じである。また、図示は省略するが、映像上の1人以上の人物とコンテンツとの合成のタイミングを定めたシナリオデータがシナリオデータ記憶手段としてのデータ記憶装置2dに記憶されている。
【0171】
第2の実施形態について、図9のフロー図を用いて説明する。画像処理装置2を起動し、シナリオデータを指定すると、シナリオデータ対応付け手段83が、指定されたシナリオデータをデータ記憶装置2dから読み込む(S21)。そして、シナリオデータ対応付け手段83は、シナリオデータを解釈し、シナリオデータに従った画像の作成を開始する(S22)。
【0172】
次に、シナリオデータ対応付け手段83は、状態遷移管理手段25により生成された顔オブジェクトデータを取得する(S23)。顔オブジェクトデータは、オブジェクトID、顔検出枠データ(位置、矩形サイズ)、閲覧時間で構成される。
【0173】
続いて、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した顔オブジェクトデータをシナリオデータに対応付ける処理を行う(S24)。具体的には、顔オブジェクトデータに含まれる顔検出枠データのオブジェクトIDとターゲットIDを対応付ける。状態遷移管理手段25から複数の顔検出枠データを取得した場合は、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。
【0174】
次に、合成画像作成手段84が、フレーム単位で表示用の合成画像を作成する処理を行う(S25)。具体的には、まず、開始時点を時刻“0.0”と設定し、この時刻“0.0”で、シナリオデータの<Animation Commands>を参照し、指定されたコマンドIDのコマンドを実行する。
【0175】
コマンドIDタグで指定されるコンテンツIDで、シナリオデータの<Simulation Contents>を参照することにより、コンテンツのパスが特定できる。第2の実施形態においては、第1の実施形態と異なり、必ず重畳画像と背景画像の2つのコンテンツが特定されている必要がある。また、重畳画像としては、人物の顔付近だけ開いていて、その周囲を全て囲うような画像を用意する。例えば、顔出し看板、ウェディングドレスが挙げられる。合成画像作成手段84は、そのパスで特定されるデータ記憶装置2d内の記憶位置から各コンテンツを取得する。そして、Place ContentsIDで特定されるコンテンツ(背景画像)を、重畳画像のコンテンツマスク画像を反転して得られた背景マスク画像を用いてマスクする。一方、“Human ContentsID”で特定されるコンテンツ(重畳画像)は、既にマスク加工が行われているので、そのまま重畳画像として用いる。
【0176】
続いて、合成画像作成手段84は、撮影画像の顔検出枠データに対応する部分を用いて、重畳画像と合成する。この重畳画像にも、上述のコンテンツのように、矩形情報が設定されているので、合成画像作成手段84は、この矩形情報と顔検出枠データの矩形サイズが一致するように矩形情報と重畳画像のサイズを変更し、変更した重畳画像を、変更後の矩形情報と顔検出枠データの位置が一致する位置にレイヤ合成を行う。具体的には、図12(b)に示すような顔画像に設定された顔検出枠データの矩形に合わせて、コンテンツに設定された矩形の大きさを変更し、コンテンツに設定された矩形の変更割合に合わせてコンテンツをリサイズし、2つの矩形が一致するように合成処理を行う。この結果、例えば、図12(a)のようにコンテンツがカツラである場合、人の顔に合わせてカツラを被せたような状態の合成画像(図12(c))が得られることになる。本実施形態では、重畳画像のコンテンツとして、顔出し看板やウェディングドレスのような人物の顔付近だけ開いていて、その周囲を全て囲うような画像が用意されているので、撮影画像中の人物が顔出し看板の穴に顔を出していたり、ウェディングドレスを着た状態になるような合成が行われることになる。続いて、合成画像作成手段84は、背景マスク画像を用いてマスクされた背景画像と、撮影画像および重畳画像を合成したものを合成する。背景画像と重畳画像が重なる部分については、8行目と9行目のOverlapOrderの値により、重畳画像が優先する。合成画像作成手段84は、得られた合成画像を、ディスプレイ3に表示させる。この結果、ディスプレイ3には、撮影映像のフレームに加工が施された合成画像が表示されることになる。
【0177】
1つのフレームについて合成画像の作成を終えたら、シナリオデータ対応付け手段83は、シナリオ中であるかどうかを判断する(S26)。具体的には、シナリオデータに従った画像作成開始からの経過時間でシナリオデータ内のターゲットIDタグ(HumanID 、PlaceID)内の“CycleInterval”を参照し、経過時間がシナリオ時間未満である場合は、シナリオ中であると判断し、経過時間がシナリオ時間以上である場合は、シナリオ終了であると判断する。シナリオ中であると判断した場合には、シナリオデータ対応付け手段83は、S23に戻って、顔オブジェクトデータを取得する。
【0178】
そして、S24において、シナリオデータ対応付け手段83は、状態遷移管理手段25から取得した次の顔オブジェクトデータをシナリオデータに対応付ける処理を行う。このときも1回目のループと同様、候補Faceへ状態遷移したときの日時が最も早いものを“0”に設定し、以降、候補Faceへ状態遷移したときの日時が早い順に“1””2” ”3”と数を1ずつ増加させながら設定していく。そして、シナリオデータに従って、シナリオデータ対応付け手段83は、ターゲットID“0”が対応付けられたオブジェクトIDで特定される顔検出枠データをターゲットとする。
【0179】
次に、S25において、合成画像作成手段84が、フレーム単位で合成画像を作成する処理を行う。具体的には、経過時間を取得し、取得した経過時間で、シナリオデータの<Animation Commands>を参照する。そして、<Animation Commands>に従い、TargetIDで特定されるターゲットに、ContentsIDで特定されるコンテンツをシーン合成することにより合成画像を作成する。このようにして、S26においてシナリオ終了であると判断されるまでは、経過時間に従い、シナリオデータを実行する処理を繰り返し行う。
【0180】
S26において、シナリオ終了であると判断した場合には、シナリオデータ対応付け手段83は、繰り返して処理を行うかどうかを判断する(S27)。具体的には、シナリオデータ内の<IsAutoLoop>タグを参照し、“true”が設定されている場合は、繰り返して処理を行うと判断する。繰り返して処理を行うと判断した場合には、シナリオデータ対応付け手段83は、経過時間を“0”にリセットし、経過時間の計測を再び開始するとともに、S22に戻って、シナリオデータに従った画像の作成を開始する。このように、映像の各フレームから得られた合成画像を順次ディスプレイに表示することにより、加工映像として表示されることになる。
【0181】
<4.状態遷移管理手段を用いない構成>
上記実施形態の画像表示システムは、状態遷移管理手段25を用い、検出された顔画像がノイズであったと判定される場合に、閲覧状態と判断しないようにしたが、状態遷移管理手段25を用いず、検出された顔画像を全て閲覧状態と判断するようにすることも可能である。次に、状態遷移管理手段25を用いない構成について説明する。
【0182】
図18は、状態遷移管理手段25を用いない場合の画像処理装置2´に実装されたコンピュータプログラムで実現される機能ブロック図である。図18において、図3と同一機能を有するものについては、同一符号を付して詳細な説明を省略する。
【0183】
図18に示す画像処理装置2´は、図3に示したトラッキング手段23に代えて、トラッキング手段23´を有している。このトラッキング手段23´は、図3に示した動画解析手段24に相当する機能も備えている。
【0184】
図18に示す画像処理装置2´は、フレームを解析するにあたり、図4に示したS1〜S5の処理のうち、S1、S3の処理は、画像処理装置2と同様にして行う。また、顔検出処理とトラッキング処理は、連携させて実行する。上述のように、S5の状態遷移管理処理は行わない。
【0185】
図19は、顔検出処理とトラッキング処理を示すフロー図である。まず、背景除去処理S1を行った後、Nフレームを処理するにあたり、N−1フレームの顔検出枠の数が0より大であるかどうかの判断を行う(S31)。N−1フレームの顔検出枠の数が0より大である場合は、トラッキング手段23´がトラッキング処理を実行する(S32)。
【0186】
トラッキング手段23´は、N−1フレームにおける各顔検出枠を追跡してNフレームにおける対応する顔検出枠を特定するものである。トラッキング手段23´としては、上述の動画解析手段24が実行する“パーティクルフィルタ”、“LK法”、“CamShift手法”等の公知のトラッキング手法を採用することができる。
【0187】
N−1フレームからNフレームへの顔検出枠のトラッキング処理を終えたら、顔検出手段21がNフレームにおける顔検出処理を行う(S33)。S33における顔検出処理は、図4に示したS2の顔検出処理と同一である。また、S31において、N−1フレームの顔検出枠の数が0より大でないと判定された場合は、N−1フレームからNフレームへのトラッキング処理を行わずに、顔検出手段21がNフレームにおける顔検出処理を行う。
【0188】
続いて、顔検出処理S33において新規に検出されたNフレームの顔検出枠の数が0より大であるかどうかを判断する(S34)。新規に検出されたNフレームの顔検出枠とは、Nフレームで検出された顔検出枠のうち、N−1フレームからNフレームへトラッキングされた顔検出枠を除外したものである。
【0189】
次に、顔検出手段21が、Nフレームにおいて新規に検出された各顔検出枠データに、オブジェクトIDを付与し、顔検出枠データ、オブジェクトID、トラッキング時間で構成される顔オブジェクトを設定する(S35)。顔オブジェクトは、オブジェクトIDにより特定され、トラッキングにより対応付けられた顔検出枠は、同一のオブジェクトIDで特定されることになる。また、トラッキング時間の初期値は0に設定される。
【0190】
続いて、Nフレームにおける顔検出枠の数が0より大であるかどうかの判断を行う(S36)。S36においては、Nフレームにおいて新規に検出されたかどうかを問わず、既にオブジェクトIDが発行された顔検出枠がNフレームに存在するかどうかを判断する。
【0191】
顔検出枠が存在した場合には、各顔検出枠の顔オブジェクトについて、トラッキング時間を算出する(S37)。具体的には、直前のN−1フレームまでに算出されているトラッキング時間に1フレームに相当する時間を加算することによりNフレームまでの各顔オブジェクトのトラッキング時間を算出する。トラッキング時間を算出し終えたら、Nをインクリメントして(S38)、次のNフレームについての処理に移行する。S36における判断の結果、顔検出枠が存在しなかった場合には、Nフレームには、追跡すべき対象が存在しないことになるので、トラッキング時間の算出は行わず、Nをインクリメントして(S38)、次のNフレームについての処理に移行する。
【0192】
画像処理装置2´の顔検出手段21、トラッキング手段23´は、背景除去手段20により背景処理が行われた各フレームについて、図19に示した処理を繰り返し実行する。
【0193】
図19に示した処理において付与された顔オブジェクトは、図9に示したS24において、シナリオデータ対応付け手段83によりシナリオデータと対応付けられる。図19に示した処理においては、顔オブジェクトのオブジェクトIDは、顔検出枠が検出された順に、“0”“1” “2”“3”と数を1ずつ増加させながら設定される。
【0194】
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記第1の実施形態では、撮影画像から切り抜いた人物部分と背景画像を合成するとともに、人物部分または背景画像に重畳画像を重ねて合成するようにしたが、重畳画像を重ねず、背景画像のみと合成した場合であっても、十分にリアルタイムで演出効果のある合成画像を作成することが可能である。重畳画像を重ねた場合には、さらに演出効果が高まる。
【0195】
また、上記第1の実施形態では、合成画像作成手段84によるセグメント領域における画像のセグメント化の具体的な手法として、グラフカットセグメンテーションを用いたが、Watershedアルゴリズムや平均値アルゴリズム等の公知の他の手法を用いても良い。
【産業上の利用可能性】
【0196】
本発明は、コンピュータを利用してディスプレイに画像を表示する産業、広告を映像として表示するデジタルサイネージの産業に利用可能である。
【符号の説明】
【0197】
1 画像表示システム
2、2´ 画像処理装置
20 背景除去手段
21 顔検出手段
22 人体検出手段
23、23´ トラッキング手段
24 動画解析手段
25 状態遷移管理手段
26 人物属性推定手段
27 ログファイル出力手段
3 ディスプレイ
4 ビデオカメラ
6 状態遷移表
80 合成ターゲット定義手段
81 合成コンテンツ定義手段
82 アニメーションシナリオ定義手段
83 シナリオデータ対応付け手段
84 合成画像作成手段
85 指示判定手段
86 コマンド切替手段

【特許請求の範囲】
【請求項1】
人物を撮影するカメラと、カメラから送出される撮影映像を合成処理する画像処理装置と、合成処理された合成映像を表示するディスプレイとを備えた画像表示システムであって、
前記画像処理装置は、
映像上の1人以上の人物とコンテンツとの合成のタイミングを定めたシナリオデータを記憶したシナリオデータ記憶手段と、
合成に用いる背景画像をコンテンツとして記憶したコンテンツ記憶手段と、
前記カメラから送出された映像の1つのフレームに撮影されている顔画像を検出し、検出した前記顔画像毎に、顔検出枠の位置・矩形サイズを顔検出枠データとして出力する顔検出手段と、
前記顔検出手段から取得した前記顔検出枠データを、他のフレームの顔検出枠データと対応付けるトラッキング手段と、
前記顔検出手段により検出された顔検出枠データを含む顔オブジェクトに対して、前記シナリオデータに含まれる人物との対応付けを行うシナリオデータ対応付け手段と、
前記各フレームにおいて前記シナリオデータに含まれる人物との対応付けがなされた顔検出枠を含む範囲にセグメント領域を設定し、このセグメント領域を利用して人物と人物以外の部分にセグメント化したセグメント結果画像を用いて、前記背景画像をマスクし、前記フレーム中の人物と背景画像を合成した合成画像を生成する合成画像生成手段と、
を備えていることを特徴とする画像表示システム。
【請求項2】
前記コンテンツ記憶手段は、さらに前記人物または背景に重ねる画像である重畳画像をコンテンツとして記憶し、
前記合成画像生成手段は、前記シナリオデータ対応付け手段による対応付けに従って、前記顔オブジェクトを前記シナリオデータの人物に割り当て、前記顔オブジェクトの顔検出枠データの位置、サイズに合わせて、前記重畳画像の位置、サイズを変更し、前記フレーム上に前記重畳画像を合成した合成画像を生成するものであることを特徴とする請求項1に記載の画像表示システム。
【請求項3】
前記合成画像生成手段は、前記セグメント領域を、前記顔検出枠の位置に基づいて、前記顔検出枠と左右方向の中心が一致し、上下方向については前記顔検出枠の中心が前記セグメント領域の中心より上方に位置するように設定し、
前記セグメント領域内における所定の位置に設定される、人物の存在する領域と人物の存在しない領域において指定された画素を利用して、セグメント化するものであることを特徴とする請求項1または請求項2に記載の画像表示システム。
【請求項4】
人物を撮影するカメラと、カメラから送出される撮影映像を合成処理する画像処理装置と、合成処理された合成映像を表示するディスプレイとを備えた画像表示システムであって、
前記画像処理装置は、
映像上の1人以上の人物とコンテンツとの合成のタイミングを定めたシナリオデータを記憶したシナリオデータ記憶手段と、
背景画像と周囲を囲まれた一部が開いている重畳画像をコンテンツとして記憶したコンテンツ記憶手段と、
前記カメラから送出された映像の1つのフレームに撮影されている顔画像を検出し、検出した前記顔画像毎に、顔検出枠の位置・矩形サイズを顔検出枠データとして出力する顔検出手段と、
前記顔検出手段から取得した前記顔検出枠データを、他のフレームの顔検出枠データと対応付けるトラッキング手段と、
前記顔検出手段により検出された顔検出枠データを含む顔オブジェクトに対して、前記シナリオデータに含まれる人物との対応付けを行うシナリオデータ対応付け手段と、
前記対応付けに従って、前記顔オブジェクトを前記シナリオデータの人物に割り当て、前記顔オブジェクトの顔検出枠データの位置、サイズに合わせて、前記重畳画像の位置、サイズを変更して合成するとともに、前記重畳画像に対応したマスク画像によりマスクされた前記背景画像と合成した合成画像を生成する合成画像生成手段と、
を備えていることを特徴とする画像表示システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図22】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図21】
image rotate

【図23】
image rotate


【公開番号】特開2013−73324(P2013−73324A)
【公開日】平成25年4月22日(2013.4.22)
【国際特許分類】
【出願番号】特願2011−210536(P2011−210536)
【出願日】平成23年9月27日(2011.9.27)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】