(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
以下に、本発明に係る映像処理装置、および、映像処理方法の実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0015】
[本実施形態の構成]
以下、本発明の実施形態に係る映像処理装置100の構成の一例について
図1乃至
図3を参照して説明し、その後、本実施形態の処理等について詳細に説明する。
図1は、本実施形態における映像処理システムの概略構成の一例を示すハードウェア構成図である。
図2は、本実施形態における映像処理システムの構成の一例を示すハードウェア構成図である。
図3は、本実施形態に係る映像処理装置100の構成の一例を示すブロック図である。
【0016】
但し、以下に示す実施形態は、本発明の技術思想を具体化するための映像処理装置100を例示するものであって、本発明をこの映像処理装置100に特定することを意図するものではなく、請求の範囲に含まれるその他の実施形態の映像処理装置100にも等しく適用し得るものである。
【0017】
例えば、本実施形態で例示する映像処理装置100における機能分散の形態は以下に限られず、同様の効果や機能を奏し得る範囲において、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0018】
図1および
図2に示すように、映像処理システムは、概略的に、映像処理装置(送信装置)100−1と、映像処理装置(受信装置)100−2と、がネットワーク300を介して通信可能に接続して構成される。
【0019】
図1に示すように、(入力)映像データは、カメラまたはレコーダ等から出力されて、送信装置へ入力される。そして、送信装置100−1は、映像データをネットワーク300へ送信する。
【0020】
そして、受信装置100−2は、ネットワーク300経由で伝送されてきた映像データを受信する。そして、受信装置100−2が、(出力)映像データを出力すると、(出力)映像データは、モニタまたはレコーダ等へ入力される。
【0021】
ここで、
図2に示すように、映像処理システムを構成する映像処理装置100は、映像データ(フレーム)をフレームを細分化した細分化データ(IPデータ)へ変換する処理、細分化データの送受信処理、および、クロック制御等のためのLSI、ならびに、演算のためのCPU(Central Processing Unit)を備えていてもよい。
【0022】
また、映像処理装置100は、映像データをバッファリングするためのメモリ、ROMおよび記憶装置(バッファ)、映像の入出力のための任意数の入出力装置、ならびに、細分化データを送受信するためのNIC(ネットワークインターフェース)を備えていてもよい。
【0023】
ここで、入出力装置は、SDI(Serial Digital Interface)端子、HDMI(登録商標)(High−Definition Multimedia Interface)端子、または、Display port端子などであってもよい。
【0024】
また、
図2に示すように、入出力装置を構成する入力ポートの先には、カメラ、または、レコーダ等が接続され、入出力装置を構成する出力ポートの先には、モニタ(ディスプレイ)、または、レコーダ等が接続されてもよい。
【0025】
また、LSIとしては、FPGA、または、CPUなどのチップが搭載されてもよい。また、記憶装置は、RAM、SSD(Solid State Drive)、または、HDD(Hard Disk Drive)などであってもよい。
【0026】
また、NICとしては、ツイストペアケーブル、または、SFP+(Small Form−factor Pluggable+)もしくはXFP(10 Gigabit Small Form Factor Pluggable)などの光トランシーバモジュールなどが使用されてもよい。
【0027】
また、
図3に示すように、映像処理装置100は、概略的に、制御部102と記憶部(バッファ)106とを備えて構成される。これら映像処理装置100の各部は任意の通信路を介して通信可能に接続されている。
【0028】
ここで、映像処理装置100は、更に、データの入出力(I/O)を行う機能を有する入出力部を備えていてもよい(図示省略)。
【0029】
ここで、入出力部は、例えば、キー入力部、タッチパネル、コントロールパッド(例えば、タッチパッド、および、ゲームパッド等)、マウス、キーボード、および、マイク等であってもよい。
【0030】
また、入出力部は、アプリケーション等の(入出力)情報を表示する表示部(例えば、液晶または有機EL等から構成されるディスプレイ、モニタ、および、タッチパネル等)であってもよい。また、入出力部は、音声情報を音声として出力する音声出力部(例えば、スピーカ等)であってもよい。
【0031】
ここで、記憶部(バッファ)106は、各種のデータベース、テーブル、および/または、ファイルなどを格納する。ここで、記憶部106は、映像データ、および、細分化データ等を記憶していてもよい。また、記憶部106は、各種アプリケーションプログラム(例えば、ユーザアプリケーション等)を記憶していてもよい。
【0032】
記憶部106は、ストレージ手段であり、例えばRAM・ROM等のメモリ、HDDのような固定ディスク装置、SSD、フレキシブルディスク、および/または、光ディスク等を用いることができる。記憶部106には、CPUに命令を与え各種処理を行うためのコンピュータプログラム等が記録されていてもよい。
【0033】
ここで、バッファ106は、ネットワーク300を介して受信した映像データを一時的に貯めておいてもよい。また、バッファ106は、映像データを、1フレーム1フレーム識別することができ、フレームごとに区別しながら貯めておいてもよい。
【0034】
また、制御部102は、映像処理装置100を統括的に制御するCPU等からなる。制御部102は、制御プログラムと各種の処理手順等を規定したプログラムと所要データとを格納するための内部メモリを有し、これらプログラムに基づいて種々の処理を実行するための情報処理を行う。
【0035】
ここで、制御部102は、機能概念的に、フレーム受信通知部102a、数値化部102b、出力クロック制御部102c、および、出力制御部102eを備える。
【0036】
フレーム受信通知部(フレーム到着通知部)102aは、フレーム(映像データの1コマ)を細分化した細分化データをネットワーク300を介して受信する。
【0037】
ここで、フレーム到着通知部102aは、細分化データがフレームの先頭データを含む場合、当該先頭データを識別し、数値化部102bにフレーム受信通知を送信する。すなわち、フレーム受信通知部102aは、フレーム到着を通知してもよい。
【0038】
また、フレーム到着通知部102aは、細分化データをネットワーク300を介して受信し、当該細分化データがフレームの所定規格の先頭指示データ、または、フレームの独自の先頭指示データを含む場合、当該先頭指示データを識別し、数値化部102bにフレーム受信通知を送信してもよい。
【0039】
ここで、細分化データに含まれる先頭指示データは、MPEG2−TS(Transport Stream)ヘッダの情報(ペイロードスタートインジケータ等)、JPEG2000画像内の特別な識別子、または、その他独自のヘッダなどであってもよい。
【0040】
数値化部(映像出力タイミング数値化部)102bは、フレームにおけるサンプル数およびライン数の数値を取得する。すなわち、映像出力タイミング数値化部102bは、映像出力タイミングを数値化してもよい。
【0041】
ここで、映像出力タイミング数値化部102bは、フレームを細分化した細分化データをネットワーク300を介して受信した場合、出力中のフレームにおけるサンプル数およびライン数の数値を取得してもよい。
【0042】
また、映像出力タイミング数値化部102bは、細分化データをネットワーク300を介して受信した場合、映像出力クロックとフレームの先頭を示すタイミングパルスとを生成し、当該タイミングパルスに基づいて、出力中のフレームにおけるサンプル数およびライン数の数値を取得してもよい。
【0043】
また、映像出力タイミング数値化部102bは、フレーム受信通知を受信した場合、出力中のフレームにおけるサンプル数およびライン数の数値を取得してもよい。
【0044】
出力クロック制御部(映像出力クロック制御部)102cは、映像出力クロックを制御する。ここで、映像出力クロック制御部102cは、映像出力タイミング数値化部102bにより取得された数値と、映像出力クロックの基準となる、サンプル数およびライン数の基準値と、に基づいて、映像出力クロックを制御してもよい。
【0045】
また、映像出力クロック制御部102cは、映像出力タイミング数値化部102bにより取得された数値が基準値より大きい場合、映像出力のタイミングを遅らせるように映像出力クロックを制御し、映像出力タイミング数値化部102bにより取得された数値が基準値より小さい場合、映像出力のタイミングを早めるように映像出力クロックを制御してもよい。
【0046】
ここで、基準値は、所定時点に、映像出力タイミング数値化部102bにより取得された出力中のフレームにおけるサンプル数およびライン数の数値であってもよい。
【0047】
また、所定時点は、バッファ106の蓄積量が、当該バッファ106の容量の半分を超えた時点であってもよい。また、所定時点は、バッファ106の蓄積量が、リピートが発生しない当該バッファ106の容量であるバッファ下限値を超えた時点であってもよい。
【0048】
また、映像出力クロック制御部102cは、
図3に示すように、出力クロック調整部(映像出力クロック調整部)102dを少なくとも備える。
【0049】
映像出力クロック調整部102dは、映像出力クロックを調整する。ここで、映像出力クロック調整部102dは、電圧を変化させることで、映像出力クロックを調整してもよい。
【0050】
また、映像出力クロック調整部102dは、映像出力クロック制御部102cによる制御に基づいて、映像出力クロックを調整してもよい。すなわち、映像出力タイミング数値化部102bで取得された数値を使って、映像出力クロック調整部102dをどのように制御するかを、映像出力クロック制御部102cが決定してもよい。
【0051】
出力制御部102eは、バッファ106に記憶されたフレームを出力させる。ここで、出力制御部102eは、映像出力クロック調整部102dにより制御された映像出力クロックに基づいて、バッファ106に記憶されたフレームを(モニタ、または、レコーダ等に)出力させてもよい。
【0052】
[本実施形態の処理]
上述した構成の映像処理装置100で実行される処理の一例について、
図4乃至
図16を参照して説明する。
図4は、本実施形態の映像処理装置100における処理の一例を示すフロー図である。
【0053】
図4に示すように、まず、フレーム到着通知部102aは、フレームが細分化された細分化データをネットワーク300を介して受信し、当該細分化データがフレームの所定規格の先頭指示データ、または、フレームの独自の先頭指示データを含む場合、当該先頭指示データを識別し、数値化部102bにフレーム受信通知を送信する(ステップSA−1)。
【0054】
ここで、
図5を参照して、本実施形態におけるフレーム到着通知処理の一例について説明する。
図5は、本実施形態の映像処理装置100における処理の一例を示すフローチャートである。
【0055】
図5に示すように、まず、フレーム到着通知部102aは、細分化データをネットワーク300を介して受信したか否かを判定する(ステップSB−1)。
【0056】
そして、フレーム到着通知部102aは、細分化データをネットワーク300を介して受信していないと判定した場合(ステップSB−1:No)、(待機後に)処理を繰り返す(処理をステップSB−1に移行させる)。
【0057】
一方、フレーム到着通知部102aは、細分化データをネットワーク300を介して受信したと判定した場合(ステップSB−1:Yes)、処理をステップSB−2に移行させる。
【0058】
そして、フレーム到着通知部102aは、受信した細分化データが新しいフレームのデータか否かを判定する(ステップSB−2)。
【0059】
そして、フレーム到着通知部102aは、受信した細分化データが新しいフレームのデータではないと判定した場合(ステップSB−2:No)、処理をステップSB−1に移行させる。
【0060】
一方、フレーム到着通知部102aは、受信した細分化データが新しいフレームのデータであると判定した場合(ステップSB−2:Yes)、処理をステップSB−3に移行させる。
【0061】
そして、フレーム到着通知部102aは、(レジスタなど叩き)映像出力タイミング数値化部102bに受信したことを通知(フレーム受信通知を送信)し(ステップSB−3)、処理をステップSB−1に移行させる。
【0062】
図4に戻り、映像出力タイミング数値化部102bは、フレーム受信通知を受信した場合、映像出力クロックとフレームの先頭を示すタイミングパルスとを生成し、当該タイミングパルスに基づいて、出力制御部102eにより出力中のフレームにおけるサンプル数およびライン数の数値を取得する(ステップSA−2)。
【0063】
ここで、
図6を参照して、本実施形態におけるサンプル数およびライン数の一例を説明する。
図6は、本実施形態におけるサンプル数およびライン数の一例を示す図である。
【0064】
図6に示すように、デジタル映像伝送標準の規格(例えば、SMPTE292等)において、フレーム(1枚の画のデータ)は、図示のような構成になっており、データ(矩形)内の矢印のように、左から右、および、上から下、へジグザグに左上から右下に向かって処理されていく。
【0065】
ここで、データ(矩形)外の矢印のように、フレームには、縦横のようにトータルサンプル、および、トータルラインというものがあり、それぞれの値を指定することにより、フレーム1枚を構成する全データのうちのどこのデータを示すかを識別することができる。
【0066】
また、
図6において水平画素は、2200−280=1920であってもよい。また、
図6において垂直画素は、1122−42=1080であってもよい。
【0067】
ここで、
図5を参照して、本実施形態における映像出力タイミング数値化処理の一例について説明する。
【0068】
図5に示すように、まず、映像出力タイミング数値化部102bは、フレーム受信通知を受けるまで待機する(ステップSC−1)。
【0069】
そして、映像出力タイミング数値化部102bは、通知を受けた場合、その時点の(サンプル数、ライン数)を取得し、(レジスタなど)見える所へ数値として出力し(ステップSC−2)、処理をステップSC−1に移行させる。
【0070】
更に、
図7を参照して、本実施形態の映像出力タイミング数値化処理の一例について説明する。
図7は、本実施形態の映像出力タイミング数値化処理の一例を示す概念図である。
【0071】
図7に示すように、まず、画のデータ(フレーム)は細分化され、MPEG2−TSヘッダ等が付加され、ネットワーク300を介して、受信装置100−2に運ばれてくる。
【0072】
ここで、細分化データが入ってくる間隔は、送信装置100−1に撮影装置等から入力される映像データの入力クロック、および/または、ネットワーク300の品質により変わるが、おおよそ等間隔であってもよい。
【0073】
そして、受信装置100−2のフレーム到着通知部102aは、新しい画のデータ(フレーム)を受信した場合、それを映像出力タイミング数値化部に通知する(処理[1])。ここで、フレーム到着通知部102aは、新しいフレームが来る度に通知し、それを繰り返してもよい。
【0074】
すなわち、おおよそ等間隔で細分化データを受信した場合、受信装置100−2のフレーム到着通知部102aは、おおよそ等間隔でフレーム受信通知を通知することになる。ここで、受信装置100−2はバッファ106等のデータを溜める機構を備えていてもよい。
【0075】
そして、受信装置100−2の映像出力タイミング数値化部102bは、新しいフレームを受信したと通知があった時点の、出力中の(サンプル数、ライン数)の値を(例えば、
図7に示すO1:(500、300)、O2:(500、400)、および、O3:(500、500)等のように)数値化する(処理[2])。
【0076】
ここで、映像出力タイミング数値化部102bは、新しいフレームを受信したとの通知がある度に、数値化してもよい。
【0077】
なお、おおよそ等間隔で入ってくる画のデータに合わせて通知が来て、受信装置100−2は、その際の出力タイミングを数値化するため、映像出力のクロックが送信装置100−1に入力される映像データの入力クロックと完全には合っておらず、だんだんと値が変わっていってしまう。
【0078】
また、
図7に示すように、受信装置100−1に入力される画のデータのタイミングと、受信装置100−1からの映像出力のタイミングと、はそれぞれ独立であってもよい。また、映像出力のフレームの先頭(TOF)は、どの画データに対してこのTOFとなる等も決まっていなくてもよい。
【0079】
ここで、
図8を参照して、本実施形態におけるクロック生成処理の一例について説明する。
図8は、本実施形態におけるクロック生成処理の一例を示す図である。
【0080】
図8の上図に示すように、映像処理装置100は、例えば、LMH1983等のチップを備えることで、映像出力クロックと、フレームの先頭(TOF)を示すタイミングパルスと、を生成してもよい。
【0081】
ここで、
図8に示すように、TOFと、隣のTOFと、の間が、1枚分の時間である。例えば、映像出力クロックを1秒間に30fps(frames per second)で出力する設定にした場合、1秒間に30回TOFが入ることになる。
【0082】
また、映像出力クロックとTOFを示すタイミングパルスとは、受信した映像の画のデータとは無関係に、担々と刻まれ通知され、ハードウェア(映像処理装置100)内で使用されてもよい。
【0083】
また、
図8の下図は、TOFとTOFとの間の1枚分の時間を抜き出したものであり、30fpsの場合、TOFとTOFとの間が約0.03333..秒となる。
【0084】
ここで、
図8の下図に示すように、フレーム中の細分化データの位置(例えば、映像出力のタイミング等)を(サンプル数、ライン数)で示す際、四角形で表すこともできるが、左から右へ、上から下へ、ジグザグに左上から右下に向かって、一綴りなので、簡単な横軸としても表すこともできる。
【0085】
例えば、
図8の下図に示す横軸の左端目盛は、先頭(0,0)を示しており、横軸の右端目盛は、末尾(2199,1124)を示していてもよい。
【0086】
また、
図8の下図に示すように、TOFとTOFとの間が1枚分であるので、それを(サンプル数、ライン数)で表すことができる。
【0087】
ここで、
図6を参照して具体的に示すと、映像処理装置100は、1枚分の時間である0.0333..秒を、2475000(2200(トータルサンプル数)*1125(トータルライン数))で、等分することで、(サンプル数、ライン数)を取得することができる。
【0088】
例えば、映像処理装置100は、0.0000秒の場合、(サンプル数、ライン数)を、(0,0)と取得してもよい。また、映像処理装置100は、0.1666秒の場合、(サンプル数、ライン数)を、(1100,562)と取得してもよい。
【0089】
また、映像処理装置100は、0.3333秒の場合、(サンプル数、ライン数)を、(2199,1124)と取得してもよい。したがって、
図8の下図のフレーム中の点は、1/3の位置なので、(733,375)となる。
【0090】
図4に戻り、映像出力クロック制御部102cは、映像出力タイミング数値化部102bにより取得された数値が、映像出力クロックの基準となる、サンプル数およびライン数の基準値より大きい場合、映像出力のタイミングを遅らせるように、映像出力クロック調整部102dを制御し、映像出力タイミング数値化部102bにより取得された数値が基準値より小さい場合、映像出力のタイミングを早めるように、映像出力クロック調整部102dを制御する(ステップSA−3)。
【0091】
ここで、
図5および
図9乃至
図13を参照して、本実施形態における映像出力クロック制御処理の一例について説明する。
図9は、フレーム受信時における、映像出力タイミングを示す図である。
【0092】
図5に示すように、映像出力クロック制御部102cは、映像出力タイミング数値化部102bにより所定時点に取得された、出力中のフレームにおける(サンプル数、ライン数)を取得する(ステップSD−1)。
【0093】
そして、映像出力クロック制御部102cは、ステップSD−1にて取得した(サンプル数、ライン数)を基準値とする(ステップSD−2)。
【0094】
そして、映像出力クロック制御部102cは、映像出力タイミング数値化部102bにより取得された、出力中のフレームにおける(サンプル数、ライン数)の数値を取得する(ステップSD−3)。
【0095】
そして、映像出力クロック制御部102cは、ステップSD−3にて取得された数値が、基準値より大きくなっていたら、クロックを遅らせるように、映像出力クロック調整部102dを制御し、ステップSD−3にて取得された数値が基準値より小さくなっていたら、クロックを速めるように、映像出力クロック調整部102dを制御し(ステップSD−4)、処理をステップSD−3に移行させる。
【0096】
ここで、
図9に示すように、映像処理装置100は、例えば、最初の映像出力タイミングO1を取得した後、その値を基準値として、一定に保つように映像出力のクロックを高くしたり、低くしたりしてもよい。
【0097】
具体的には、フレーム1を受信した時間T1における映像出力のタイミングがO1であり、映像処理装置100は、O1のタイミングを一定(図中のライン上)にするように制御する。
【0098】
まず、時間T1から時間T3において、映像出力のクロックが入力映像のクロックより遅いため、O2からO3のように、映像出力のタイミングが少しずつ前へ遷移している。
【0099】
そこで、時間T3から時間T5において、このままではデータが飽和し、スキップが必要になるため、映像処理装置100は、O1に比べ、O2およびO3の(サンプル数、ライン数)が小さくなっているのを検知し、クロックを早める。
【0100】
このように制御することで、映像出力の処理は、早くなり、映像出力のタイミングが少しずつ後ろへ遷移していく。
【0101】
一方で、時間T5から時間T7において、映像出力のクロックが入力映像のクロックより早いため、O6からO7のように、映像出力のタイミングが少しずつ後ろへ遷移している。
【0102】
そこで、時間T7から時間T9において、このままではデータが枯渇し、リピートが必要になるため、映像処理装置100は、O1に比べ、O6およびO7の(サンプル数、ライン数)が大きくなっているのを検知し、クロックを遅くする。
【0103】
このように制御することで、映像出力の処理は、遅くなり、映像出力のタイミングが少しずつ前へ遷移していく。
【0104】
ここで、
図10乃至
図13を参照して、本実施形態における映像出力クロック制御処理の具体例について説明する。
図10乃至
図13は、フレーム受信時における映像出力タイミングを示す図である。
【0105】
図10に示すように、映像処理装置100は、フレームを受信した時間T(1,2,3,4)における、映像出力のタイミングO(1,2,3,4)について、出力中のフレームの(サンプル、ライン)で知ることができる。
【0106】
図10では、入ってくるフレームの時間に対し、映像出力のタイミングが遅いため、だんだんと処理しているデータの場所が前の方、すなわち、出力するフレームの(サンプル、ライン)が減っていく方に動いている。
【0107】
すなわち、
図10では、入力映像と、映像処理装置100の出力映像と、の両クロックが同期することができておらず、このままだと、データが溜まっていき、スキップが必要な状態になる。
【0108】
そこで、
図11に示すように、映像処理装置100は、時間T4にて映像出力のクロックを高くすることで、早く処理されるようになり、だんだんと処理しているデータの場所が後ろの方、すなわち、出力するフレームの(サンプル、ライン)が増える方に動かしている。それにより、スキップが必要な状態から遠ざけることができる。
【0109】
すなわち、本実施形態においては、ある時の映像出力のタイミングを基準として、それに対し、タイミングが前へ遷移しているときは、入力映像のクロックのほうが映像出力クロックより高い状態なので、クロックを高くし、フレームを速く出力させるようにしてもよい。
【0110】
次に、
図12では、入ってくるフレームの時間に対し、映像出力のタイミングが速いため、だんだんと処理しているデータの場所が後ろの方、すなわち、出力するフレームの(サンプル、ライン)が増えていく方に動いている。
【0111】
すなわち、
図12では、入力映像と、映像処理装置100の出力映像と、の両クロックが同期することができておらず、このままだと、データが無くなり、リピートが必要な状態になる。
【0112】
そこで、
図13に示すように、映像処理装置100は、時間T4にて、映像出力のクロックを低くすることで、だんだんと処理しているデータの場所が前の方、すなわち、出力するフレームの(サンプル、ライン)が減る方に動かしている。それにより、リピートが必要な状態から遠ざけることができる。
【0113】
すなわち、本実施形態において、タイミングが後ろへ遷移している場合は、入力映像のクロックのほうが映像出力クロックより低い状態なので、クロックを低くし、フレームを遅く出すように制御してもよい。
【0114】
図4に戻り、映像出力クロック調整部102dは、映像出力クロック制御部102cによる制御に基づいて、電圧を変化させることで、映像出力クロックを調整する(ステップSA−4)。
【0115】
ここで、
図5および
図14を参照して、本実施形態における映像出力クロック調整処理の一例について説明する。
図14は、本実施形態における映像出力クロック調整の一例を示す図である。
【0116】
図5に示すように、映像出力クロック調整部102dは、(レジスタなどで)設定変更を受け、映像出力クロックを調整する(ステップSE−1)。
【0117】
ここで、
図14に示すように、映像処理装置100は、例えば、LMH1983等のチップを備えることで、映像出力クロックを微調整することができる。
【0118】
例えば、
図14に示すように、基準となる30fpsの映像出力クロック[1]を高くした場合、TOFの間隔が短くなり(1枚1枚の出力間隔が速くなり)、映像出力クロックは、約30.000030fpsとなる。
【0119】
一方、
図14に示すように、基準となる30fpsの映像出力クロック[1]を低くした場合、TOFの間隔が長く(1枚1枚の出力が短く)なり、約29.999997fpsとなる。
【0120】
このように、本実施形態においては、映像出力クロックを微小に変化させることで、
図8の下図において、TOFとTOFとの間が短く、または、長くなり、新しいフレームを受信したと通知があった時点での、出力中の(サンプル数、ライン数)の数値に影響を与えることで、(サンプル数、ライン数)の数値を制御することができる。
【0121】
図4に戻り、出力制御部102eは、映像出力クロック調整部102dにより制御された映像出力クロックに基づいて、バッファ106に記憶されたフレームをモニタまたはレコーダに出力させ(ステップSA−5)、処理を終了する。
【0122】
ここで、
図15および
図16を参照して、本実施形態におけるバッファ量遷移の一例について説明する。
図15および
図16は、本実施形態におけるバッファ量遷移の一例を示す図である。
【0123】
図15には、基準点(基準値)を、バッファ106の容量の半分を超えた時点に、取得された出力中の(サンプル数、ライン数)の数値とした際の、バッファ量と、(サンプル数、ライン数)と、の遷移を示している。
【0124】
なお、
図15に示すように、バッファ量の半分辺りから本制御を開始すると、リピートおよびスキップが発生しにくくなり、リピート耐性およびスキップ体制が高くなる。
【0125】
このように、本実施形態においては、送受信する1枚の画のデータサイズに比べ、バッファ106をある程度大きく持ち、バッファ106の中央程度まで、データが溜まるように画を受信し、そこから当制御を行うようしてもよい。
【0126】
それにより、本実施形態においては、バッファ蓄積量を、バッファ106の中央付近で留めることになり、バッファ蓄積量がバッファ106の下限または上限になって、映像データをスキップ処理またはリピート処理をするような状況になることを防ぐことができる。
【0127】
また、
図16には、基準点(基準値)を、リピートが発生しないバッファ106の容量であるバッファ下限値を超えた時点に、取得された出力中の(サンプル数、ライン数)の数値とした際の、バッファ量と、(サンプル数、ライン数)と、の遷移を示している。
【0128】
なお、
図16に示すように、バッファ下限値少し上から本制御を開始すると、リピート耐性は低いが、遅延を少なくすることができる。
【0129】
図15および
図16に示すように、本実施形態においては、バッファ量が遷移し、リピートスキップが起こらないよう制御することができる。
【0130】
なお、従来から、映像を入力し、対向機へネットワーク経由でデータ送信し、対向機にてデータ受信し、映像を出力するモデルの伝送装置があった。
【0131】
ここで、当該従来モデルでは、データ到着時間のゆらぎを吸収するために、データ受信(映像出力)側装置で、バッファを設けて処理する場合において、入力映像のクロックと映像出力側装置の映像出力クロックとの微小な差異により、バッファのデータ蓄積量に増減が発生していた。
【0132】
その際、当該従来モデルでは、(1)出力するべきタイミングでデータが足りなくなった場合、直前の同じ画をもう一枚出力(リピート)し、(2)データがバッファの溜め込み限界量を超えて溢れそうになった場合、溜めていた画を一枚捨てる(スキップ)処理を行っていた。
【0133】
当該従来モデルでは、(1)、(2)のようなバッファデータ蓄積量制御をすることにより、データ枯渇またはデータ飽和時でも、システムとして破綻せず、継続して映像伝送を続けられるようになっていた。
【0134】
しかしながら、当該従来モデルでは、同じ画をもう一度出す、または、画を削除するということをしており、映像を変化させてしまうという問題点を有していた。
【0135】
そこで、本実施形態においては、機器間で個体差があり、完全に同じクロックにはできないため、入力映像のクロックと映像出力側装置の映像出力クロックとに違いがある場合でも、映像出力側装置のバッファのデータ蓄積量が、減少してデータ枯渇、または、増加してデータ飽和の状態になり、リピート処理またはスキップ処理を行う必要がないように制御している。
【0136】
すなわち、本実施形態においては、フレーム受信時の映像出力タイミングが常に一定になるように、映像出力クロックを調整している。
【0137】
それにより、本実施形態においては、入力映像のクロック(入力映像を出力する機器が映像を出力する際のクロック)と、受信装置100−2が出力する際のクロックと、が同じフレームレートで出力する設定になっていても、厳密には全く一緒ではなく、微小な差が生じるという課題を解決している。
【0138】
さらに、本実施形態においては、送信側および受信側にて、同じ部品を使ったとしても個体差があって、クロックが他方に比べて高いまたは低いという状態に必ずなってしまい、バッファの蓄積量が減るまたは増えるという課題も解決している。
【0139】
以上のように、フレーム受信時間は、送信装置100−1が送信する時間(入力映像のクロック)により変化するので、受信装置100−2によって制御できるものではない。
【0140】
しかしながら、本実施形態において、映像出力のタイミングは、受信装置100−2の映像出力クロックを制御することで自由に変化させることができ、映像出力クロックをフレーム受信時間時の映像出力タイミングに合わせて、動的に制御することで、フレームを速く出したり、遅く出したりすることができる。
【0141】
すなわち、フレームが毎回一定間隔で到着し、映像出力のクロックが入力映像のクロックに全く合っていれば、映像出力のクロックは、一定になるが、実際の制御では、全く合うようにすることはできないので、本実施形態においては、それに近くなるように制御している。
【0142】
[他の実施形態]
さて、これまで本発明の実施形態について説明したが、本発明は、上述した実施形態以外にも、請求の範囲に記載した技術的思想の範囲内において種々の異なる実施形態にて実施されてよいものである。
【0143】
例えば、映像処理装置100は、スタンドアローンの形態で処理を行ってもよく、クライアント端末(映像処理装置100とは別筐体である)からの要求に応じて処理を行い、その処理結果を当該クライアント端末に返却するようにしてもよい。
【0144】
また、実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【0145】
このほか、明細書中および図面中で示した処理手順、制御手順、具体的名称、各処理の登録データもしくは検索条件等のパラメータを含む情報、画面例、または、データベース構成については、特記する場合を除いて任意に変更することができる。
【0146】
また、映像処理装置100に関して、図示の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。
【0147】
例えば、映像処理装置100の各装置が備える処理機能、特に制御部102にて行われる各処理機能については、その全部または任意の一部を、CPUおよび当該CPUにて解釈実行されるプログラムにて実現してもよく、また、ワイヤードロジックによるハードウェアとして実現してもよい。
【0148】
尚、プログラムは、後述する、コンピュータに本発明に係る方法を実行させるためのプログラム化された命令を含む、一時的でないコンピュータ読み取り可能な記録媒体に記録されており、必要に応じて映像処理装置100に機械的に読み取られる。すなわち、ROMまたはHDDなどの記憶部106などには、OS(Operating System)と協働してCPUに命令を与え、各種処理を行うためのコンピュータプログラムが記録されている。このコンピュータプログラムは、RAMにロードされることによって実行され、CPUと協働して制御部を構成する。
【0149】
また、このコンピュータプログラムは、映像処理装置100に対して任意のネットワークを介して接続されたアプリケーションプログラムサーバに記憶されていてもよく、必要に応じてその全部または一部をダウンロードすることも可能である。
【0150】
また、本発明に係るプログラムを、コンピュータ読み取り可能な記録媒体に格納してもよく、また、プログラム製品として構成することもできる。ここで、この「記録媒体」とは、メモリーカード、USBメモリ、SDカード、フレキシブルディスク、光磁気ディスク、ROM、EPROM、EEPROM、CD−ROM、MO、DVD、および、Blu−ray(登録商標) Disc等の任意の「可搬用の物理媒体」を含むものとする。
【0151】
また、「プログラム」とは、任意の言語や記述方法にて記述されたデータ処理方法であり、ソースコードやバイナリコード等の形式を問わない。なお、「プログラム」は必ずしも単一的に構成されるものに限られず、複数のモジュールやライブラリとして分散構成されるものや、OSに代表される別個のプログラムと協働してその機能を達成するものをも含む。なお、実施形態に示した各装置において記録媒体を読み取るための具体的な構成、読み取り手順、あるいは、読み取り後のインストール手順等については、周知の構成や手順を用いることができる。
【0152】
記憶部106に格納される各種のデータベース等は、RAMもしくはROM等のメモリ装置、ハードディスク等の固定ディスク装置、フレキシブルディスク、および/または、光ディスク等のストレージ手段であり、各種処理やウェブサイト提供に用いる各種のプログラム、テーブル、データベース、および/または、ウェブページ用ファイル等を格納してもよい。
【0153】
また、映像処理装置100は、既知のパーソナルコンピュータ、ワークステーション等の情報処理装置として構成してもよく、また、該情報処理装置に任意の周辺装置を接続して構成してもよい。また、映像処理装置100は、該情報処理装置に本発明の方法を実現させるソフトウェア(プログラム、データ等を含む)を実装することにより実現してもよい。
【0154】
更に、装置の分散・統合の具体的形態は図示するものに限られず、その全部または一部を、各種の付加等に応じて、または、機能負荷に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。すなわち、上述した実施形態を任意に組み合わせて実施してもよく、実施形態を選択的に実施してもよい。