matlab大作业.docx
- 文档编号:3434434
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:12
- 大小:543.20KB
matlab大作业.docx
《matlab大作业.docx》由会员分享,可在线阅读,更多相关《matlab大作业.docx(12页珍藏版)》请在冰豆网上搜索。
matlab大作业
图像压缩技术研究
一、离散余弦变换编码压缩图像
1.
实验源程序:
I=imread('E:
\MATLAB大作业\图片\cameraman.tif')
I=im2double(I);%转换图像矩阵为双精度型。
T=dctmtx(8);%产生二维DCT变换矩阵
%计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数
a1=[1611101624405161;
1212141926586055;
1413162440576956;
1417222951878062;
182237566810910377;
243555648110411392;
49647887103121120101;
7292959811210010399];
fori=1:
8:
200
forj=1:
8:
200
P=I(i:
i+7,j:
j+7);
K=T*P*T';
I2(i:
i+7,j:
j+7)=K;
K=K./a1;%量化
K(abs(K)<0.03)=0;
I3(i:
i+7,j:
j+7)=K;
end
end
figure;
imshow(I2);
title('DCT变换后的频域图像');%显示DCT变换后的频域图像
fori=1:
8:
200
forj=1:
8:
200
P=I3(i:
i+7,j:
j+7).*a1;%反量化
K=T'*P*T;
I4(i:
i+7,j:
j+7)=K;
end
end
figure;
imshow(I4);
title('复原图像');
imwrite(I4,'复原图像6.jpg');
B=blkproc(I,[8,8],'P1*x*P2',T,T');%二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个
mask=[11110000
11100000
11000000
10000000
00000000
00000000
00000000
00000000]
B2=blkproc(B,[88],'P1.*x',mask);%只保留DCT变换的10个系数
I2=blkproc(B2,[88],'P1*x*P2',T',T);%重构图像
figure
imshow(I);
title('原始图像');
figure
imshow(I2);
title('压缩图像');
figure
imshow(dct2(I));
figure
mesh(dct2(I));
colorbar('horiz')
实验结果截图:
通过矩阵a1只对图像左上角的一部分进行了DCT变换后的频域处理
对上图量化得到的复原图像,因此复原图像只有一部分
只保留DCT变换的10个系数,运用逆DCT变换,对图像进行重构,从而得到源图像的压缩图像
直接运用函数DCT2对原图像进行二维离散余弦图像变换
途中最下面一行表示子啊水平方向用不同的颜色表示曲面高度,很据上图显示的二维离散余弦变换图像的左上角曲面高度有所不同,因此在图像左上角部分的立体网状图
在JPEG图像压缩算法中,一种是以离散余弦变换DCT,DiscreteCosineTransform为基础的有损压缩算法,另一种是以预测技术为基础的无损压缩算法。
1.1.1离散余弦变换DCT变换利用傅立叶变换的性质。
采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。
DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。
变换编码就是将图像光强矩阵时域信号变换到系数空间频域信号上进行处理的方法。
在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。
我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。
图像经DCT变换以后,DCT系数之间的相关性就会变小。
而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。
从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。
为此,发送者首先将输入图像分解为88或1616块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换。
最后将操作完成后所有的块拼接起来构成一幅单一的图像。
2、离散余弦变换(DCT)
DCT编码属于正交变换编码方式.用于去除图像数据的空间冗余。
变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。
在空问上具有强相
关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。
我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。
图像经DCT变换以后,DCT系数之间的相关性已经很小。
而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。
从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。
为此,发送者首先将输入图像分解为8x8或16x16的块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换.最后将操作完成后所有的块拼接起来构成一幅单一的图像。
对于一般的图像而言,大多数DCT系数值都接近于0,町以去掉这些系数而不会对重建图像的质量产生霞大影响。
此,利用DCT进行圈像压缩确实可以节约大量的存储空间在宴验中,先将输入的原始lena图像分为8x8的块,然
后再对每个块进行二维DCT变换。
MATLAB图像处理上具箱中提供的二维DCT变换及DCT反变换函数如下。
dcL2
dct2实现罔像的二维离散余弦变换.其语法格式为:
(1)B=dct2(A)
返回图像A的二维离散余弦变换值,其大小与A相同且各元素为离散余弦变换的系数B(K1,k2)。
(2)B=dct2(A,in,n)或B=dct2(A,[m,n])
如果m和n比图像A大,在对图像进行二维离散余弦变换之前,先将图像A补零至mxn如果m和n比图像A小。
则进行变换之前,将图像A剪切。
2.2.2idct2
idct2可以实现图像的二维离散余弦反变换,其语法格式为:
B=idct2(A);B=idct2(A,m,n)或B=idct2(A,[m,n])。
2dct变换举例
源程序:
I=imread('cameraman.tif');
J=dct2(I);
imshow(log(abs(J)),[]);
title('经DCT变换的图像');
colormap(jet(256));
M=J;
J(abs(J)<50)=0;
K=idct2(J);
figure;
subplot(1,2,1);imshow(I,[0,255]);title('原图像');
subplot(1,2,2);imshow(K,[0,255]);title('压缩图像');
实验结果截图:
二、小波变换编码压缩图像
实验源程序:
A0=imread('E:
\200908205126杨亮MATLAB大作业\图片\lena.bmp');
A1=rgb2gray(A0);
A=double(A1);
subplot(2,2,1);imshow(A1);
axissquare;
title('原图像');
disp('1');whos('A')
[C,S]=wavedec2(A,2,'bior3.7');
CA1=appcoef2(C,S,'bior3.7',1);
CH1=detcoef2('h',C,S,1);
CV1=detcoef2('v',C,S,1);
CD1=detcoef2('d',C,S,1);
A1=wrcoef2('a',C,S,'bior3.7',1);
H1=wrcoef2('h',C,S,'bior3.7',1);
V1=wrcoef2('v',C,S,'bior3.7',1);
D1=wrcoef2('d',C,S,'bior3.7',1);
C1=[A1,H1;V1,D1];
subplot(2,2,2);imshow(C1);
axissquare;
title('分解后低频和高频信息');
%CA1=0.5*CA1
subplot(2,2,3);imshow(CA1);
axissquare;
title('第一次压缩图像');
disp('2');whos('CA1');
CA2=appcoef2(C,S,'bior3.7',2);
%CA2=0.25*CA2
subplot(2,2,4);imshow(CA2);
axissquare;
title('第二次压缩图像');
disp('3');whos('CA2');
程序中,函数wavedc2();实现了Ade二次分解。
实验结果截图:
小波变换是空间(时间)和频率的局部变换,因而能有效地从信号中提取信息。
通过伸缩和平移等运算功能可对函数或信号进行多尺度的细化分析,解决了Fourier变换不能解决的许多困难问题。
小波变换联系了应用数学、物理学、计算机科学、信号与信息处理、图像处理、地震勘探等多个学科。
数学家认为,小波分析是一个新的数学分支,它是泛函分析、Fourier分析、样调分析、数值分析的完美结晶;信号和信息处理专家认为,小波分析是时间—尺度分析和多分辨分析的一种新技术,它在信号分析、语音合成、图像识别、计算机视觉、数据压缩、地震勘探、大气与海洋波分析等方面的研究都取得了有科学意义和应用价值的成果。
信号分析的主要目的是寻找一种简单有效的信号变换方法,使信号所包含的重要信息能显现出来。
小波分析属于信号时频分析的一种,在小波分析出现之前,傅立叶变换是信号处理领域应用最广泛、效果最好的一种分析手段傅立叶变换是时域到频域互相转化的工具,从物理意义上讲,傅立叶变换的实质是把这个波形分解成不同频率的正弦波的叠加和。
正是傅立叶变换的这种重要的物理意义,决定了傅立叶变换在信号分析和信号处理中的独特地位。
傅立叶变换用在两个方向上都无限伸展的正弦曲线波作为正交基函数,把周期函数展成傅立叶级数,把非周期函数展成傅立叶积分,利用傅立叶变换对函数作频谱分析,反映了整个信号的时间频谱特性,较好地揭示了平稳信号的特征。
小波变换是一种新的变换分析方法,它继承和发展了短时傅立叶变换局部化的思想,同时又克服了窗口大小不随频率变化等缺点,能够提供一个随频率改变的时间一频率窗口,是进行信号时频分析和处理的理想工具。
它的主要特点是通过变换能够充分突出问题某些方面的特征,因此,小波变换在许多领域都得到了成功的应用,特别是小波变换的离散数字算法已被广泛用于许多问题的变换研究中。
从此,小波变换越来越引进人们的重视,其应用领域来越来越广泛。
总结比较:
小波变换:
(1)小波分解可以覆盖整个频域(提供了一个数学上完备的描述)
(2)小波变换通过选取合适的滤波器,可以极大的减小或去除所提取得不同特征之间的相关性
(3)小波变换具有“变焦”特性,在低频段可用高频率分辨率和低时间分辨率(宽分析窗口),在高频段,可用低频率分辨率和高时间分辨率(窄分析窗口)
(4)小波变换实现上有快速算法(Mallat小波分解算法)
DCT变换:
最主要的有点是操作简单。
二者压缩方法不同,主要体现在DCT在对信号分解后,对高频部分直接threshold,得到的信号用以重构。
小波变幻在对信号分解后,对高频部分进行滤波,得到的信号用以重构。
所以一个分辨率是固定的,另一个是可控的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 作业