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 объект.

Для получения дополнительной информации см. Run MATLAB Functions on a GPU (Parallel Computing Toolbox) и GPU Support by Release (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). The 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] Jain, A. K. Основы цифровой обработки изображений. Englewood Cliffs, Нью-Джерси: Prentice Hall, 1989.

[2] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Обработка сигнала в дискретном времени. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

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

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

.

См. также

| | (Image Processing Toolbox) | (Набор Image Processing Toolbox)

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