dctmtx

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

Синтаксис

Описание

пример

D = dctmtx(n) возвращает n-by- 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-by- n.

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

Совет

  • Если у вас есть n-by- 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