DCT变换浅析-应用于图像压缩

来源:互联网 发布:点赞数据库 编辑:程序博客网 时间:2024/06/03 17:59

http://blog.csdn.net/timebomb/article/details/5996225

DCT实际就是把信号源的数据内容转换到另一种信号空间,在这种新的信号空间中更加容易理解、编码压缩。并且能够逆变换会原来的数据。

 

具体原理如图:

DCT函数

其中我们有时候是用0---(N-1)的,但是一般图像都是已8*8为块结构的,图像处理单元是块,所以这里就直接用的0---7.8*8产生64个信源数据,进行DCT变换后产生64个系数F(u,v)---一般资料介绍的64系数一直让我不明白终于知道怎么回事了,公式可以转化为矩阵形式,如上图中的矩阵形式公式所示,

 

所以一般就产生了变换矩阵T如下图:

DCT变换矩阵 

 

如果信源数据S为:

DCT信源

则将变换矩阵与信源数据相乘,得到64系数

 

结果:

  这里公式应该是Y = T*S*T'

DCT结果

 

很明显的可以发现问题,信号源的数据相差不大,可以参看第二个图,相差无几。但是在64系数中(第四个图)发现了较大的差距,(u,v)较小的时候相差很大当u,v逐渐变大的时候相差却变的越来越小。看DCT的原理图(第一个图),u,v都是在cos中的,所以他可以控制函数的周期的(系数的倒数是周期),周期的倒数就是频率。在第四个图中因为是矩阵,所以越靠近左上角的u,v越小,相应的周期越大,则频率越低。所以说左上角的代表的是低频部分,右下角代表的是高频部分。可以看出高频部分变化小,可以量化掉,进行失真量化,因为对图像的影响小嘛,进行量化。

 

量化后:

DCT量化后 

然后采用什么游程编码啊,“之”字形的具体使用的字节就少了。起到了压缩的作用,当解码后,虽然有一定的失真,但是大的方面变化不大。

 

具体的量化原理理解与解释可以参见下图:

量化的原理

a图是对残差图像进行的统计,横轴为残差值,纵轴为残差值为x的点数,可以看到,大部分的预测都是比较好的接近了原始数据(因为大部分擦差值集中在0的附近)。如果单纯的这样对残差图像进行编码需要2的9次方(因为有500多个差值么)个即需要9bit,但是统计发现集中在-10~5的差值占了总体的95%以上,所以可以进行合理的分解,-10~5分别分配一个数值,剩下的左边一个右边一个(说的是C图,b图示等分的),一共需要16个(我觉得是17个呢,但反正少了)也就是4个bit就可以解决问题了,充分证明了压缩的功效。

原创粉丝点击