Professional Documents
Culture Documents
Chapter 18
Chapter 18
Learning Objectives
Introduction to the DCT and IDCT. Decomposition of a 2-D DCT to two 1-D DCTs. Implementation of a 2-D DCT using a 1D DCT.
Introduction
8 pixels
8 pixels
An 8x8 block
Image
DCT
Quantiser
zigzag
IDCT
Dequantiser
reverse zigzag
Entropy Decoder
Chapter 18, Slide 3
To perform the JPEG coding, an image (in colour or grey scales) is first subdivided into blocks of 8x8 pixels. The Discrete Cosine Transform (DCT) is then performed on each block. This generates 64 coefficients which are then quantised to reduce their magnitude.
Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004
Introduction
8 pixels
8 pixels
An 8x8 block
Image
DCT
Quantiser
zigzag
IDCT
Dequantiser
reverse zigzag
Entropy Decoder
Chapter 18, Slide 4
The coefficients are then reordered into a one-dimensional array in a zigzag manner before further entropy encoding. The compression is achieved in two stages; the first is during quantisation and the second during the entropy coding process. JPEG decoding is the reverse process of coding.
Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004
DCT-based codecs use a twodimensional version of the transform. The 2-D DCT and its inverse (IDCT) of an N x N block are shown below:
2-D DCT:
2-D IDCT:
2 f ( x, y ) N
Note: The DCT is similar to the DFT since it decomposes a signal into a series of harmonic cosine functions.
Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004
One of the properties of the 2-D DCT is that it is separable meaning that it can be separated into a pair of 1-D DCTs. To obtain the 2-D DCT of a block a 1-D DCT is first performed on the rows of the block then a 1-D DCT is performed on the columns of the resulting block. The same applies to the IDCT. This process is illustrated on the following slide.
An 8x8 block
Rows (256 pixels)
125 126 130 127 130 131 128 127 124 128 127 126 129 130 127 127 131 132 130 129 132 128 129 131
129 131 134 131 133 129 131 131 129 134 134 136 136 137 134 132 133 135 136 138 137 140 135 132
pixel[n+1]
-4 -1 -1 2 1 -3 0 0
-11 1 -5 2 1 -3 -1 1
0 0 2 -3 1 -1 -2 0
-4 2 0 3 0 -3 -1 0
-6 -2 0
0 2 1
1 4 -1 3 -2 -2 0 -1
-18 11 0 0 -4 -2 2
-2 -1 -2 -1 -1 1 -1 -1 0 1 -1
378 -3 383 -1
1-D DCT:
X (k )
1-D IDCT:
x(i )
2 N
C (k ) X (k ) cos[
k 0
N 1
(2i 1)k ] 2N
Implementation Issues
Precalculate the DCT coefficients and scale them (see \Links\DCT Coeffs.pdf).
2 * coef (i, k ) cos[ (2i 1)k ] 16
0.707 0.707 0.707 0.707 0.707 0.707 0.707 0.707 0.981 0.831 0.556 0.195 -0.195 0.556 -0.831 -.981 0.924 0.383 -0.383 -.0924 -0.924 -0.383 +0.38 0.924 3
0.831 -0.195 -0.981 -0.556 0.556 0.981 0.195 -0.831 0.707 -0.707 -.707 0.707 0.707 -0.707 -0.707 0.707 0.556 -0.981 0.981 0.831 -0.831 -0.195 0.981 0.556 0.383 -0.924 0.924 0.383 -0.383 0.924 -0.924 0.383 0.195 0.556 0.831 -0.981 0.981 -0.831 0.556 -0.195
-1892 -1892
-1892 1892
1892 -1892
The most straightforward way of implementing a DCT and an IDCT is to use the 1-D DCT and IDCT. The following C code shows how to translate the 1-D equations for the DCT and IDCT into C code. The program also takes into account the numerical issues associated with fixedpoint processors.
Implementation Issues
(1) The program runs on the DSK with the C6711 and does not use any communication with the host. (2) The scenary.h file is quite large (256x256 8-bit pixels or 65536 bytes) and therefore needs to be located in a specific memory location in the DSK. By using the #pragma DATA_SECTION () directive the picture can be located in the DRAM (origin address 0x0800 0000). (3) For example, #pragma DATA_SECTION (image_in, ext_sdram) allows the image_in data array to be loaded into the section called ext_sdram which is defined in the command file. The same applies to image_out. (4) The directory: ..\ Chapter 18 - Discrete Cosine transform\DCT_C_Fixed contains the entire source and executable files required. The program can be loaded into the DSK and by using the display feature of the CCS as shown below the contents of image_in and image_out can be displayed and compared.
Chapter 18, Slide 11 Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004
Implementation Issues
image_in
image_out
Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004
Code location:
Projects:
Fixed Point in C language: dct_c_fixed.pjt
Links:
\Links\Imaging Kit.pdf