技術共有

H264ビデオコーディング(03)データ圧縮プロセスと関連概念を体系的に学習

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

注: オーディオ H264 ビデオ エンコーディングを学習するには、ゴールデン サークル学習メソッド (ゴールデン サークル ルールとは? -> モデル ゴールデン サークル ルール、この記事では「なぜ-何を」を使用します) を参照します。このシリーズの記事では、ビデオ エンコーディングの知識体系と実践的な方法を理解することに重点を置き、理論的な側面からオーディオとビデオの概念の起源とさまざまな概念間のつながりについて詳しく説明します。それがどのように起こるのか、なぜそうなるのかを知ってください。同時に、知識システムの確立にも重点が置かれています。

この記事では、主に H.264 データ圧縮のプロセスと関連する概念について説明します。 H.264 データ圧縮の目的は 1 つだけです。圧縮、圧縮、再圧縮を繰り返して、画質を可能な限り確保しながらビデオ データのサイズを削減することです。したがって、H.264 データ圧縮を学ぶ前に、まず次のことを理解する必要があります。このプロセスには多くの概念や方法が関係していますが、すべての方法とプロセスは圧縮という目的のためのものです。

1 H.264 データ圧縮プロセスの解釈

H.264 のデータ圧縮プロセスは主に、マクロブロック分割とサブブロック分割 -> フレーム グループ化 -> フレーム予測 -> 整数離散コサイン変換 (DCT) -> CABAC 圧縮という主要なステップに要約されます。具体的な拡張手順は以下の通りです。

1.1 マクロブロックの分割 && サブブロックへの分割

マクロ ブロック: ビデオ フレームが H264 エンコーダのバッファに送信されると、エンコーダはマクロ ブロックを各ピクチャに分割することがわかります。 デフォルトでは、H264 エンコードは 16X16 ピクセルの領域をマクロブロックとして使用します (H265 は 64X64 ピクセルの領域を使用します)。ビデオのフレームをマクロブロックに分割する効果は次のとおりです。

マクロブロック分割後の全体的な効果

同時に、上の図では、16X16 ピクセルのマクロ ブロックを実際に小さなサブブロックに分割できます。サブブロックのサイズは 8X16、16X8、8X8、4X8、8X4、4X4 と非常に柔軟です。再度サブブロックに分割するのは、このデータを非常に小さなデータで記録するためです。マクロブロックが分割された後、H264 エンコーダ キャッシュ内のすべてのピクチャをグループ化できます。

マクロブロックとサブブロックの分割により、ビデオ コーディングでビデオ コンテンツをより正確に分析および処理し、より効率的なデータ圧縮を実現できるようになります。ビデオ フレームはサイズ 16x16 ピクセルのマクロブロックに分割されます。これらのマクロブロックは、画像コンテンツの複雑さに対応するために、8x8、8x4、4x8 などの小さなブロックにさらに分割できます。

1.2 フレームのグループ化

フレームのグループ化 (GOP 構造) は、イントラ予測とインター予測の前に定義されます。ビデオ エンコード プロセスでは、フレーム グループ化の設定が最初のステップの 1 つであり、ビデオ フレームの構成とエンコード順序を決定します。フレーム グループ化の主な目的は、データの冗長性を減らすことです。ビデオ データの冗長性は主に 2 つのカテゴリに分類されます。

  • フレーム間予測圧縮の使用を必要とする時間的データの冗長性がより大きな割合を占めます。(カメラが 1 秒あたり 30 フレームをキャプチャしたとしても、ほとんどの場合、これら 30 フレームのデータは関連しています。30 フレームを超えるデータが存在する可能性もあり、数十フレームのデータが特に密接に関連している可能性があります。そして、相関関係については、特にフレームを閉じる場合は、キーフレームを保存するだけで済みます。(私フレーム)データ、その他のフレーム(BフレームとPフレーム)特定のルールに従ってこのフレームを通じてすべてを予測できるため、ビデオ データの時間的冗長性が最も高くなります)。
  • フレーム内予測圧縮の使用を必要とする空間データの冗長性は、比較的小さな割合を占めます。

H264 フレーム グループ化の実行手順:

  1. 毎回、隣接する 2 つのフレームを取り出してマクロブロック比較を行い、2 つのフレーム間の類似度を計算します。
  2. 定量化後に類似性が得られます。相違点のあるピクセルがポイントの 10% 以内にのみ存在し、輝度差の変化が 2% 以内、彩度差の変化が 1% 以内であれば、そのような画像はグループ化できると考えられます。一つのグループに。

グループ化が完了すると、フレーム予測圧縮の問題が解決され始めます。

1.3 フレーム予測圧縮

