Дискретное косинусное преобразование: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м r2.7.1) (робот добавил: eu:Kosinuaren transformatu diskretu
Ортонормированнных преобразований не существует, есть ортогональные.
 
(не показано 14 промежуточных версий 11 участников)
Строка 1: Строка 1:
'''Дискретное косинусное преобразование''' ({{lang-en|Discrete Cosine Transform }}— сокр. DCT) — одно из [[ортогональное преобразование|ортогональных преобразований]]. Вариант [[косинусное преобразование|косинусного преобразования]] для вектора действительных чисел. Применяется в алгоритмах сжатия информации с потерями, например, [[MPEG]] и [[JPEG]]. Это преобразование тесно связано с [[Дискретное преобразование Фурье|Дискретным преобразованием Фурье]] и является [[гомоморфизм]]ом его векторного пространства.
'''Дискретное косинусное преобразование''' ({{lang-en|Discrete Cosine Transform, DCT}}) — одно из [[ортогональное преобразование|ортогональных преобразований]]. Вариант [[косинусное преобразование|косинусного преобразования]] для вектора действительных чисел. Применяется в алгоритмах сжатия информации с потерями, например, [[MPEG]] и [[JPEG]]. Это преобразование тесно связано с [[Дискретное преобразование Фурье|дискретным преобразованием Фурье]] и является [[гомоморфизм]]ом его векторного пространства.


Данное преобразование является [[Линейное преобразование|линейным]], поэтому его результат можно вычислить при помощи умножения [[матрица (математика)|матрицы]] преобразования и вектора. Матрица ДКП является [[Ортогональная матрица|ортогональной]] (обратная матрица равна транспонированной), поэтому обратное преобразование вычисляется с помощью умножения транспонированной матрицы ДКП на вектор. На практике используется вариант ДКП с матрицей, пропорциональной ортогональной (получающейся из ортогональной умножением на константу).
Математически преобразование можно осуществить умножением вектора на [[матрица (математика)|матрицу]] преобразования. При этом матрица обратного преобразования с точностью до множителя равна [[транспонирование|транспонированной]] матрице. В математике матрицы выбирают так, чтобы преобразование было ортонормированным, а постоянный множитель равен единице. В компьютерных приложениях это не всегда так.


Различные периодические продолжения сигнала ведут к различным типам ДКП. Ниже приводятся матрицы для первых четырех типов ДКП:
Различные периодические продолжения сигнала ведут к различным типам ДКП. Ниже приводятся матрицы для первых четырёх типов ДКП:


<math>\mathrm{DCT}\text{-}1_n= \left[\cos kl\tfrac{\pi}{n-1}\right]_{0\leq k,l<n} </math>
:<math>\mathrm{DCT}\text{-}1_n= \left[\cos (kl\tfrac{\pi}{n-1})\right]_{0\leq k,l<n} </math>


<math>\mathrm{DCT}\text{-}2_n= \left[\cos k(l+\tfrac{1}{2})\tfrac{\pi}{n}\right]_{0\leq k,l<n} </math>
:<math>\mathrm{DCT}\text{-}2_n= \left[\cos (k(l+\tfrac{1}{2})\tfrac{\pi}{n})\right]_{0\leq k,l<n} </math>


<math>\mathrm{DCT}\text{-}3_n= \left[\cos (k+\tfrac{1}{2})l\tfrac{\pi}{n}\right]_{0\leq k,l<n} </math>
:<math>\mathrm{DCT}\text{-}3_n= \left[\cos ((k+\tfrac{1}{2})l\tfrac{\pi}{n})\right]_{0\leq k,l<n} </math>


<math>\mathrm{DCT}\text{-}4_n= \left[\cos (k+\tfrac{1}{2})(l+\tfrac{1}{2})\tfrac{\pi}{n}\right]_{0\leq k,l<n} </math>
:<math>\mathrm{DCT}\text{-}4_n= \left[\cos ((k+\tfrac{1}{2})(l+\tfrac{1}{2})\tfrac{\pi}{n})\right]_{0\leq k,l<n} </math>


Именно <math>\mathrm{DCT}\text{-}2</math> чаще всего встречается в практических приложениях благодаря свойству «уплотнения энергии».
Именно <math>\mathrm{DCT}\text{-}2</math> чаще всего встречается в практических приложениях благодаря свойству «уплотнения энергии».
Строка 19: Строка 19:
Существуют алгоритмы быстрого <math>\mathrm{DCT}</math>-преобразования, похожие на алгоритм [[Быстрое преобразование Фурье|быстрого преобразования Фурье]]. Для <math>\mathrm{DCT}\text{-}2_8</math> и других вариантов <math>\mathrm{DCT}</math> с фиксированной размерностью вектора существуют также алгоритмы, позволяющие свести количество операций умножения к минимуму.
Существуют алгоритмы быстрого <math>\mathrm{DCT}</math>-преобразования, похожие на алгоритм [[Быстрое преобразование Фурье|быстрого преобразования Фурье]]. Для <math>\mathrm{DCT}\text{-}2_8</math> и других вариантов <math>\mathrm{DCT}</math> с фиксированной размерностью вектора существуют также алгоритмы, позволяющие свести количество операций умножения к минимуму.


Существуют аналоги <math>\mathrm{DCT}</math>, приближающие косинус числами, легко получающимися путём небольшого количества операций сдвига и сложения, что позволяет избежать операций умножения и тем самым повысить эффективность вычислений. Преимущество таких аналогов — более высокая скорость.
Существуют аналоги <math>\mathrm{DCT}</math>, приближающие косинус числами, легко получающимися путём небольшого количества операций сдвига и сложения, что позволяет избежать операций умножения и тем самым повысить скорость вычислений.


== Литература ==
'''Пример быстрого алгоритма прямого 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.''
* 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.


== Ссылки ==
== Ссылки ==
Строка 31: Строка 32:
1. Написать формулы. 2. Рассказать про shift-вариант подробнее и где исползуется, или дать ссылку. 3. Привести source code для быстрого варианта преобразования.
1. Написать формулы. 2. Рассказать про shift-вариант подробнее и где исползуется, или дать ссылку. 3. Привести source code для быстрого варианта преобразования.
-->
-->

{{compu-stub}}
{{compu-stub}}
{{math-stub}}
{{math-stub}}
Строка 41: Строка 43:
[[Категория:Математический анализ]]
[[Категория:Математический анализ]]
[[Категория:Цифровая обработка сигналов]]
[[Категория:Цифровая обработка сигналов]]

[[ar:تحويل جيب التمام المتقطع]]
[[ca:Transformada Cosinus Discreta]]
[[cs:Diskrétní kosinová transformace]]
[[de:Diskrete Kosinustransformation]]
[[en:Discrete cosine transform]]
[[es:Transformada de coseno discreta]]
[[eu:Kosinuaren transformatu diskretu]]
[[fr:Transformée en cosinus discrète]]
[[hu:Diszkrét koszinusz-transzformáció]]
[[it:Trasformata discreta del coseno]]
[[ja:離散コサイン変換]]
[[kn:ಡಿಸ್ಕ್ರೀಟ್‌ ಕೊಸೈನ್‌ ಟ್ರಾನ್ಸ್‌ಫಾರ್ಮ್]]
[[ko:이산 코사인 변환]]
[[nl:Discrete cosinustransformatie]]
[[pl:Dyskretna transformacja kosinusowa]]
[[pt:Transformada discreta de cosseno]]
[[ro:Transformata cosinus discretă]]
[[simple:Discrete cosine transform]]
[[sr:Дискретна косинус трансформација]]
[[sv:Diskret cosinustransform]]
[[te:వివిక్త కొసైన్ పరివర్తనం]]
[[th:การแปลงโคไซน์ไม่ต่อเนื่อง]]
[[zh:离散余弦变换]]

Текущая версия от 23:24, 19 марта 2022

Дискретное косинусное преобразование (англ. Discrete Cosine Transform, DCT) — одно из ортогональных преобразований. Вариант косинусного преобразования для вектора действительных чисел. Применяется в алгоритмах сжатия информации с потерями, например, MPEG и JPEG. Это преобразование тесно связано с дискретным преобразованием Фурье и является гомоморфизмом его векторного пространства.

Данное преобразование является линейным, поэтому его результат можно вычислить при помощи умножения матрицы преобразования и вектора. Матрица ДКП является ортогональной (обратная матрица равна транспонированной), поэтому обратное преобразование вычисляется с помощью умножения транспонированной матрицы ДКП на вектор. На практике используется вариант ДКП с матрицей, пропорциональной ортогональной (получающейся из ортогональной умножением на константу).

Различные периодические продолжения сигнала ведут к различным типам ДКП. Ниже приводятся матрицы для первых четырёх типов ДКП:

Именно чаще всего встречается в практических приложениях благодаря свойству «уплотнения энергии».

для вектора из 8 чисел часто называют . Наиболее распространён двумерный вариант преобразования для матриц 8x8, состоящий из последовательности сначала для каждой строки, а затем для каждого столбца матрицы.

Существуют алгоритмы быстрого -преобразования, похожие на алгоритм быстрого преобразования Фурье. Для и других вариантов с фиксированной размерностью вектора существуют также алгоритмы, позволяющие свести количество операций умножения к минимуму.

Существуют аналоги , приближающие косинус числами, легко получающимися путём небольшого количества операций сдвига и сложения, что позволяет избежать операций умножения и тем самым повысить скорость вычислений.

Литература

[править | править код]
  • 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.