exponenta event banner

dct

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

Описание

пример

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

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

пример

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

пример

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

Примеры

свернуть все

Найдите, сколько коэффициентов DCT представляют 99% энергии в последовательности.

x = (1:100) + 50*cos((1:100)*2*pi/40);
X = dct(x);
[XX,ind] = sort(abs(X),'descend');
i = 1;
while norm(X(ind(1:i)))/norm(X) < 0.99
   i = i + 1;
end
needed = i;

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

X(ind(needed+1:end)) = 0;
xx = idct(X);

plot([x;xx]')
legend('Original',['Reconstructed, N = ' int2str(needed)], ...
       'Location','SouthEast')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original, Reconstructed, N = 3.

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

load penny

surf(P)
view(2)
colormap copper
shading interp
axis ij square off

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

Q = dct(P,[],1);
R = dct(Q,[],2);

Найдите, какая доля DCT-коэффициентов содержит 99,98% энергии на изображении.

X = R(:);

[~,ind] = sort(abs(X),'descend');
coeffs = 1;
while norm(X(ind(1:coeffs)))/norm(X) < 0.9998
   coeffs = coeffs + 1;
end
fprintf('%d of %d coefficients are sufficient\n',coeffs,numel(R))
3572 of 16384 coefficients are sufficient

Реконструируйте изображение, используя только необходимые коэффициенты.

R(abs(R) < abs(X(ind(coeffs)))) = 0;

S = idct(R,[],2);
T = idct(S,[],1);

Отображение восстановленного изображения.

surf(T)
view(2)
shading interp
axis ij square off

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

load penny

surf(P)
view(2)
colormap copper
shading interp
axis ij square off

Вычислите дискретное косинусное преобразование данных изображения, используя вариант DCT-1. Работа сначала по рядам, а затем по столбцам.

Q = dct(P,[],1,'Type',1);
R = dct(Q,[],2,'Type',1);

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

S = idct(R,size(P,2)/2,2,'Type',1);
T = idct(S,size(P,1)/2,1,'Type',1);

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

U = idct(R,size(P,2)*2,2,'Type',1);
V = idct(U,size(P,1)*2,1,'Type',1);

Отображение оригинальных и реконструированных изображений.

surf(V)
view(2)
shading interp
hold on

surf(P)
view(2)
shading interp

surf(T)
view(2)
shading interp
hold off
axis ij equal off

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Подробнее

свернуть все

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

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

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

  • DCT-1:

    y (k) =2N−1∑n=1Nx (n) 11 + δn1 + δnN11 + δk1 + δkNcos (¼ N − 1 (n − 1) (k − 1))

  • DCT-2:

    y (k) =2N∑n=1Nx (n) 11 + δk1cos (π2N (2n − 1) (k − 1))

  • DCT-3:

    y (k) =2N∑n=1Nx (n) 11 + δn1cos (π2N (n 1) (2k − 1))

  • DCT-4:

    y (k) =2N∑n=1Nx (n) cos (π4N (2n 1) (2k − 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