マクロブロック (英語: Macroblock, 略称: MB) とは、線形ブロック変換(通常は離散コサイン変換)に基づく画像及びビデオ圧縮形式の処理単位である[注釈 1]。
マクロブロックは通常、16×16MBで構成し、変換ブロックにさらに分割し、予測されるブロックにさらに細分化される場合があること。
またマクロブロックに基づく形式はMUCブロックと呼ばれるJPEG、H.261、MPEG-1 Part2、H.262/MPEG-2 Part2、H.263、MPEG-4 Part2、H.264/MPEG-4 AVC[1][2][3][4]が含まれる。
H.265/HEVCでは、基本的な処理単位であるマクロブロックがコーディングツリーユニットに置き換えられている[5]。
技術的な詳細
ブロックの変換
マクロブロックは、離散コサイン変換などの線形ブロック変換への入力として機能する変換ブロックに分割される。
マクロブロックを使用する最初のビデオ コーデックである H.261 での変換ブロックでは、8×8 サンプルの固定サイズを持つ。
4:2:0の彩度サンプリングもYCbCrの色空間では、16×16MBは16×16輝度(Y) サンプルと8×8彩度(Cb及びCr)サンプルで構成する。
これらのサンプルは4つのYブロック、1つのCbブロック及び1つのCrブロックに分割される。
この設計は、JPEG、MPEG-1 Part 2、H.262/MPEG-2 Part 2など、変換ブロックサイズが固定されている他のほとんどのマクロブロックベースのビデオコーデックでも使用される。
4:0:0、4:2:2、または4:4:4などのフォーマットでは、マクロブロック内のクロマサンプルの数が増減し、それに応じてクロマサンプルのブロックのグループ化が異なる。
H.263やH.264/AVCなどの最新のマクロブロックベースのビデオコーディング標準では、変換ブロックは8×8サンプル以外のサイズに変更することが可能となる。
例として、H.264/AVCメインプロファイルでは、変換ブロックサイズは4×4である。
H.264/AVCハイプロファイルでは、変換ブロックサイズは4×4または8×8のいずれかであり、マクロブロックごとに調整される。
予測ブロック
変換ブロックへの分割とは異なり、マクロブロックは予測ブロックに分割が可能。
H.261、MPEG-1 Part 2、H.262/MPEG-2 Part 2などの初期の規格では、動き補償はマクロブロックごとに1つの動きベクトルで実行される。
同様に、イントラ予測マクロブロック、隣接ブロックにのエッジから外接することによってサンプルが予測され、予想される方向はパーティションごとに指定される。
H.264/AVCでは、予測パーティションサイズはインター予測(動き補償)とイントラ予測の両方で4×から16×16サンプルの範囲である。
ビットストリーム表現
動き補償と変換符号化を使用するビデオコーデックでのマクロブロックの可能なビットストリーム表現を以下に示す。
H.261で使用される形式に類似している。
+------+------+-------+--------+-----+----+----+--------+
| ADDR | TYPE | QUANT | VECTOR | CBP | b0 | b1 | ... b5 |
+------+------+-------+--------+-----+----+----+--------+
説明
- ADDR:イメージ内のブロックのアドレス
- TYPE:マクロブロックにのタイプを識別する(フレーム内、フレーム間、双方向フレーム間)
- QUANT:量子化を変換させる量子化値
- VECTER:モーションベクトル
- CBP:コード化されたブロックパターン。これは、どのブロック係数が存在するかを示すビットマスクである。
- bN:ブロック(4Y,1Cr,1Cb)
マクロブロッキング
マクロブロッキングとは、一般に、ブロックコーディングアーティファクトを指すために使用される。
脚注
注釈
- ^ 「ブロック変換」または「ブロック」とは映像内のブロックのことを指す。
出典
関連項目