dctmtx

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

Синтаксис

Описание

пример

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

Примеры

свернуть все

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

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

Figure contains an axes object. The axes object 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 object. The axes object contains an object of type image.

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

свернуть все

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

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

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

свернуть все

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

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

Советы

  • Если у вас есть n- n изображение, A, затем DA 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