1

私の理解では (非常に単純化した見方です)、H264 標準のインター予測 (モーション推定/補償) は、最初に参照フレームで最適な一致ブロックを見つけ、次にモーション ベクトル(有効な新しい X と Y) でエンコードされ、残差(予測と現実)。

しかし、デコーダーは、予測されたブロックが以前にあった古いスペースを埋める方法をどのように知っているのでしょうか? 残差は、フレーム レベルではなくブロック レベルで新しい位置から計算されると仮定しています。

エンコーダーが次の 2 つの画像をエンコードするためにインター予測を使用することを決定したとします。ボールがどこにあるべきか (その新しい位置と残留エネルギー) を計算しますが、古い空間をどのように埋めますか?

フレーム 0 フレーム 1

4

1 に答える 1

3

動き補償は、フレーム エンコーディングの最適化にすぎません。動きベクトルについて話すと、これはウィキペディアで定義されている「ブロック動き補償」です。

ブロック動き補償は、現在のフレームを重複しないブロックに分割し、動き補償ベクトルはそれらのブロックがどこから来たかを示します (よくある誤解は、前のフレームが重複しないブロックに分割され、動き補償ベクトルがどこから来たかを示すというものです。それらのブロックはに移動します)。ソース ブロックは通常、ソース フレーム内でオーバーラップします。一部のビデオ圧縮アルゴリズムは、以前に送信されたいくつかの異なるフレームの断片から現在のフレームを組み立てます。

したがって、動きベクトルは「古いフレームからブロックを移動する」ではなく、現在のフレームのマクロブロックの(イントラ) エンコードであり、一部のブロックが古いフレームから少しシフトしてコピーされます (一部のブロックは前のフレームから数回コピーできます)。フレームを現在のフレームに変換し、ほとんどのブロックはゼロ モーション ベクトルでコピーされます)。理論的には、マクロブロックごとに新しいフレームをエンコードできますが、動き補償の助けを借りて、前のフレームから多くの画像情報を取得し、エンコードを減らすように変更できます。補正されていない画像の部分は、画像マクロブロックでエンコードされます。

「Big Buck Bunny」の無料映画のウィキペディアの他のページからの例:

モーション ベクトルが表示されたフレーム、ドットはゼロ ベクトル

符号化する動き補償後の残像

H.264 でのエンコード/デコード プロセスの適切な説明がありますが、ロシア語: http://www.compression.ru/dv/course/compr_h264.pdf ( http://www.compression.ru/video/サイトから) )

英語でのモーション補正の説明: http://inst.eecs.berkeley.edu/~ee290t/sp04/lectures/02-Motion_Compensation_girod.pdf (予測エラーがエンコードされ、完全に新しい画像がほぼ完全に誤予測されます。背景画像は情報の頻度が低く、おそらく近くの背景ブロックによって動きが補正されます。)

于 2017-03-04T01:07:51.060 に答える