2-D discrete cosine transform
B = dct2(A)
B = dct2(A,m,n)
B = dct2(A,[m n])
B = dct2(A) returns the two-dimensional
discrete cosine transform of
A. The matrix
the same size as
A and contains the discrete cosine
transform coefficients B(k1,k2).
B = dct2(A,m,n) pads the
A with 0's to size
n is smaller
than the corresponding dimension of
B = dct2(A,[m n]) same as
A can be numeric or logical. The returned
B is of class
The commands below compute the discrete cosine transform for
autumn image. Notice that most of the energy
is in the upper left corner.
RGB = imread('autumn.tif'); I = rgb2gray(RGB); J = dct2(I); imshow(log(abs(J)),), colormap(jet(64)), colorbar
Now set values less than magnitude 10 in the DCT matrix to zero,
and then reconstruct the image using the inverse DCT function
J(abs(J) < 10) = 0; K = idct2(J); imshow(I) figure, imshow(K,[0 255])
The discrete cosine transform (DCT) is closely related to the
discrete Fourier transform. It is a separable linear transformation;
that is, the two-dimensional transform is equivalent to a one-dimensional
DCT performed along a single dimension followed by a one-dimensional
DCT in the other dimension. The definition of the two-dimensional
DCT for an input image
A and output image
M and N are the row
and column size of
A, respectively. If you apply
the DCT to real data, the result is also real. The DCT tends to concentrate
information, making it useful for image compression applications.
This transform can be inverted using
 Jain, Anil K., Fundamentals of Digital Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1989, pp. 150-153.
 Pennebaker, William B., and Joan L. Mitchell, JPEG: Still Image Data Compression Standard, Van Nostrand Reinhold, 1993.