DCT变换与KLT变换在图像压缩中的应用_第1页
DCT变换与KLT变换在图像压缩中的应用_第2页
DCT变换与KLT变换在图像压缩中的应用_第3页
DCT变换与KLT变换在图像压缩中的应用_第4页
DCT变换与KLT变换在图像压缩中的应用_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DCT变换与KLT变换在图像压缩中的应用 专业:电子与通信工程 学号:16213026 16213024 姓名: 目录1 报告简介12 算法原理12.1 DCT算法原理12.2 KLT算法原理33 仿真分析53.1 DCT仿真分析53.2 KLT仿真分析75 总结8参考文献9附录:MATLAB代码101DCT变换与KLT变换在图像压缩中的应用1 报告简介随着数据化时代的开启,图像压缩技术越来越成熟并且应用越来越广泛,本文在研究近年来图像压缩一般方法的基础上,介绍了基于DCT变换的图像压缩的基本原理及其实现步骤,以及扩展研究了KL变换的图像压缩方法,并使用MATLAB,针对同一幅原始图像进行不同

2、方法的压缩比较,给出了实验仿真结果。本论文首先提出了用MATLAB来实现DCT变换的数字图像压缩技术, 方法简单,快速,且误差小。然后介绍了KLT图像压缩编码的具体过程和方法。最后分析了图像经过2种压缩方法时,图像质量的变化情况。2 算法原理2.1 DCT算法原理DCT变换利用傅立叶变换的性质。采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定

3、的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经DCT变换以后,DCT系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为或块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换。最后将操作完成

4、后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用DCT进行图像压缩确实可以节约大量的存储空间。基于DCT的JPEG图像压缩编码算法原理可用图1表示:构造N*N块量化器正向DCT熵编码压缩图像原图像熵解码逆向DTC量化器构造N*N块压缩图像重构图像(a)编码器(b)解码器图1 DCT算法原理框图在编码过程中,首先将输入图像颜色空间转换后分解为8×8大小的数据块,然后用正向二维DCT把每个块转变成64个DCT系数值,其中1个数值是直流(DC)系数,即8×8空域图像子块的平均值,其

5、余的63个是交流(AC)系数,接下来对DCT系数进行量化,量化过程实际上就是对 DCT 系数的一个优化过程,它是利用了人眼对高频部分不敏感的特性来实现数据的大幅简化。量化过程实际上是简单地把频率领域上每个成份,除以一个对于该成份的常数,且接着四舍五入取最接近的整数。这是整个过程中的主要有损运算。量化是图像质量下降的最主要原因。量化后的数据,有一个很大的特点,就是直流分量相对于交流分量来说要大,而且交流分量中含有大量的0。这样,对这个量化后的数据如何来进行简化,从而再更大程度地进行压缩呢。将量化后的系数进行“Z”字形编排,这样做的特点就是会连续出现多个0,即充分利用相邻两图像块的特性,来再次简化

6、数据,从而再更大程度地进行压缩。最后将变换得到的量化的DCT系数进行编码和传送,这样就完成了图像的压缩过程。在解码过程中,形成压缩后的图像格式,先对已编码的量子化的DCT系数进行解码,然后求逆量化并把DCT系数转化为8×8样本像块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像。这样就完成了图像的解压过程。一个块的二维DCT的定义如下: (1)对应的块的二维IDCT则为: (2)式中,空域的、,频域的、取值集合均为,其中: (3)将离散余弦变换变换写为矩阵形式为: (4) (5)其中,为正交变换矩阵,为原图像块,为变换域图像块。2.2 KLT算法原理KLT变换又称H

7、otelling变换,特征向量变换或主分量方法。KL变换是遥感图像增强和信息提取中用得最多的线性变换,是对原波段图像进行波谱信息的线性投影变换,在尽可能不减少信息量的前提下,将原图像的高维多光谱空间的像元亮度值投影到新的低维空间,减少特征空间维数,达到数据压缩、提高信噪比、提取相关信息、降维处理和提取原图像特征信息的目的,并能有效地提取影像信息。它可使原来多波段图像经变换后提供出一组不相关的图像变量,最前面的主分量具有较大的方差,包含了原始影像的主要信息,所以要集中表达信息,突出图像的某些细部特征,可采用主分量变换来完成。KL变换是图像压缩中的一种最优正交变换。KLT的突出优点是去相关性好,它

