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

Для получения дополнительной информации см. Run MATLAB Functions on a GPU (Parallel Computing Toolbox) и GPU Support by Release (Parallel Computing Toolbox). gpuArray (Parallel Computing Toolbox) объекты.

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Подробнее о

свернуть все

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

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

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

  • DCT-1:

    y(k)=2N1n=1Nx(n)11+δn1+δnN11+δk1+δkNcos(πN1(n1)(k1))

  • DCT-2:

    y(k)=2Nn=1Nx(n)11+δk1cos(π2N(2n1)(k1))

  • DCT-3:

    y(k)=2Nn=1Nx(n)11+δn1cos(π2N(n1)(2k1))

  • DCT-4:

    y(k)=2Nn=1Nx(n)cos(π4N(2n1)(2k1))

Ряд индексируется из 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