(57)【特許請求の範囲】
【請求項１】
プロセッサと、メモリと、表示画面を有する表示装置と、入力装置とからなり、上記プロセッサが、画像フレーム周期で逐次的に供給される画像フレームのビット列を基本オブジェクトとして、画像フレーム周期毎に、上記基本オブジェクトと、該基本オブジェクトから派生した属性の異なる複数種類のメディアオブジェクトに変換処理また認識処理を実行して、処理結果を上記表示画面に出力するメディア認識システムであって、
上記メモリに定義され、入力オブジェクトの種類に応じた処理を実行するために参照されるパターン定義リストを記憶するオブジェクト管理スペースと、
上記プロセッサによって実行され、各基本オブジェクトと、該基本オブジェクトから派生したメディアオブジェクトを上記オブジェクト管理スペースに記憶されたパターン定義リストに従って処理するオブジェクト処理モジュールと、
上記オブジェクト処理モジュールで生成された複数種類のメディアオブジェクトを記憶するために上記メモリに定義されたメディアオブジェクトスペースとを備え、
上記パターン定義リストが、複数のアクション記述を含み、各アクション記述が、オブジェクトの属性を指定するパターン式と対応付けて、該パターン式で指定された属性をもつ入力オブジェクトに対して実行すべきスクリプトプログラムを定義しており、
上記基本オブジェクトと、上記オブジェクト処理モジュールで生成された各メディアオブジェクトが、オブジェクトの属性を示すヘッダ付きの入力オブジェクトとして、上記オブジェクト処理モジュールに入力され、
上記オブジェクト処理モジュールが、上記パターン定義リストから、入力オブジェクトのヘッダが示す属性と同じ属性を指定した特定のパターン式を検索し、画像フレーム周期で供給される基本オブジェクトが入力オブジェクトとなったとき、ビット列属性を指定しているパターン式を含むアクション記述に定義されたスクリプトプログラムを実行することによって、入力オブジェクトを画像オブジェクトに変換し、該画像オブジェクトを新たな入力オブジェクトとして、画像属性を指定している別のパターン式と対応したスクリプトプログラムを実行することによって、別属性の新たなメディアオブジェクトを生成し、画像フレームの各周期内で、次々と生成されるメディアオブジェクトを新たな入力オブジェクトとして、上記パターン定義リストに従った再帰的なメディア処理を繰り返し、上記メディアオブジェクトスペースに記憶された複数のメディアオブジェクトのうち、上記パターン定義リストに画面表示用のスクリプトプログラムと対応付けて定義された特定のパターン式で指定された属性をもつメディアオブジェクトを上記表示画面に選択的に出力するようにしたことを特徴とするメディア認識システム。
【請求項２】
前記オブジェクト処理モジュールが、
前記画像フレーム周期で逐次的に供給される基本オブジェクトと、前記スクリプトプログラムの実行によって新たに生成されたメディアオブジェクトとを発生順に入力オブジェクトとして取り込むオブジェクト受付部と、
上記オブジェクト受付部から入力オブジェクトを受け取り、該入力オブジェクトに付されたヘッダが示す属性と、前記パターン定義リストの各パターン式が指定する属性とを照合し、入力オブジェクトと同じ属性を指定したパターン式を検索することによって、実行すべきスクリプトプログラムを選択するパターン照合部と、
スクリプトプログラムを実行するスクリプト実行部とからなり、
上記スクリプト実行部が、上記パターン照合部で選択されたスクリプトプログラムを実行し、生成されたメディアオブジェクトを新たな入力オブジェクトとして、上記オブジェクト受付部に供給することを特徴とする請求項１に記載のメディア認識システム。
【請求項３】
前記パターン照合部が、前記スクリプト実行部で生成されたメディアオブジェクトを前記メディアオブジェクトスペースに記憶し、該メディアオブジェクトスペースに記憶された複数のメディアオブジェクトのうち、前記パターン定義リストに前記画面表示用のスクリプトプログラムと対応付けて定義された特定のパターン式で指定された特定の属性をもつメディアオブジェクトを前記表示画面に出力することを特徴とする請求項２に記載のメディア認識システム。
【請求項４】
前記パターン定義リストに前記画面表示用のスクリプトプログラムと対応付けて定義された特定のパターン式が、複数種類の属性を指定しており、前記パターン照合部が、前記メディアオブジェクトスペースに記憶された複数のメディアオブジェクトのうち、上記特定のパターン式で指定された属性をもつ複数種類のメディアオブジェクトを前記表示装置に出力することを特徴とする請求項３に記載のメディア認識システム。
【請求項５】
前記パターン照合部が、画像フレームの各周期内に、前記パターン定義リストに前記画面表示用のスクリプトプログラムと対応付けて定義された特定のパターン式と、前記メディアオブジェクトスペースに記憶されたメディアオブジェクトの属性との照合動作を所定周期で繰り返すことによって、上記特定のパターン式で指定された属性をもつメディアオブジェクトを前記表示装置に出力することを特徴とする請求項３に記載のメディア認識システム。
【請求項６】
前記メディアオブジェクトスペースに記憶された各メディアオブジェクトが、前記基本オブジェクトの生成時刻を示す時刻情報を有し、
前記パターン定義リストが、メディアオブジェクトの消去条件を定義したメディアオブジェクト消去用のアクション記述を含み、
前記パターン照合部が、上記メディアオブジェクト消去用のアクション記述に従って、時刻情報が上記消去条件を満たしたメディアオブジェクトを上記メディアオブジェクトスペースから自動的に削除することを特徴とする請求項３に記載のメディア認識システム。
【請求項７】
前記パターン定義リストに含まれるアクション記述のうちの１つが、前記パターン式に付随して、内部パターン式をもつ階層化された形式で、前記スクリプトプログラムを定義していることを特徴とする請求項１〜請求項６の何れかに記載のメディア認識システム。
【請求項８】
前記内部パターン式をもつアクション記述が、前記表示画面に表示された特定の属性をもつメディアオブジェクトと、ユーザ操作に伴って表示位置が変化するカーソルとの重なりを検知した時に実行すべきスクリプトプログラムを定義していることを特徴とする請求項７に記載のメディア認識システム。
【請求項９】
前記パターン定義リストで定義されたアクション記述を解読し、該パターン定義リストをパターン式群と実行すべきスクリプトプログラム群とに分けて、前記オブジェクト管理スペースに格納するための構文解釈ルーチンを備えることを特徴とする請求項１〜請求項６の何れかに記載のメディア認識システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メディア認識システムに関し、更に詳しくは、映像や音声などのメディアデータストリームを対象として、ユーザの要求に応じた認識処理を実行するためのメディア認識システムおよびメディア認識用アプリケーションプログラムに関する。
【背景技術】
【０００２】
映像技術の進展により、映像、音楽などを記録／再生するアプリケーションソフトが比較的簡単に構築できるようになった。今後は、単なる録画映像の再生に留まることなく、ユーザが関心をもつ映像中の特定の被写体、例えば、品物、人物や、音声などを自動的に認識し、認識結果を利用して、対象物に関する詳細情報にアクセスするような高度のメディア認識アプリケーションへの期待が高まっている。基盤となるメディアの認識技術については、ＩＳＯ ＭＰＥＧ−７規格などで、様々なアルゴリズムが提案されている。
【０００３】
映像として提供されるメディア情報は、ユーザ毎に異なった観点で鑑賞され、同一の画面であっても、注目される対象物はユーザによって異なる。従って、映像中の特定の被写体をメディア認識アプリケーションで自動認識する場合、認識対象となるメディア内容（メタデータやメディア特徴量とも呼ばれる）の指定形式、認識結果の表示形式、認識結果の利用方法をユーザの好みに適合させる必要がある。
【０００４】
図８は、映像や音声のように、リアルタイムに連続的に発生するメディア情報（以下、メディアデータストリームと言う）を扱う従来のメディア認識アプリケーションの１例を示す。図８は、従来技術によるアプリケーションソフトの基本的な構造を説明するために用意されたものであり、画面に表示されるＭＰＥＧ再生映像中の特定の被写体領域を認識し、該被写体領域の色分布を分析して、分析結果の画面に表示する機能を備えたメディア認識アプリケーションの構成を示している。色分布の分析に代えて、例えば、被写体領域に含まれる人物や物体を認識する機能を追加すれば、前述した対象物の詳細情報にアクセスするための識別情報が得られる。
【０００５】
１００は、画像ファイル１３０から読み出されたＭＰＥＧ符号化データを復号化し、音声はスピーカ１１０に、映像は表示画面（ディスプレイ）１２０に出力する映像再生アプリケーションを示す。映像再生アプリケーション１００は、画像ファイル１３０からＭＰＥＧ符号化データを読み出し、画像フレーム毎のビットストリームとして出力するＭＰＥＧファイル読込みモジュール１０１と、上記ビットストリームを音声ビットストリームと映像ビットストリームに分けるメディア分割モジュール１０２を含む。
【０００６】
音声ビットストリームは、音声デコードモジュール１０３で復号化され、例えば、ＰＣＭ音声波形信号ストリームとしてスピーカ１１０に出力される。一方、映像ビットストリームは、ＭＰＥＧ画像デコードモジュール１０４で復号化され、画像信号ストリームとしてディスプレイ１２０に出力される。
【０００７】
上述したように、従来の映像再生アプリケーションは、データ処理順序に従って複数のプログラムモジュールを連結し、データストリームを逐次的に処理するデータフロー型のプログラム構造となっている。このプログラム構造は、ハードウェア回路で構成されるデジタルＴＶ放送受像機や映像再生装置（ＤＶＤ）のように、部品接続型の設計コンセプトに由来しており、例えば、Microsoft Windows（登録商標）におけるＯＳ標準の映像再生フレームワークであるDirectShow（API）（非特許文献１）も、この形式のプログラム構造を採用している。データが前段モジュールから後段モジュールに順次に転送されていくデータフロー型のプログラム構造は、データ処理手順をイメージし易いため、手続き型言語による変数書き換え型のプログラムと比較して、アプリケーション機能を直感的に理解できるという利点がある。
【０００８】
上記映像再生アプリケーション１００を映像中の特定の被写体領域に関する認識機能、ここでは色分布分析機能を備えた映像（メディア）認識アプリケーションに発展させるためには、例えば、ＭＰＥＧ画像デコードモジュール１０４に、画像フレーム中の或る物体の存在領域を認識するための領域認識モジュール１０５を接続する。
【０００９】
領域認識モジュール１０５による認識結果は、ユーザ操作可能な形式で再生映像画面に表示する必要がある。このため、領域認識モジュール１０５とディスプレイ１２０との間に、領域グラフィカルユーザインタフェース（ＧＵＩ）モジュール１０６が接続される。もし、画像フレームの色分析を行いたければ、ＭＰＥＧ画像デコードモジュール１０４に色分析モジュール１０７を接続し、色分析結果を再生映像画面に表示するために、色分析モジュール１０７とディスプレイ１２０との間に色表示グラフィカルユーザインタフェース（ＧＵＩ）１０８を接続する。
【００１０】
上記追加モジュール１０５〜１０８により、映像再生アプリケーション１００による映像再生と並行して、領域認識と色分析を実行し、画面例１２１で示すように、領域認識結果と色分析結果を画面表示できる映像認識アプリケーションを構築できる。この場合、モジュール間の接続は、ソフトウェアモジュール中に埋め込んだり、１２２で示すようなモジュール結線表において定義される。
【００１１】
【非特許文献１】Mark D. Pesce、Programing Microsoft DirectShow for Digital Video and Television、p.3 DirectShow Concepts、2003
【発明の開示】
【発明が解決しようとする課題】
【００１２】
高度のメディア認識アプリケーションには、多種、多様のメディア認識技術の組み合わせが必要となる。また、メディア認識アプリケーションで必要となる認識技術は、それを利用するユーザによって異なる。
【００１３】
然るに、上述したモジュール結線型の従来のメディア認識アプリケーションは、複数のモジュールを固定的に接続する構成となっているため、ユーザ要求に合致したアプリケーション機能を実現しようとすると、アプリケーションの設計者は、ユーザニーズに応じたモジュールを選択し、各モジュールの入出力仕様を考慮に入れて、これらのモジュールを組み合わせる必要がある。
【００１４】
ユーザニーズに応じて、モジュール間の接続関係を動的に切り替えることも不可能ではない。しかしながら、１つのメディア認識アプリケーション内に、様々なユーザニーズに適合できるように予め多数のモジュールを用意しておき、モジュール間の接続を随時変更して稼動できるようなアプリケーションを提供することは容易でない。
更に、メディア認識アプリケーションでは、例えば、一定期間分のメディア認識結果や、複数種類の認識結果を総合的に利用した判断処理を必要とする場合がある。しかしながら、モジュール結線型の従来のメディア認識アプリケーション構造では、このような認識結果の保存、検索、複数種類の出力結果を利用するメディア処理には不向きである。
【００１５】
本発明の目的は、従来技術よりも柔軟にユーザニーズに適合できるメディア認識システムおよびメディア認識用アプリケーションプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、本発明のメディア認識用アプリケーションプログラムは、オブジェクト管理スペースと、上記オブジェクト管理スペースに記憶されたパターン定義リストに従って、入力メディアオブジェクトを処理するオブジェクト処理モジュールと、上記オブジェクト処理部で生成された新たなメディアオブジェクトを記憶するためのメディアオブジェクトスペースとからなり、上記パターン定義リストが、メディアオブジェクトの属性を指定するパターン式に付随して、実行すべきスクリプトプログラムを定義した複数のアクション記述を含む。
【００１７】
本発明の特徴は、上記オブジェクト処理モジュールが、上記パターン定義リストが示すパターン式に基づいて、入力メディアオブジェクトと対応するスクリプトプログラムを選択し、該スクリプトプログラムに従ったメディア処理を実行することによって、別属性の新たなメディアオブジェクトを生成し、生成されたメディアオブジェクトを新たな入力メディアオブジェクトとして、上記パターン定義リストに従った再帰的なメディア処理を繰り返し、上記メディアオブジェクトスペースと表示装置に、上記パターン定義リストで予め指定された属性をもつメディアオブジェクトを選択的に出力することを特徴とする。
【００１８】
本発明の１実施例では、上記オブジェクト処理モジュールが、
逐次的に供給されるメディアオブジェクトと新たに生成されたメディアオブジェクトとを発生順に取り込むオブジェクト受付部と、
上記オブジェクト受付部からメディアオブジェクトを受け取り、該メディアオブジェクトに付されたメディア識別情報と、上記パターン定義リストが示すパターン式とを照合し、実行すべきスクリプトプログラムを選択するパターン照合部と、
スクリプトプログラムを実行するスクリプト実行部とからなり、
上記スクリプト実行部が、上記パターン照合部で選択したスクリプトプログラムを実行し、生成されたメディアオブジェクトを新たな入力メディアオブジェクトとして、上記オブジェクト受付部に供給することを特徴とする。
【００１９】
また、本発明の１実施例では、上記パターン照合部が、上記スクリプト実行部で生成されたメディアオブジェクトをメディアオブジェクトスペースに記憶し、パターン定義リストで予め指定された特定の属性をもつメディアオブジェクトを表示画面に出力する。
【００２０】
本発明のメディア認識システムは、プロセッサと、メモリと、表示画面を有する表示装置と、入力装置とからなり、上記メモリに上述したオブジェクト管理スペースとメディアオブジェクトスペースが定義され、上記プロセッサが、上述したオブジェクト処理モジュールを実行することを特徴とする。
【発明の効果】
【００２１】
本発明によれば、パターン定義リストで、メディアオブジェクトの属性を指定するパターン式と、実行すべきスクリプトプログラムとの関係を定義しておき、入力されたメディアオブジェクトに対して、上記パターン定義リストで指定されたスクリプトプログラムを実行するようになっているため、入力メディアオブジェクトの属性に応じた適切なメディア処理が可能となる。
【００２２】
また、本発明では、入力メディアオブジェクトに対して、スクリプトプログラムに従ったデータ処理によって、別の属性をもつメディアオブジェクトが生成された場合、これを新たなメディアオブジェクトとして、上記パターン定義リストに従った再帰的なメディア処理を繰り返すようになっているため、従来のモジュール結線型のアプリケーションでは困難であったモジュール（スクリプトプログラム）間の柔軟な連携を実現できる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の１実施例を図面を参照して説明する。
図１は、本発明によるメディア認識システムの構成例を示す。
本発明のメディア認識システムは、プロセッサ１０と、キーボードおよびマウス１２を含む入力装置１１と、表示装置１３と、インターネットに接続するための回線インタフェース１４と、メモリ１５と、メディア情報ファイル１６と、ソフトウェアファイル１７と、これらの要素を接続する内部バスとからなる。２０は、本発明によるメディア認識アプリケーションを示す。
【００２４】
メディア認識アプリケーション２０の実体は、メモリ１５上に存在して、プロセッサ１０によって実行される。但し、図１では、メディア情報ファイル１６、ソフトウェアファイル１７、表示装置１３との関係を理解し易いように、メディア認識アプリケーション２０をメモリ１５から独立した形で表示してある。また、本実施例では、説明を簡単化するために、音声処理機能の説明は省略して、映像データのみを処理対象とした認識アプリケーションについて説明する。従って、以下の説明では、メディア認識アプリケーション２０を映像認識アプリケーションと呼ぶことにする。
【００２５】
本発明による映像認識アプリケーション２０は、メディア情報ファイル１６からＭＰＥＧファイルを読み込むＭＰＥＧファイル読込みモジュール２１と、ＭＰＥＧファイル読込みモジュール２１に接続されたオブジェクト処理部２２とからなる。オブジェクト処理部２２には、メモリ領域として、オブジェクト管理スペース２３と、外部関数スペース２４と、メディアオブジェクトスペース２５が付随している。
【００２６】
オブジェクト管理スペース２３には、ソフトウェアファイル１７からダウンロードされたパターン定義リスト、その他のデータが格納される。外部関数スペース２４には、ソフトウェアファイル１７から選択的に読み出された外部関数群が格納される。パターン定義リストと外部関数群との関係については、後で詳述する。
【００２７】
ＭＰＥＧファイル読込みモジュール２１は、メディア情報ファイル１６から、ＭＰＥＧ符号化されたファイルデータを読み込み、画像フレーム単位のビットストリームをオブジェクト処理部２２に供給する。ＭＰＥＧファイル読込みモジュール２１から出力される画像フレーム単位のビットストリームには、オブジェクト識別情報を含むヘッダが付与されている。本実施例では、ＭＰＥＧファイル読込みモジュール２１からオブジェクト処理部２２に供給されるビットストリームをビット列オブジェクトと呼ぶことにする。
【００２８】
オブジェクト処理部２２は、オブジェクト管理スペース２３に格納されたパターン定義リスト２３０と、外部関数スペース２４に格納された外部関数群２４０を利用して、ビット列オブジェクトを処理する。
オブジェクト処理部２２は、ビット列オブジェクトの処理結果として生成される新たなメディアオブジェクトに対して、再帰的なメディア処理を実行する。また、生成される新たなメディアオブジェクトに対して、必要に応じてマウス１２の操作によって変化するカーソル座標値を利用したメディア処理を実行する。オブジェクト処理部２２によって生成されたオブジェクトは、メディアオブジェクトスペース２５に記憶される。また、パターン定義リストで予め指定された属性をもつオブジェクトが表示装置１３に出力される。
【００２９】
図２は、メディア（映像）認識アプリケーション２０の更に詳細な構成図を示す。
オブジェクト処理部２２は、ＭＰＥＧファイル読込みモジュール２１から供給されたビット列オブジェクトを一時的に蓄積するためのバッファ領域２０１Ａと、後述するようにオブジェクト処理部２２で生成されたメディアオブジェクトを一時的に蓄積するためのバッファ領域２０１Ｂと、カーソル座標値を記憶するためのバッファ領域２０１Ｃとを備える。これらのバッファ領域に蓄積されたオブジェクトとカーソル座標値は、オブジェクト受付部２０２によって、パターン照合部２０３に供給される。オブジェクト受付部２０２に入力される各オブジェクトは、オブジェクト識別情報を含むヘッダが付されている。
【００３０】
パターン照合部２０３は、オブジェクト受付部２０２から供給されたオブジェクトが示すオブジェクト識別情報を、パターン定義リスト２３０に記述されたパターン式によって評価する。
パターン定義リスト２３０は、図３を参照して詳述するように、オブジェクトを特定するためのパターン式と対応して、実行スクリプト（スクリプトプログラム）を示す複数のアクション記述からなる。
【００３１】
パターン定義リスト２３０には、例えば、ビット列オブジェクトを復号して画像オブジェクトに変換するためのアクション記述と、画像オブジェクトに所定の画像処理を実行して、別の属性をもつ新たなオブジェクトを生成するアクション記述と、このオブジェクトに対して処理を実行して、更に別の属性をもつ新たなオブジェクトを生成するアクション記述が含まれる。また、パターン定義リスト２３０には、パターン式で指定されたオブジェクトの表示装置１３への出力を指示するアクション記述も含まれる。
【００３２】
パターン照合部２０３は、オブジェクト受付部２０２から供給されたオブジェクトの識別情報が、何れかのパターン式を満たすと（評価結果が真であると）、スクリプト実行部２０４に、上記パターン式と対応する実行スクリプトに従ったオブジェクト処理を指示する。この時、パターン照合部２０３は、上記オブジェクトをメディアオブジェクトスペース２５に記憶する。
【００３３】
スクリプト実行部２０４は、パターン照合部２０３で特定された実行スクリプトに従ってオブジェクトを処理し、新たに生成されたオブジェクトをバッファ領域２０１Ｂに出力する。パターン定義リスト２３０の実行スクリプトでは記述できないような高度な画像処理は、必要に応じて、外部関数スペース２４に定義された外部関数群２４０を利用して実行される。スクリプト実行部２０２で生成されるオブジェクトにも、オブジェクト識別情報を含むヘッダが付与されている
オブジェクト受付部２０２は、画像フレームの周期に従って、バッファ領域２０１Ａからビット列オブジェクトを読み込み、これをパターン照合部２０３に供給する。バッファ領域２０１Ｂにオブジェクトが蓄積されると、オブジェクト受付部２０２は、バッファ領域２０１Ｂから読み込んだオブジェクトと、バッファ領域２０１Ｃから読み出されたカーソル座標値をパターン照合部２０３に供給する。
【００３４】
パターン照合部２０３は、バッファ領域２０１Ｂから読み出されたオブジェクトについても、ビット列オブジェクトと同様、パターン定義リスト２３０に記述されたパターン式によって評価し、スクリプト実行部２０４に対して、上記パターン式と対応する実行スクリプトに従ったオブジェクト処理を指示する。このオブジェクトもメディアオブジェクトスペース２５に記憶される。
【００３５】
実行スクリプトで表示装置１３への出力を指示されたオブジェクトは、パターン照合部２０３から表示装置に出力される。従って、表示装置に出力すべきオブジェクトとして、例えば、復号処理によってビット列オブジェクトから変換された画像オブジェクトと、画像処理によってオブジェクト処理部で生成される他の特定の属性をもつオブジェクトをパターン式で指定しておくことによって、これらの特定属性のオブジェクトと重ね合わせた状態の映像を表示装置１３に出力することができる。
【００３６】
本発明のオブジェクト処理部２２は、上述したように、（Ａ１）外部からの供給オブジェクトの読込みと、（Ｂ１）オブジェクト識別情報とパターン式との照合による実行スクリプトの特定と、（Ｃ１）特定された実行スクリプトに従ったオブジェクト処理とを実行した後、（Ａ２）オブジェクト処理によって生成された新オブジェクトの読込みと、（Ｂ２）オブジェクト識別情報とパターン式との照合による実行スクリプトの特定と、（Ｃ２）特定された実行スクリプトに従ったオブジェクト処理とを再帰的に繰り返すようにしたことに特徴がある。
【００３７】
すなわち、本発明のメディア認識システムは、従来のメディア認識アプリケーションで行っていたデータフロー型の一連のメディア処理を、入力オブジェクトに対応したスクリプトの実行と、内部生成されたオブジェクトの再入力とを含む再帰的な処理の繰り返しによって実現したことを特徴とする。
【００３８】
次に、図３を参照して、映像認識アプリケーション２０のオブジェクト処理部２２の動作を説明する。
パターン定義リスト２３０は、それぞれがパターン式と実行スクリプトとの対応関係を示す複数のパターンアクション節３０１〜３０７が、次の構文形式で記述されている。
【００３９】
｛
パターンアクション節
パターンアクション節
：
パターンアクション節
｝
各パターンアクション節では、パターン式と実行スクリプトとの対応関係が次の構文形式で記述されている。
／パターン式／スクリプト節
本実施例では、パターン式に、パターン評価の対象となるオブジェクトを「＄０」という変数名で表記する。また、各スクリプト節には、例えば、ＪａｖａＳｃｒｉｐｔ（ＥＣＭＡ標準のＥＣＭＡＳｃｒｉｐｔの属名）のようなＣ言語型のスクリプト言語により、実行スクリプトを次の構文形式で記述する。
【００４０】
ｏｎＩｎｓｅｒｔ｛実行スクリプト｝
ｏｎＤｅｌｅｔｅ｛実行スクリプト｝
ａｌｗａｙｓ｛実行スクリプト｝
スクリプト実行部２０４は、上記ＪａｖａＳｃｒｉｐｔ形式の実行スクリプトを解釈して実行する。従って、本実施例のスクリプト実行部２０４には、Ｗｅｂブラウザなどで実現されているＪａｖａＳｃｒｉｐｔの解釈実行モジュールを応用できる。
【００４１】
図３において、時間軸の下に示した２５（０）〜２５（６）は、ＴＶ映像の画像フレーム周期内で刻まれる時刻Ｔ０〜Ｔ６におけるメディアオブジェクトスペース２５の内容を例示している。以下、時刻を追ってオブジェクト処理部２２の動作を説明する。
【００４２】
オブジェクト受付部２０２は、時刻０で、バッファ領域２０１Ａからビット列オブジェクト３２２を読み込み、これをパターン照合部２０３に供給する。上記ビット列オブジェクト３２２は、メディアオブジェクトスペース２５（０）に追加される。３２１は、後で詳述するマウス座標オブジェクトを示している。オブジェクト受付部２０２からパターン照合部２０３へのビット列オブジェクト３２２の供給は、実データを転送する代りに、バッファ領域２０１Ａのアドレスを通知してもよい。
【００４３】
ビット列オブジェクト３２２が入力されると、パターン照合部２０３は、ビット列オブジェクトのヘッダが示すオブジェクト識別情報と、パターン定義リスト２３０中のパターンアクション節３０１〜３０７が示すパターン式とを照合し、入力オブジェクトの属性（種類）と対応したパターンアクション節を検索する。ここでは、パターンアクション節の配列順（３０１、３０２、・・・３０７）に、パターン式でオブジェクト識別情報を評価する場合について説明する。
【００４４】
先ず、パターンアクション節３０１のパターン式「／$0.class == ビット列／」によって、オブジェクト識別情報が評価される。「$0」は、入力オブジェクトに与えられた変数名であり、「$0.class」は、入力オブジェクトのクラス名を意味している。ここで、クラスとは、Ｊａｖａ言語のようなオブジェクト指向型プログラム言語でのクラスと、オブジェクト概念で用いられるクラスとを意味しており、「クラス名」は、クラス毎に一意な識別名称を意味している。
【００４５】
本実施例でオブジェクト受付部２０２が扱う入力オブジェクトのクラスについて、図４を参照して簡単に説明する。図４は、ＵＭＬ（Unified Modeling Language）と呼ばれるオブジェクト指向型の標準モデル図表記で描かれたオブジェクトのクラスの継承関係を示している。本実施例の入力オブジェクトは、全て基本オブジェクト４０１と呼ばれるクラスに属している。基本オブジェクトクラス４０１は、属性として、クラス名「ｃｌａｓｓ」、オブジェクト名「ｎａｍｅ」、オブジェクトの表示時刻「ｔｉｍｅ」をもつ。
【００４６】
属性クラス４０２〜４０８は、オブジェクト受付部に供給される入力オブジェクトの種類を示す。これらのクラスは、基本オブジェクトクラス４０１の属性を継承する。
マウスクラス４０２は、ＸＹ座標を表す属性（ｘ、ｙ）を持つ。ビット列クラス４０３は、ビットの配列を表すbits属性を持つ。画像クラス４０４は、画像の形式を表すformat属性と、ピクセル配列を表すpixelsとを持つ。領域クラス４０５は、多角形図形の頂点座標の配列を表すpolygon属性を持つ。polygon属性は、多角形を表すデータ型の値を持つ。また、データ型に付随する関数として、多角形領域の面積を計算するためのsize( )関数が用意されている。色分布クラス４０６は、色種別を元にした度数分布表を表すhistogram属性を持つ。
【００４７】
ポリゴンＧＵＩクラス４０７は、領域クラス４０５の属性を継承し、ＧＵＩ表示と操作を行うウィンドウを表すwindow属性を持つ。棒グラフＧＵＩクラス４０８は、色分布クラスの属性を継承し、ＧＵＩ表示と操作のウィンドウを表すwindow属性を持つ。これらクラスのclass属性には、図４のＵＭＬで示されたそれぞれのクラスのクラス名称が定数として与えられる。
【００４８】
図３に戻って、最初の入力オブジェクトであるビット列オブジェクト３２２は、パターンアクション節３０１のパターン式「／$0.class == ビット列／」による評価結果が真になる。従って、ビット列オブジェクト３２２は、スクリプト実行部２０４において、パターンアクション節３０１が示す実行スクリプトに従って処理される。図示した例では、パターンアクション節３０１の実行スクリプトは、「onInsert { insert (画像デコード($0)); }」となっている。
【００４９】
ここで、「onInsert」は、入力オブジェクトに対して、このパターンアクション節で定義された実行スクリプト「insert (画像デコード($0))」を直ちに実行することを意味している。実行スクリプト「insert (画像デコード($0))」は、パターン式の変数＄０で指定された入力オブジェクト（この時点は、ビットパターン列オブジェクト）が、外部関数群２４０の中に用意された「画像デコード」関数を適用して処理されることを意味している。「insert」関数は、本実施例のオブジェクト処理部２２が提供する基本関数であり、パラメータで指定されたオブジェクトをオブジェクト受付部２０２に入力することを指示している。
【００５０】
本実施例において、画像デコードの関数は、ＭＰＥＧ符号化データとして供給されるビット列オブジェクトを画像フレームに変換するためのＭＰＥＧ復号化モジュールを意味している。従って、スクリプト実行部２０４が、「insert (画像デコード($0))」を実行すると、入力オブジェクトであるビット列オブジェクト３２２が画像フレームに変換され、別属性の画像オブジェクト３２３として出力され、バッファ領域２０１Ｂに蓄積される。
【００５１】
尚、ビット列オブジェクト３２２は、パターン定義テーブル２３０に記述された他のパターンアクション節３０２〜３０７のパターン式とも照合されるが、何れも評価結果が偽となるため、これらのパターンアクション節で定義された実行スクリプトは、ビット列オブジェクト３２２に対しては適用されない。
【００５２】
画像オブジェクト３２３は、時刻Ｔ１でオブジェクト受付部２０２に読み込まれ、パターン照合部２０３に供給される。この時、メディアオブジェクトスペース２５（１）は、上記画像オブジェクト３２３が追加された状態となる。パターン照合部２０３は、入力オブジェクトのヘッダが示す画像オブジェクトの識別情報とパターン定義リスト２３０中のパターンアクション節３０１〜３０７が示すパターン式とを照合し、入力オブジェクトと対応したパターンアクション節を検索する。
【００５３】
今回は、パターンアクション節３０２のパターン式による評価結果が真となるため、スクリプト実行部２０４が、画像オブジェクト３２３に対して、パターンアクション節３０２で定義された実行スクリプト「insert (領域抽出($0))」を実行する。「(領域抽出($0))」は、外部関数群２４０の中から、図８で説明した領域認識モジュール１０５に相当する関数を呼び出し、この関数を適用して画像オブジェクト３２３を処理することを意味している。この場合、スクリプト実行部２０４からは、画像オブジェクト３２３の処理結果として、領域オブジェクト３２４が生成され、バッファ領域２０１Ｂに出力される。
【００５４】
上記領域オブジェクト３２４は、時刻Ｔ２でオブジェクト受付部２０２に入力され、パターン照合部２０３に供給される。この時、メディアオブジェクトスペース２５（２）は、上記領域オブジェクト３２４が追加された状態となる。パターン照合部２０３は、入力オブジェクトのヘッダが示す領域オブジェクトの識別情報とパターン定義リスト２３０中のパターンアクション節３０１〜３０７が示すパターン式とを照合し、入力オブジェクトと対応したパターンアクション節を検索する。
【００５５】
領域オブジェクトには、領域の形状（多角形）を表すポリゴン（polygon）属性と、多角形領域の面積を示すサイズ（size）属性が付随している。今回は、パターンアクション節３０３のパターン式での評価結果が真となり、スクリプト実行部２０４が、領域オブジェクト３２４に対して、パターンアクション節３０３で定義された実行スクリプト「insert (ポリゴンＧＵＩ($0))」を実行する。その結果、領域オブジェクト３２４から、領域の境界を画面に表示するためのポリゴンＧＵＩオブジェクト３２５が生成され、バッファ領域２０１Ｂに出力される。
【００５６】
尚、パターンアクション節３０３のパターン式の右辺「領域＆＆$0.size＞30%」は、ポリゴンサイズ（領域面積）が表示画面の３０％を超える領域オブジェクトを意味しており、今回は、領域オブジェクト３２４が上記条件を満たしたものと仮定している。上記ポリゴンＧＵＩオブジェクト３２５は、時刻Ｔ３でオブジェクト受付部２０２に入力され、パターン照合部２０３に供給される。この時、メディアオブジェクトスペース２５（３）は、上記ポリゴンＧＵＩオブジェクト３２５が追加された状態となる。
【００５７】
このように、スクリプト実行部２０４で生成されたオブジェクトを、オブジェクト受付部２０２を介してパターン照合部２０３に供給することによって、メディアオブジェクトスペースに新たなオブジェクトが次々と追加され、その内容が２５（４）〜２５（５）のように変化する。尚、パターンアクション節３０５〜３０７は、ユーザによる画面操作に関するものであり、その詳細については後述する。
【００５８】
本実施例では、表示画面（表示装置１３）へのオブジェクト出力制御にも、パターンアクション節が適用されている。パターン定義リスト２３０において、パターンアクション節３０５は、どの入力オブジェクトを表示画面に出力すべきかを記述している。
パターン式の内容から明らかなように、パターンアクション節３０５は、入力オブジェクトが画像、ポリゴンＧＵＩ、棒グラフＧＵＩの何れかの場合に、パターン式の評価結果が真となる。この時、スクリプト節に定義された「always {ディスプレイ表示($0)}」が実行される。ここで「always」は、パターン式に該当したオブジェクトがメディアオブジェクトスペース２５に存在している期間中、それに続くカッコ内の実行スクリプトが周期的に実行されることを意味している。
【００５９】
パターンアクション節３０５の場合、実行スクリプトが「{ディスプレイ表示($0)}」となっているため、メディアオブジェクトスペース２５に蓄積されている画像オブジェクト、ポリゴンＧＵＩオブジェクト、棒グラフＧＵＩオブジェクトが、後述する時間制御によってメディアオブジェクトスペース２５から消去される迄、表示画面に継続的に表示される。
【００６０】
メディアオブジェクトスペース２５に蓄積された全てのオブジェクトについて、上述した「always」を含むパターンアクション節のパターン式との照合を実現するためには、パターン照合部２０３に、オブジェクト受付部２０２からの入力オブジェクトとパターン定義リスト２３０の全パターン式とを照合する標準機能とは別に、パターンアクション節３０５とメディアオブジェクトスペース２５との照合を所定周期で繰り返し、パターン式に合致したオブジェクトを表示画面に出力する無限ループ型の特別な表示オブジェクト制御機能を備えればよい。上記表示オブジェクト制御機能は、パターン照合部２０３から独立したモジュールとして、オブジェクト処理部２２に用意されてもよい。
【００６１】
また、メディアオブジェクトスペース２５に蓄積されたオブジェクトの個数が多くなると、プロセッサ１０の処理負荷が増加するため、パターン式との照合対象を、例えば、過去数ミリ秒間に内部値に変化があったオブジェクトのみに限定するようにしてもよい。
【００６２】
オブジェクトの内部値変化は、例えば、全入力オブジェクトに共通する関数として、オブジェクトの内部値を変化させるための関数（ここでは、onUpdate関数と呼ぶ）を用意しておき、このonUpdate関数によって、メディアオブジェクトスペース２５に新たに追加されるオブジェクトの内部値変更を示すフラグ（dirtyフラグという）をオンにするようにすればよい。always型の常時評価は、上述した無限ループ型以外に、例えば、上記onUpdate関数が呼ばれた瞬間にメディアオブジェクトスペース２５とパターンアクション節３０５とを照合する方式で行うこともできる。
【００６３】
メディアオブジェクトスペース２５とパターン式とによる表示制御の利点は、メディアオブジェクトスペース２５内に存在する属性の異なる多種類のオブジェクトを同時に画面表示できることにある。図８で説明した従来の映像認識アプリケーションでは、メディアデータやメディアの特徴量は、ＭＰＥＧ画像デコードモジュール１０４から結線で分岐されたモジュール（図８では１０５と１０７）の個数分しか表示ができなかったが、本発明の映像認識アプリケーションでは、パターンアクション節での定義された複数種類のオブジェクトについて、オブジェクトの相互関係を考慮した高度の画面表示が可能となる。
【００６４】
次に、ユーザが表示画面上で行うマウス操作とメディア認識処理との関係について説明する。
パターンアクション節３０６は、ポリゴンＧＵＩオブジェクトを指定したパターン式と「always」アクション節とからなっているため、入力オブジェクトがポリゴンＧＵＩオブジェクトの時、またはメディアオブジェクトスペース２５にポリゴンＧＵＩオブジェクトが存在している期間中に、行３０６a 〜３０６ｄに記述された実行スクリプトが実行される。
【００６５】
行３０６ａにおいて、「＄ｐ＝＄０」は、変数＄０のオブジェクト（ここでは、ポリゴンＧＵＩ３２５）を変数＄ｐ（メモリ領域）に退避することを意味している。また、＄ｍ＝select1(/パターン式/)」は、メディアオブジェクトスペース２５からパターン式に該当するオブジェクト（ここに示した例では、マウス座標オブジェクト３２１）を選択し、変数＄ｍに設定することを意味している。
【００６６】
組み込み関数select1(/パターン式/)は、メディアオブジェクトスペース中の全オブジェクトの中から、パターン式の評価結果が真となる最初のオブジェクトを選択し、これを要求元モジュールに返答するように構成される。但し、関数select1(/パターン式/)は、パターン式に該当する全オブジェクトの集合を返答する構成にしても良い。Select(  )関数を採用することによって、モジュール結線型の従来のアプリケーションでは実現困難であった多数/多種類のオブジェクトを容易に扱うことが可能となる。
【００６７】
行３０６ｂに記述された「当たり判定（＄ｍ、＄ｐ）」関数は、外部関数群２４０の１つである。ここに示した例では、行３０６aの記述内容から、パラメータ＄ｐと＄ｐが、それぞれポリゴンＧＵＩとマウス座標を示している。「当たり判定（＄ｍ、＄ｐ）」関数は、表示画面上でマウスがポリゴンＧＵＩと重なる位置にあった時、判定結果として真を返答する関数である。判定結果が真となった時、行３０６ｃ、３０６ｄで記述されたアクションが実行される。
【００６８】
先ず、行３０６ｃに記述されたselect1(  )関数によって、現時刻（図３では時刻Ｔ０）の画像オブジェクト３２３が選択され、変数＄ｖに格納される。次に、行３０６ｄの記述「insert（色分析（＄ｐ、＄ｖ））」に従って、色分析用の外部関数「色分析(  )」を呼び出し、変数＄ｖが示す画像オブジェクト３２３の中で、変数＄ｐが示すポリゴンＧＵＩオブジェクト３２５が占める領域について、色分析を行う。色分析の結果は、色分布オブジェクト３２６として出力され、バッファ領域２０１Ｂとオブジェクト受付部２０２を介して、パターン照合部２０３に供給される。
【００６９】
ここで、ポリゴンＧＵＩオブジェクト３２５が、時刻Ｔ３で表示画面に出力され、直ぐにアイコンが重ねられたと仮定すると、色分布オブジェクト３２６は、次の時刻Ｔ４でメディアオブジェクトスペース２５（４）に蓄積（insert）される。
パターン照合部２０３に上記色分布オブジェクト３２６が供給されると、パターンアクション節３０４で、パターン式で評価結果が真となる。この場合、スクリプト実行部２０４が、パターンアクション節３０４で定義されたスクリプト「insert（棒グラフＧＵＩ(＄０)）」を実行し、棒グラフＧＵＩオブジェクト３２７を生成して、バッファ領域２０１Ｂに出力する。
【００７０】
上記棒グラフＧＵＩオブジェクト３２７は、時刻Ｔ５でパターン照合部２０３に供給され、メディアオブジェクトスペース２５（５）に蓄積される。この時、パターンアクション節３０５のパターン式で評価結果が真となるため、棒グラフＧＵＩオブジェクトが画面に表示されることになる。
【００７１】
パターン定義リスト２３０の最後のパターンアクション節３０７は、メディアオブジェクトスペース２５から、消去条件に合致したオブジェクトを消去するためのものである。
【００７２】
メディアオブジェクトスペース２５に蓄積される各オブジェクトは、図４で説明したようにtime属性をもっている。ビット列オブジェクト３２２は、time属性として、ＭＰＥＧファイル読込みモジュール２１からの出力時点の時刻情報が設定されている。ビット列オブジェクト３２２の時刻情報（タイムスタンプ）は、例えば、ＩＳＯ ＭＰＥＧ規格に定義されている多重化タイムスタンプの読み取り方式に従って読み出すことができる。
【００７３】
１つのビット列オブジェクト３２２を起点として、その後に生成される属性の異なる各種オブジェクト（画像オブジェクト、領域オブジェクト、ポリゴンオブジェクト等）には、パラメータとして渡される生成元オブジェクトのtime属性の承継されている。従って、図３のメディアオブジェクトスペース２５（０）〜２５（５）に示したオブジェクト３２３〜３２７には、ビット列オブジェクト３２２と同じ時刻情報（タイムスタンプ）を持っている。
【００７４】
パターンアクション節３０７は、always型の実行スクリプトであり、周期的に実行される。パターンアクション節３０７の実行スクリプトによれば、オブジェクトのtime属性が示す時刻と、変数＄ｔで指定された寿命時間との加算値（タイムリミット）が、現在の時刻を超えた時、delete関数が実行される。Delete関数は、メディアオブジェクトスペース２５から、変数＄０が示すオブジェクトを消去するための組み込み関数である。例えば、ビット列オブジェクト３２２のtime属性が「Ｔｘ」で、寿命時間がΔｔであれば、現時刻が「Ｔｘ＋Δｔ」を超えた時点で、ビット列３２２とそれから派生した全てのオブジェクトが、メディアオブジェクトスペース２５から消去される。
【００７５】
図５は、オブジェクト管理スペース２３の内容を示す。
オブジェクト管理スペース２３には、オブジェクト指向型の次の要素が実装される。
【００７６】
オブジェクト管理スペース２３に実装されるオブジェクト指向型の要素としては、パターンリスト２３に記述された各パターンアクション節のパターン式を処理するためのパターン式オブジェクト５１１（属性名$pattern）と、パターン式が参照する親オブジェクト管理スペース５０２を示すパラメータ５１４（属性名$parent）と、パターン式との照合に成功したオブジェクトの参照ポインタが格納される参照オブジェクト集合５１７（属性名$all）と、パターン式との照合処理で用いられる現在照合中のオブジェクトの一時保管先を示す変数（＄０）５１８と、パターン式に付随する実行スクリプトで定義された関数の先頭アドレスリストとが含まれる。
ここに示した例では、先頭アドレスリストとして、onInsertリスト５１２、onDeleteリスト５１３、onUpdateリスト５１５、alwaysリスト５１６がある。
【００７７】
オブジェクト管理スペース２３には、これらの要素（参照オブジェクト集合５１７を除く）が、次に説明する構文解析処理によるパターン定義リスト２３０の解析結果として記憶される。図５は、後述するように、パターン定義リスト２３０において、パターン式が親パターン式と子パターン式に階層化されていた場合のオブジェクト管理スペースの構造を示しており、オブジェクト管理スペース２３として示した部分が、子パターン式群用のものであり、親オブジェクト管理スペース５０２には、親パターン式群と対応して、要素５１１〜５１８（＄parent５１４は不要）が格納されている。パターン式が親パターン式のみからなる場合、オブジェクト管理スペースは、図５から、＄parent５１４と親オブジェクト管理スペース５０２を省略したものとなる。
【００７８】
図６は、パターン照合部２０３が最初に実行するパターン定義リストの構文解析処理の構造化フローチャートを示す。本実施例で解析するパターン定義リスト２３０は、次のように階層的に記述されている。
【００７９】
/親パターン式/ {
onInsert { 実行スクリプト }
onDelete { 実行スクリプト }
onUpdate { 実行スクリプト }
always   { 実行スクリプト }
/子パターン式１/ { 
onInsert {…} 
onDelete {…}
onUpdate {…}
always   {…}
/孫パターン式１/ { … }
/孫パターン式２/ { … }
}
/子パターン式２/ { … }
:
}
ここで、/パターン式/の部分は省略可能であり、もし省略された場合は、任意のオブジェクトに対して常に「評価結果が真」となるパターン式が指定されているものと解釈される。OnInsert節、onDelete節、onUpdate節、always節も省略可能であり、/パターン式/も含めて、パターン定義リストにおける節の記述順は自由である。従って、図３に示したパターン定義リスト２３０の一番外側の{ … }の記述は、/true/{ … }と等価となる。
【００８０】
図６に示したパターン定義リストの解析処理は、解析メイン関数６００と、再帰的に実行される構文解析モジュール６１０と、グローバルinsert関数６２０とからなる。
【００８１】
先ず、解析メイン関数６００が実行される。解析メイン関数には、パターン定義リスト２３０に記述された文字列全体（str）が渡される。解析メイン関数６００は、nullオブジェクトと文字列strの先頭位置をパラメータで指定して、構文解析モジュール６１０を呼び出す（６０１）。この時、文字列strの先頭位置が文字列カーソルcurで指定され、親メディアオブジェクトスペースがparentで指定される。
【００８２】
構文解析モジュール６１０の役割は、curで指定された位置からパターン定義リスト２３０を参照し、メディアオブジェクトスペースからパターン式と対応するオブジェクト名を検索し、その結果をグローバル変数を表す$globalに設定することにある。
【００８３】
構文解析モジュールは、先ず、関数のリターン変数msに、新規メディアオブジェクトスペースを割り当てる（６１１）。新規メディアオブジェクトスペースは、属性値がnullまたは空の集合であり、関数呼び出し無しで処理が終了するものとする。次に、パターン定義リスト２３０に記述されたパターン式を特定するために、カーソル位置curから文字列を走査し、空白を読み飛ばして、「/・・・/」となっている箇所を探す（６１２）。
【００８４】
「/・・・/」パターンを検出した場合、前後２つのスラント（/）の間に含まれる文字列部分を変数$sに代入する。この時、カーソル位置curは、後のスラントの次の位置に移動している。次に、パターン式の構文解析を行い、その結果を自身のパターン式オブジェクト$patternに代入する（６２１）。パターン式の構文解析には、ＪａｖａＳｃｒｉｐｔのコンパイラ構文解析処理のうち、数式に関する構文解析処理を利用できる。スクリプトの構文解析の結果は、実行可能な中間命令コードを含むオブジェクトとなる。
【００８５】
本実施例では、説明の簡単化のために、文字列照合６１２で、「/・・・/」パターンの検出に失敗した場合、パターン定義リスト２３０にパターン式が存在しないものとして判断し、パターン式$patternに、評価結果が常に真となるパターン式オブジェクトを設定する（６２２）。
【００８６】
次に、パターン式に付随するスクリプト節「｛・・・｝」を解析するために、カーソル位置curから、開始括弧“{”が検出されるまで文字の読み飛ばし（６１３）、開始括弧を検出すると、カッコ内の文字列を構文解析するための処理ループ６１４を実行する。ループ処理６１４では、開始括弧“{”と対をなす閉じ括弧“}”が現れるまで、onInsert、onDelete、onUpdate、always、/子パターン式/{・・・}などの小要素の構文解析を繰り返す。
【００８７】
ループ処理６１４では、先ず、カーソル位置curの後で「onInsert{・・・}」形式の文字列を検出するための文字照合を行い、照合が成功した場合は、括弧{・・・}内の実行スクリプト部分を$sに代入（６３１）する。この後で、$sに入っている実行スクリプト部分を、ＪａｖａＳｃｒｉｐｔコンパイラの命令文の構文解析処理に渡し、構文解析結果として得られた中間命令コードを、現在初期化状態にある自身のオブジェクトmsのonInsertリスト５１２（図５参照）に初期値として設定する（６４１）。
【００８８】
処理６３１で照合に失敗した場合、カーソル位置curの後で「onDelete{・・・}」形式の文字列を検出するための文字照合を行い、照合に成功した場合は、括弧{・・・}内の実行スクリプト部分を$sに代入し（６３２）、$sに入っている実行スクリプト部分を構文解析処理に渡し、構文解析結果を自身(ms)のonDeleteリスト５１３に初期値として設定する（６４２）。
上記と同様に、「onUpdate{・・・}」形式の文字列検出のための文字照合を行い（６３３）、照合に成功した場合は、構文解析処理による実行スクリプト部分の構文解析結果を自身(ms)のonUpdateリスト５１５の初期値として設定する（６４３）。
【００８９】
次に、「always{・・・}」形式の文字列検出のための文字照合を行い（６３４）、照合に成功した場合は、構文解析処理による実行スクリプト部分の構文解析結果を自身(ms)のalwaysリスト５１６に初期値として設定する（６４４）。
カーソル位置の文字がスラント“/”または開始括弧“{“の場合、その後に子パターン式が記述されている可能性がある。そこで、処理６３１〜６３４に失敗した場合、カーソル位置の文字が”/”または”{“かを確認し（６３５）、”/”または”{“が検知された場合は、構文解析処理６１０を再帰的に呼び出す（６４５）。
【００９０】
尚、処理６３５では、文字カーソル位置curを移動することなく、”/”または”{“の文字確認を実行する。また、処理６４５で構文解析処理６１０を再帰的に呼び出す時、パラメータとして、現在のカーソル位置curと、親オブジェクトまたは現在処理中の自身のオブジェクトmsを指定する。
【００９１】
ループ６１４では、開始括弧”{“と対をなす閉じ括弧”}”が現れるまで、上述した文字列onInsert、onDelete、onUpdate、alwaysおよび子パターン式の検出処理が繰り返される。閉じ括弧”}”が現れたら、それまでに読み込んだ情報を元に、メディアオブジェクトスペース２５の初期化関数を呼び出す（６１５）。
【００９２】
グローバルinsert関数６２０は、解析メイン関数６００で設定されたトップレベルのメディアオブジェクトスペース$rootに対して、後述するonInsert(  )関数を呼び出すことにより、後続のパターン照合処理を呼び出していく。図３のパターン定義リスト２３０で説明したinsert関数は、上記グローバルinsert関数６２０を介して実現される。
【００９３】
本実施例では、オブジェクト処理部２２で生成された全てのオブジェクトに上記グローバルinsert関数６２０を適用することによって、図２で説明したオブジェクト受付部２０２と同等の機能を提供できる。
【００９４】
図７は、オブジェクト管理スペース２３に記憶された関数を処理するための構造化フローチャートを示す。これら関数は、Ｊａｖａなどのオブジェクト指向型言語のメソッドとして実装される。
【００９５】
初期化関数６１５では、親オブジェクトスペースを示すパラメータparentを受け取り、一連の初期化処理（７０１）を行う。初期化処理７０１では、パラメータで指定されたオブジェクトを自身の$parent属性に設定し、親オブジェクトが持つonInsert、onDelete、onUpdateリストに、自身が持つonInsert、onDelete、onUpdate関数の先頭アドレスを追加する。これにより、親オブジェクトスペースにおいて、オブジェクトの追加、削除、更新が行われた場合、これらのイベントが子や孫のオブジェクト管理スペースに自動的に転送されるようになる。
【００９６】
初期化処理７０１が完了すると、オブジェクト管理スペースは、スクリプトの実行状態に入る。具体的には、自身の持つalwaysLoop(  )関数を並列処理として起動する（７０２）。これにより、always節に書かれた実行スクリプトの周期的な実行が可能となる。
【００９７】
７１０は、onInsert実行(obj) 関数であり、自身のメディアオブジェクトスペースに新たなオブジェクトが追加される直前に呼び出される。関数７１０の括弧内に設定されたパラメータobjは、これから追加されようとするオブジェクトを示している。
関数７１０は、先ず、自身の持つパターン式オブジェクト$patternを用いてobjの照合処理を行う（７１１）。本実施例では、$patternは、ＪａｖａＳｃｒｉｐｔなどの実行可能な中間命令コードとなっているため、この中間命令コードを図２のパターン照合部２０３とスクリプト実行部２０４に渡すことによって、パターン定義リスト２０４に記述されたスクリプトを実行できる。
【００９８】
この場合、$patternの実行制御や、関連する＄０などのオブジェクトの参照は、パターン照合部２０３で行い、実行スクリプトで定義された一連の命令実行は、スクリプト実行部２０４で行われる。また、スクリプト実行部２０４は、必要に応じて、外部関数スペース２５に用意された外部関数群２４０の関数を呼び出す。
【００９９】
処理７１１では、$patternによるオブジェクトobjとのパターン照合に成功した場合、そのオブジェクトを自身の参照オブジェクト集合５１７（属性名$all）に追加し（７１２）、新たなオブジェクトが追加されたことを下位の（子供の）オブジェクトスペースに伝達する。
【０１００】
具体的には、先ず、onInsertリスト５１２に登録されている全てのonInsert関数を次々と選択するループ処理（７１３）によって、今回追加されたオブジェクトobjをパラメータで指定して、各関数の呼び出しを行う（７１４）。この時、現在処理対象となっているオブジェクトを事前に＄０に代入しておくことによって、呼び出された関数が上記オブジェクトを参照できるようにしておく（７１４）。尚、onInsertリスト５１２に登録されている各関数のアドレス先には、ＪａｖａＳｃｒｉｐｔなどの中間命令コードが記録されているため、呼び出された関数の実行には、必要に応じてスクリプト実行部２０４が利用される。
【０１０１】
７２０は、メディアスペースからオブジェクトを削除する時に呼び出されるonDelete実行(obj) 関数である。パラメータobjは、削除対象となるオブジェクトを指定している。関数７２０が呼び出されると、onDeleteリスト７２１に登録されている全ての関数を次々と選択するループ処理（７２１）によって、選択された関数の実行スクリプトを呼び出す（７２２）。onDeleteリスト７２１に登録された各関数は、OnInsert実行と同様、削除対象オブジェクトobjを事前に＄０に代入した状態で呼び出される。最後に、自身の参照オブジェクト集合$all５１７から、パラメータobjで指定されたオブジェクトを削除する。オブジェクト削除では、パターン式による評価は不要であり、単に上位オブジェクトから下位オブジェクにメディアオブジェクトの削除を通知するだけでよい。
【０１０２】
７３０は、メディアオブジェクトスペース中の何れかのオブジェクトが更新された時に呼び出されるonUpdate実行(obj)関数である。パラメータobjは、更新オブジェクトを指定している。パラメータobjで指定されたオブジェクトは、呼び出し側で既に更新済のオブジェクト値をもっている。関数７３０は、下位オブジェクトにメディアオブジェクトの更新を通知するために、onUpdateリスト５１５に登録されている全ての関数を次々と選択するループ処理（７３１）によって、各関数を呼び出す（７３２）。この時、各関数は、更新オブジェクトobjを事前に＄０に代入した状態で呼び出される。
【０１０３】
オブジェクトが更新されると、パターン式$patternを満たさなくなる場合もあるため、ループ処理（７３１）が完了すると、再度、パターン式$patternとの照合が行われる（７３３）。更新後のオブジェクトがパターン式との照合に失敗した場合、自メディアオブジェクトスペースから削除するために、自身のonDelete関数を呼び出す（７３４）。
【０１０４】
パターン式との照合に成功した場合は、何も行う必要がない。これは、メディアオブジェクトスペースでは、オブジェクトの参照を管理すればよく、更新された各オブジェクトの値には関与しないからである。従って、参照オブジェクト集合$allの内容に変化はない。
７４０は、ＯＳで並行プロセスや並行スレッドとして実行されるalwaysLoop関数(xxx)である。関数７４０は、メディアオブジェクトスペースが存在している間、always節の実行スクリプトを繰り返して実行するために、無限ループ関数７４１によって、alwaysリスト５１６に登録されている全ての関数を次々と選択するループ処理（７４２）を繰り返す。従って、alwaysリスト５１６に登録された各関数は、所定の周期で実行される（７４３）。
【０１０５】
図３に例示したパターン定義リスト２３０は、ＭＰＥＧ符号化された画像データ（ビット列オブジェクト）が入力されると、これを復号化して画像フレーム（画像オブジェクト）に変換し（３０１）、画像フレームから特定の領域を抽出し（３０２）、この抽出領域を囲む枠線形状（ポリゴンＧＵＩ）を生成して表示画面に出力し（３０３、３０５）、ユーザがマウス操作で枠内領域をクリックした時、枠内領域の色分析を行なって（３０６、３０６ａ〜３０６ｄ）、分析結果を示す色分布の棒グラフを生成して画面に表示する（３０４、３０５）ためのものであった。
【０１０６】
本発明によれば、上記パターン定義リスト２３０で定義されるアクション記述を変更することによって、例えば、表示画面に映っている人物（顔）の領域を抽出し、ユーザがマウスでクリックした領域内の人物を画像認識することができる。また、認識結果を利用してデータベースをアクセスすることによって、その人物に関連する各種の情報を入手することが可能となる。
【０１０７】
例えば、映像画面から人の顔が映っている領域を抽出したい場合、図３のパターン定義リストにおけるアクション記述（パターンアクション節）３０２の実行スクリプトに、画像フレーム（画像オブジェクト）から人物の顔を見つけてその領域を抽出する顔領域抽出関数を適用する。人物の顔領域は、例えば、ＭＰＥＧ−７規格におけるVisual partのface recognition技術を応用し、スプリング型顔モデルとの照合によって抽出できる。
【０１０８】
上記顔領域抽出関数の実行によって生成された顔領域オブジェクトが入力された時、アクション記述３０３によって、領域を囲む枠線形状（ポリゴンＧＵＩ）を生成し、これをアクション記述３０５によって表示画面に出力できる。
ユーザのマウス操作に連動するアクション記述３０６ａ〜３０６ｄは、枠内領域（顔領域）がクリックされた時、人物を認識するための顔特徴抽出関数が実行されるように変更する。また、顔特徴抽出関数の実行によって生成された顔特徴量オブジェクトが入力された時、顔特徴量から人物識別情報を特定し、この人物識別情報を用いてデータベースから関連情報を検索するための関数を実行する新たなアクション記述を用意する。
【０１０９】
顔特徴量から人物を特定し、関連情報を取得するためデータ処理には、回線インタフェース１４で接続されるインターネット上のサーバを利用できる。この場合、顔特徴量から人物識別情報を特定するためのアクション記述の実行スクリプトには、予め指定されているサーバに対して顔特徴量を送信し、サーバから関連情報（ＨＴＭＬ情報）を取得するための外部関数を記述しておく。また、人物の関連情報（ＨＴＭＬ情報）を表示画面に出力するためには、パターン定義リストのアクション節３０５に、ＨＴＭＬ情報を追加すればよい。
【０１１０】
尚、ユーザ端末とインターネット上のサーバとの通信は、映像認識アプリケーションとは別の通信ソフトを介して行われるため、この時に実行される外部関数は、通信ソフトを起動してサーバに顔特徴量を送信し、サーバから関連情報を受信した時、これを新たなオブジェクトとして、オブジェクト受付部に入力する機能のものとなる。顔認識サーバと、関連情報を提供する情報サーバとが異なる場合、顔認識サーバから入手した人物識別情報に基いて、情報サーバをアクセスできる外部関数を実行スクリプトに適用すればよい。
【０１１１】
以上の実施例から明らかなように、本発明の映像認識システムでは、メディアオブジェクトの識別情報（メディア種別）と対応してパターン式と実行スクリプトとを定義した複数のパターンアクション節からなるパターン定義リストを採用することによって、メディアオブジェクトの再帰的な認識処理が可能となる。実施例では、入力メディアが映像の場合について説明したが、音声メディアについても、映像メディアと同様の方法で認識処理を実現できる。本発明によれば、パターン式で指定したオブジェクトの属性毎に、実行すべきアプリケーション動作を簡潔に記述できるため、臨機応変に現れる様々なメディアデータやメディア特徴量に対して柔軟に対応したメディア認識システムを提供できる。
【図面の簡単な説明】
【０１１２】
【図１】本発明によるメディア認識システムの１実施例を示すブロック図。
【図２】図１におけるメディア認識アプリケーション２０の詳細を示すブロック図。
【図３】パターン定義リスト２３０の１実施例とメディアオブジェクトスペース２５の内容の時間的推移を示す図。
【図４】本発明の実施例で扱うメディアオブジェクトのクラスの継承関係を示す図。
【図５】オブジェクト管理スペース２３の内容の１例を示す図。
【図６】パターン定義リストの構文解析処理の１実施例を示す構造化フローチャート。
【図７】オブジェクト管理スペース２３における関数処理の１実施例を示す構造化フローチャート。
【図８】従来のメディア認識アプリケーションの構造を説明するための図。
【符号の説明】
【０１１３】
１０：プロセッサ、１１：入力装置、１２：マウス、１３：表示装置、１４：回線インタフェース、１５：メモリ、１６：メディア情報ファイル、１７：ソフトウェアファイル、２０：メディア認識アプリケーション、２１：ＭＰＥＧファイル読込みモジュール、
２２：オブジェクト処理部、２３：オブジェクト管理スペース、２４：外部関数スペース、２５：メディアオブジェクトスペース、２０１：バッファ領域、２０２：オブジェクト受付部、２０３：パターン照合部、２０４：スクリプト実行部、２３０：パターン定義リスト、２４０：外部関数群。
【図１】
0004714056.tif 000002
【図２】
0004714056.tif 000003
【図３】
0004714056.tif 000004
【図４】
0004714056.tif 000005
【図５】
0004714056.tif 000006
【図６】
0004714056.tif 000007
【図７】
0004714056.tif 000008
【図８】
0004714056.tif 000009