В кодере в режиме прогнозирования с компенсацией движения поддерживаются размеры блоков от 16×16 до 4×4 для яркостной составляющей изображения в различных сочетаниях. Яркостная составляющая каждого макроблока (размером 16×16) может быть разбита четырьмя способами, как это показано на рис.1.6: 16×16, 16×8, 8×16 или 8×8 (рис.1.7). Каждая из областей меньшего размера является частью макроблока.
Если выбран режим поиска векторов движения для блоков 8×8, то каждый из четырех блоков 8×8 может быть разбит на блоки четырьмя способами, как показано на рис. 7: 8×8, 8×4, 4×8 или 4×4. Возможность делить макроблок на
блоки, а те в свою очередь на субблоки, позволяет получить большое
количество комбинаций их сочетаний в пределах каждого макроблока. Этот метод разбиения макроблоков на блоки и субблоки в режиме компенсации движения получил название структурного дерева компенсации движения.
Рис.1.6. Разбиение макроблока 16×16 на блоки 16×16, 16×8, 8×16, 8×8
Рис.1.7. Разбиение блока 8×8 на субблоки 8×8, 8×4, 4×8, 4×4
Для каждого блока и субблока требуется отдельный вектор движения.
Каждый вектор движения должен быть закодирован и передан; кроме того,
необходимо закодировать и передать конкретный вид структурного дерева для каждого макроблока.
Выбор большого размера блоков (например, 16×16, 16×8, 8×16)
означает, что количество бит для передачи данных векторов движения и структуры дерева минимально, однако при этом остаточные коэффициенты могут содержать существенное количество энергии в высокочастотных областях кадра (с высокой детальностью). При выборе маленького размера блоков (например, 8×4, 4×4 и т. д.) можем получить более низкую энергию остаточных коэффициентов после компенсации движения, но потребуется большее число бит для кодирования и передачи данных о векторах движения и структуре дерева. Поэтому выбор размера блоков оказывает существенное влияние на эффективность сжатия. Вообще, большой размер блоков
соответствует низкочастотным областям кадра, а маленький — может быть выгоден для высокочастотных.
Разрешающая способность цветоразностных составляющих макроблока
(Cr и Cb) равна половине яркостного. Каждый цветоразностный блок разбивается таким же образом, как яркостной, за исключением того, что вертикальные и горизонтальные размеры блока в два раза меньше (если яркостной блок имеет размер 8×16, то соответствующий ему цветоразностный блок имеет размер 4×8; яркостному блоку 8×4
соответствует цветоразностный 4×2; и т. д.). Горизонтальные и вертикальные составляющие каждого вектора движения (одного на блок) делятся на два,
когда применяются к цветоразностным блокам.
На рис. 8 показан пример разбиения остаточного кадра (до процедуры компенсации движения). Кодер выбирает «лучший» размер блока для каждой части кадра, то есть такой размер, который минимизирует кодирование остаточных коэффициентов и векторов движения. На рис.1.8 тонкими линиями показано разбиение кадра на блоки. В областях кадра, где изменения незначительны (остаточные коэффициенты кажутся серыми),
выбирается размер блока 16×16; в областях с большими изменениями
(остаточные коэффициенты кажутся черными или белыми) выбираются меньшие размеры блоков.
Рис. 8. Оптимальное разбиение кадра на блоки и субблоки