Discrete Cosine Transforms

The discrete cosine transform (DCT) is another frequently used transform in image processing. An advantage of DCT over DFT is that DCT does not involve complex computations. The equations for DCT and inverse DCT are shown below:
 


NAME

dct2 - performs 2D-DCT of an input image and returns the transformed image to the user.

SYNOPSIS

dct2(input_file_name)

dct2(input_file_name, [mrows, ncols])

dct2(input_file_name, mrows, ncols)
mrows --pads or crops the image to mrowsXncols before transformation 
ncols --pads or crops the image to mrowsXncols before transformation 
DESCRIPTION

dct2 performs 2D-DCT on an input image. It reads the image from the input file, pads or crops the image if necessary, and performs the 2D-DCT transformation. The output of the 2D-DCT transformation is a real matrix, which is returned to the user. The transformed image is also displayed on the screen.

This implementation of dct2 makes use of the "dct" function provided by MATLAB. "dct" is first applied to the rows of the image; after that, "dct" is again applied to the columns of the row-transformed image.

EXAMPLES

lena_dct2=dct2('LENA.TIF')

This example performs 2D-DCT of LENA and stores the transform of the image in the variable "lena_dct2" (Figure 6.1a).

ptr_dct2=dct2('PAINTER.TIF')

This example performs 2D-DCT of PAINTER and stores the transform of the image in the variable "ptr_dct2" (Figure 6.1b).
 
a. 2D-DCT of LENA b. 2D-DCT of PAINTER
Figure 6.1 Examples of 2D-DCT transformed images


NAME

idct2 - performs inverse 2D-DCT on an input array.

SYNOPSIS

idct2(x, output_file_name)

idct2(x, output_file_name, [mrows, ncols])

idct2(x, output_file_name, mrows, ncols)
x -- the matrix representation of a DCT transformed image 
mrows -- pads or crops the image to mrowsXncols before transforming 
ncols -- pads or crops the image to mrowsXncols before transforming 
 

DESCRIPTION

idct2 performs 2D-IDCT on a DCT transformed input image. x, which is a real matrix, is the DCT-transformed image. idct2 reads an image matrix, crops the image if necessary before transformation, and performs the inverse transformation. The output of the idct2 function is written to the output file. The format of the output image is TIFF.

This implementation of idct2 makes use of the "idct" function provided by MATLAB. idct is first applied to the rows of the image; after that, idct is again applied to the columns of the row-transformed image

EXAMPLES

idct2(lena_dct2, 'id_lena.tif')

This example performs 2D-IDCT of the previously 2D-DCT transformed LENA (Figure 6.2a).

idct2(ptr_dct2, 'id_ptr.tif')

This example performs 2D-IDCT of the previously 2D-DCT transformed PAINTER (Figure 6.2b).
 
a. Restored LENA via 2D-IDCT  b. Restored PAINTER via 2D-IDCT 
Figure 6.2 Examples of 2D-IDCT transformed images