この部分には主にフレーム内予測とフレーム間予測が含まれます。フレーム内予測は、静止画像フレームを圧縮し、9 つの異なるモードを通じて各マクロブロックの画素値を予測し、元の画像との残差値を計算します。およびフレーム間予測 (動き推定と動き補償): P フレームと B フレームについて、動き推定を通じて前のフレームまたは 2 つのフレーム間の動きベクトルを見つけ、動き補償予測を実行し、予測画像を生成し、残差を計算します。現在のフレーム。

注: イントラ予測とインター予測の順序は、符号化されたフレームのタイプと符号化戦略によって異なります。実際のビデオ エンコーダの実装では、これらの手順はエンコード プロセスの一部であり、エンコーダによって自動的に処理されます。誰が最初にそれを処理する必要はありません。

1.3.1 イントラ予測

フレーム内予測圧縮: 空間データの冗長性の問題を解決します。 空域冗長データとは、主に人間の目には影響を与えない色や明るさなどの情報を削除することで圧縮したものです。フレーム内予測で使用される原理は、人間の目は、低周波の明るさには非常に敏感ですが、高周波の明るさにはあまり敏感ではないということです。(16X16 のマクロブロック サイズとして理解できます。H264 では、上位 16 ピクセルと左端の 16 ピクセルを通じて他のデータが予測されるため、本来 16*16=256 必要なピクセル表現情報が 16+ に変換できます。 16-1 = 情報を表す 31 ピクセル)

1.3.2 フレーム間予測(動き推定と動き補償)

