Макроблок представляет собой блок обработки форматов сжатия изображений и видео , основанный на линейных блочных преобразованиях, обычно дискретном косинусном преобразовании (DCT). Макроблок обычно состоит из 16×16 выборок и далее подразделяется на блоки преобразования и может быть дополнительно подразделен на блоки прогнозирования. Форматы, основанные на макроблоках, включают JPEG , где они называются блоками MCU , H.261 , MPEG-1 часть 2 , H.262/MPEG-2 часть 2 , H.263 , MPEG-4 часть 2 и H.264. /MPEG-4 AVC . [1] [2] [3] [4] В H.265/HEVC макроблок как базовая единица обработки был заменен единицей дерева кодирования . [5]
Макроблок делится на блоки преобразования, которые служат входными данными для преобразования линейного блока, например DCT. В H.261, первом видеокодеке, использующем макроблоки, блоки преобразования имеют фиксированный размер 8×8 выборок. [1] В цветовом пространстве YCbCr с субдискретизацией цветности 4:2:0 макроблок 16×16 состоит из образцов яркости (Y) 16×16 и образцов цветности 8×8 (Cb и Cr). Эти образцы разделены на четыре блока Y, один блок Cb и один блок 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. [4] В профиле H.264/AVC High размер блока преобразования может составлять 4×4 или 8×8, адаптируясь для каждого макроблока. [4]
В отличие от разделения на блоки преобразования, макроблок может быть разделен на блоки прогнозирования. В ранних стандартах, таких как H.261, MPEG-1 Part 2 и H.262/MPEG-2 Part 2, компенсация движения выполняется с помощью одного вектора движения на макроблок. [1] [2] В более современных стандартах, таких как H.264/AVC, макроблок может быть разделен на несколько блоков прогнозирования переменного размера, называемых разделами. [4] В макроблоке с интерпрогнозированием в H.264/AVC для каждого раздела указывается отдельный вектор движения. [4] Соответственно, в макроблоке с внутренним предсказанием, где выборки прогнозируются путем экстраполяции краев соседних блоков, предсказанное направление указывается для каждого раздела. [4] В H.264/AVC размер раздела прогнозирования варьируется от 4×4 до 16×16 выборок как для межпредсказания (компенсация движения), так и для внутрикадрового предсказания. [4]
Возможное представление битового потока макроблока в видеокодеке, который использует компенсацию движения и кодирование с преобразованием, приведено ниже. [6] Он аналогичен формату, используемому в H.261 . [1]
+------+------+-------+--------+-----+----+----+-- ------+| АДРЕС | ТИП | КОЛИЧ | ВЕКТОР | таможенно-пограничная служба | б0 | б1 | ... b5 |+------+------+-------+--------+-----+----+----+-- ------+
Термин макроблокирование обычно используется для обозначения артефактов блочного кодирования.