exponenta event banner

idct

Обратное дискретное косинусное преобразование

Описание

пример

x = idct(y) возвращает обратное дискретное косинусное преобразование входного массива y. Продукция x имеет тот же размер, что и y. Если y имеет более одного измерения, то idct работает вдоль первого размера массива размером больше 1.

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

x = idct(y,n,dim) вычисляет преобразование вдоль размера dim. Для ввода размера и использования значения по умолчанию n, укажите второй аргумент как пустой, [].

пример

y = idct(___,'Type',dcttype) задает тип вычисляемого обратного дискретного косинусного преобразования. Дополнительные сведения см. в разделе Обратное дискретное косинусное преобразование. Эта опция может быть объединена с любым из предыдущих синтаксисов.

Примеры

свернуть все

Генерируют сигнал, состоящий из синусоиды 25 Гц, дискретизированной при 1000 Гц в течение 1 секунды. Синусоида встроена в белый гауссов шум с дисперсией 0,01.

rng('default')

Fs = 1000;
t = 0:1/Fs:1-1/Fs;
x = sin(2*pi*25*t) + randn(size(t))/10;

Вычислите дискретное косинусное преобразование последовательности. Определите, сколько из 1000 коэффициентов DCT являются значимыми. Выберите 1 в качестве порога значимости.

y = dct(x);

sigcoeff = abs(y) >= 1;

howmany = sum(sigcoeff)
howmany = 17

Реконструируйте сигнал, используя только значимые компоненты.

y(~sigcoeff) = 0;

z = idct(y);

Постройте график исходных и восстановленных сигналов.

subplot(2,1,1)
plot(t,x)
yl = ylim;
title('Original')

subplot(2,1,2)
plot(t,z)
ylim(yl)
title('Reconstructed')

Figure contains 2 axes. Axes 1 with title Original contains an object of type line. Axes 2 with title Reconstructed contains an object of type line.

Убедитесь, что различные варианты дискретного косинусного преобразования ортогональны, используя случайный сигнал в качестве эталона.

Начните с формирования сигнала.

s = randn(1000,1);

Убедитесь, что DCT-1 и DCT-4 являются собственными инверсиями.

dct1 = dct(s,'Type',1);
idt1 = idct(s,'Type',1);

max(abs(dct1-idt1))
ans = 1.3323e-15
dct4 = dct(s,'Type',4);
idt4 = idct(s,'Type',4);

max(abs(dct4-idt4))
ans = 1.3323e-15

Убедитесь, что DCT-2 и DCT-3 обратны друг другу.

dct2 = dct(s,'Type',2);
idt2 = idct(s,'Type',3);

max(abs(dct2-idt2))
ans = 4.4409e-16
dct3 = dct(s,'Type',3);
idt3 = idct(s,'Type',2);

max(abs(dct3-idt3))
ans = 1.1102e-15

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

свернуть все

Входное дискретное косинусное преобразование, указанное как действительный или комплексный вектор, матрица, N-D массив или gpuArray объект.

Для получения дополнительной информации см. раздел Запуск функций MATLAB на графическом процессоре (панель параллельных вычислений) и Поддержка графического процессора по выпуску (панель параллельных вычислений) gpuArray(Панель инструментов параллельных вычислений).

Пример: dct(sin(2*pi*(0:255)/4)) задает дискретное косинусное преобразование синусоиды.

Пример: dct(sin(2*pi*[0.1;0.3]*(0:39))') задает дискретное косинусное преобразование двухканальной синусоиды.

Типы данных: single | double
Поддержка комплексного номера: Да

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

Типы данных: single | double

Размерность для работы, заданная как целочисленный скаляр.

Типы данных: single | double

Тип обратного дискретного косинусного преобразования, определяемый как положительный целочисленный скаляр от 1 до 4.

Типы данных: single | double

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

свернуть все

Обратное дискретное косинусное преобразование, возвращаемое в виде вещественного или комплексного вектора, матрицы, N-D массива или gpuArray объект.

Подробнее

свернуть все

Обратное дискретное косинусное преобразование

Обратное дискретное косинусное преобразование восстанавливает последовательность из ее коэффициентов дискретного косинусного преобразования (ДКП). idct функция является обратной функции dct функция.

DCT имеет четыре стандартных варианта. Для преобразованного сигнала y длиной N и с δkℓ дельты Кронекера обратные определяются следующим образом:

  • Обратная DCT-1:

    x (n) =2N−1∑k=1Ny (k) 11 + δk1 + δkN11 + δn1 + δnNcos (¼ N − 1 (k − 1) (n − 1))

  • Обратная DCT-2:

    x (n) =2N∑k=1Ny (k) 11 + δk1cos (π2N (k 1) (2n − 1))

  • Обратная DCT-3:

    x (n) =2N∑k=1Ny (k) 11 + δn1cos (π2N (2k − 1) (n − 1))

  • Обратная DCT-4:

    x (n) =2N∑k=1Ny (k) cos (π4N (2k 1) (2n − 1))

Ряды индексируются от n = 1 и k = 1 вместо обычных n = 0 и k = 0, потому что векторы MATLAB ® работают от 1 до N вместо от 0 до  N-1 .

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

Ссылки

[1] Джейн, А. К. Основы обработки цифровых изображений. Энглвуд Клиффс, Нью-Джерси: Прентис-Холл, 1989.

[2] Оппенгейм, Алан В., Рональд В. Шефер и Джон Р. Бак. Дискретно-временная обработка сигналов. 2-я эд. река Верхнее Седло, Нью-Джерси: Прентис Холл, 1999.

[3] Pennebaker, W. B. и Дж. Л. Митчелл. Стандарт сжатия данных неподвижных изображений JPEG. Нью-Йорк: Ван Ностранд Райнхольд, 1993.

Расширенные возможности

.

См. также

| | (Панель инструментов обработки изображений) | (Панель инструментов обработки изображений)

Представлен до R2006a