Main Content

dctmtx

Discrete cosine transform matrix

Description

D = dctmtx(n) returns the n-by-n discrete cosine transform (DCT) matrix, which you can use to perform a 2-D DCT on an image.

example

Examples

collapse all

Read an image into the workspace and cast it to class double.

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

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

Calculate the discrete cosine transform matrix.

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

Multiply the input image A by D to get the DCT of the columns of A, and by D' to get the inverse DCT of the columns of A.

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

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

Input Arguments

collapse all

Size of DCT matrix, specified as a positive integer.

Data Types: double

Output Arguments

collapse all

DCT matrix, returned as a numeric matrix of size n-by-n.

Data Types: double

Tips

  • If you have an n-by-n image, A, then D*A is the DCT of the columns of A and D'*A is the inverse DCT of the columns of A.

  • The two-dimensional DCT of A can be computed as D*A*D'. This computation is sometimes faster than using dct2, especially if you are computing a large number of small DCTs, because D needs to be determined only once.

    For example, in JPEG compression, the DCT of each 8-by-8 block is computed. To perform this computation, use dctmtx to determine D, and then calculate each DCT using D*A*D' (where A is each 8-by-8 block). This is faster than calling dct2 for each individual block.

Version History

Introduced before R2006a

See Also