dctmtx

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

Синтаксис

D = dctmtx(n)

Описание

пример

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

Примеры

свернуть все

Считайте изображение в рабочую область и бросьте ее, чтобы классифицировать double.

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

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

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

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

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

Входные параметры

свернуть все

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

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

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

свернуть все

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

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

Советы

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

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

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

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

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