8、根据具体的图像统计特性来决定它的变换矩阵,对图像有最好的匹配效果,能将信号在变换域的相关性全部解除,是最小均方误差下的最佳变换。恢复图像KLT变换量化区域抽样哈弗曼编码KLT逆变换量化恢复抽样恢复哈弗曼译码原图像KLT原理框图可表示为:图2 KLT算法原理框图KLT变换就是对8x8的图像矩阵求自协方差矩阵,对自协方差矩阵做特征值分解,得到由特征值从小到大排列的对角矩阵,和由特征向量组成的矩阵,特征矩阵与图像矩阵做乘法,称为正交变换,即KL变换,的到的新的矩阵每一行称为一个新的变量,其中第一行几乎包含了总方差以上的信息,其余行包含的信息依次减少,新矩阵的个元素之间是不相关的,因而KL变换去掉了变

9、量之间的相关性。KLT是对向量做的一个正交变换,目的是变换到后去除数据相关性。其中,是特征向量组成的矩阵,满足,当都是实数时,是正交矩阵。用表示向量的平均值,的协方差矩阵记为,通过变换,得到: (6)写成矩阵形式: (6)由此可见,做了KLT变换之后呢,成为了对角阵,也就是对于任意,有,当有,因此利用KLT去除了数据相关性。而且,的方差与协方差矩阵的第个特征值相等即。3 仿真分析利用MATLAB对算法进行仿真分析,测试环境为:操作系统为Win7,CPU为i5-3210M,内存为4GB,使用的MATLAB版本为R2012b。利用MATLAB产生仿真图形界面如图3所示。图3 DCT和KLT仿真图形

10、界面设计3.1 DCT仿真分析输入一幅图像,通过改变DCT量化值进行图像压缩,同时,利用相关参数对图像质量进行对比分析,图4为经过DCT压缩的效果对比图。 (a)原始图像 (b)量化程度为16 (c)量化程度为32 (b)量化程度为64图3 运用 DCT变化进行图像压缩效果对比图通过肉眼观察,可以发现量化程度越大图像越清晰,反之,越模糊,细节信息越差。采用不同的量化程度可以改变图像的清晰度及文件的大小,本文将利用图像的相关性能参数对压缩图像进行比较。图像的方差、平均梯度、信息熵及对比度与图像质量正相关。图像方差越大,表明图像灰度层次越丰富;平均梯度越大,图像层次越多;信息熵越大,表明图像的信息

11、量越大。通过表1,可以清晰地看出量化程度越大,得到的压缩图像性能越好,相对的图像大小也增大,但原图相比,图像性能变化不明显,但压缩效果明显。表1 DCT变换得到压缩图像性能参数比较方差平均梯度信息熵(bit)文件大小(KB)图3(a)1.9545e+035.43047.177126.4图3(b)1.8785e+033.44707.14129.82图3(c)1.9011e+034.10217.153812图3(d)1.9167e+034.38527.155812.73.2 KLT仿真分析利用KLT算法对图4(a)图进行图像压缩得到图5。 (a)量化程度为16 (b)量化程度为32 (c)量化程度

12、为32 (b)量化程度为64图4运用 KLT变化进行图像压缩效果对比图从图像的方差、信息熵及平均梯度对图像性能进行分析,得到表2。表2 KLT变换得到压缩图像性能参数比较方差平均梯度信息熵(bit)文件大小(KB)图3(a)1.9545e+035.43047.177126.4图4(a)1.8484e+032.88657.12269.21图4(b)1.8759e+033.68477.140411.4图4(c)1.9031e+034.32257.156112.8图4(d)1.9212e+034.45887.156312.8由表2可以得到KLT变换可以对图像进行压缩,并且采用相同的量化程度,DCT比

