私は最近、MPEGの記事とビデオを調べて、それがどのように機能するかを理解していました。私、P、Bフレームの機能は理解していますが、予測の計算方法がわかりません。
空から地面に落下し、最後に数回跳ねるボールが最後に停止するまでのビデオを録画したいとします。
また、16x16マクロブロックの概念も明確ではありません。教えてください:
私の参照:
私は最近、MPEGの記事とビデオを調べて、それがどのように機能するかを理解していました。私、P、Bフレームの機能は理解していますが、予測の計算方法がわかりません。
空から地面に落下し、最後に数回跳ねるボールが最後に停止するまでのビデオを録画したいとします。
また、16x16マクロブロックの概念も明確ではありません。教えてください:
回答:
短い答え:
ブロックはフレーム間の比較の単位です。
予測は、前後の両方の画像に表示されるブロックの量に基づいています。
より長い答え:
ビデオエンコーダーは、入力として、一連のフレームしか受け取りません。
ほとんどの場合、隣接するフレームは互いに非常に類似しており、エンコーダーはこれらのフレームが本当に類似しているかどうかを把握しようとします。
2つの画像が類似している場合はどう言いますか?
P-frame
ます();
I-frame
)。予測の仕組みを理解するために、この画像を見てください。これはのdeshaker
プラグインによって作成VirtualDub
され、別の目的(カメラの振れの検出)に使用されますが、非常に代表的なようです。
矢印は、現在の画像が前の画像とどのように異なるかを示しています。
フレーム全体がマクロブロックに分割されます(ただし、16x16より大きい)。
前の画像と比較した各ブロックの違いは、動きベクトルです。
ご覧のとおり、ほとんどのマクロブロック(白い矢印)は共通のパターンに従っているため、転置行列を前のフレームに適用するだけでエンコードできます。
ただし、一部のブロック(赤い矢印)は一般的なパターンに準拠していないため、そのままエンコードする必要があります。
もちろん、すべてが赤の場合、フレーム全体をそのままエンコードする以外に選択肢はありません。