Sie sind auf Seite 1von 13

Chapter 18 Discrete Cosine Transform

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.

Chapter 18, Slide 2

Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004

Introduction
8 pixels

8 pixels

An 8x8 block

Image

DCT

Quantiser

zigzag

Entropy Encoder Channel or Storage

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

Entropy Encoder Channel or Storage

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

Implementation of the DCT

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:

N 1 N 1 2 (2 x 1)u (2 y 1)v F (u , v) C (u )C (v) f ( x, y ) cos[ ] cos[ ] N 2N 2N y 0 x 0


N 1 N 1 v 0 u 0

2 f ( x, y ) N

C (u)C (v) F (u, v) cos[

(2 x 1)u (2 y 1)v ] cos[ ] 2N 2N

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

Chapter 18, Slide 5

2-D DCT using a 1-D DCT Pair

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.

Chapter 18, Slide 6

Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004

2-D DCT using a 1-D DCT Pair


Columns (256 pixels) Raw Block of Pixels
128 127 130 128 134 130 128 128 128 127 130 128 134 130 128 128

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

pixel[n] pixel [256+n]

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]

Part of a picture Final result after DCT by columns


1024

Result after DCT by rows


365 -1 365 -1 362 -3 359 -3 368 370 1 0 -4 -4 -4 -3 1 -3 -6 -6 1 1 0 0 -1 -3 0 2 1 1 -3 -3 1 -1 -3 -3 -3 -3 -1 -3 -3 -1 -2 0 1 1 2 0 -2 -1 -1 0 3 3 1 -1 1 2 -2 -3

-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 -2 -1 -1 -1 1 -1 -1 0 1 -1

378 -3 383 -1

Chapter 18, Slide 7

Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004

2-D DCT using a 1-D DCT Pair

1-D DCT:

X (k )

N 1 2 (2i 1)k C (k ) x(i) cos[ ] N 2N i 0

1-D IDCT:

x(i )

2 N

C (k ) X (k ) cos[
k 0

N 1

(2i 1)k ] 2N

k = 0, 1, 2, , N-1. and i = 0, 1, 2, , N-1.

Chapter 18, Slide 8

Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004

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

Multiplied by 211 coef(i, k) in Q12 format


1448 2008 1892 1702 1448 1702 783 -399 1448 1137 -783 1448 399 1448 -399 1448 1448 1448

-1137 -1702 -2008 -783 2008 783 399 1892 -1702

-1892 -1892

-2008 -1137 1137

1448 -1448 -1448 1448 1137 -2008 783 399 399

1448 -1448 -1448 1448 -399 2008 -1137 783 -399

1702 -1702 -783 -783

-1892 1892

1892 -1892

-1137 1702 -2008 2008 -1702 1137

Chapter 18, Slide 9

Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004

Block-based DCT and IDCT in C

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.

Chapter 18, Slide 10

Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004

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

Graph properties for image_in

image_in

Chapter 18, Slide 12

Graph properties for image_out

image_out
Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004

DCT Code and Links

Code location:

\Chapter 18 - Discrete Cosine transform\DCT_C_Fixed

Projects:
Fixed Point in C language: dct_c_fixed.pjt

Links:
\Links\Imaging Kit.pdf

Chapter 18, Slide 13

Dr. Naim Dahnoun, Bristol University, (c) Texas Instruments 2004

Das könnte Ihnen auch gefallen