多媒体实验二图片的压缩处理.docx
- 文档编号:1133986
- 上传时间:2022-10-17
- 格式:DOCX
- 页数:12
- 大小:662.42KB
多媒体实验二图片的压缩处理.docx
《多媒体实验二图片的压缩处理.docx》由会员分享,可在线阅读,更多相关《多媒体实验二图片的压缩处理.docx(12页珍藏版)》请在冰豆网上搜索。
多媒体实验二图片的压缩处理
计算机科学与技术学院
2015-2016学年第1学期
《多媒体技术》
实验二:
图像压缩算法实现
专业:
学号:
姓名:
教师:
完成日期:
15.10.17
多媒体技术实验二实验报告
(一)实验目的
1.理解有损压缩和无损压缩的概念;
2.理解图像压缩的主要原则和目的;
3.了解几种常用的图像压缩编码方式;
4.利用MATLAB程序进行图像压缩;
(二)实验环境
1.高档微机:
MPC
2.课前准备:
标准实验纸张若干张
3.操作系统:
Windows2000或WindowsXP中文版
4.编程工具:
Matlab7.0
(三)实验过程及结果
实验原理:
1.图像压缩原理
图像压缩主要目的是为了节省存储空间,增加传输速度。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
压缩的实现方法是对图像重新进行编码,希望用更少的数据表示图像。
信息的冗余量有许多种,如空间冗余,时间冗余,结构冗余,知识冗余,视觉冗余等,数据压缩实质上是减少这些冗余量。
高效编码的主要方法是尽可能去除图像中的冗余成分,从而以最小的码元包含最大的图像信息。
编码压缩方法有许多种,从不同的角度出发有不同的分类方法,从信息论角度出发可分为两大类。
(1).冗余度压缩方法,也称无损压缩、信息保持编码或嫡编码。
具体说就是解码图像和压缩编码前的图像严格相同,没有失真,从数学上讲是一种可逆运算。
(2)信息量压缩方法,也称有损压缩、失真度编码或烟压缩编码。
也就是说解码图像和原始图像是有差别的,允许有一定的失真。
应用在多媒体中的图像压缩编码方法,从压缩编码算法原理上可以分为以下3类:
(1)无损压缩编码种类
哈夫曼(Huffman)编码,算术编码,行程(RLE)编码,Lempelzev编码。
(2)有损压缩编码种类
预测编码,DPCM,运动补偿;
频率域方法:
正交变换编码(如DCT),子带编码;
空间域方法:
统计分块编码;
模型方法:
分形编码,模型基编码;
基于重要性:
滤波,子采样,比特分配,向量量化;
(3)混合编码。
有JBIG,H261,JPEG,MPEG等技术标准。
本实验主要利用MATLAB程序进行离散余弦变换(DCT)压缩和行程编码(RunLengthEncoding,RLE)。
2.图像压缩的方法:
1.有损压缩:
(离散余弦变换(DCT)图像压缩原理)
压缩原理介绍:
离散余弦变换DCT在图像压缩中具有广泛的应用。
和相同图像质量的其他常用文件格式(如GIF(可交换的图像文件格式),TIFF(标签图像文件格式),PCX(图形文件格式))相比,JPEG是目前静态图像中压缩比最高的。
JPEG比其他几种压缩比要高得多,而图像质量都差不多(JPEG处理的图像只有真彩图和灰度图)。
正是由于其高压缩比,使得JPEG被广泛地应用于多媒体和网络程序中。
JPEG有几种模式,其中最常用的是基于DCT变换的顺序型模式,又称为基本系统(Baseline)。
用DCT压缩图像的过程为:
(1)首先将输入图像分解为8×8或16×16的块,然后对每个子块进行二维DCT
变换。
(2)将变换后得到的量化的DCT系数进行编码和传送,形成压缩后的图像格
式。
用DCT解压的过程为:
(1)对每个8×8或16×16块进行二维DCT反变换。
(2)将反变换的矩阵的块合成一个单一的图像。
余弦变换具有把高度相关数据能量集中的趋势,DCT变换后矩阵的能量集中在矩阵的左上角,右下的大多数的DCT系数值非常接近于0。
对于通常的图像来说,舍弃这些接近于0的DCT的系数值,并不会对重构图像的画面质量带来显著的下降。
所以,利用DCT变换进行图像压缩可以节约大量的存储空间。
压缩应该在最合理地近似原图像的情况下使用最少的系数。
使用系数的多少也决定了压缩比的大小。
在压缩过程的第2步中,可以合理地舍弃一些系数,从而得到压缩的目的。
在压缩过程的第2步,还可以采用RLE和Huffman编码来进一步压缩。
离散余弦(DCT)压缩代码:
1)利用DCT变换进行图像压缩的MATLAB程序:
RGB=imread('1.JPG');
I=rgb2gray(RGB);
J=dct2(I);
imshow(log(abs(J),[]),colormap(jet(64)),colorbar
J(abs(J)<10)=0;
K=idct2(J);
figure,imshow(I);
figure,imshow(K,[0,255]);
2)利用离散余弦变换进行JPEG图像压缩:
RGB=imread('1.JPG');
I=rgb2gray(RGB);
J=dct2(I);
imshow(log(abs(J),[]),colormap(jet(64)),colorbar
J(abs(J)<10)=0;
K=idct2(J);
figure,imshow(I);
figure,imshow(K,[0,255]);
2)
I=imread('1.JPG');
I=rgb2gray(I);
I=im2double(I);
T=dctmtx(8);
B=blkproc(I,[88],'P1*x*P2',T,T');
mask=[11110000
11100000
11000000
10000000
00000000
00000000
00000000
00000000];
B2=blkproc(B,[88],'P1.*x',mask);
I2=blkproc(B2,[88],'P1*x*P2',T',T);
Subplot(1,2,1);
Imshow(I);title('原图像');
Subplot(1,2,2);
Imshow(I2);title('压缩图像');
截图:
原图像与压缩图像
2.无损压缩:
(利用行程编码(RLE)进行图像压缩原理)
压缩原理介绍:
RLE(Run-LengthEncoding行程长度编码)算法是Windows系统中使用的一种图像文件压缩方法,其基本思想是:
将一扫描行中颜色值相同的相邻像素用两个字节来表示,第一个字节是一个计数值,用于指定像素重复的次数;第二个字节是具体像素的值[2]。
主要通过压缩除掉数据中的冗余字节或字节中的冗余位,从而达到减少文件所占空间的目的。
例如,有一表示颜色像素值的字符串RRRRRGGBBBBBB,用RLE压缩方法压缩后可用5R2G6B来代替,显然后者的串长度比前者的串长度小得多。
译码时按照与编码时采用的相同规则进行,还原后得到的数据与压缩前的数据完全相同。
因此,RLE是无损压缩技术。
对于拥有大面积,相同颜色区域的图像,用RLE压缩方法非常有效。
例如如下这幅的二值图像,
如果采用行程编码可以按如下格式保存
其中10和8表示图像的宽和高。
在这个小例子中行程编码并没有起到压缩图像的作用。
这是由于这个图的尺寸过小,当图像尺寸较大时行程编码还是不错的无损压缩方法。
对于灰度图像和二值图像,用行程编码—般都有很高的压缩率。
行程编码方法实现起来很容易,对于具有长重复值的串的压缩编码很有效,例如:
对于有大面积的阴影或颜色相同的图像,使用这种方法压缩效果很好。
很多位图文件格式都采用行程编码,如TIFF,PCX,GEM,BMP等。
行程编码压缩代码:
I=imread('girl.bmp');
[mnl]=size(I);
fid=fopen('yc.txt','w');
sum=0;
fork=1:
l
fori=1:
m
num=0;
J=[];
value=I(i,1,k);
forj=2:
n
ifI(i,j,k)==value
num=num+1;%统计相邻像素灰度级相等的个数
ifj==n
J=[J,num,value];
end
elseJ=[J,num,value];%J的形式是先是灰度的个数及该灰度的值
value=I(i,j,k);
num=1;
end
end
col(i,k)=size(J,2);%记录Y中每行行程行程编码数
sum=sum+col(i,k);
Y(i,1:
col(i,k),k)=J;%将I中每一行的行程编码J存入Y的相应行中
end
end
[m1,n1,l1]=size(Y);
disp('原图像大小:
')
原图像大小:
whos('I');
NameSizeBytesClassAttributes
I512x512x3786432uint8
disp('压缩图像大小:
')
压缩图像大小:
whos('Y');
NameSizeBytesClassAttributes
Y512x974x31496064uint8
disp('图像的压缩比:
');
图像的压缩比:
disp(m*n*l/sum);
0.5476
subplot(1,2,1),imshow(I),title('原图像')
subplot(1,2,2),imshow(Y),title('行程编码解码后的图像')
save('Y')%存储,以便解码用
save('col')
fclose(fid);
load('col.mat')
截图:
原图像与压缩图像:
:
图像的数据:
行程编码表:
图像的大小和压缩比例:
原图像大小:
>>whos('I');
NameSizeBytesClassAttributes
I512x512x3786432uint8
压缩图像大小:
>>whos('Y');
NameSizeBytesClassAttributes
Y512x974x31496064uint8
图像的压缩比:
>>disp(m*n*l/sum);
0.5476
四.实验过程分析和建议
1图像的就是图像重新进行编码,希望用更少的数据表示图像,以及减少信息的冗余量,其中就包含有损压缩和无损压缩,主要目的是为了节省存储空间,增加传输速度。
图像压缩的理想标准是信息丢失最少,压缩比例最大。
不损失图像质量的压缩称为无损压缩,无损压缩不可能达到很高的压缩比;损失图像质量的压缩称为有损压缩,高的压缩比是以牺牲图像质量为代价的。
2.其中两种方法都有自己的优点和缺点,其中有损压缩可以达到很高的压缩比,但是图像的质量有所下降,会部分失真,而无损压缩可以保持原图像的真度,行程编码的压缩方法对于自然图片来说是不太可行的,因为自然图片像素点错综复杂,同色像素连续性差,如果硬要用行程编码方法来编码就适得其反,图像体积不但没减少,反而加倍。
鉴于计算机桌面图,图像的色块大,同色像素点连续较多,所以行程编码对于计算机桌面图像来说是一种较好的编码方法。
五.实验心得体会
实验过程中练习MATLAB的使用对图片进行编写代码处理,包括有损压缩和无损压缩两种方法的比较,以及对图像压缩比的认识,从而学到了不少新的知识,对多媒体技术处理图像压缩有了更加全面,更深度的了解。
六.思考题
1.图像中哪些信息是主要的,哪些信息是次要的?
2.简述离散余弦变换(DCT)和行程编码(RLE)的原理。
答:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多媒体 实验 图片 压缩 处理