(57)【特許請求の範囲】
【請求項１】
コンピュータによって動的に状態が変化する映像処理システムを制御する方法であって，
リアルタイムに入力される映像を処理する映像処理システムの状態に応じた動作を記述するプログラムであって，基本データ型として映像データ型と，該映像処理システムの基本操作を表す基本演算を備えるプログラムを読み込む過程と，
読み込んだプログラムを，前記映像データ型の変数と前記基本演算を節点とし，その間の関係を枝とするグラフ構造で表される内部データ表現に変換し記憶装置に記憶する過程と，
外部からデータ要求があった場合に，そのデータ要求に応じて前記内部データ表現を参照しながら映像処理システムを制御する過程と，
前記映像処理システムが処理した映像をリアルタイムで出力する過程とを有する
ことを特徴とする映像処理システム制御方法。
【請求項２】
コンピュータによって動的に状態が変化する映像処理システムを制御する装置であって，
リアルタイムに入力される映像を処理する映像処理システムの状態に応じた動作を記述するプログラムであって，基本データ型として映像データ型と，該映像処理システムの基本操作を表す基本演算を備えるプログラムを読み込み，読み込んだプログラムを，前記映像データ型の変数と前記基本演算を節点とし，その間の関係を枝とするグラフ構造で表される内部データ表現に変換する制御手段と，
前記内部データ表現を蓄積しておく内部表現蓄積手段とを具備し，
前記制御手段が，外部からデータ要求があった場合に，そのデータ要求に応じて前記内部表現蓄積手段に蓄積している内部データ表現を参照しながら映像処理システムを制御し，前記映像処理システムが処理した映像をリアルタイムで出力する
ことを特徴とする映像処理システム制御装置。
【請求項３】
コンピュータによって動的に状態が変化する映像処理システムを制御するための制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって，
リアルタイムに入力される映像を処理する映像処理システムの状態に応じた動作を記述するプログラムであって，基本データ型として映像データ型と，該映像処理システムの基本操作を表す基本演算を備えるプログラムを読み込む処理と，
読み込んだプログラムを，前記映像データ型の変数と前記基本演算を節点とし，その間の関係を枝とするグラフ構造で表される内部データ表現に変換し記憶装置に蓄積しておく処理と，
外部からデータ要求があった場合に，そのデータ要求に応じて前記内部データ表現を参照しながら映像処理システムを制御する処理と，
前記映像処理システムが処理した映像をリアルタイムで出力する処理とを，
コンピュータに実行させるプログラムを格納したことを特徴とする映像処理システム制御プログラム記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，コンピュータによって映像処理システムをプログラム制御する方法に関し，特に動的にシステムの状態が変化する場合でも，映像処理システムを効率的かつ柔軟にプログラム制御することのできる映像処理システム制御方法に関するものである。
【０００２】
【従来の技術】
コンピュータはもともと数値あるいは文字列の処理を行うように設計されていたが，最近では，画像，映像といったマルチメディアデータを扱えるようになってきた。
【０００３】
このような経緯から，一般的なプログラム言語は数値，文字列を基本データ型として持っているが，映像データ型は基本データ型として持っていない。例えば，基本データ型の一つ，数値型には基本演算として加減乗除（＋，−，×，÷）があらかじめ定義されており，それらを組み合わせた式，例えば４×（２＋３）によって複合演算が定義される。
【０００４】
ビデオ編集システム，ビデオサーバーなどの映像処理システムにおいて主要なデータは，数値や文字列ではなく時間的・空間的な次元を持った映像である。したがって，映像処理システムを制御するためのプログラム言語は，映像を基本データ型として持つことが望ましい。映像に対する基本演算としては，映像の直列合成，並列合成，時間的限定，空間的限定，時間的伸長，空間的伸長，トラック選択，静止化などがあり得る。これらの基本演算を組み合わせた式によって，映像に対する複合演算をプログラムすることができる。
【０００５】
一般的なプログラム言語と映像データ型を扱うプログラム言語の最も大きな違いは，映像データのデータ量が膨大であることである。そのため，処理のために多くの計算時間，多くの中間記憶領域が必要になる。数値データを処理する場合には，数値をコンピュータの内部メモリにいったん読み込んで，計算を行い，その結果を内部メモリに書き込むことが即座にできる。それに対して，映像データはギガバイトあるいはそれ以上のデータ量になることが普通であるので，内部メモリにすべてのデータを読み込むことは非現実的であるし，処理にも時間がかかる。
【０００６】
アナログビデオ編集システムでは，ＥＤＬ（Ｅｄｉｔ  Ｄｅｃｉｓｉｏｎ  Ｌｉｓｔ）と呼ばれる一種のプログラム言語が用いられていた。ＥＤＬは，素材ビデオテープの入ったビデオデッキの番号，タイムコードのイン点，アウト点などからなるリストであり，リストを上から順に解釈し，その記述に従って，ビデオデッキ，エフェクタなどを制御することでバッチ処理的にビデオ編集を行う。この場合，編集に必要な時間は，完成版の映像の長さより長くなる。すなわち，１時間のビデオを編集するためのＥＤＬを解釈するのに，１時間以上かかることになる。
【０００７】
デジタルビデオに対しても，ＥＤＬと類似のプログラム言語が開発されているが，やはり基本的にはバッチ処理型であり，編集に要する時間はビデオテープのまき戻し，早送りに要する時間が節約できるだけで，やはり完成した映像と同程度の時間がかかる。
【０００８】
従来の映像処理システムの一構成ブロック図を図６に示す。図中の２１が映像処理システムの中核部であり，２２は素材映像である。素材映像２２は，デジタル化されて素材映像蓄積手段２３に蓄えられる。利用者２６が，ＥＤＬなどのプログラムを与えると，制御手段２５は，プログラムを頭から順に解釈して，順次，映像処理システム２１を制御し，完成映像２４を得る。結局，このようにデジタルビデオ編集システムになっても，利用者が所望の映像を得るまでに長い時間待たなくてはいけないという問題点は残ったままであった。極端な例を挙げれば，利用者が最初の１枚の画像だけ欲しい場合にも，すべての処理が終わるまで長い時間待たなければならなかった。
【０００９】
ノンリニア編集システムにおいては，この問題点を解決するために，あらかじめプログラムを解析して，編集処理をシミュレートして（実際の編集処理は行わず）タイムテーブルを作成しておくことで，最終的な編集を行う前に完成ビデオのプレビューを可能としている。このようなノンリニア編集システムの例としては，ＡＶＩＤ社のＭｅｄｉａ  Ｃｏｍｐｏｓｅｒシステムがある。
【００１０】
【発明が解決しようとする課題】
以上説明してきたビデオ編集システムの例は，素材映像データは静的である，つまり，データの内容が時々刻々変化することはない。このような静的なデータのみを扱う「静的な」映像処理システムにおいては，あらかじめプログラムを解析して，編集処理をシミュレートして（実際の編集処理は行わず）タイムテーブルを作成しておくことが可能である。しかし，「動的な」映像処理システムにおいては，時々刻々変化する映像データやその他のデータを扱っているので，あらかじめタイムテーブルを作成するといったことはできない。「動的な」映像処理システムの例として，スポーツ中継映像において，現在映像に写っている選手の情報を字幕として合成し，出力する映像処理システムを考えることができる。この場合，字幕の表示を開始する時刻は，選手が映像中に登場する時刻に依存して変化するから，あらかじめいつどこで字幕を表示するということを記述したタイムテーブルを作成しておくことはできない。
【００１１】
本発明は，上記問題点を解決するためになされたものであり，動的にシステムの状態が変化する場合でも，映像処理システムを効率的かつ柔軟にプログラム制御することのできる映像処理システム制御方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
本発明は，コンピュータによって動的に状態が変化する映像処理システムを制御する方法であって，リアルタイムに入力される映像を処理する映像処理システムの状態に応じた動作を記述するプログラムであって，基本データ型として映像データ型と，該映像処理システムの基本操作を表す基本演算を備えるプログラムを読み込み，読み込んだプログラムを，前記映像データ型の変数と前記基本演算を節点とし，その間の関係を枝とするグラフ構造で表される内部データ表現に変換し記憶装置に記憶しておき，外部からデータ要求があった場合に，そのデータ要求に応じて該内部データ表現を参照しながら映像処理システムを制御し，映像処理システムが処理した映像をリアルタイムで出力することを特徴とする。プログラムを読み込みながらバッチ的に映像処理システムを制御するのではなく，その動作記述をいったん内部表現に変換しておき，データ要求があって初めて，映像処理システムを現在の状態に応じて制御し，実際の処理を行わせるようにしたので，動的にシステムの状態が変化する場合でも，映像処理システムを効率的かつ柔軟にプログラム制御できる。
【００１３】
【発明の実施の形態】
本発明の一実施形態について図１の処理フロー図と，図２に示す構成ブロック図を用いて説明する。
【００１４】
まず，図２の構成ブロック図から説明する。図６で説明した従来技術と共通する部分２１〜２６は説明を省略する。３１，３２は映像に重畳する字幕情報（文字列情報）である。内部表現蓄積手段３３は，プログラムを内部表現に変換したものを保持するためのメモリ領域である。
【００１５】
図１に示す処理フローにおいて，ステップ１１では，映像処理システム２１の動作を記述したプログラムを入力する。
図３に，制御手段２５が入力するプログラムの一例を示す。１行目は，変数ａに“ニュース１”という名前の映像を代入する。２行目は，変数ｂに“ニュース１．字幕．日本語”という名前で指定される文字情報を代入する。３行目は，変数ａと変数ｂを重ねあわせて，字幕付きの映像を作成し，変数ｃに代入する。４行目は，変数ｃを出力する。
【００１６】
ステップ１２では，入力したプログラムを内部表現に変換し，内部表現蓄積手段３３に蓄える。プログラムの内部表現の一例について，図４を用いて説明する。図３のプログラムにおいては，１行目を読み込んだ時点で，節点５２を作成する（節点を作成するだけで，実データを処理するわけではない）。この節点５２は，「“ニュース１”という名前の映像を読み込む」という基本演算を表している。変数ａ，ｂ，ｃは，それぞれコンピュータ・メモリー中の名前テーブル５１として実現され，この時点で，変数ａは節点５２を指すように設定される。
【００１７】
同様に，プログラムの２行目が読み込まれた時点で，節点５３が作成され，変数ｂは節点５３を指すように設定される。プログラムの３行目が読み込まれた時点で，節点５４が作成され，変数ａ，ｂの内容が名前テーブル５１を介して参照され，節点５４から節点５２，節点５３への枝（リンク）が形成される。ここまでは，実データの処理をまったく行わないで，内部表現のみを作成する処理である。
【００１８】
ステップ１３では，データ要求待ちの状態に入り，データ要求があるまで待機する。データ要求は，例えば，利用者２６が映像の再生，早回しなどを指示することによって発生する。
【００１９】
ステップ１４では，データ要求に従って，内部表現を参照しながら映像処理システム２１を制御し，ステップ１５では，その結果得られるデータを要求元（利用者２６）に返す。
【００２０】
制御手段２５による映像処理システム２１の具体的な制御について，図４に示した例を用いて説明する。例えば，利用者２６が映像の再生を指示した場合，制御手段２５によって「時刻０：００：００の画像データ」を得るためのデータ要求（データ要求Ａ）と，「時刻０：００：００の音声データ」を得るためのデータ要求（データ要求Ｂ）に分解される。データ要求Ａに対して，まず，節点５４が参照される。演算ｏｖｅｒｌａｐと二つの下位節点５２，５３から画像データを取得し，それらを合成するものである。したがって，節点５２を参照し，時刻０：００：００に対応する実画像データを読み込むように，映像処理システム２１を制御する。同様に，節点５３を参照し，時刻０：００：００に対応する字幕データを読み込むように，映像処理システム２１を制御する。
【００２１】
次に，読み込まれた画像データと字幕データを重ねあわせて出力する。データ要求Ｂについても同様であるが，字幕データには音声に対応するデータが含まれていないので，節点５２から得られる音声データをそのまま出力する。
【００２２】
一つのデータ要求に対する出力が得られたら，ステップ１３に戻り，データ要求待ち状態に入る。映像再生の場合には，即座に，次の時刻に対応する画像データを取得するためのデータ要求が発行されて，ステップ１４，１５の処理が繰り返される。
【００２３】
図３に示したプログラムの例は，「動的」に変化する映像を扱わない場合について説明したが，動的に変化するデータがあっても同じように処理を行うことができる。例えば，次のようなプログラムを考える。
【００２４】
Ｖｉｄｅｏ  ａ  ＝  Ｌｉｖｅ（“Ｓｐｏｒｔｓ”）；
Ｔｅｘｔ    ｂ  ＝  Ｃａｐｔｉｏｎ（ＧｅｔＰｅｒｓｏｎＩｎ（ａ））；
ｃ  ＝  ｏｖｅｒｌａｐ（ａ，ｂ）；
ｒｅｔｕｒｎ  ｃ  ；
１行目の  Ｌｉｖｅ（“Ｓｐｏｒｔｓ”）  は，リアルタイムに入力されるスポーツ中継映像を表す。その中継映像を映像変数ａに代入する。変数ａで参照される映像データは，時々刻々内容が変化する動的なデータである。２行目の演算は，ＧｅｔＰｅｒｓｏｎＩｎ（ａ）で，映像ａ，つまり中継映像に写っている選手の名称を返す演算である。選手名称は外部から入力するようにしてもよいし，画像認識処理を用いて獲得するようにしてもよい。  Ｃａｐｔｉｏｎ（）で表される演算は，選手名称を与えると，あらかじめデータベースに格納されている選手情報を検索してきて，その結果を変数ｂに代入する。３行目では，上で説明した静的な場合と同様に，画像を重ね合わせて映像変数ｃに代入する。
【００２５】
上記のプログラム例に対応するグラフ表現を，図５に示す。図４の例と異なる点だけ説明を加える。節点６１は，中継映像チャンネルに対応する節点であり，時々刻々内容が変化している。節点６２は，節点６１で表される映像に現在どの選手が写っているかを調べるという演算を表している。節点６３は，節点６２の演算で返される選手名称を入力として受け取って，選手情報データベース６４を参照しながら選手情報を表す文字列を返す演算を表している。
【００２６】
なお，上記実施形態において，映像処理システム２１はコンピュータで実行可能な手続きの集まりとして，素材映像蓄積手段２３はコンピュータ制御可能なハードディスクなどの記憶装置によって，制御手段２５はＣＰＵによって，内部表現蓄積手段３３はコンピュータメモリなどの記憶装置によって実現することができる。また，以上説明した制御方法は，コンピュータによって実行可能なプログラムによって実現することができ，ハードディスク，コンパクトディスク，フロッピーディスクなどの記録媒体に記録して提供することが可能である。
【００２７】
【発明の効果】
以上説明したように，本発明によれば，データ要求に応じて処理を行うようにしたので，利用者の必要としないデータを得るための余計な処理を省くことができ，動的にシステムの状態が変化する場合でも効率的かつ柔軟に映像処理システムを制御できる効果がある。
【図面の簡単な説明】
【図１】本発明の一実施形態の処理フロー図である。
【図２】本発明の一実施形態例を説明するための構成ブロック図である。
【図３】映像処理システムの動作を記述したプログラムの例である。
【図４】内部データ表現の模式図である。
【図５】別の内部データ表現の模式図である。
【図６】従来技術を説明するための構成ブロック図である。
【符号の説明】
１１〜１５  制御手段の処理ステップ
２１  映像処理システム
２２  素材映像
２３  素材映像蓄積手段
２５  制御手段
２４  完成映像
２６  利用者
３１，３２  字幕情報
３３  内部表現蓄積手段
【図１】
0003619005.tif 000002
【図２】
0003619005.tif 000003
【図３】
0003619005.tif 000004
【図４】
0003619005.tif 000005
【図５】
0003619005.tif 000006
【図６】
0003619005.tif 000007