7.2.3. Преобразование DCT/IDCTДискретное косинус-преобразование DCT широко применяется в алгоритмах сжатия цифровых изображений и видео для декорреляции изображений или остаточных данных перед выполнением квантования и энтропийного сжатия (см. гл. 3). Если попытаться выполнить прямую реализацию преобразований FDCT и IDCT по формулам (3.4) и (3.5), то это потребует большого числа сложений и умножений. Однако возможно значительно сократить объем операций, используя особую структуру матрицы преобразования 7.2.3.1. DCT 8x8Вычисление прямого DCT по формулам (3.4) для блоков 8x8 (N = 8) потребует 64 х 64 = 4096 умножений и сохранений данных. Из матричной формы (см. (3.1)) видно, что двухмерное преобразование можно выполнить в два этапа (т.е. сначала найти произведение
На первый взгляд может показаться, что выполнение одномерного FDCT размерности 8 по формуле (7.4) требует вычисления восьми различных косинусных множителей (т.е. значений
В формуле (7.4) имеется 8 умножений и 7 сложений (плюс деление на 2). Однако, используя свойство симметрии функции косинус, эту формулу можно упростить следующим образом:
Аналогично формулу для вычисления
Видно, что сложения и вычитания одинаковы в обеих формулах, и их достаточно выполнить только один раз, поэтому Рисунок 7.11 представляет собой одно простое упрощение одномерного алгоритма DCT. За несколько лет было разработано много граф-схем алгоритмов, оптимизированных по различным требованиям (по минимуму умножений, минимуму вычитаний и т.п.). Дальнейшего улучшения можно добиться при прямой оптимизации двухмерного DCT (обычно при этом приходится платить увеличением сложности реализации алгоритма). Рис. 7.11. Граф-схема FDCT. Граф-схемные алгоритмы очень популярны при разработке программных кодеков, где (во многих случаях) лучшая производительность достигается путем минимизации числа вычислительно дорогих операций умножения. Для аппаратной реализации регулярность потока данных может быть важнее, чем число операций, что приводит к иным требованиям, применяемым к алгоритмам. Популярные аппаратные архитектуры для FDCT/IDCT основаны на применении параллельных мультипликаторов массивов и распределенной арифметики [15 - 18].
|