13、KLT变化效果较好。5 总结本文叙述的图像压缩编码算法,DCT是正交变换,它可以将8*8图像的空间表达式转换为频率域,只需要用少量的数据点表示图像;DCT产生的系数很容易被量化,因此能获得好的块压缩;DCT算法的性能很好,它有快速算法,因此它在软件中容易实现;而且DCT算法是对称的,所以利用逆DCT算法可以用来解压缩图像。由实验仿真结果可知,当图像压缩比增大时,也即压缩效率减小时,图像的质量也将降低,人们可以根据需要的图像的质量来规定压缩比的大小。图像经过不同的压缩比后,图像的质量变化的同时,图像的信噪比也跟着变化。压缩比增大时,则在信道传输的时候丢失的信息就越多,这样使得信号与噪声的比值变小

14、。利用DCT变换进行图像压缩可以节约大量的存储空间。压缩应该在最合理地近似原图像的情况下使用最少的系数。由于之前存在对KLT变换的误解,在进理论补充后,发现该方法并不能全部消除变换后系数间的相关性,各数据块之间相关性没有消除,数据块也可能存在极弱的相关性。由于水平有限,并不能解决,即使如此,该方法应用于图像的压缩编码中效果也极其明显。KLT没有快速算法,因此对信息量大的图像编码速度比较慢,但在此次试验中用的是较小的图像,所以处理速度效果不明显。参考文献1N Ahmed,T Natarajan,K.T.Rao Discrete cosine transformJIEEE TranOn Compu

15、ters, 1974, C-23: 90-93 2 全子一 图像信源压缩编码及信道传输理论与新技术M 北京:北京工业大学出版社, 20063 何小海,主编数字图像通信及其应用M成都:四川大学出版社,2006 4 罗开仲,黄士坦,杨华民DCT算法及其与小波编码在图像处理中的比较J 计算机技术 与发展,2006,16(9) 5 Xiong Z,Orchard M,Guleryuz OA DCT-based embedded image coder JIEEE Signal Processing Letters,1996,11(3):289-290 6Shaorong Chang,Lawrence

16、Carin,A modified SPIHT algorithm for image coding with a joint MSE and classification distortion measure J. IEEE Transactions on Image Processing, 2006, 15(3): 713-725 附录:MATLAB代码%主程序clc;clearI=imread('football.jpg');clf reset set(gcf,'unit','normalized','position',0.

17、1,0.2,0.45,0.45);%设置图形窗大小set(gcf,'defaultuicontrolunits','normalized');set(gcf,'defaultuicontrolfontsize',11);set(gcf,'defaultuicontrolfontname','楷书');set(gcf,'defaultuicontrolhorizontal','left');% set(gcf,'menubar','none'); %删除

