0% found this document useful (0 votes)
964 views

Fast DCT Algorithm

The document describes a fast algorithm for computing the discrete cosine transform (DCT) and its inverse (IDCT) using the fast Fourier transform (FFT). For the forward DCT, it involves: 1) generating a new sequence from the input, 2) taking the DFT of the new sequence using FFT, and 3) obtaining the DCT from the DFT results. For the inverse DCT, it similarly involves: 1) generating a new sequence from the input DCT, 2) taking the inverse DFT using FFT, and 3) obtaining the original sequence from the inverse DFT results. This allows both the DCT and IDCT to be computed rapidly in O(NlogN) time using FFT.

Uploaded by

Royi
Copyright
© Public Domain
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
964 views

Fast DCT Algorithm

The document describes a fast algorithm for computing the discrete cosine transform (DCT) and its inverse (IDCT) using the fast Fourier transform (FFT). For the forward DCT, it involves: 1) generating a new sequence from the input, 2) taking the DFT of the new sequence using FFT, and 3) obtaining the DCT from the DFT results. For the inverse DCT, it similarly involves: 1) generating a new sequence from the input DCT, 2) taking the inverse DFT using FFT, and 3) obtaining the original sequence from the inverse DFT results. This allows both the DCT and IDCT to be computed rapidly in O(NlogN) time using FFT.

Uploaded by

Royi
Copyright
© Public Domain
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

8/18/2018 Fast DCT algorithm

t i
Next: About this document ... Up: dct Previous: Definition of DCT

Fast DCT algorithm


Forward DCT

The DCT of a sequence can be implemented by FFT. First we define a new sequence

Then the DCT of can be written as the following (the coefficient is dropped for now for simplicity):

where the first summation is for all even terms and second all odd terms. We define for the second summation , then the limits of the

summation and for becomes and for , and the second summation can be written as

Now the two summations in the expression of can be combined

Next, consider the DFT of :

If we multiply both sides by

and take the real part of the result (and keep in mind that both and are real), we get:

The last equal sign is due to the trigonometric identity:

http://fourier.eng.hmc.edu/e161/lectures/dct/node2.html 1/3
8/18/2018 Fast DCT algorithm

This expression for is identical to that for above, therefore we get

where is the DFT of (defined from ) which can be computed using FFT algorithm with time complexity .

In summary, fast forward DCT can be implemented in 3 steps:

Step 1: Generate a sequence from the given sequence :

step 2: Obtain DFT of using FFT. (As is real, is symmetric and only half of the data points need be computed.)

step 3: Obtain DCT from by

Inverse DCT

The most obvious way to do inverse DCT is to reverse the order and the mathematical operations of the three steps for the forward DCT:

step 1: Obtain from . In step 3 above there are N equations but 2N variables (both real and imaginary parts of ). However, note

that as are real, the real part of its spectrum is even (N+1 independent variables) and imaginary part odd (N-1 independent variables).
So there are only N variables which can be obtained by solving the N equations.

step 2: Obtain from by inverse DFT also using FFT in complexity.

Step 3: Obtain from by

However, there is a more efficient way to do the inverse DCT. Consider first the real part of the inverse DFT of the sequence :

This equation gives the inverse DCT of all even data points . To obtain the odd data points, recall that

, and all odd data points

http://fourier.eng.hmc.edu/e161/lectures/dct/node2.html 2/3
8/18/2018 Fast DCT algorithm

can be obtained from the second half of the previous equation in reverse order .

In summary, we have these steps to compute IDCT:

step 1: Generate a sequence from the given DCT sequence :

step 2: Obtain from by inverse DFT also using FFT. (Only the real part need be computed.)

Step 3: Obtain from by

These three steps are mathematically equivalent to the steps of the first method.

See the demos.

t i
Next: About this document ... Up: dct Previous: Definition of DCT
Ruye Wang 2013-10-27

http://fourier.eng.hmc.edu/e161/lectures/dct/node2.html 3/3

You might also like