MATLAB图象压缩文档格式.docx
《MATLAB图象压缩文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB图象压缩文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
频率域方法:
正交变换编码(如DCT),子带编码;
空间域方法:
统计分块编码;
模型方法:
分形编码,模型基编码;
基于重要性:
滤波,子采样,比特分配,向量量化;
(3)混合编码。
有JBIG,H261,JPEG,MPEG等技术标准。
目前基于小波变换的压缩方法有很多,比较成功的有小波包最优基方法,小波域纹理模型方法,小波变换零树压缩,小波变换向量压缩等。
5、图像压缩的主要目标
就是在给定位速(bit-rate)或者压缩比下实现最好的图像质量。
但是,还有一些其它的图像压缩机制的重要特性:
可扩展编码(en:
Scalability)通常表示操作位流和文件产生的质量下降(没有解压缩和再压缩)。
可扩展编码的其它一些叫法有渐进编码(en:
progressivecoding)或者嵌入式位流(en:
embeddedbitstreams)。
尽管具有不同的特性,在无损编码中也有可扩展编码,它通常是使用粗糙到精细像素扫描的格式。
尤其是在下载时预览图像(如浏览器中)或者提供不同的图像质量访问时(如在数据库中)可扩展编码非常有用有几种不同类型的可扩展性:
质量渐进(en:
Qualityprogressive)或者层渐进(en:
layerprogressive):
位流渐进更新重建的图像。
分辨率渐进(en:
Resolutionprogressive):
首先在低分辨率编码图像,然后编码与高分辨率之间的差别。
成分渐进(en:
Componentprogressive):
首先编码灰度数据,然后编码彩色数据。
感兴趣区域编码,图像某些部分的编码质量要高于其它部分,这种方法可以与可扩展编码组合在一起(首先编码这些部分,然后编码其它部分)。
元数据信息,压缩数据可以包含关于图像的信息用来分类、查询或者浏览图像。
这些信息可以包括颜色、纹理统计信息、小预览图像以及作者和版权信息。
6、图像压缩目前的标准
经典的视频压缩算法已渐形成一系列的国际标准体系,如H.26x系列建议,H.320系列建议以及MPEG系列建议等。
7、图像压缩效果的评估
压缩方法的质量经常使用峰值信噪比来衡量,峰值信噪比用来表示图象有损压缩带来的噪声。
但是,观察者的主观判断也认为是一个重要的、或许是最重要的衡量标准。
二、具体实验方法及算法
1、使用图像比例变换缩放图像
实验原理:
数字图像的比例缩放是指给定的图像在X方向和Y方向按相同的比例缩放a倍,从而获得一副新的图像。
并且如果x方向和y方向的缩放比例不同,会使得比例缩放后改变原始图像像数间的相对位置,产生几何畸变。
设原始图像中的点A0(X0,Y0)比例缩放后,在信徒中的对应点是A1(X1,Y1),则两点之间的关系可表示为
若比例缩放所产生的图像中的像素在原始图像中没有相对应的像素点时,就需要进行灰度值的插值运算,一般有以下两种差值处理方法。
1)直接赋值为和它最相近的像素灰度值,这种方法成为最邻近差值法,该方法的主要优点是简单,计算量小,但是可能会产生马赛克现象。
2)通过其他的数学插值算法来计算相应的像素点的灰度值,这类方法处理效果好,但运算量会有所增加。
该函数在图像压缩的时候,主要是根据周围相近像素的颜色值进行删除计算,最终达到压缩图片的目的。
---------------源代码----------------
I=imread('
D:
\cameraman.tif'
);
imshow(I);
X1=imresize(I,1)
X2=imresize(I,0.8)
X3=imresize(I,0.6)
X4=imresize(I,0.4)
X5=imresize(I,0.2)
X6=imresize(I,0.09)
X7=imresize(I,0.04)
X8=imresize(I,0.03)
X9=imresize(I,0.02)
X10=imresize(I,0.01)
subplot(3,3,1),imshow(X1),title('
原始图像'
)
subplot(3,3,2),imshow(X2),title('
缩小0.8倍'
subplot(3,3,3),imshow(X3),title('
缩小0.6倍'
subplot(3,3,4),imshow(X4),title('
缩小0.4倍'
subplot(3,3,5),imshow(X5),title('
缩小0.2倍'
subplot(3,3,6),imshow(X6),title('
缩小0.09倍'
subplot(3,3,7),imshow(X7),title('
缩小0.04倍'
subplot(3,3,8),imshow(X8),title('
缩小0.02倍'
subplot(3,3,9),imshow(X9),title('
缩小0.01倍'
实验截图:
2、小波变换实现图像压缩(分2种函数)
小波变化通过多分辨分析过程将一幅图像分成近似和细节两部分,细节对应的是小尺度的顺变,它在本尺度内很稳定,因此将细节存储起来,近似部分在下一个尺度进行分解,重复该过程即可,近似与细节在正交镜像滤波器算法中分别对应于高通滤波和低通滤波,这种变换通过尺度去掉相关性。
2
(1)利用wavedec2()函数对图像进行小波分解后,再用appcoef2()函数对分解的图像进行重构,最后用wcodemat()函数进行量化编码
------源代码-------
clear;
loadwbarb;
subplot(3,3,1);
image(X);
colormap(map);
title('
disp('
原始图像X的大小:
'
whos('
X'
[c,s]=wavedec2(X,2,'
bior3.7'
cal=appcoef2(c,s,'
1);
ch1=detcoef2('
h'
c,s,1);
cv1=detcoef2('
v'
cd1=detcoef2('
d'
a1=wrcoef2('
a'
c,s,'
h1=wrcoef2('
v1=wrcoef2('
d1=wrcoef2('
c1=[a1,h1;
v1,d1];
ca1=appcoef2(c,s,'
ca1=wcodemat(cal,440,'
mat'
0);
ca1=0.8*cal;
subplot(3,3,2);
image(ca1);
axissquare;
第一次压缩图像0.8倍'
第一次压缩图像的大小'
ca1'
ca2=appcoef2(c,s,'
2);
ca2=wcodemat(ca2,440,'
ca2=0.6*ca2;
subplot(3,3,3);
image(ca2);
第二次压缩图像0.6倍'
第二次压缩图像的大小'
ca2'
ca3=appcoef2(c,s,'
ca3=wcodemat(ca3,440,'
ca3=0.4*ca3;
subplot(3,3,4);
image(ca3);
第三次压缩图像0.4倍'
第三次压缩图像的大小'
ca3'
ca4=appcoef2(c,s,'
ca4=wcodemat(ca4,440,'
ca4=0.2*ca4;
subplot(3,3,5);
image(ca4);
第四次压缩图像0.2倍'
第四次压缩图像的大小'
ca4'
ca5=appcoef2(c,s,'
ca5=wcodemat(ca5,440,'
ca5=0.09*ca5;
subplot(3,3,6);
image(ca5);
第五次压缩图像0.09倍'
第五次压缩图像的大小'
ca5'
ca6=appcoef2(c,s,'
ca6=wcodemat(ca6,440,'
ca6=0.04*ca6;
subplot(3,3,7);
image(ca6);
第六次压缩图像0.04倍'
第六次压缩图像的大小'
ca6'
ca7=appcoef2(c,s,'
ca7=wcodemat(ca7,440,'
ca7=0.02*ca7;
subplot(3,3,8);
image(ca7);
第七次压缩图像0.02倍'
第七次压缩图像的大小'
ca7'
ca7=wcodemat(ca2,440,'
ca8=appcoef2(c,s,'
ca8=wcodemat(ca8,440,'
ca8=0.01*ca8;
subplot(3,3,9);
image(ca8);
第八次压缩图像0.01倍'
第八次压缩图像的大小'
ca8'
实验结果:
NameSizeBytesClassAttributes
X256x256524288double
第一次压缩图像的大小
ca1135x135145800double
第二次压缩图像的大小
ca275x7545000double
第三次压缩图像的大小
ca375x7545000double
第四次压缩图像的大小
ca475x7545000double
第五次压缩图像的大小
ca575x7545000double
第六次压缩图像的大小
ca675x7545000double
第七次压缩图像的大小
ca775x7545000double
第八次压缩图像的大小
ca875x7545000double
2
(2)、wdencmp()函数对给定的图像进行压缩处理
-------源代码---------
subplot(2,2,1);
[c,l]=wavedec2(X,2,'
db3'
[thr,sorh,keepapp]=ddencmp('
cmp'
'
wv'
X);
[Xcmp,cxc,lxc,perf0,perf12]=wdencmp('
gbl'
c,l,'
2,thr,sorh,keepapp);
subplot(2,2,2);
image(Xcmp);
小波分解系数中为0的系数个数百分比:
perf0
压缩后保留能量百分比:
perf12
perf0=
49.3839
perf12=
99.9774
3、JPEG图像压缩------基于DCT的图像压缩
在JPEG图像压缩法里,要将一幅彩色图像进行压缩编码,首先将图像RGB分量转化为亮度分量和色差分量,然后将图像分成8×
8的象素块,用正向二维DCT把每个块转变成64个DCT系数值,其中1个数值是直流(DC)系数,即8×
8空域图像子块的平均值,其余的63个是交流(AC)系数,接下来对DCT系数进行Zig-Zag扫描和Huffman编码,实现了图像压缩。
在此,我采用JEPG里压缩算法里的“基于DCT的图像压缩”法对图片进行图片压缩
(1)--------源代码--------
);
I=im2double(I);
%图像存储类型转换
T=dctmtx(8);
%离散余弦变换矩
B=blkproc(I,[88],’P1*x*P2,T,T’);
mask=[11110000
11100000
11000000
10000000
00000000
00000000
00000000];
B2=blkproc(B,[88],P1.*x,mask);
%数据压缩,丢弃右下角高频数据
I2=blkproc(B2,[88],P1*x*P2,T’T);
%进行DCT反变换,得到压缩后的图像
subplot(1,2,1);
title('
原图'
subplot(1,2,2);
imshow(I2);
压缩后的图像'