18、图形窗工具条str='KLT DCT性能比较'set(gcf,'name',str ,'numbertitle','off'); %书写图形窗名z=32;str1='量化程度'htext=uicontrol(gcf,'style','text',. %制作静态说明文本框 'position',0.1,0.8,0.33,0.1,. 'string',str1,sprintf('%1.4g',z);hslider=uicontrol(gcf

19、,'style','slider',. %创建滑动键 'position',0.1,0.6,0.8,0.1,. 'max',64,'min',0,. %设最大阻尼比为2,最小阻尼比为0.02 'sliderstep',1/64,1/64,.%箭头操纵滑动步长1%,游标滑动步长5% 'Value',32); %缺省取阻尼比等于0.5 set(hslider,'callback',. %操作滑动键,引起回调 'z=get(gcbo,''value&

20、#39;');',. %获得滑动键状态值 'callcheck(htext,str1,z)'); %被回调的函数文件 hpush=uicontrol(gcf,'Style','push',. %制作与列表框配用的按键 'position',0.1,0.05,0.18,0.15,'string','原始图像');set(hpush,'callback','jpeg_show(I)') hpush=uicontrol(gcf,'Style'

21、,'push',. %制作与列表框配用的按键 'position',0.4,0.05,0.18,0.15,'string','KLT');set(hpush,'callback','jpeg_klt(I,z)') hpush=uicontrol(gcf,'Style','push',. %制作与列表框配用的按键 'position',0.7,0.05,0.18,0.15,'string','DCT');set(hpush

22、,'callback','jpeg_dct(I,z)') %灰度图像的klt正反变换 function y=klt(x,mask) IM=x;%读取图像 IM=im2uint8(IM); %若图像尺寸不是8的整数倍,补0,补成8的整数倍 cc1,cc2=size(IM);%cc1为IM的行数,cc2为IM的列数 a=8-mod(cc1,8); b=8-mod(cc2,8); cc3=cc1+a; cc4=cc2+b; IM(cc3,cc4)=IM(cc1,cc2); IM(1:cc1,cc2+1:cc4)=IM(1:cc1,cc2-b+1:cc2); IM(cc

23、1+1:cc3,1:cc2)=IM(cc1-a+1:cc1,1:cc2); IM(cc1+1:cc3,cc2+1:cc4)=IM(cc1,cc2); %若图像尺寸不是8的整数倍,补成8的整数倍 k=1; for l1=1:8:(cc3-7) %将图像矩阵-8X8的矩阵存起来 for l2=1:8:(cc4-7) F(:,:,k)=IM(l1:l1+7,l2:l2+7); k=k+1; end %将图像矩阵-8X8的矩阵存起来 end F=uint8(F); k=k-1; qq=k; d=0; d=uint32(d); IM=uint32(IM); for n1=1:cc3 %求均值 for n

24、2=1:cc4 d=IM(n1,n2)+d; end end d=d/(cc1*cc2); d=uint8(d); %求均值 IM=uint8(IM); B2=zeros(64); jz=d;%jz为灰度均值 for ee=1:qq A=F(:,:,ee); TZZ;%调用函数求一个8X8的矩阵的特征矩阵 B2=B2+B; end B=B2/ee;%B为均方差矩阵 V,D=eig(B);%求特征向量与特征值 Q=V' for k=1:qq A=F(:,:,k); ee=1; for n1=1:8 %将元素变换成一维 for n2=1:8 %将元素变换成一维 X(ee,1)=A(n1,n

25、2); YSZ(ee,1)=mask(n1,n2);%YSZ为mask变换成的一维数组 ee=ee+1; end %将元素变换成一维 end %将元素变换成一维 X=double(X); Y=Q*X;%变换后的矩阵放在Y中 Y=flipud(Y); Y=Y.*YSZ; Y=flipud(Y); X1(:,:,k)=Q'*Y;%求还原后的矩阵 end k=1; for l1=1:8:(cc3-7) %将矩阵8X8矩阵放入IM2中 for l2=1:8:(cc4-7)%将矩阵8X8矩阵放入IM2中 H2=X1(:,:,k); ee=1; for n1=1:8 for n2=1:8 C2(n

26、1,n2)=H2(ee,1); ee=ee+1; end end IM2(l1:l1+7,l2:l2+7)=C2; k=k+1; end %将矩阵8X8矩阵放入IM2中 end %将矩阵8X8矩阵放入IM2中 IM=IM(1:cc1,1:cc2); IM2=IM2(1:cc1,1:cc2); y=uint8(IM2);function jpeg_dct(I,z)tic% I=imread('football.jpg');%读入原始图像,该图片在安装matlab的目录中找,原图为jpeg图象Y=im2double(I);%图像存储类型转换,matlab读入图像的数据是uint8,

27、而matlab中数值一般采用double型(64位)存储和运算。所以要先将图像转为double格式的才能运算T=dctmtx(8);%离散余弦变换矩阵,使用由dctmtx函数返回的DCT变换矩阵,这种方法较适合于较小的输入方阵(例如8×8或16×16),计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数%B = blkproc(A,m n,fun, parameter1, parameter2, .)%x就是每一个分成的8*8大小的块,P1*x*P2相当于像素块的处理函数,p1=T p2=T,也就是fun=p1*x*p2'=T*x*T'的功能是进

