DCT变换原理
M*N矩阵A的二维离散余弦变换为:
其中Bpq是A的DCT系数。
DCT的逆变换可以写为:
在计算时通常采用DCT变换矩阵,M×M变换矩阵T为:
对于M×M的矩阵A,T*A的列包含由A的列组成的一维DCT,A的二维DCT可以计算为B=T*A*T’。而基于T是实正交矩阵,则B的逆二维DCT变换为T’*B*T。
DCT变换的代码实现
在实践DCT变换时,对图像进行分块DCT变换处理。
具体步骤如下:
(1)选择分块大小为8*8,将输入图像延拓为长宽均为8的倍数的图像,作为延拓输入图像。
(2)生成8*8大小的DCT变换矩阵T。
(3)分块计算每一块的离散余弦变换。
其中(1)—(3)步骤的代码如下:
图 1 DCT变换中(1)—(3)的代码截图
在DCT的逆变换中,我们选择保留了50%的系数,进行压缩处理,逆变换的步骤如下:
(1) 选择需要保留的系数。
(2) 分块计算每一块的DCT逆变换。
具体代码如下:
图 2 DCT逆变换的代码截图
参考文献
[1] https://en.wikipedia.org/wiki/Discrete_cosine_transform