展会信息港展会大全

基于DCT图像压缩算法的研究(自己刚写好的,显示不了
来源:互联网   发布日期:2011-08-18 13:50:37   浏览:5343次  

导读:基于DCT图像压缩算法的研究(自己刚写好的,显示不了1,天涯博客_有见识的人都在此_天涯社区。...

??数字图像处理面临的主要问题是数据量巨大,尤其是视频图像和运动图像.例如彩色电视信号的1秒钟时间的数据量为99.2Mb,若是高清晰度电视(HDTV)则约为1.2Gbps.由此可见,必须进行压缩.
??图像数据的压缩就是要去掉信号的冗余性.有以下几种冗余:空间冗余,时间冗余,信息熵冗余,结构冗余,知识冗余视觉冗余以及其他冗余.
??图像编码压缩技术分类如下图所示:
??
??
??
??
??
??
??
??
??
??
??
??
??余弦变换可用于变换编码,是一种有损压缩.由于余弦变换的基本图像是中心对称的,并且在边界处是连续的,所以利用余弦变换的压缩编码可以大大提高数据压缩比.
??离散傅立叶变换是频域分析的有效工具,但它的变换核是复指数,运算量太大,难以实时处理.在寻求DFT快速算法的同时,人们构造除了一种实数域变换-----离散余弦变换,简称DCT.DCT变换核为实数的余弦变换,计算速度较快.
??
??离散余弦变换的定义
??
??一维离散余弦变换的正向核为:
??g(x,0)=
??g(x,u)= x,u=1,2,…N-1、
??将上述表达式代入通用表达式中,得到离散余弦变换c(u)为
??
?? u=1,2,…N-1
??逆向核和正向核有相同的形式.逆向DCT变换为:
?? ,x=1,2,…N-1
??二维离散余弦变换的正向核为:
??对于二维DCT,其变换核定义为:
??
??
??x,y=0,1,2,…,N-1;u,v=1,2,…,N-1
??反向核的定义也是一样的,于是得到二维离散余弦变换对为:
??
??
??u,v=1,2,…,N-1
??
??x,y=1,2,…,N-1
??
??离散余弦变换的性质
??
??1.因为DCT是傅立叶变换的特殊情况,所以DCT也提供了有关信号在频域的信息.不同的是一个实数信号的DCT是实数值.
??2.我们注意到DCT变换核是可分离的,所以二维正变换或逆变换能够逐次应用一维DCT算法加以计算.事实上,DCT的一个有趣的性质是它能够直接从FFT算法中求得.从一维DCT的形式可知:
??
??
??u=1,2,…,N-1.有FFT实现DCT.
??
??用离散余弦变换实现编解码
??
??DCT的编码过程如图一所示.输入的图像信号首先被分割成8*8或者16*16的样本子块,每个子块经过正向DCT变换(FDCT)转换为一组DCT系数.因为每个像素的系数由8位组成,所以共有64个系数.其中每个系数都是该子块DCT系数序列的导引系数(记为DC),其余63个DCT系数为跟随系数(记为AC).每个系数用量化表中对应的值进行量化,压缩编码,通常用无失真熵编码(哈夫曼或算术编码).
??
??
??
??
?? 图一 DCT编码系统简图
??
??DCT解码过程的每个步骤都是相应编码过程的逆过程,如图二所示.熵解码器先解码量化DCT系数的ZIG-ZAG序列,然后用离散余弦逆变换(IDCT)重构为8*8的图像子块,然后合成为全部图像.
??
??
??
?? 图二 DCT解码系统简图
??
??用MATLAB进行仿真
??DCT变换的实现方法有两种:一种基于FFT的快速算法,由dct2实现;另一种是DCT变换矩阵的方法,由函数dctmtr实现.以lena图像为例.
??源程序如下:
??R=imread('lena.tiff');
??I=rgb2gray(R);
??J=dct2(I);
??imshow(log(abs(J)),[]);
??title('经DCT变换的图像');
??colormap(jet(256));
??M=J;
??J(abs(J)

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港