Discrete cosine transform: Difference between revisions

Content deleted Content added
Tag: Reverted
Undid revision 1243797329 by 167.103.7.80 (talk) unexplained changes
Line 345:
Like for the [[discrete Fourier transform|DFT]], the normalization factor in front of these transform definitions is merely a convention and differs between treatments. For example, some authors multiply the transforms by <math display="inline">\sqrt{2/N}</math> so that the inverse does not require any additional multiplicative factor. Combined with appropriate factors of {{sqrt|2}} (see above), this can be used to make the transform matrix [[orthogonal matrix|orthogonal]].
 
== Multidimensional DCTs ==
The Fourier Cosine Transform (FCT) is an essential mathematical tool used in various fields, including engineering, physics, and signal processing. It is a specific type of Fourier Transform, which generally decomposes a function or a signal into its constituent frequencies. The FCT is particularly useful when dealing with even functions and problems defined over a finite interval, where the sine components of the signal are not present, making the cosine transform the appropriate choice. This essay will explore the fundamentals of the Fourier Cosine Transform, its mathematical formulation, and its applications.
 
Multidimensional variants of the various DCT types follow straightforwardly from the one-dimensional definitions: they are simply a separable product (equivalently, a composition) of DCTs along each dimension.
The Concept of Fourier Transform
Before diving into the specifics of the Fourier Cosine Transform, it is essential to understand the broader concept of the Fourier Transform. Named after the French mathematician Joseph Fourier, this transform is a method of expressing a function as a sum of sinusoidal components, each characterized by a specific frequency. The Fourier Transform essentially converts a time-___domain signal into its frequency-___domain representation. This conversion is crucial in various applications, such as signal processing, where understanding the frequency content of a signal is more insightful than the time-___domain representation.
 
=== M-D DCT-II ===
Mathematically, the Fourier Transform
𝐹
(
𝜔
)
F(ω) of a continuous function
𝑓
(
𝑡
)
f(t) is given by:
 
For example, a two-dimensional DCT-II of an image or a matrix is simply the one-dimensional DCT-II, from above, performed along the rows and then along the columns (or vice versa). That is, the 2D DCT-II is given by the formula (omitting normalization and other scale factors, as above):
𝐹
(
𝜔
)
=
𝑓
(
𝑡
)
𝑒
𝑖
𝜔
𝑡
𝑑
𝑡
F(ω)=∫
−∞
f(t)e
−iωt
dt
Here,
𝜔
ω represents the angular frequency, and
𝑒
𝑖
𝜔
𝑡
e
−iωt
denotes the complex exponential function, which can be broken down into cosine and sine components.
 
:<math>
The Fourier Cosine Transform
\begin{align}
The Fourier Cosine Transform is a variant of the Fourier Transform that specifically applies to even functions. An even function
X_{k_1,k_2} &=
𝑓
\sum_{n_1=0}^{N_1-1}
(
\left( \sum_{n_2=0}^{N_2-1}
𝑡
x_{n_1,n_2}
)
\cos \left[\frac{\pi}{N_2} \left(n_2+\frac{1}{2}\right) k_2 \right]\right)
f(t) satisfies the condition
\cos \left[\frac{\pi}{N_1} \left(n_1+\frac{1}{2}\right) k_1 \right]\\
𝑓
&= \sum_{n_1=0}^{N_1-1}
(
\sum_{n_2=0}^{N_2-1}
𝑡
x_{n_1,n_2}
)
\cos \left[\frac{\pi}{N_1} \left(n_1+\frac{1}{2}\right) k_1 \right]
=
\cos \left[\frac{\pi}{N_2} \left(n_2+\frac{1}{2}\right) k_2 \right] .
𝑓
\end{align}
(
</math>
:The inverse of a multi-dimensional DCT is just a separable product of the inverses of the corresponding one-dimensional DCTs (see above), e.g. the one-dimensional inverses applied along one dimension at a time in a row-column algorithm.
𝑡
)
f(t)=f(−t), meaning it is symmetric about the vertical axis. When a function is even, its Fourier Transform simplifies, as the sine components (which correspond to odd functions) vanish, leaving only the cosine components.
 
