二维离散余弦变换(python实战)
(注:文中所讨论的离散余弦变换都是DCT-II)
在上一篇文章中,我详细介绍了一维离散余弦变换的基本原理,并且以可视化的方式展示了一维DCT中用于分析输入信号的一系列基础余弦波。 在这篇文章中继续关于DCT的学习,并把DCT从一维推广到二维,最后以图像的离散余弦变换为结尾。
二维DCT正变换
二维DCT正变换公式如下:
或
其中,x[m,n]为输入图像的像素值,m,n=0,1,...,N-1。X[]为经过离散余弦变换后的结果,即离散余弦变换的系数,
,
=0,1,...,N-1。E(
),E(
)为归一化系数,当
=0时, E(
),E(
)=
。 当
,
=1,2,3,....,N-1时, E(
),E(
)=1。
单从公式来看,我们可以知道三点。第一,频域中的每一个点X[]都要遍历整幅图像计算。二,就某个固定的
,
而言,分析每行和每列数据用的是同一组cos函数。第三,越是往频域的右下角计算,分析图像所需的cos函数的频率就越高。
以4个点的X[0,0]的计算为例,N=4,=0: