2012-05-16 5 views
6

私はビデオ圧縮に堪能ではありませんが、現在はH.264を使用して残像を圧縮するプロジェクトに取り組んでいます。ブロック動き補償エンコーダ - 基準フレームのブロックノイズを処理する方法?

私の質問はビデオエンコーダに関する一般的な性質です。 私が理解しているように(Wikipediaが説明しているように)、ブロック動き補償エンコーダは、現在のフレームが出てきた参照フレームでチェックする各ブロックについて、現在のフレームをいくつかの重複しないブロックに分割し、所望のブロックおよび動き補償されたブロックを生成し、この残差を何らかの形で符号化する。

「ブロック動き補償の主な欠点は、ブロック境界に不連続性を導入することです(ブロッキングアーチファクト)。これらのアーチファクトは、人間の目によって容易に検出される鮮明な水平および垂直エッジの形で現れます。残差フレームの変換符号化に使用されるフーリエ関連変換においてリンギング効果(高周波サブバンドの大きな係数)を生成する」と述べている。

したがって、(符号化されているため)参照フレームにはブロックアーティファクトが既に含まれているため、これらのブロックアーティファクトが現在のブロックにシフトされ、残差が計算されると、ブロックアーティファクトによって作成された高周波数シフトされたブロックの境界では残差の不連続点としても表示されます。また、不連続性は一般に圧縮には悪い。

動き補償ブロックエンコーダは、残差を圧縮する前にこのブロックアーティファクトをどうにか処理しますか?ブロックがどのようにシフトされたかを正確に把握しているので、ブロック境界がどこにあるかを知っており、残差を符号化する前または符号化中に何かを行うことができ、不要な高周波を除去/無視することができます。 このようなことがH.264のようなコーデックで実行されている場合、エンコーダがどのようにこれを行うのかについての主な概念を説明できる人がいますか? エンコーダは、参照フレーム内のブロックアーティファクトをどう扱うのですか?

+1

素晴らしい質問です。うわー! – Alex

答えて

0

@Mat:これは良い質問であり、ビデオエンコードの研究のためのオープンな領域です。簡単な答えは、私の知る限りでは、今日のビデオエンコーダは、ブロックアーチファクトが動き推定に及ぼす影響に対処するために何も明示的には行いません。

低いディテールの領域で高速動きの場合、顕著なブロックアーチファクトがある場合、動きベクトルは時々ブロックサイズの倍数になる可能性があります)。つまり、動き推定はブロックを検出します前のフレームであり、元の画像の詳細ではない。これはおそらくまれです。それは高速動き、画像​​のかなり特徴のない領域、明らかに不十分なビットレートの両方を必要とする。おそらくこれを示す合成ビデオシーケンスを構築することができます。ブロック境界の知識が役立つ可能性があるかどうかは不明です。ブロックエッジが次のフレームの残差に高周波数成分を導入する場合、人工的に導入されたコンポーネントを消去/修正するためにビットを費やす必要があります。その上での支出ビットは、異なる参照領域/動きベクトル/ブロックタイプを使用するよりも良い決定である可能性がある。

しかし、H.264やVP8などの最新のコーデックはin-loop deblocking filterです。言い換えれば、デコードされたフレームは参照として使用される前にデブロックされているため、ブロックノイズが減少し、おそらく問題の影響が最小限に抑えられます。正しく識別される。

+0

@Mat:これはあなたの質問に答えますか?はいの場合は、その答えを受け入れることを忘れないでください。そうでない場合は、明確にできるものがあれば教えてください。 –