フレーム間予測圧縮 (動き推定と補償): 時間領域データの冗長性の問題を解決します。 ビデオには複数のフレームが時系列に直線的に配置されており、フレーム間の相関性が非常に高いため、フレーム間に削除できるデータが大量にあります。圧縮後は、Iフレーム、Pフレーム、Bフレームの3種類に分けられます。(説明:動き推定と動き補償の原理:H264エンコーダは、まずバッファヘッダから2フレーム分のビデオデータを順番に取り出し、マクロブロックスキャンを実行します。ピクチャの1つにオブジェクトが存在することが判明すると、このとき、別の画像内でオブジェクトが見つかった場合は、その近くの位置を検索します。以下の画像は、検索後のビリヤード ボールの位置です。

P フレームと B フレームでは、動き推定により前フレームまたは 2 フレーム間の動きベクトルを求め、動き補償予測を行って予測画像を生成し、現フレームとの残差を計算します。

1.4 整数離散コサイン変換 (DCT)、離散コサイン変換

このステップでは、主に予測残差に対して DCT 変換を実行し、空間相関を周波数領域の無関係なデータに変換してから量子化します。 DCT は主にデータまたは画像の圧縮に使用され、空間相関を周波数領域の無関係なデータに変換してから量子化します。(説明: DCT 変換は画像のより重要な情報を収集し、重要でない周波数領域領域と係数を直接切り取ることができます)

概要: フレームデータ圧縮の順序は、最初にフレーム間およびフレーム内圧縮を実行し、次に残差データに対して DCT 変換を実行してデータの相関を除去し、さらにデータを圧縮します。次のように:

1.5 CABAC圧縮

CABAC 圧縮は可逆圧縮テクノロジであり、エントロピー コーディングの方法です。 CABAC が圧縮および符号化される場合、高周波データはショート コードとして定義され、低周波データはロング コードとして定義されます。この方法は VLC 方法よりも効率的です。 CABAC (Context-Adaptive Binary Arithmeticcoding) エントロピー コーディング方式を使用して、量子化された係数をさらに圧縮し、圧縮効率を向上させます。ここで、前の 4 つのステップで処理されたデータは、エンコード アルゴリズムを使用して最終コード ストリームにエンコードされます。最終的な圧縮フレームは、I フレーム、P フレーム、B フレームに分割されます。 CABAC 可逆圧縮方式が実行された後、ビデオ コード ストリームが取得されます。

2 データ圧縮プロセスの関連概念

2.1 時間と空間におけるデータの冗長性

空間データ冗長性と時間データ冗長性は、ビデオ圧縮における 2 つの基本概念であり、それぞれビデオ フレーム内とビデオ フレーム間で繰り返される情報を表します。

空間的冗長性の解釈

  • これは、単一ビデオ フレーム内の隣接するピクセル間の類似性または相関性を指し、結果としてデータの重複が発生します。自然画像の連続性により、隣接するピクセルは同様の明るさまたは色の値を持つ傾向があります。
  • 空間的冗長性の典型的な例には、モノクロ、グラデーション、またはゆっくりと変化するテクスチャの広い領域が含まれます。
  • ビデオ圧縮アルゴリズムは、空間予測、変換符号化 (DCT など) およびその他のテクノロジを通じて空間の冗長性を削減し、画像を空間領域から周波数領域に変換し、エネルギーをいくつかの係数に集中させて圧縮の目的を達成します。

時間的冗長性の解釈

  • ビデオ シーケンスの連続したフレーム間に存在する類似性を指します。つまり、連続したフレーム内の同じオブジェクトまたはシーンが視覚的に大きく変化しないことを指します。
  • 時間的な冗長性は通常、カメラが静止している場合、またはシーン内のオブジェクトがゆっくりと移動している場合に発生し、前のフレームと比較して後続のフレームで変化する領域が小さい場合にのみ発生します。
  • ビデオ圧縮アルゴリズムは、フレーム間予測、動き推定、動き補償などの技術を通じて時間的冗長性を削減します。各フレームを完全にエンコードするのではなく、前後のフレーム間の相関を使用してフレーム間の差分を予測してエンコードします。

2.2 残差データと関連概念の解釈

H.264 ビデオ圧縮では、残差データは、元のビデオ フレームと予測フレームの差を指します。同時に、残差データをより深く理解したい場合は、以下に示す概念を理解する必要があります。

  1. 予測フレーム : ビデオ エンコード プロセス中に、イントラ予測 (Intra Prediction) またはインター予測 (Inter Prediction) を使用して予測フレームが生成されます。イントラ予測は現在のフレームのピクセル情報に基づきますが、インター予測は前後のフレームの動き補償情報に基づきます。

  2. オリジナルフレーム: ビデオ シーケンスで実際にキャプチャされた元の画像フレームを指します。

  3. 残差計算 : 残差データは、元のフレームから予測フレームを減算することによって計算されます。残差データは、予測されたフレームと元のフレームの差を表します。

上記の概念を基礎にすると、残差データの特性をさらに理解できます。

  • 予測フレームによって冗長な情報の大部分が削除されているため、残差データは通常、高い空間ランダム性を持っています。このランダム性により、残差データは変換と量子化によるさらなる圧縮に適したものになります。

  • 残差データを整数離散コサイン変換 (IDCT) と量子化によって処理すると、データ量を大幅に削減できます。変換では残差の 2 次元空間情報が周波数情報に変換されますが、量子化ではこれらの係数の精度が低下し、人間の目には認識できない詳細が除去されます。

残差データをエンコードする目的は、画質を可能な限り維持しながらビデオ データのビットレートをさらに下げることです。同時に、残留データの効果的な圧縮は、エンコードされたビデオの品質と必要なストレージまたは送信帯域幅に直接影響するため、H.264 エンコード効率にとって非常に重要です。

2.3 エントロピーコーディング関連の概念と拡張解釈

エントロピーコーディングは、情報エントロピーの概念に基づいた可逆データ圧縮技術であり、可能な限り少ないビットでデータを表現することを目的としています。エントロピーコーディングの中心的な考え方は、出現する可能性が高いシンボルには少ないビットを割り当て、出現頻度が低いシンボルにはより多くのビットを割り当てることです。このようにして、データセット全体の平均ビットレートが低下するため、必要な記憶スペースまたは送信帯域幅が減少します。

エントロピー コーディングは、テキストや特定の種類のデータ圧縮によく使用され、特にデータの確率分布が著しく不均一な場合に、圧縮効率を大幅に向上させることができます。ビデオ圧縮符号化において、ビデオ圧縮に最も密接に関連するエントロピー符号化方式には、主に次のようなものがあります。

  • ハフマンコーディング : ハフマン符号化は、多くのビデオ圧縮規格 (JPEG、MPEG シリーズなど) で使用される基本的なエントロピー符号化テクノロジです。シンボルの出現頻度に基づいて構築されたハフマン ツリーを通じて、各シンボルに可変長コードを割り当てます。
  • 算術コーディング : 算術符号化は一部のビデオ圧縮規格 (JPEG-LS、JPEG 2000 など) で採用されています。小数区間を使用して入力データの確率分布を表し、一般にハフマン コーディングよりも優れた圧縮効率を実現します。
  • コンテキストベースの適応バイナリ算術コーディング (CABAC) : CABAC は、H.264/AVC および H.265/HEVC ビデオ圧縮規格で使用されるエントロピー コーディング方式です。算術コーディングとコンテキスト適応の概念を組み合わせ、コンテキスト情報に基づいてコーディングの確率モデルを動的に調整することで、より効率的なコーディングを実現します。
  • 可変長コーディング (VLC) : VLC は、ハフマン符号化を含む、シンボルに可変長符号を割り当てる符号化方式を表すために使用される一般的な用語です。ビデオ圧縮において、VLC は通常、変換係数などを表すために使用される符号化方式を指します。

ビデオ圧縮では、エントロピー符号化は、イントラ予測およびインター予測後の残差データを符号化するために使用される最終符号化ステップです。残差データは元のデータと予測データの差であり、通常はエネルギーが少なく、確率分布がより不均一になります。エントロピー符号化を通じて、これらの残差データのビット レートをさらに削減することができ、それによりビデオ データを圧縮する目的が達成されます。