Дискретное косинусное преобразование
Материал из Википедии — свободной энциклопедии
Дискретное косинусное преобразование (англ. Discrete Cosine Transform — сокр. DCT) — одно из ортогональных преобразований. Вариант косинусного преобразования для вектора действительных чисел. Применяется в алгоритмах сжатия информации с потерями, например MPEG и JPEG. Это преобразование тесно связано с Дискретным преобразованием Фурье и является гомоморфизмом его векторного пространства.
Математически, преобразование можно осуществить умножением вектора на матрицу преобразования. При этом матрица обратного преобразования с точностью до множителя равна транспонированной матрице. В математике, матрицы выбирают так, чтобы преобразование было ортонормированным, а постоянный множитель равен единице. В компьютерных приложениях это не всегда так.
DCT вектора из 8 чисел часто называют DCT8. Наиболее распространён двумерный вариант преобразования для матриц 8x8, состоящий из последовательности DCT8 сначала для каждой строки, а затем для каждого столбца матрицы.
Существуют алгоритмы быстрого DCT-преобразования, похожие на алгоритм быcтрого преобразования Фурье. Для DCT8 и других вариантов DCT с фиксированной размерностью вектора существуют также алгоритмы, позволяющие свести количество операций умножения к минимуму.
Существуют аналоги DCT, приближающие косинус числами, легко получающимися путём небольшого количества операций сдвига и сложения, что позволяет избежать операций умножения и тем самым повысить эффективность вычислений. Преимущество таких аналогов — более высокая скорость.
Пример быстрого алгоритма прямого DCT8 — см. Источник: C. Loeffler, A. Ligtenberg and G. Moschytz, «Practical Fast 1-D DCT Algorithms with 11 Multiplications», Proc. Int’l. Conf. on Acoustics, Speech, and Signal Processing 1989 (ICASSP '89), pp. 988—991.