Документация Engee

dct

Дискретное косинусоидальное преобразование.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • y = dct(x) — возвращает унитарное дискретное косинусоидальное преобразование входного массива x. Размер выходного массива y совпадает с размером x. Если x имеет несколько измерений, функция dct выполняет операцию по первому измерению массива, размер которого больше 1.

  • y = dct(x,n) — дополняет нулями или усекает соответствующее измерение x до длины n перед преобразованием.

Аргументы

Входные аргументы

# x — входной массив
вектор | матрица | N-мерный массив

Details

Входной массив, заданный как вектор, матрица или многомерный массив с вещественными или комплексными значениями.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

# n — длина преобразования
положительный целочисленный скаляр

Details

Длина преобразования, заданная как положительный целочисленный скаляр.

Типы данных

Float32, Float64

Выходные аргументы

# y — дискретное косинусоидальное преобразование
вектор | матрица | N-мерный массив

Details

Дискретное косинусоидальное преобразование, возвращаемое в виде вещественного или комплексного вектора, матрицы или многомерного массива.

Примеры

Энергия, сохраненная в коэффициентах ДКП

Details

Определим, сколько коэффициентов ДКП представляют 99% энергии в последовательности.

import EngeeDSP.Functions: dct, norm

x = (1:100) .+ 50 .* cos.((1:100) .* 2π / 40) .^ 3
X = dct(x)
XX = sort(abs.(X), rev = true)
ind = sortperm(abs.(X), rev = true)

i = 1
while (norm(X[ind[1:i]]) / norm(X))^2 < 0.99
   global i += 1
end
needed = i

Восстановим сигнал и сравним его с исходным.

import EngeeDSP.Functions: idct

X[ind[needed+1:end]] .= 0
xx = idct(X)

plot(1:100, x, label = "Original", legend = :bottomright)
plot!(1:100, xx, label = "Reconstructed, N = $needed")

dct 1

Дополнительно

Дискретное косинусоидальное преобразование

Details

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

ДКП имеет четыре стандартных варианта. Для данной функции реализован только тип ДКП-2. Для сигнала длины и символа Кронекера преобразования определяются следующим образом:

  • ДКП-1:

  • ДКП-2:

  • ДКП-3:

  • ДКП-4:

Ряды индексируются от и вместо обычных и , поскольку векторы Engee изменяются от до , а не от до .

Все варианты ДКП унитарны (или, что эквивалентно, ортогональны): чтобы найти их обратные значения, поменяйте местами и в каждом определении. ДКП-1 и ДКП-4 являются обратными друг другу. ДКП-2 и ДКП-3 являются обратными друг другу.

Литература

  1. Jain, A. K. Fundamentals of Digital Image Processing. Englewood Cliffs, NJ: Prentice-Hall, 1989.

  2. Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

  3. Pennebaker, W. B., and J. L. Mitchell. JPEG Still Image Data Compression Standard. New York: Van Nostrand Reinhold, 1993.