28、行离散余弦变换%x代表A,对一副原始图像,选取它的最左上角8x8的矩阵,并将每一个像素值转换到-128到127的范围内,得到矩阵x.%RGB图像分三个通道,分别处理B(:,:,1)=blkproc(Y(:,:,1),8 8,'P1*x*P2',T,T');%将原始图像8x8的像素块转换成代表不同频率分量的系数集,DCT后的64个DCT系数与DCT前的64个像素块相对应B(:,:,2)=blkproc(Y(:,:,2),8 8,'P1*x*P2',T,T');B(:,:,3)=blkproc(Y(:,:,3),8 8,'P1*x*P2

29、9;,T,T');%对原图像进行DCT变换z=fix(z);%量化,向0靠拢取整t(1:z)=1;t(z+1:64)=0;mask=jpeg_Dzz8(t);%Z字形扫描B2(:,:,1)=blkproc(B(:,:,1),8 8,'P1.*x',mask);%只保留DCT变换的左上角10个系数,数据压缩,丢弃右下角高频数据,达到图像压缩的目的B2(:,:,2)=blkproc(B(:,:,2),8 8,'P1.*x',mask);%变换后的系数值较大的会集中在区域的左上部,即低频分量都集中在左上部。保留的也是这一部分。B2(:,:,3)=blkproc

30、(B(:,:,3),8 8,'P1.*x',mask);%其他部分的系数被舍去,在恢复信号时对它们补 0 。这样以来,由于保留了大部分图像信号能量,在恢复信号后,其质量不会产生显著变化。%数据压缩,丢弃右下角高频数据I2(:,:,1)=blkproc(B2(:,:,1),8 8,'P1*x*P2',T',T);%重构图像I2(:,:,2)=blkproc(B2(:,:,2),8 8,'P1*x*P2',T',T);I2(:,:,3)=blkproc(B2(:,:,3),8 8,'P1*x*P2',T',T)

31、;%进行DCT反变换,得到压缩后的图像figure;set(gcf,'unit','normalized','position',0.4,0.5,0.3,0.3);%设置图形窗大小set(gcf,'menubar','none'); %删除图形窗工具条str='量化程度'set(gcf,'name',str sprintf('%1.4g',z),'numbertitle','off'); %书写图形窗名imshow(I2)title(&

32、#39;DCT变换压缩后的图像')imwrite(I2,'dct.jpg');%输出压缩后的图像,文件名为football_dct.jpga=toc;uicontrol('style', 'text', 'unit', 'normalized', . 'position', 0 0 0.2 0.1, 'string', num2str(a), . 'FontSize', 18)%搜索方式:对角的Z字形扫描;二维的图像矩阵利用一维的搜索方式。function y

33、=jpeg_Dzz8(x)t=1;for k=2:9 for m=1:k-1 if rem(k,2)=0 y(k-m,m)=x(t); t=t+1; else y(m,k-m)=x(t); t=t+1; end endendfor k=10:16 for m=k-8:8 if rem(k,2)=0 y(k-m,m)=x(t); t=t+1; else y(m,k-m)=x(t); t=t+1; end endendfunction callcheck(htext,str1,z)set(htext,'string',str1,sprintf('%1.4g',z);

34、 %更新静态文本框内容 <2function jpeg_klt(I,z)tic% I=imread('football.jpg');%读入原始图像,该图片在安装matlab的目录中找,原图为jpeg图象z=fix(z);%量化,向0靠拢取整t(1:z)=1;t(z+1:64)=0;mask=jpeg_Dzz8(t);%Z字形扫描I2(:,:,1)=klt(I(:,:,1),mask);I2(:,:,2)=klt(I(:,:,2),mask);I2(:,:,3)=klt(I(:,:,3),mask);figure;set(gcf,'unit','no

35、rmalized','position',0.2,0.5,0.3,0.3);%设置图形窗大小set(gcf,'menubar','none'); %删除图形窗工具条str='量化程度'set(gcf,'name',str sprintf('%1.4g',z),'numbertitle','off'); %书写图形窗名imshow(I2);title('KLT变换压缩后的图像') imwrite(I2,'klt.jpg');%输出

36、压缩后的图像,文件名为klt.jpga=toc;uicontrol('style', 'text', 'unit', 'normalized', . 'position', 0 0 0.2 0.1, 'string', num2str(a), . 'FontSize', 18)function jpeg_show(I)% I=imread('football.jpg');figure;set(gcf,'unit','normalized','position',0,0.5,0.3,0.3);%设置图形窗大小set(gcf,'menubar','none'); %删除图形窗工具条str='KLT DCT性能比较'set(gcf,'name',str ,'numbertitle',&

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论