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 Гц, произведенной на уровне 1 000 Гц в течение 1 секунды. Синусоида встраивается в белый Гауссов шум с отклонением 0.01.

rng('default')

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

Вычислите дискретное косинусное преобразование последовательности. Определите, сколько из коэффициентов DCT 10:00 является значительным. Выберите 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 objects. Axes object 1 with title Original contains an object of type line. Axes object 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 Запуска на графическом процессоре (Parallel Computing Toolbox) и Поддержка графического процессора Релизом (Parallel Computing Toolbox) для получения дополнительной информации о gpuArray (Parallel Computing Toolbox) объекты.

Пример: 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 объект.

Больше о

свернуть все

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

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

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

  • Инверсия DCT-1:

    x(n)=2N1k=1Ny(k)11+δk1+δkN11+δn1+δnNcos(πN1(k1)(n1))

  • Инверсия DCT-2:

    x(n)=2Nk=1Ny(k)11+δk1cos(π2N(k1)(2n1))

  • Инверсия DCT-3:

    x(n)=2Nk=1Ny(k)11+δn1cos(π2N(2k1)(n1))

  • Инверсия DCT-4:

    x(n)=2Nk=1Ny(k)cos(π4N(2k1)(2n1))

Ряды индексируются от 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] Джайн, А. К. Основные принципы цифровой обработки изображений. Englewood Cliffs, NJ: Prentice Hall, 1989.

[2] Оппенхейм, Алан V, Рональд В. Шафер и Джон Р. Бак. Обработка сигналов дискретного времени. 2-й Эд. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1999.

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

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

Смотрите также

| (Image Processing Toolbox) | (Image Processing Toolbox) |

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