MULTIMEDIA Solomeshch Natalya ОБЗОР Цифровые данные, отображенные в область преобразования, должны быть декоррелированными (т.е. разделенными на элементы с минимальной межкомпонентной зависимостью) и компактными (т.е. большая часть энергии преобразованных данных должна быть сконцентрирована в малом числе значений или коэффициентов преобразования). Необходимо, чтобы преобразование было обратимым. Преобразование должно быть эффективным с точки зрения его вычислимости (малый объем памяти, возможность реализации в арифметике с ограниченной точностью вычислений, малое число арифметических операций в алгоритме и т.д.). DCT Y=AXAT X=ATYA X-матрица сэмплов Y-матрица коэффициентов А-матрица преобразования ПРИМЕР ШАБЛОНЫ Базис DCT 4x4 и 8x8 ПРИМЕР ПРИМЕР ВЕЙВЛЕТЫ Процесс двухмерного вейвлетного разложения СКАЛЯРНЫЙ КВАНТОВАТЕЛЬ ВЕКТОРНОЕ КВАНТОВАНИЕ Разделить исходное изображения на области (например, блоки пикселов размером М х N). Выбрать в кодовой книге вектор, максимально близкий к текущей области. Переслать декодеру индекс, идентифицирующий выбранный вектор. На стороне декодера реконструировать приближенную копию области, используя выбранный вектор. ПЕРЕУПОРЯДОЧЕНИЕ И КОДИРОВАНИЕ НУЛЕЙ Распределение коэффициентов КОДИРОВАНИЕ СЕРИЯ-ЗНАЧЕНИЕ КОДЫ ХАФФМАНА Построение дерева Хаффмана. Чтобы построить таблицу кодов Хаффмана для этого множества элементов, следует совершить итеративную процедуру 1. упорядочить элементы по возрастанию вероятностей; объединить два элемента с наименьшими вероятностями в один узел и 2.присвоить этому узлу суммарную вероятность этих элементов; 3. переупорядочить оставшиеся элементы и узлы по возрастанию их вероятностей и повторить шаг 2. Процедура повторяется до тех пор, пока не останется только один «корень», содержащий все остальные узлы и элементы. КОДЫ ХАФФМАНА Исходный список: Исходные элементы обозначены квадратами. Векторы (-2) и (+2) имеют наименьшие вероятности и являются первыми кандидатами на слияние в узел А. Шаг 1: Созданный новый узел А (показан кружком) имеет вероятность 0,2 (сумма вероятностей (-2) и (+2)). Теперь имеется три элемента с вероятностью 0,2. Выбираем векторы (-1) н (+1) и объединяем их в один узел В. Шаг 2: Узел А имеет теперь наименьшую вероятность (0,2), за ним следует узел В и вектор (0). Сливаем А и В в один узел С. Шаг 3: Узел С и вектор (0) сливаются в узел D. Конечное дерево: Все элементы (векторы) встроены в двоичное дерево, состоящее из пяти элементов и четырех узлов. Каждый из элементов называется листом дерева. КОДИРОВАНИЕ ХАФФМАНА С ПРЕДВАРИТЕЛЬНЫМИ ВЫЧИСЛЕНИЯМИ Коды VLC для коэффициентов преобразования в MPEG-4 Video (TCOEF) (приведены все коды <9 бит). Коды VLC для разностей векторов движения в MPEG-4 РАЗНОСТЬ ВЕКТОРОВ ДВИЖЕНИЯ MVD АРИФМЕТИЧЕСКОЕ КОДИРОВАНИЕ АРИФМЕТИЧЕСКОЕ КОДИРОВАНИЕ ГИБРИДНАЯ МОДЕЛЬ DPCM/DCT ВИДЕОКОДЕКА ПОТОК ДАННЫХ КОДЕРА Имеется два основных пути прохождения данных в кодере: слева направо (кодирование) и справа налево (реконструкция). Поток кодирования состоит в следующем. Входной видеокадр Fn подается на вход кодера и обрабатывается там макроблоками (соответствующими областям из 16 х 16 сэмплов яркости и хроматичности). Кадр Fn сравнивается с ссылочным кадром, например с ранее закодированным кадром Ff'_j. Функция оценки движения находит в Flt_l (или в интерполированной по подсэмплам версии кадра ) область 16 х 16, которая больше других «похожа» на текущий макроблок в F„ (при этом используется некоторый критерий схожести макроблоков). Смещение текущего макроблока по отношению к положению выбранного ссылочного макроблока записывается в вектор движения MV. На основе выбранного вектора движения VM строится прогноз компенсированного движения Р (область 16 х 16, выбранная функцией оценки движения). Макроблок Р вычитается из текущего макроблока, и их разность D называется остаточным макроблоком. Макроблок D преобразуется с помощью DCT. Обычно макроблок D делится на подблоки 8x8 или 4 х 4, и каждый подблок преобразуется отдельно. Каждый подблок квантуется (X). Для коэффициентов DCT всех подблоков делается переупорядочение и результат кодируется символами «серия-значение». Коэффициенты, векторы движения и связанные с ними информационные заголовки каждого макроблока кодируются энтропийным кодером для получения выходного сжатого битового потока. ПОТОК ДАННЫХ ДЕКОДЕРА Сжатый поток битов декодируется энтропийным декодером для извлечения из него коэффициентов преобразования, векторов движения и заголовков каждого макроблока. Обращается кодирование «серия-значение», и делается обычное упорядочение коэффициентов. В результате получается квантованный преобразованный макроблок X. Макроблок деквантуется, и к результату применяется обратное преобразование DCT, что дает остаточный макроблок D'. Декодированный вектор движения используется для нахождения позиции области 16 х 16 на предыдущем (ссылочном) кадре F`n_1 копия которого хранится декодером. Эта область становится прогнозом с компенсацией движения Р. Макроблок Р прибавляется к D', и получается восстановленный макроблок, который сохраняется на своей позиции на декодированном кадре F,'.