DCT变化用于JPEG的压缩部分:
- 离散余弦变换DCT定义:
- 一维公式:
u = 0, 1, ……, N - 1是水平方向的频率。m=0, 1, ……, N-1是像素点的位置。
-
- 二维公式:
-
- JPEG中是对8*8的矩阵做DCT,因此公式中的M、N均为8;
- ANN快速离散余弦变换DCT的实现
- 将2D-DCT分解为1次行向量的1D-DCT和1次列向量的1D-DCT。
- 用矩阵乘法Y=CX的方式模拟一维矩阵的相乘累加的过程。矩阵乘法计算方式为(以下表中Y1行元素举例) Y1=C1*X0+C3*X1+C5*X2+…+(-C1)*X7;
- X0~X7为计算一次D1-DCT的像素值,对应公式3.1中的X(m)。
- C(n)为公式3.1中cos()函数部分: Cn=12cos(nπ16)
,n=(2*m+1)*u;
- 以Y1对应的一行为例:u=1, m=0~7; 计算出n=1、3、5、7、9、11、13、15。8个像素点求DCT,因此N=8;将N、n代入C(n)公式可以发现,C(9)~C(15)是C(1)~C(7)的负数,因此使用-C(7)表示C(9),使用-C(5)表示C(11),…
- 另外Y0行比较特殊,u=0,导致cos(0)=1;同时u=0时正交化因子为12
,由于cos4π16=cosπ4=12=0.707
,因此将Y1行的C(4)作为正交化因子使用。
-
- 根据矩阵对称性对矩阵进行简化(经过逆向计算是正确的,可以推导出原有的矩阵)