マルチメディアは、テキスト、音声、動画等の様々な種類のコンテンツを含み、ネットワークオペレーターにビジネス好機を提供している。より高い帯域幅での通信が可能となり、またパケット交換方式のインターネット・プロトコル(IP)技術の利用により、テキスト、音声、静止及び動画グラフィックス、写真、ビデオクリップ及び音楽といった豊富なコンテンツを送信することが可能となった。ネットワークオペレーターが、この市場において利益を得るためには、品質及び信頼性について顧客の期待に応えなければならない。サーバーレベルでのメディアのトランスコーディングは、今日の携帯端末、携帯電話、コンピュータ、その他の電子機器等から構成される異機種ネットワーク環境下でマルチメディアアプリケーションをレンダリングするのに、重要な技術である。個々のデバイスのリソースは制限されており、多くの場合、メディアを自身で適応化させることができないので、サービスプロバイダ側でメディアの適応化及びトランスコーディングを行う必要がある。これは、サービスプロバイダにとって非常に重要な問題である。なぜなら、今後数年で非常に急激なトラフィックの増加が見込まれており、プロバイダが新しいハードウェアを導入するだけではその急激な増加に追いつかない可能性があるからである。サーバーの数を増やすという総当り的な解決方法は、効率的でない。また、サーバーの数を増やすとそれに比例して消費電力が増加し、放熱や必要とする空間も増加する。システム性能を改善し、トラフィックの大幅な増加に対処する別の方法として、ビデオ符号化のスマート化を図る技術を考案することが挙げられ、マルチメディア適応化におけるリソース集約化に重要な段階となる。
動き補償ビデオ符号化では、複数ブロックからなるシーンの処理を行い、各ブロックは、複数のピクセルからなる。基本的に、現在のビデオコーデックは、動き補償符号化を採用しており、フレームが幾つかの先行フレームに対して符号化され、時間的依存性を利用してより良い補償を行うことを目指している。動き補償ビデオ符号化において最も労力を要する段階は、動き推定段階である。この段階は、シーンに存在する物体のあるフレームから次のフレームへの移動を推定する動き推定アルゴリズムを通じて実行される。この動き推定を使用して合成フレームを生成するが、シーンは、推定された物体の動きに合わせて変形されたものとなる。合成フレームは、差動符号化される現在のフレームに対する予測子として使用される。このような動き推定アルゴリズムは、非常に多くの計算を行う必要があり、したがってエンコーダの実行時間の大部分を占め、解像度が高くなるに従いその割合が大きくなることから、最適化を図るべき対象となっている。
今日まで、ブロックベースの動き推定の問題に対処するために様々な努力がなされており、一般的な問題として、予測フレームが参照フレームからコピーされた複数の小さな四角形の領域から構築されるのをより単純化することを目標としてきた。次に、ブロックベースの動き推定について述べる。本明細における説明では、基本ブロックを16×16ピクセルとしている。しかしながら、本発明と同じ理念を、異なる大きさのブロックに適用可能である。システムの目的は、符号化される現在のフレームに対する予測フレームを生成することである。予測フレームは、所与の参照フレームから現在のフレームを差動符号化することによって生成される。システムは、現在のフレームにおける各16×16ブロックに対して、参照フレームにおける最もマッチングするブロックを探す。探索では、参照フレーム内の幾つかのブロック(16×16の境界に必ずしも合っていなくてもよい)を調べ、現在のブロックとの差が最も小さいブロックを選択する。動き補償プロセスにおいて鍵となる要素である動きベクトルとは、単順に(現在のフレームにおける)現在のブロック部分と比較して(参照フレームにおける)最もマッチングするブロックに対するオフセット(補正値)であると言うことができる。そして、最もマッチングするブロックが参照フレーム又は予測フレームの現在のブロック位置にコピーされる。ブロックのコピーのみが許される状況を考慮すれば、このプロセスの後の予測フレームは、参照フレームから構築できる(画像ブロック間の差分を表す選択されたメトリックによれば)最良の近似となると言える。参照フレームは、現在のフレームを差動符号化するための予測子として使用されている。
以下に、従来技術の参照文献とその内容を簡単に記す。様々な方向に研究がなされている。S. Borman, M. Robertson, R.L Stevenson著「Block Matching Sub-Pixel Motion Estimation from Noisy, Undersampled Frames(多ノイズのアンダーサンプルされたフレームからのサブピクセル動き推定におけるブロックマッチング)」SPIE Visual Communications and Image Processing Conference,1999年には、SAD、MSE及びNCFにおけるサンプリング誤差又はノイズ誤差の影響の実証的研究について記載されている。また、W. Li, E. Salari著「Successive Elimination Algorithm for Motion Estimation(動き補償のための逐次削除アルゴリズム)」IEEE Transactions on Image Processing, Volume 4, Issue 1, 1995年1月, 105‐107頁では、高速動き補償のための動的プログラミングのような方法を考案すべくSAD及びMSEの特性について研究をおこなっている。著者は、解空間の包括的探索を必要としないアルゴリズムに注目し、存在するメトリックの特性について述べているが、新たなメトリックを提案してはいない。F. Tombari, S.Mattocia, L. di Stefano著 「Template Matching Based on Lp Norm Using Sufficient Conditions with Incremental Approximation(増分近似の十分条件を使用したlpノルムに基づくテンプレートマッチング」IEEE International Conference on Video and Signal Based Surveillance, 2006年11月, 20頁は、上記の著者Li及びSalari氏の研究を発展させたものである。メトリックの高速バージョンを計算するのに、同様な動的プログラミング手法を使用している。
U. Koc, K.J.R. Liu著「Interpolation-free Subpixel Motion Estimation Technique in DCT Domain(DCT領域における補間なしサブピクセル動き推定技術)」IEEE Transactions on Circuits and Systems for Video Technology, Volume 8, Issue 4, 1998年8月, 460‐487頁では、サブピクセルレベルに注目し、DCT領域における技術を使用して空間領域におけるサブピクセル補間を避けることを試みており、使用される技術は少なくとも空間領域で使用される技術と同等程度に複雑である。メトリックは、DCT領域へのシフトに対応して適切に拡張されている。S.Lee, Soo-lk Chae,著「Two-step Motion Estimation Algorithm using Low Resolution Quantization(低解像度量子化を使用した2段階動き推定アルゴリズム)」International Conference on Image Processing, Volume 3, 1996年9月, 795‐798頁は、動き推定技術に注目している。この論文では、SADマッチングに"fail fast"という手法を用いている。まず、画像を量子化して各ピクセルの精度を、例えば、8ビット/ピクセルから4ビット/ピクセルへと落とす。精度を落としたバージョンを使用して、第1関数が2つのブロックを比較する。比較結果が許容範囲にある場合は、最大精度のメトリックを使用してプロセスを続行する。また論文では、ハードウェアへの実装を考慮してはいるものの、プロセッサが実行するコードにSADを含むSingle Instruction Multiple Data(SIMD)命令セットが存在する場合において、このSIMDを有効活用することについては検討していない。本発明の重要な側面は、今日の商業プロセッサの市場において利用可能な性能を最適化するSIMD命令セットのようなものを使用して、メトリックの計算に必要な時間を削減することである。
C.-K. Cheung, L.-M. Po著「A Hierarchical Block Motion Estimation Algorithm using Partial Distortion Measure(部分歪測度を用いた階層的ブロックマッチングアルゴリズム)」International Conference on Image Processing, Volume 3, 1997年10月, 606‐609頁に報告されている研究では、通常のサブサンプリングと厳密に等価である通常のグリッドサンプリングを使用したピクセルのサンプリングを行っている。この論文では、SAD及びMSEを、ピクセル全数の1/2又は1/4(5の目形、2列に1列、又は2行に1行の割合のいずれか)のピクセルを使用して計算している。また、ブロックを、1/4グリッドのSADと比較する。n個の優れたものに入る場合には、1/2グリッド密度が使用される次の回に持ち越される。前の回で取得されたn個の優れたもののうち、m個が持ち越されて、完全なSADとの比較を行う。残念ながら、このCheung氏及びPo氏によって提案された手法では、SIMDのような型の並列操作を有効活用できない。
Y.-L.Chan, W.-C.Siu著「New Adaptive Pixel Decimation for Block Motion Vector Estimation(ブロック動きベクトル探索のための新しい適応ピクセルデシメーション)」IEEE Transactions on Circuits and Systems for Video Technology, Volume 6, Issue 1, 1996年2月, 113‐118頁では、Cheung氏及びPo氏の論文と同様な研究を報告している。しかしながら、Chan氏及びSiu氏の論文では、5の目形を除く通常使用されるような様々なサンプリングパターンを検討している。ピクセル密度が1/4及び1/9となるような(2×2ピクセルにつき1ピクセル、又は3×3ピクセルにつき1ピクセル)パターンについて検討しているが、サブピクセル推定については触れていない。
以上のように、画像ブロックの差分を計測するのに様々なタイプのメトリックが、ブロック補償のための現在のコーデックで使用されており、これらを以下の説明でもメトリックと称する。的確なメトリックを使用したとしても、これらを算出するのは、計算コストの高いプロセスである。
したがって、この分野において、画像ブロック間の差分を表すメトリックを速く計算できる有効で改良された方法及びシステムが求められている。
以上のような点を鑑み、本発明は、動き補償ビデオ符号化のブロック比較に使用される2つの画像ブロック間の差分を表すメトリックを計算するための改良された方法及びシステムを提供することを目的とする。
上記課題を解決するために、本発明の1つの態様においては、フレームによって構成されるシーンの動き補償ビデオ符号化において使用されるメトリックを決定する方法であって、メトリックは参照フレームに含まれる第1画像ブロックと現在のフレームに含まれる第2画像ブロックとの差分を表し、第1画像ブロック及び第2画像ブロックは、同じ行数及び列数のピクセルを含み、当該方法は、(a1)第1画像ブロック及び第2画像ブロックにおけるピクセルサブセットを選択するために、第1及び第2画像ブロックと同じ行数及び列数を有するパターン行列を生成する段階と、(b1)前記(a1)段階で生成されたピクセルサブセットにおけるピクセルそれぞれの特徴を取得する段階と、(c1)ピクセルサブセットの特徴を処理して、メトリックを決定する段階とを備える。
前記(a1)段階は、(a2)シーンにおける物体の動きの方向を示すシーンのグローバル動き特徴を生成する段階と、(b2)動き補償ビデオ符号化に使用されるCPUアーキテクチャ、(a2)段階で生成されたグローバル動き特徴及びピクセルサブセット内のピクセル数の推定値であるピクセルバジェットに対応するパターン行列を生成する段階とをさらに有する。
前記(a2)段階は、(a3)シーンについて、振幅及び方向を持つ平均動きベクトルを決定する段階と、(b3)平均動きベクトルの振幅を、所定の動き無しとする閾値と比較する段階と、(c3)平均動きベクトルの振幅が閾値よりも小さい場合に、グローバル動き特徴を、物体の動きが無いことを示す静止状態であると判断する段階と、(d3)平均動きベクトルの振幅が閾値以上である場合は、(a3)段階において決定された平均動きベクトルの方向に基づいて、グローバル動き特徴が、水平方向運動、垂直方向運動又は斜め方向運動のうちいずれか1つであると判断する段階とをさらに含む。
前記(b2)段階は、(a4)動き補償ビデオ符号化に使用されるCPUアーキテクチャ、グローバル動き特徴及びピクセルバジェットに基づいて、一連の所定の複数のパターン行列からパターン行列を選択する段階をさらに含む。
前記(a4)段階は、(a5)動き補償を行う前にパターン行列のリポジトリを生成し、リポジトリのパターン行列はそれぞれ、動き補償ビデオ符号化に使用されるCPUアーキテクチャ、グローバル動き特徴及びピクセルバジェットに対応している。
前記(a5)段階は、リポジトリの複数のパターン行列のそれぞれについて、(a6)第1画像ブロック及び第2画像ブロックにおいて同じ位置を占めるピクセルに対応しているセルであって、パターン行列の複数のセルに複数のブール値を記憶する段階と、(b6)第1画像ブロック及び第2画像ブロックからのピクセルがメトリックの計算に含まれることに対応する"真"又は"偽"のいずれか一方のブール値を、パターン行列の複数のセルに記憶し、第1画像ブロック及び第2画像ブロックからのピクセルがメトリックの計算から除外されることに対応する"真"又は"偽"の他方のブール値を、パターン行列の複数のセルに記憶する段階とをさらに含む。
前記(b1)段階は、(a7)輝度値である特徴を取得する段階と、(b7)第1画像ブロックの複数のピクセルの輝度値を、第1行列の複数のセルに記憶する段階と、(c7)第2画像ブロックの複数のピクセルの輝度値を、第2行列の複数のセルに記憶する段階とをさらに有する。
前記(c1)段階は、(a8)パターン行列を使用して第1行列及び第2行列のセルを選択する段階と、(b8)(a8)段階で選択したセルに記憶された輝度値に、差分絶対値和関数を適用する段階とをさらに有する。前記(c1)段階は、(a9)パターン行列を使用して第1行列及び第2行列のセルを選択する段階と、(b9)(a9)段階で選択したセルに記憶された輝度値に、平均自乗誤差関数を適用する段階とをさらに有する。
本発明の他の側面に係るコンピュータ可読プログラムコード手段を記憶するコンピュータ可読媒体は、コンピュータよって実行された場合に、上述の方法の段階を実行させるコンピュータ可読媒体。
本発明の他の側面に係る方法は、複数のピクセルを有する複数のブロックを含むシーンを動き補償ビデオ符号化するのに使用され、第1画像ブロックと第2画像ブロックとの間の差分を表すメトリックを迅速に計算する方法であって、(a17)第1画像ブロック及び第2画像ブロックにおけるピクセルサブセットを選択するためのパターン行列を生成する段階と、(b17)ピクセルサブセットにおけるピクセルそれぞれの特徴を取得する段階と、(c17)ピクセルサブセットの特徴を処理して、メトリックを決定する段階とを備える。
前記(a17)段階は、(a18)シーンにおける物体の動きの方向を示すシーンのグローバル動き特徴を生成する段階と、(b18)動き補償ビデオ符号化に使用されるCPUアーキテクチャ及びグローバル動き特徴に対応するパターン行列を生成する段階をさらに有する。
前記(a18)段階は、(a19)シーンについて、振幅及び方向を持つ平均動きベクトルを決定する段階と、(b19)平均動きベクトルの振幅を、所定の動き無しとする閾値と比較する段階と、(c19)平均動きベクトルの振幅が閾値よりも小さい場合に、グローバル動き特徴を、物体の動きが無いことを示す静止状態であると判断する段階と、(d19)平均動きベクトルの振幅が閾値以上である場合は、平均動きベクトルの方向に基づいて、グローバル動き特徴が、水平方向運動、垂直方向運動又は斜め方向運動のうちのいずれか1つであると判断する段階とをさらに含む。
前記(b18)段階は、(a20)一連の所定の複数のパターン行列から、パターン行列を選択する段階をさらに含む。前記(b17)段階は、(a21)輝度値である特徴を取得する段階と、(b21)第1画像ブロックの複数のピクセルの輝度値を、第1行列の複数のセルに記憶する段階と、(c21)第2画像ブロックの複数のピクセルの輝度値を、第2行列の複数のセルに記憶する段階とをさらに有する。例えば、前記(c17)段階は、(a22)パターン行列を使用して第1行列及び第2行列のセルを選択する段階と、(b22)(a22)段階で選択したセルに記憶された輝度値に、差分絶対値和関数を適用する段階とをさらに有してもよい。あるいは、前記(c17)段階は、(a23)パターン行列を使用して第1行列及び第2行列のセルを選択する段階と、(b23)(a8)段階で選択したセルに記憶された輝度値に、平均自乗誤差関数を適用する段階とをさらに有してもよい。
ピクセルサブセットは、複数のグループを含み、第1画像ブロック及び第2画像ブロックにおいて、複数のグループは、ブロックをカバーする範囲が最大となるように位置している。これらのグループは、好ましくは等間隔に配置され、各グループ内の複数のピクセルは、ピクセルの複数の行のうちの1つに連続して位置している。
本発明の他の態様では、プロセッサ及びメモリ有し、フレームによって構成されるシーンの動き補償ビデオ符号化において使用されるメトリックを決定するシステムであって、メトリックは参照フレームに含まれる第1画像ブロックと現在のフレームに含まれる第2画像ブロックとの差分を表し、第1画像ブロック及び第2画像ブロックは、同じピクセル行数及びピクセル列数を含み、(a10)第1画像ブロック及び第2画像ブロックにおけるピクセルサブセットを選択するために、第1及び第2画像ブロックと同数の行及び列を有するパターン行列を生成するパターン行列生成ユニットと、(b10)ピクセルそれぞれの特徴を読み出す画像読み出しユニットと、(c10)ピクセルサブセットの特徴を処理することによりメトリックを決定するメトリック計算ユニットとを備えるシステムを提供する。
パターン行列生成ユニット(a10)は、(a11)シーンにおける物体の動きの方向を示すシーンのグローバル動き特徴を計算するグローバル動き特徴決定ユニットと、(b11)シーンのグローバル動き特徴、動き補償ビデオ符号化に使用されるCPUアーキテクチャ及びピクセルサブセット内のピクセル数の推定値であるピクセルバジェットに基づいて、パターン行列を生成する行列決定ユニットとをさらに有する。
行列決定ユニット(b11)は、(a12)一連の所定の複数のパターン行列を記憶するパターン行列リポジトリと、(b12)パターン行列リポジトリからパターン行列を選択するパターン行列選択ユニットとを含み、パターン行列リポジトリのパターン行列はそれぞれ、動き補償ビデオ符号化に使用されるCPUアーキテクチャ、グローバル動き特徴及びピクセルバジェットに対応している。このようなシステムにおいて、特徴は、輝度値である。
メトリック計算ユニット(c10)は、差分絶対値和関数をピクセルサブセットの輝度値に適用する差分絶対値和計算ユニットを含む。または、メトリック計算ユニット(c10)は、平均自乗誤差関数をピクセルサブセットの輝度値に適用する平均自乗誤差計算ユニットを含む。
ピクセルサブセットは複数のグループを含み、複数のグループは、第1画像ブロック及び第2画像ブロックにおいてブロックをカバーする範囲が最大となるように位置している。
以上のように、動き補償ビデオ符号化で使用されるメトリックを決定するための改良されたシステム及び方法が提供される。
本発明のさらなる特徴及び利点は、添付の図面を参照して説明され、例示することのみを目的として以下に記載される実施形態を通じて明らかになる。
ブロックベースの動き推定アルゴリズムは、2つの画像ブロック間の差分(文献ではしばしば、誤差と称される)を表すメトリックが、最適化領域周辺では最小になるというほぼ正しい仮定に基づいているので、実際のメトリックに対する依存性は緩く、アルゴリズムは、効率的で低コストの近似メトリックに対して弾力的であると考えられる。本発明は、比較されるブロックにおいて選択されたピクセルのみを考慮することにより、画像ブロック間の差分を表すメトリックを決定するのに掛かる計算コストを削減するものである。メトリックを決定するのに掛かる時間が大幅に削減でき、画像の明らかな品質低下が生じない。
本発明の詳細を説明する前に、図1に示すシステム100を参照して、動き補償符号化の概略を説明する。コアシステム102aは、動き推定モジュール106に接続されたフレームバッファモジュール104、及び動き補償モジュール108を含む。動き推定モジュール106は、動き補償モジュール108に接続される。フレームバッファモジュール104は、他のモジュールが動き補償フレームを生成するのに必要とする幾つかの前(previous)フレームを格納し、生成された動き補償フレームは、処理中の現在の(current)フレームの予測子として使用される。動き補償された画像を生成するコアサブシステム102aについては、図2を参照して詳細に説明する。
動き補償モジュール108からの動き補償されたフレームを、現在の画像から差し引き(図1ではマイナス"−"の演算子114で表されている)、残り(画像の差分)が、符号化のために変換ステップへ送られる。
フレームはフレームソース110によって生成されるが、フレームソースは画像フレームをエンコーダに提供しさえすればどのような装置であってもよい(例えば、カメラ又はファイル)。フレームソース110に記憶されたフレームの処理は、選択されたモードに依存する。モード選択モジュール112は、コーデックに入力されるフレームを、動き補償で符号化するべきか、又は"フレーム内予測モード(イントラモード)"を使用して符号化するべきかを示す。フレーム内予測(イントラ)モードは、他のフレームに対して復号化ができないフレーム(例えば、キー(key)フレーム)に対して使用される。このようなフレームには、その画像内に完全包含されるデータに限定して行われるスタンドアローンの符号化を適用する。モード選択モジュールは、ストリームレベルのポリシーに基づく構成であるので、動き補償構成の外部に設けられる。モード選択モジュールは、補間されたフレーム(動き補償されたフレーム)、若しくは、補償又は他のフレームを参照することなくそのフレーム自身で復号化を行うことのできる"キーフレーム"のいずれかを選択する。とりわけ、前フレームの復号化をせずに動画の特定の位置を探す場合には、キーフレームが使用される。また、伸長(解凍)は、キーフレームでのみ開始することができ、動き補償されたフレームは他のフレームに依存するため、伸長の初期点とすることはできない。モード選択モジュール112が、イントラ予測モジュール116を選択した場合は、このモジュール116が、他のフレームの助けを借りることなく現在のフレーム内でピクセルの予測を行う。このとき、符号化のためのキーフレームが準備される。先に述べたように、Iフレーム(intra‐coded frame)の圧縮/伸長は、他のフレームに依存しない。フレーム内予測の詳細については、本発明の議論すべき範囲を超えるため、ここでは記載しない。モード選択モジュール112が、変換オペレーションを行うよう選択した場合は、動き補償モジュール108の出力に従って処理された後のフレームが、変換モジュール118に入力される。変換は、コーデックに固有のステップであり、画像が、空間(ピクセル)領域から周波数領域に変換される。変換は、通常、離散コサイン変換(DCT)又は同類(kin)変換である。変換符号化はよく知られた技術であり、本発明の原理に関してこれ以上詳細に説明する必要はないため、省略する。ピクセルを周波数領域に変換した後、得られたデータを量子化モジュール128の助けを借りて量子化する。量子化は、基本的に精度低下(したがって、不可逆な)を伴うステップであり、実際のデータの表示に使用されるビットの数が少なくなっていることを意味する。量子化の種類及び粗さはそれぞれ、コーデック及びユーザーが指定する目標とする品質/ビットレートに依存する。そして、量子化モジュール128からの出力は、逆量子化モジュール126、及び動き推定モジュール106から動きベクトルを受信するエントロピー符号化モジュール130によって処理される。エントロピー符号化は、コーデック固有のステップであり、量子化モジュール128からの精度が落とされたデータは、可変長コード及び他の補償技術を使用して符号化される。このレベルでは、精度は失われておらず、より効率的なデータ表示が使用されているだけである。典型的には、ハフマン符号化を変化させたものであって、事前に計算される静的符号、又はデータの符号化に従って展開される適応符号のいずれかを使用する。より高度なコーデックには、H.264のような高度な技術を使用する。
エントロピー符号化モジュール130の出力は、トランスポート符号化モジュール132によって処理される。このモジュールは、出力がファイルとしてストレージモジュール136に格納されるのか又は送信モジュール134によってデータとして送信されるのかに基づいて、エントロピー符号化されたデータをトランスポート形式に"ラッピング"する。典型的なトラスンポートファイル形式としては、MPEG TS、AVI、3GP等が挙げられる。送信は、インターネットで動画をストリームするのに使用されるリアルタイム・トランスポート・プロトコル、すなわちRTP/RTSPを使用して行うことができる。
逆量子化モジュール126は、量子化モジュール128の出力を受信し、量子化モジュール128が行ったステップを元に戻す。これは、しかしながら、量子化の段階で情報が回復不可能に失われてしまうため、完全に元に戻すプロセスとはならない。したがって、逆量子化は、精度を落とした元のデータの近似値を生成するプロセスである。次に、逆量子化されたデータが、逆変換モジュール124により処理される。このモジュールでは、変換ステップの逆が行われ、周波数領域のデータを、ピクセル領域のデータへと変換する。この時点で、データは、変換モジュール118に入力された画像よりも精度が落とされた近似データとなっている。
図1の上部中央に示されている第2のモード選択スイッチ120(スイッチ112の反転構成)は、フレームバッファモジュール104に追加する画像を、イントラフレームのものにするか動き補償フレームのものにするかを決定する。イントラフレームの場合、逆変換モジュール124の出力は、すでに完全な画像になっていることから、そのままフレームバッファモジュール104に追加される。動き補償フレームの場合、逆変換からの差分を動き補償フレームに加算し戻し(このオペレーションは、図ではプラス"+"の演算子122で表されている)、フレームバッファモジュール104に追加される最終的な符号化された画像となる。
コアサブシステム102aを、図2を参照して説明する。最終符号化画像202とは、図1の逆変換モジュール124により生成された画像のことであり、幾つかのフレームを格納するフレームバッファモジュール104に挿入される。典型的なフレームバッファモジュール104では、一般的に、最後に符号化された1つ又は2つの画像を含む少数のバッファされたフレーム208の格納に限定される。新たなフレームが追加される時には、最も古いフレーム(最も長い時間バッファに留まっていたフレーム)が廃棄され、バッファが無制限に増加してしまうのを防いでいる。H.264のような特定のコーデックでは、格納されるフレームの数が16と多くなるが、通常は、前フレームのみに限定される。フレーム選択モジュール210は、動き推定アルゴリズム216から出力されたフレーム選択に応じて、次のモジュールに適したフレームを選択する。
符号化すべき現在の画像212及びフレーム選択モジュール210によって選択されたフレームは、実際に動き推定を実行する動き推定アルゴリズム216を備える動き推定モジュール106によって処理される。また、メトリック決定モジュール214aを使用して、2つの画像ブロック間の差分を測るのに使われるメトリックを生成する。動き推定アルゴリズム216の複雑さに応じて、単純に"最後のフレームを取得する"フレーム選択にするか、インタレース方式で複数のハーフ・フレームを選択するといったより複雑なフレーム選択をするかが決まる。また、フレーム選択は、特定のコーデックがサポートされているか否かにも依存する。あるコーデックでは、最後のフレームのみが参照フレームとしてサポートされており、H.264のような別のコーデックでは、多数の画像(この場合、16個まで)から複数の画像の切り取りをサポートしている場合もある。そして動き推定モジュールは、動きベクトルを返す(複数の前フレームの参照を含む場合もある)。
動き推定アルゴリズム216の出力は、動き補償モジュール108によって使用される。動き補償モジュールは、動きベクトル(及び前フレームの参照)によって記述された変換を適用する。動き補償モジュール108は、動きベクトルによって規定されるように、参照フレームのパーツから予測画像を構成する。
典型的な動き推定アルゴリズムによって実行される方法の各ステップについて、図3に示すフローチャート300を参照して説明する。プロセス300が開始される(ボックス302)と、最適メトリック変数は任意の大きい値に設定され(ボックス304)、探索位置は初期値に設定される(ボックス306)。探索位置は、処理されている現在フレームを補償するための、現在のブロックと比較される参照フレーム内のブロックの位置である。動き推定アルゴリズムは、このような幾つかの参照フレームにおける位置を生成し、これらの位置におけるブロックを現在フレームにおける現在のブロックと比較することにより検証する。プロセス300は、探索位置を検証する(ボックス308)。差分絶対値和(SAD)関数を、2つの行列a及びbの対応するセルに格納された各ピクセルの輝度値に適用することにより、探索位置の検証が行われる。検証される参照フレームからのブロックは第1ブロックと称され、当該ブロックのピクセルの輝度値は第1行列に格納されて、以下に示す式において"a"として表されている。また、処理される現在フレームからのブロックは第2ブロックと称され、当該ブロックのピクセルの輝度値は第2行列に格納されて、以下に示す式において"b"として表されている。行i、列jのセルにおけるこれら2つの行列をそれぞれ、a[i,j]、b[i,j]と表すことにする。すなわち、
このSAD関数によって計算される2つのブロック間の差分の大きさは、メトリックと呼ばれ、このメトリックと最適メトリックとを比較する(ボックス310)。プロセス300において、メトリックが最適メトリックよりも小さい場合は、ボックス310にて"Yes"が選択され、この探索位置から動きベクトルが計算される(ボックス314)。プロセス300において、反対にメトリックが最適メトリックよりも小さくない場合には、ボックス310において"No"が選択されて、追加の探索位置を生成する必要があるか否かを検証する(ボックス312)。必要でない場合は、ボックス312において"No"が選択され、プロセス300は終了する(ボックス322)。必要がある場合は、新たな探索位置が生成され(ボックス315)、プロセス300はボックス308に再び戻る。ボックス314において、動きベクトルを計算した後、プロセス300は、このメトリックの値を最適メトリックに記憶し、ボックス314において計算された動きベクトルを最適ベクトルと呼ばれる変数に記憶する(ボックス316)。次いで、最適メトリックが所定の閾値よりも小さいか否かを検証する(ボックス318)。小さくない場合、ボックス318において"No"が選択され、プロセス300はボックス312に戻る。小さい場合は、ボックス318において"Yes"が選択され、最適ベクトルを動きベクトルバッファに追加し(ボックス320)、プロセス300は終了する(ボックス322)。
例えばSAD関数を使用した、2つの画像ブロック間の差分を表すメトリックの計算は、2つのブロック内の各ピクセルに基づいて行われるため、非常に時間が掛かるプロセスである。本発明は、2つの異なる技術を採用して、この計算の複雑さを大幅に低減する。選択されたピクセルのサブセット(部分集合)のみが、メトリックの計算に使用される。
P‐SADは、SAD関数に基づく最適化されたパターンであり、Pに含まれるピクセルのサブセットのみを使用し、このピクセルのサブセットの選択に使用されるパターン行列に基づいている。P‐SADの計算の複雑さは、計算されるi,jの組の数に直接比例する。(i,jによって特定される)ピクセルは、構成される画像における歪みが無視できる程度に小さくなるように選択される。P‐SADプロセスは、a行列、b行列及びパターン行列という3つの独立変数を持つ。パターン行列は、ブール行列であり、あるi及びjの組み合わせについて、あるピクセル輝度値のセット、a[i,j]及びb[i,j]がP‐SADの計算に含まれるか否かを示す"真(true)"又は"偽(false)"の値を含む。パターン行列[i,j]おける"真"の値は、対応するa[i,j]及びb[i,j]の組がP‐SADの計算に含まれることを意味し、反対に値が"偽"であるとは、対応するa[i,j]及びb[i,j]の組が計算から除外されていることを意味する。P‐SADの計算に使用される項の数を減らすことにより、計算の複雑さが大幅に低下する。P‐SADの計算の実行時間は、グループと称する、同じ行に位置する連続した複数のピクセルを選択することにより、さらに最適化することができる。使用可能な複数のCPUが、1つのCPU命令でこのようなグループの演算を実行できる。市場に存在する幾つかのCPUは、このような演算を行うための単一命令複数データ(Single Instruction Multiple Data:SIMD)命令を備える。例えば、インテル(登録商標)のPentium(登録商標)IIIシリーズプロセッサは、x86アーキテクチャを拡張したストリーミングSIMD拡張命令(SSE)を備える。また、3DNow!は、PSADBW(packed SAD from byte summed to word)命令を提供するAMDのK6プロセッサのマルチメディア拡張である。
5つのグループを選択した例が図4aの略図350に示されており、灰色のセルは、例示された16×16のブロックから選択されたP‐SADの計算に使用されるピクセルを表している。この例では、各グループが8つのピクセルを含んでいる。パターン行列は、これらのグループが可能な限り(水平方向及び垂直方向の両方において)等間隔に配置され、ブロックをカバーする範囲の長さが最大となるように構築される(図4a参照)。図4aの例において、任意の隣接する2つのグループ間の垂直方向の距離はおよそ等しくなっており、任意の隣接する2つのグループ間の水平方向の距離は互いに等しくなっている。ブロック内においてこのようにグループを位置させることにより、ブロックをカバーする範囲が最大になる。すなわち、図4aに示されるように、グループは、ブロックの一領域に密集しないように配置され、可能な限りブロックの大部分をカバーするように配置される。SSEを備えるインテルのPentium(登録商標)IIIプロセッサは、例えば、1つのCPU命令につき、同じ行に位置する8つの連続した灰色のセルのセットで表されるグループの演算を行うことができる。
パターン行列における"真"の値の数(又は、"偽"の値の数)により、P‐SADの計算に伴うコストを直接制御でき、また、ピクセルバジェットに基づく。ピクセルバジェットは、選択されたピクセルのサブセットにおいてP‐SADにより処理されるピクセル数の推定値である。ピクセルバジェットは、予め定められる固定値であってもよいし、ユーザーによって指定される値であってもよい。パターン行列は、このピクセルバジェット、CPUアーキテクチャ及び処理されるシーンのグローバル動き特性に基づいて選択される。図4aの例は、ピクセルバジェットが40の場合に対応する。SSEを備えるインテルのPentium(登録商標)IIIプロセッサを使用して、1つの命令につき、8つのピクセルからなる1グループの演算を行うとすると、グループの数は、40/8=5となり、図4aの例では、5つのグループが使用されることになる。
本発明の実施形態では、メトリックを決定するための計算の複雑さを、メトリック決定モジュール214aを改良することにより軽減する。P‐SAD関数を実装する改良されたメトリック決定モジュール214bを組み込んだ改良されたコアサブシステム102bが、本発明の実施形態を示す図4bのシステム370に示されている。214bを除いた、改良されたコアサブシステムの全て要素は、図2のコアサブシステム102aに示されたものと同じである。本発明の実施形態に係るシステム370は、1つのCPU及び1つのコンピュータ可読媒体を有する汎用コンピュータ又は専用コンピュータを含み、コンピュータ可読媒体の例としては、メモリ、DVD、CD‐ROM及びCPUによって実行されるコンピュータ可読命令を記録するその他の媒体が挙げられる。あるいは、システムを、ファームウェア又はファームウェアと専用コンピュータの組み合わせに実装してもよい。改良されたメトリック決定モジュール214bを含め、システム370の様々なモジュールが、コンピュータ可読媒体に記憶されCPUによって実行されるコンピュータ可読命令として実装される。
改良されたメトリック決定モジュール214bを、図4cに示す略図214bを参照して説明する。上述したように、改良されたメトリック決定モジュール214bは、ファームウェア、又はコンピュータ可読媒体に記憶されたコンピュータソフトウェアコードにより実装可能である。
改良されたメトリック決定モジュール214bは、画像読み出しユニット404、パターン行列生成ユニット402及びメトリック計算ユニット406の3つのユニットを含み、コンピュータ可読媒体に記憶されたコンピュータ可読命令によって構成される。1つのシーン内の全ピクセルの輝度値のような特徴は、動き補償ビデオ符号化を実行するために画像読み出しユニット404によって読み出される。これらの特徴は、パターン行列生成ユニット402が適切なパターン行列を生成するのに使用され、また、メトリック計算ユニット406が、参照フレームに含まれる第1画像ブロックと処理される現在フレームに含まれる第2画像ブロックとの間の差分を表すメトリックを決定するのに使用される。本発明の一実施形態では、メトリック計算ユニットは、先に説明したP‐SAD関数を実装する差分絶対値和計算ユニットを含む。パターン行列生成ユニット402は、グローバル動き特徴決定ユニット408及びパターン行列決定ユニット409の2つのユニットを含み、コンピュータ可読媒体に記憶されたコンピュータ可読命令によって構成される。グローバル動き特徴決定ユニット408は、シーンにおいて物体が動く方向を示す、シーンのグローバル動き特徴を計算する。この情報は、パターン行列決定ユニット409が、このシーンの動き補償ビデオ符号化に使用するパターン行列を選択するのに使用される。パターン行列決定ユニット409は、行列選択ユニット410及びコンピュータ可読媒体に記憶されているパターン行列リポジトリ412の2つのユニットを含む。パターン行列リポジトリ412は、予め定められた一連のパターン行列を記憶しており、パターン行列のそれぞれが、CPUアーキテクチャ及びシーンのグローバル動き特徴に対応している。パターン行列決定ユニット410は、動き補償ビデオ符号化で使用されるCPUアーキテクチャ、処理されるシーンのグローバル動き特徴及びピクセルバジェットに基づいて、パターン行列リポジトリ412からパターン行列を選択する役割を担っている。パターン行列リポジトリは、複数のパターン行列を含み、各パターン行列は、動き補償ビデオ符号化で使用されるCPUアーキテクチャ、処理されるシーンのグローバル動き特徴及びピクセルバジェットの特定の組み合わせに対応している。図4aに示された例の場合、パターン行列リポジトリは、SSE拡張を備えるインテルのPentium(登録商標)IIIプロセッサ及びピクセルバジェット40に対応する4つの特定のパターン行列を含む。これら4つのパターン行列はそれぞれ、シーンの特定のグローバル動き特性である、静止状態、水平方向運動、垂直方向運動及び斜め方向運動に対応している。3つの因数の全てについて値が既知となると、特定のパターン行列の位置が特定され、リポジトリから読み出される。これらのユニットを実現する方法を、次に説明する。
メトリック計算ユニット406によって実行されるP‐SAD値の計算方法のステップを、図5に示すフローチャート500を参照して説明する。方法が開始される(ボックス502)と、CPUアーキテクチャに基づいて、1グループのピクセルの数ln_groupを選択する(ボックス504)。ここで、先に述べたように、グループとは、1つの行に連続して位置し、1つのCPU命令によって処理される複数ピクセルのことを指す。例えば、CPUが、一度にn個のピクセルを処理できる命令をサポートしている場合には、ln_groupはnに設定される。使用されるグループの数は、no_groupと表され、これを計算する(ボックス506)。床関数(floor function)は、変数に対して、変数以下の最大の整数を生成する関数である。シーンのln_group、no_group及びグローバル動き特徴に基づいて、使用するパターン行列を決定する(ボックス508)。本発明の一実施形態では、パターン行列は、記憶された複数の行列のセットから選択される。パターン行列が決定した後、P‐SAD値が計算され(ボックス510)、プロセス500が終了する(ボックス512)。様々なパターン行列の記憶及びボックス508で行われる選択について、次に説明する。そして、P‐SADの計算方法について説明する。
パターン行列は、パターン行列生成ユニット402により生成される。パターン行列の選択について、簡単に説明する。シーンは、多様な方法で特徴づけることができる。本発明の一実施形態では、シーンのグローバル動き特徴を使用して、静止状態、垂直方向運動、斜め方向運動又は水平方向運動としてシーンを特徴づける。この特徴づけは、物体の動きのおよその方向を捉えることによって行われ、静止状態は、動きが僅かである又は全くない特別な場合である。図6に示す図表600は、1つのシーンのグローバル動き特徴を決定するのに使用されるプロセスを説明する図である。あるシーンに対する、振幅と方向を持つ平均動きベクトルは、そのシーンにおける異なる複数ブロックに対する動きベクトルを足し合わせ、この合計をブロックの数で割ることにより計算される。平均動きベクトルの振幅(又は長さ)は、ユーザーが設定する所定の"動き無しとする閾値"602と比較される。ベクトルの振幅が、この閾値よりも小さい場合には、シーンは静止状態であると分類される。例えば、平均動きベクトル604の振幅が、動き無しとする閾値よりも小さい場合は、静止状態であると判断される。平均動きベクトル606の振幅が、動き無しとする閾値よりも大きい場合には、ベクトルの方向を考慮する。
図6の例では、シーンの特徴づけ空間が8つの領域に分割される。領域612及び620は水平方向運動に対応し、領域608及び616は垂直方向運動に対応し、領域610、614、618及び622は斜め方向運動に対応している。平均動きベクトルがどの領域に属するかに応じて、シーンが、水平方向運動、垂直方向運動又は斜め方向運動として分類される(図6参照)。図6では、平均動きベクトル606の振幅は動き無しの閾値よりも大きく、図表の垂直方向運動領域608に位置するので、シーンは垂直方向運動として分類される。本発明の一実施形態では、動き補償ビデオ符号化が行われる前に、P‐SADの計算に使用されるパターン行列が複数生成され、リポジトリに記憶される。各パターン行列は、シーンのln_group、no_group及びグローバル動き特徴のある特定の組み合わせに対応する。実行時には、処理されるべきシーンの平均動きベクトルを分析して、適切なパターン行列をパターン行列のリポジトリから読み出し(ボックス508)、次に説明するP‐SADの計算に使用する。
図5のボックス510で実行される本発明の方法の段階を、図7に示すフローチャート700を参照して説明する。16×16ピクセルの画像ブロックを使用するシステムを例として説明するが、本発明の方法は、他のブロックサイズにも容易に拡張可能である。プロセス700が開始すると(ボックス702)、初期化ステップが実行される(ボックス704)。このステップでは、現在の行及び列を表すインデックスを記憶するi及びjの初期値をそれぞれ1に設定し、変数の合計(sum)は0に設定される。プロセス700では、初期化段階の後、パターン行列のi番目の行及びj番目の列に位置するセルに記憶されているブール値を確認する(ボックス706)。確認の結果、値が"真"である場合は、プロセス700のボックス706において"Yes"が選択され、ボックス708に示すようにP‐SADの計算にa[i,j]、b[i,j]が使用される。偽である場合は、プロセス700のボックス706において"No"が選択され、P‐SADの計算からa[i,j]、b[i,j]の値が除外される。したがって、プロセス700のボックス708のオペレーションはスキップされ、現在の行に対する全ての列が対象となっているか否かを検証する(ボックス710)。全ての列が対象となっていない場合、プロセス700のボックス710において"No"が選択され、jの値をインクリメントして(ボックス712)次の列に進み、ボックス706に戻る。全ての列が対象となっている場合、プロセス700のボックス710において"Yes"が選択され、全ての行がカバーされたか否かを検証する(ボックス716)。全ての行がカバーされた場合は、ボックス716において"Yes"が選択され、値を合計に返し(ボックス718)、プロセス700が終了となる(ボックス720)。全ての行がカバーされていない場合は、プロセス700のボックス716において"No"が選択され、iの値をインクリメントし、jの値を1に設定して(ボックス714)次の行に進み、ボックス706に戻る。
本発明の特定の実施形態が詳細に記載されたが、記載された実施形態は、本発明を例示するために示したものであり、限定することを意図していない。本発明の広範な側面における範囲を逸脱することなく、図及び明細書に示された実施形態について、様々な変更及び改良が可能である。例えば、メトリックの決定のためにP‐SAD関数ではなく、平均自乗誤差関数に基づく最適化されたパターン(P‐MSE)を使用してもよい。
P‐SADの場合と同様、メトリックの計算には、選択されたピクセルの特徴のみが使用される。必要であれば、例えば、デシベルのようなメトリックの決定に、他の関数を使用することもできる。また、ピクセルバジットで規定されるピクセルの数よりも僅かに多いピクセル数の使用がユーザーに許容される場合には、床関数の替わりに、天井関数をno_group(図5参照)の決定に使用してもよい。別の実施形態では、所望の機能を達成するよう、図4cに示されたものとは異なるユニットを改良されたメトリック決定モジュール214bで使用してもよい。さらに、このようなユニットを、1つのコンピュータで実行してもよいし、複数のコンピュータ間に分配して実行してもよい。
また、本発明の実施形態に係る方法の段階を実行する命令を記憶するコンピュータメモリ、DVD、CD−ROM、フロッピー(登録商標)ディスク等のコンピュータ可読媒体が提供される。
必要に応じて、様々な変形例が考えられる。記載されたシステムの特徴の範囲内で、ここに特に記載された以外の態様でも発明を実行することができる。
本発明の特定の実施形態が詳細に記載されたが、記載された実施形態は、本発明を例示するために示したものであり、限定することを意図していない。本発明の広範な側面における範囲を逸脱することなく、添付の図及び明細書に示された実施形態について、様々な変更及び改良が可能である。