exponenta event banner

dctmtx

Матрица дискретного косинусного преобразования

Синтаксис

Описание

пример

D = dctmtx(n) возвращает значение nоколо-n матрица дискретного косинусного преобразования (DCT), которую можно использовать для выполнения 2-D DCT на изображении.

Примеры

свернуть все

Чтение изображения в рабочую область и приведение его в класс double.

A = im2double(imread('rice.png'));
imshow(A)

Figure contains an axes. The axes contains an object of type image.

Вычислите дискретную матрицу косинусного преобразования.

D = dctmtx(size(A,1));

Умножение входного изображения A около D чтобы получить DCT столбцов A, и D' для получения обратного DCT столбцов A.

dct = D*A*D';
imshow(dct)

Figure contains an axes. The axes contains an object of type image.

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

свернуть все

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

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

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

свернуть все

DCT-матрица, возвращаемая как числовая матрица размера nоколо-n.

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

Совет

  • Если у вас есть nоколо-n изображение, A, то D*A - DCT столбцов A и D'*A - обратный DCT столбцов A.

  • Двухмерный DCT A может быть вычислено как D*A*D'. Это вычисление иногда происходит быстрее, чем использование dct2, особенно если вы вычисляете большое количество небольших DCT, потому что D необходимо определить только один раз.

    Например, при сжатии JPEG вычисляется DCT каждого блока 8 на 8. Для выполнения этого вычисления используйте dctmtx определить D, а затем вычислить каждый DCT с помощью D*A*D' (где A каждый блок 8 на 8). Это быстрее, чем вызов dct2 для каждого отдельного блока.

См. также

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