Улучшение отношения сигнал/шум при микшировании видео изображения, сжатого по стандарту MPEG2, страница 16

Динамический диапазон векторов компенсации движения зависит от параметра f_code[s][t], как показано в табл.П.2.43.

Иногда возникает ситуация, когда после декодирования векторов движения необходимо выполнить коррекцию других векторов. Это связано с тем, что в некоторых режимах для предсказания используются не все векторы. Оставшиеся векторы должны поддерживать «актуальное» состояние, так как они могут быть задействованы в дальнейшем. В стандарте описаны правила коррекции векторов движения.

Все векторы должны быть установлены в нуль в следующих случаях:

  • в начале слоя;
  • при декодировании интра макроблока, не содержащего векторов движения;
  • в Р-кадрах, когда macroblock_motion_forward=0;
  • в Р-кадрах при пропуске макроблока.

Как уже отмечалось, при втором подрежиме предсказания декодируется лишь один вектор движения vector’[0][0][1:0]. Это вектор используется в качестве опорного для предсказания аналогичного поля (то есть из верхнего поля идет предсказание верхнего). Для формирования вектора в другом поле vector’[r][0][1:0] опорный вектор масштабируется для отражения различия местоположения во времени между полями. Для вертикальной компоненты делается коррекция (в силу наличия вертикального сдвига между линиями верхнего и нижнего поля). Этот процесс показан на рис.1.6.4 для КК-кадра.

dmv

 

Рис.1.6.4. Масштабирование векторов движения во втором подрежиме

dmvector[0] есть горизонтальная компонента разностного вектора движения, а dmvector[1] – вертикальная компонента. Эти компоненты могут принимать значения –1, 0, +1.

m[parity_ref][parity_pred] есть расстояние между опорным и предсказанным полем, представленное в табл.П.2.44.

e[parity_ref][parity_pred] есть коррекция вертикального сдвига между полями. Она равна +-1 в зависимости от того, какое поле было.

Вектор движения, использующийся для предсказания векторов противоположного поля, может быть рассчитан по формуле

vector’[r][0][0] = ((vector’[0][0][0] * m[parity_ref][parity_pred])//2) + dmvector[0];

vector’[r][0][1] = ((vector’[0][0][1] * m[parity_ref][parity_pred])//2) + e[parity_ref][parity_pred] + dmvector[1];

В случае ПК-кадра требуется рассчитать только один кадр и r=2. Таким образом, опорный вектор для поля своей направленности есть vector’[0][0][1:0]  и для поля противоположной направленности -  vector’[2][0][1:0].

В случае КК-кадра требуется два вектора движения. Оба поля используют в качестве опорного vector’[0][0][1:0] для предсказания поля своей направленности. Для предсказания вектора поля противоположной направленности верхнее поле использует vector’[2][0][1:0], а нижнее - vector’[3][0][1:0].

Вектора компенсации движения для цветоразностных компонент находятся из векторов для яркостной компоненты за счет масштабирования.

Для 4:2:0 – вектора делятся на 2.

Для 4:2:2 – горизонтальный вектор делится на 2, вертикальный не изменяется.

Для 4:4:4 – вектора не изменяются.

В стандарте описано также осуществление компенсации движения для пропущенных макроблоков.

1.7 Выводы по теоретической части

Представляется, что наиболее часто встречается сочетание главного уровня и главного профиля.

Надо отметить, что вносимые алгоритмами сжатия искажения могут моделироваться как добавление аддитивного белого гауссовского шума, как показывают результаты многочисленных исследований. Следовательно, если дополнительная информация представляет собой также АБГШ, то ее добавление может быть статистически незаметным.

Выбор типа кадра может служить для передачи небольшого количества информации.

Передаваемые в битовом потоке параметры преобразования RGB-> YcbCr могут служить для передачи дополнительной информации.

Наибольшее количество дополнительной информации потенциально может быть записано в кадры с дискретизацией 4:4:4, так как здесь наибольшее количество цветоразностных компонент, а вносимые в них искажения менее заметны, чем искажения яркостной составляющей.

Слои могут не покрывать всего изображения.