The ''3-D DCT-II'' is only the extension of ''2-D DCT-II'' in three dimensional space and mathematically can be calculated by the formula
The Fourier Cosine Transform
𝐹
𝑐
(
𝜔
)
F
c
(ω) of a function
𝑓
(
𝑡
)
f(t) is defined as:
 
:<math>
𝐹
X_{k_1,k_2,k_3} =
𝑐
\sum_{n_1=0}^{N_1-1}
(
\sum_{n_2=0}^{N_2-1}
𝜔
\sum_{n_3=0}^{N_3-1}
)
x_{n_1,n_2,n_3}
=
\cos \left[\frac{\pi}{N_1} \left(n_1+\frac{1}{2}\right) k_1 \right]
2
\cos \left[\frac{\pi}{N_2} \left(n_2+\frac{1}{2}\right) k_2 \right]
𝜋
\cos \left[\frac{\pi}{N_3} \left(n_3+\frac{1}{2}\right) k_3 \right],\quad
\text{for } k_i = 0,1,2,\dots,N_i-1.
0
</math>
𝑓
(
𝑡
)
cos
(
𝜔
𝑡
)
𝑑
𝑡
F
c
(ω)=
π
2
0
f(t)cos(ωt)dt
This integral represents the projection of the function
𝑓
(
𝑡
)
f(t) onto the cosine basis functions, which oscillate at different frequencies
𝜔
ω. The factor
2
𝜋
π
2
ensures the proper normalization of the transform.
 
The inverse of '''3-D DCT-II''' is '''3-D DCT-III''' and can be computed from the formula given by
Inverse Fourier Cosine Transform
:<math>
Just as there is a Fourier Cosine Transform to move from the time ___domain to the frequency ___domain, there is an inverse transform to revert to the original function. The inverse Fourier Cosine Transform is given by:
x_{n_1,n_2,n_3} =
\sum_{k_1=0}^{N_1-1}
\sum_{k_2=0}^{N_2-1}
\sum_{k_3=0}^{N_3-1}
X_{k_1,k_2,k_3}
\cos \left[\frac{\pi}{N_1} \left(n_1+\frac{1}{2}\right) k_1 \right]
\cos \left[\frac{\pi}{N_2} \left(n_2+\frac{1}{2}\right) k_2 \right]
\cos \left[\frac{\pi}{N_3} \left(n_3+\frac{1}{2}\right) k_3 \right],\quad
\text{for } n_i=0,1,2,\dots,N_i-1.
</math>
 
