二维离散余弦变换(DCT)与二维离散反余弦变换(IDCT)C语言实现
实验目标
对一个8x8的矩阵进行DCT和IDCT然后在观察前者和后者的变化
实验准备
理论基础
二维离散余弦变换
F(u,v)=c(u)c(v)∑i=0N−1∑i=0N−1f(i,j)cos[(i+0.5)πNu]cos[(i+0.5)πNv]F(u,v)=c(u)c(v)\sum_{i=0}^{N-1}\sum_{i=0}^{N-1}f(i,j)\cos{[\frac{(i+0.5)\pi}{N}u]}\cos{[\frac{(i+0.5)\pi}{N}v]}F(u,v)=c(u)c(v)i=0∑N−1i=0∑N−1f(i,j)cos[N(i+0.5)πu]cos[N(i+0.5)πv]
c(u)={
1N,u=02N,u≠0c(u)=\begin{cases}\sqrt{\frac{1}{N}}, & u=0 \\ \sqrt{\frac{2}{N}}, & u\neq0\end{cases}c(u)=⎩⎨⎧N1,N2,u=0u=0
二维离散反余弦变换
f(i,j)=∑u=0N−1∑v=0N−1c(u)c(v)F(u,v)cos[(i+0.5)πNu]cos[(j+0.5)πNv]f(i,j)=\sum_{u=0}^{N-1}\sum_{v=0}^{N-1}c(u)c(v)F(u,v)\cos[\frac{(i+0.5)\pi}{N}u]\cos[\frac{(j+0.5)\pi}{N}v]f(