Technically, computing a two-, three- (or -multi) dimensional DCT by sequences of one-dimensional DCTs along each dimension is known as a ''row-column'' algorithm. As with [[fast Fourier transform#Multidimensional FFTs|multidimensional FFT algorithms]], however, there exist other methods to compute the same thing while performing the computations in a different order (i.e. interleaving/combining the algorithms for the different dimensions). Owing to the rapid growth in the applications based on the 3-D DCT, several fast algorithms are developed for the computation of 3-D DCT-II. Vector-Radix algorithms are applied for computing M-D DCT to reduce the computational complexity and to increase the computational speed. To compute 3-D DCT-II efficiently, a fast algorithm, Vector-Radix Decimation in Frequency (VR DIF) algorithm was developed.
𝑓
(
𝑡
)
=
2
𝜋
0
𝐹
𝑐
(
𝜔
)
cos
(
𝜔
𝑡
)
𝑑
𝜔
f(t)=
π
2
0
F
c
(ω)cos(ωt)dω
This equation reconstructs the original function
𝑓
(
𝑡
)
f(t) from its cosine-transformed representation by summing over all possible frequencies.
 
====3-D DCT-II VR DIF====
Applications of Fourier Cosine Transform
In order to apply the VR DIF algorithm the input data is to be formulated and rearranged as follows.<ref>{{cite journal|doi=10.1049/ip-f-2.1990.0063|title=Direct methods for computing discrete sinusoidal transforms|year=1990|last1=Chan|first1=S.C.|last2=Ho|first2=K.L.|journal=IEE Proceedings F - Radar and Signal Processing|volume=137|issue=6|page=433}}</ref><ref name=":0">{{cite journal|first1=O.|last1=Alshibami|first2=S.|last2=Boussakta|title=Three-dimensional algorithm for the 3-D DCT-III|journal=Proc. Sixth Int. Symp. Commun., Theory Applications|date=July 2001|pages=104–107}}</ref> The transform size ''N × N × N'' is assumed to be&nbsp;2.
The Fourier Cosine Transform is particularly useful in solving partial differential equations (PDEs) with specific boundary conditions, such as the heat equation or wave equation, where the problem is defined over a finite ___domain. For example, in heat conduction problems within a rod of finite length, where the temperature distribution is even with respect to the rod's midpoint, the FCT provides a natural and efficient way to analyze the problem.
 
[[File:Stages of the 3-D DCT-II VR DIF algorithm.jpg|thumb|The four basic stages of computing 3-D DCT-II using VR DIF Algorithm.|336x336px]]
In signal processing, the FCT is employed in image compression algorithms, such as JPEG, where it is used to transform blocks of pixels into frequency components. By focusing on the lower frequency components and discarding the higher frequencies, which often correspond to noise, the image can be compressed effectively without significant loss of quality.
 
:<math>
Conclusion
\begin{array}{lcl}\tilde{x}(n_1,n_2,n_3) =x(2n_1,2n_2,2n_3)\\
The Fourier Cosine Transform is a powerful mathematical tool that simplifies the analysis of even functions and problems defined over finite intervals. By decomposing a function into its cosine components, the FCT provides valuable insights into the frequency characteristics of the function, enabling efficient problem-solving in various scientific and engineering applications. Understanding and applying the Fourier Cosine Transform is essential for anyone working in fields where signal processing, image compression, or the analysis of PDEs plays a crucial role.
\tilde{x}(n_1,n_2,N-n_3-1)=x(2n_1,2n_2,2n_3+1)\\
\tilde{x}(n_1,N-n_2-1,n_3)=x(2n_1,2n_2+1,2n_3)\\
\tilde{x}(n_1,N-n_2-1,N-n_3-1)=x(2n_1,2n_2+1,2n_3+1)\\
\tilde{x}(N-n_1-1,n_2,n_3)=x(2n_1+1,2n_2,2n_3)\\
\tilde{x}(N-n_1-1,n_2,N-n_3-1)=x(2n_1+1,2n_2,2n_3+1)\\
\tilde{x}(N-n_1-1,N-n_2-1,n_3)=x(2n_1+1,2n_2+1,2n_3)\\
\tilde{x}(N-n_1-1,N-n_2-1,N-n_3-1)=x(2n_1+1,2n_2+1,2n_3+1)\\
\end{array}
</math>
:where <math>0\leq n_1,n_2,n_3 \leq \frac{N}{2} -1</math>
 
The figure to the adjacent shows the four stages that are involved in calculating 3-D DCT-II using VR DIF algorithm. The first stage is the 3-D reordering using the index mapping illustrated by the above equations. The second stage is the butterfly calculation. Each butterfly calculates eight points together as shown in the figure just below, where <math>c(\varphi_i)=\cos(\varphi_i)</math>.
 
The original 3-D DCT-II now can be written as
 
:<math>X(k_1,k_2,k_3)=\sum_{n_1=1}^{N-1}\sum_{n_2=1}^{N-1}\sum_{n_3=1}^{N-1}\tilde{x}(n_1,n_2,n_3) \cos(\varphi k_1)\cos(\varphi k_2)\cos(\varphi k_3)
</math>
 
where <math>\varphi_i= \frac{\pi}{2N}(4N_i+1),\text{ and } i= 1,2,3.</math>
 
If the even and the odd parts of <math>k_1,k_2</math> and <math>k_3</math> and are considered, the general formula for the calculation of the 3-D DCT-II can be expressed as [[File:Single butterfly of the 3-D DCT-II VR DIF algorithm.jpg|thumb|The single butterfly stage of VR DIF algorithm.|310x310px]]
:<math>X(k_1,k_2,k_3)=\sum_{n_1=1}^{\tfrac N 2 -1}\sum_{n_2=1}^{\tfrac N 2 -1}\sum_{n_1=1}^{\tfrac N 2 -1}\tilde{x}_{ijl}(n_1,n_2,n_3) \cos(\varphi (2k_1+i)\cos(\varphi (2k_2+j)
\cos(\varphi (2k_3+l))</math>
 
where
 
: <math>\tilde{x}_{ijl}(n_1,n_2,n_3)=\tilde{x}(n_1,n_2,n_3)+(-1)^l\tilde{x}\left(n_1,n_2,n_3+\frac{n}{2}\right) </math>
 
: <math>+(-1)^j\tilde{x}\left(n_1,n_2+\frac{n}{2},n_3\right)+(-1)^{j+l}\tilde{x}\left(n_1,n_2+\frac{n}{2},n_3+\frac{n}{2}\right) </math>
 
: <math>+(-1)^i\tilde{x}\left(n_1+\frac{n}{2},n_2,n_3\right)+(-1)^{i+j}\tilde{x}\left(n_1+\frac{n}{2}+\frac{n}{2},n_2,n_3\right) </math>
 
: <math>+(-1)^{i+l}\tilde{x}\left(n_1+\frac{n}{2},n_2,n_3+\frac{n}{3}\right)</math>
 
: <math>+(-1)^{i+j+l}\tilde{x}\left(n_1+\frac{n}{2},n_2+\frac{n}{2},n_3+\frac{n}{2}\right) \text{ where } i,j,l= 0 \text{ or } 1.</math>
 
===== Arithmetic complexity =====
The whole 3-D DCT calculation needs <math>~ [\log_2 N] ~</math> stages, and each stage involves <math>~ \tfrac{1}{8}\ N^3 ~</math> butterflies. The whole 3-D DCT requires <math>~ \left[ \tfrac{1}{8}\ N^3 \log_2 N \right] ~</math> butterflies to be computed. Each butterfly requires seven real multiplications (including trivial multiplications) and 24&nbsp;real additions (including trivial additions). Therefore, the total number of real multiplications needed for this stage is <math>~ \left[ \tfrac{7}{8}\ N^3\ \log_2 N \right] ~,</math> and the total number of real additions i.e. including the post-additions (recursive additions) which can be calculated directly after the butterfly stage or after the bit-reverse stage are given by<ref name=":0" /> <math>~ \underbrace{\left[\frac{3}{2}N^3 \log_2N\right]}_\text{Real}+\underbrace{\left[\frac{3}{2}N^3 \log_2N-3N^3+3N^2\right]}_\text{Recursive} = \left[\frac{9}{2}N^3 \log_2N-3N^3+3N^2\right] ~.</math>
 
The conventional method to calculate MD-DCT-II is using a Row-Column-Frame (RCF) approach which is computationally complex and less productive on most advanced recent hardware platforms. The number of multiplications required to compute VR DIF Algorithm when compared to RCF algorithm are quite a few in number. The number of Multiplications and additions involved in RCF approach are given by <math>~\left[\frac{3}{2}N^3 \log_2 N \right]~</math> and <math>~ \left[\frac{9}{2}N^3 \log_2 N - 3N^3 + 3N^2 \right] ~,</math> respectively. From Table 1, it can be seen that the total number
{| class="wikitable sortable"
|+TABLE 1
Comparison of VR DIF & RCF Algorithms for computing 3D-DCT-II
!Transform Size
!3D VR Mults
!RCF Mults
!3D VR Adds
!RCF Adds
|-
|8 × 8 × 8
|2.625
|4.5
|10.875
|10.875
|-
|16 × 16 × 16
|3.5
|6
|15.188
|15.188
|-
|32 × 32 × 32
|4.375
|7.5
|19.594
|19.594
|-
|64 × 64 × 64
|5.25
|9
|24.047
|24.047
|}
of multiplications associated with the 3-D DCT VR algorithm is less than that associated with the RCF approach by more than 40%. In addition, the RCF approach involves matrix transpose and more indexing and data swapping than the new VR algorithm. This makes the 3-D DCT VR algorithm more efficient and better suited for 3-D applications that involve the 3-D DCT-II such as video compression and other 3-D image processing applications.
 
The main consideration in choosing a fast algorithm is to avoid computational and structural complexities. As the technology of computers and DSPs advances, the execution time of arithmetic operations (multiplications and additions) is becoming very fast, and regular computational structure becomes the most important factor.<ref>{{cite journal |doi=10.1109/78.827550 |title=On the computation of two-dimensional DCT |year=2000 |last1=Guoan Bi |last2=Gang Li |last3=Kai-Kuang Ma |last4=Tan |first4=T.C. |journal=IEEE Transactions on Signal Processing |volume=48 |issue=4 |pages=1171–1183 |bibcode=2000ITSP...48.1171B}}</ref> Therefore, although the above proposed 3-D VR algorithm does not achieve the theoretical lower bound on the number of multiplications,<ref>{{cite journal |doi=10.1109/18.144722 |title=On the multiplicative complexity of discrete cosine transforms |date=July 1992a |last1=Feig |first1=E. |last2=Winograd |first2=S. |journal=IEEE Transactions on Information Theory |volume=38 |issue=4 |pages=1387–1391}}</ref> it has a simpler computational structure as compared to other 3-D DCT algorithms. It can be implemented in place using a single butterfly and possesses the properties of the [[Cooley–Tukey FFT algorithm]] in 3-D. Hence, the 3-D VR presents a good choice for reducing arithmetic operations in the calculation of the 3-D DCT-II, while keeping the simple structure that characterize butterfly-style [[Cooley–Tukey FFT algorithm]]s.
 
[[File:DCT-8x8.png|thumb|250px|Two-dimensional DCT frequencies from the [[JPEG#Discrete cosine transform|JPEG DCT]]]]
The image to the right shows a combination of horizontal and vertical frequencies for an {{nobr| 8 × 8 }} <math>(~ N_1 = N_2 = 8 ~)</math> two-dimensional DCT. Each step from left to right and top to bottom is an increase in frequency by 1/2 cycle.
For example, moving right one from the top-left square yields a half-cycle increase in the horizontal frequency. Another move to the right yields two half-cycles. A move down yields two half-cycles horizontally and a half-cycle vertically. The source data {{nobr|( 8×8 )}} is transformed to a [[linear combination]] of these 64&nbsp;frequency squares.
 
=== MD-DCT-IV ===
The M-D DCT-IV is just an extension of 1-D DCT-IV on to {{mvar|M}}&nbsp;dimensional ___domain. The 2-D DCT-IV of a matrix or an image is given by
 
:<math> X_{k,\ell} =
\sum_{n=0}^{N-1} \; \sum_{m=0}^{M-1} \ x_{n,m} \cos\left(\ \frac{\,( 2 m + 1 )( 2 k + 1 )\ \pi \,}{4N} \ \right) \cos\left(\ \frac{\, ( 2n + 1 )( 2 \ell + 1 )\ \pi \,}{4M} \ \right) ~,</math>
 
: for <math>~~ k = 0,\ 1,\ 2\ \ldots\ N-1 ~~</math> and <math>~~ \ell= 0,\ 1,\ 2,\ \ldots\ M-1 ~.</math>
 
We can compute the MD DCT-IV using the regular row-column method or we can use the polynomial transform method<ref>{{cite book |last=Nussbaumer |first=H.J. |title=Fast Fourier transform and convolution algorithms |publisher=Springer-Verlag |___location=New York |date=1981 |edition=1st }}</ref> for the fast and efficient computation. The main idea of this algorithm is to use the Polynomial Transform to convert the multidimensional DCT into a series of 1-D DCTs directly. MD DCT-IV also has several applications in various fields.
 
== Computation ==