资源描述:
《游程编码实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、重庆交通大学信息科学与工程学院综合性设计性实验报告专业:通信工程专业11级学号:631106040222姓名:徐国健实验所属课程:移动通信原理与应用实验室(中心):信息技术软件实验室指导教师:李益才2014年5月教师评阅意见:签名:年月曰实验成绩:一、题目二值图像的游程编码及解码二、仿真要求对一幅图像进行编码压缩,然后解码恢复图像。三、仿真方案详细设计实验过程分为四步:分别是读入一副图象,将它转换成为二进制灰度图像,然活对其进行游程编码和压缩,最后恢复图象(只能恢复为二值图像)。1、二值转换所诮二值图像,就是指图像上的所有像素点的灰度值只用两种可能,不为“0”就为“1”,也就是整个图像
2、呈现出明显的黑白效果。2、游程编码原理游程编码是一种无损压缩编码,对于二值图有效。游程编码的基本原理是:用一个符号值或率长代替具有相同值的连续符号,使符号长度少于原始数据的长度。据进行编码吋,沿一定方句排列的具有相同灰度值的像素讨看成是连续符号,用字串代替这些连续符号,可人幅度减少数据量。游程编码分为定长行程编码和不定长行程编码两种类型。游程编码是连续精确的编码,在传输过程中,如果其中一位符号发生错误,即可影响整个编码序列,使行程编码无法还原回原始数据。3、游程编码算法一般游程编码有两种算法,一种是使用1的起始位置和1的游程长度,另一种是只使用游程长度,如果第一个编码值为0,则表示游程
3、长度编码是从0像素的长度幵始。这次实验釆用的是前一种算法。两种方法各有优缺点:前一利1存储比第二种闲难,因此编程也比较复杂。IflJ后一种需耍知道第一个像素值,故压缩编码算法屮需给出所读出的阁的第一个像素值。压缩流程图:开始解压流程图:开始将原阁像矩阵艰构为一行二进制数据读出H(缩数裾image建立一行len列的0M量image,len为图)•长觉之和建立结构树imagel,包含了image.pos和image.wgh,分别代表起始位置和宽度结束结朿、仿真结果及结论原始图像转化盾的灰度阁像二值图像上图为压缩编码G的图像编码之前的阁像数据编码G数椐信息350300250200150100
4、500500100015002000250030003500400045005000解压后的阁像数据解压恢复后的阁像五、总结与体会通过这次试验,我来了解一些关于游程编码的基本原理,所谓游程编码,其实它就是一种统计类型的编码,更是一种无损压缩编码。原理是用一个符号值或串长代替具有相同值的连续符号,使符号长度少于原始数据的长度。只在各行或者各列数据的代码发生变化时,一次记录该代码及相同代码重复的个数,从而实现数据的压缩,,而起始位置和宽度是关键。二值图像是指只有黑(用255表示)白(用0表示)两种亮度值的图像。把灰度值接近于255或者0的其他灰度都相应转化成255和0,即灰度图像就变成了黑
5、白二值图像,通过对游程编码的原理可以看到一个灰度值由两个数值里来编码,这样效率很差,即便是游程足够长,用等长编码效率都不是太好。通过这次试验我对编码有了更深的一些认识,但还不足以独立实现,需要大量查阅资料,总的来说,我对原理很明确,对具体编码这一块儿还不是太熟,以后会在这方面多多实践,六、主要仿真代码实验代码:imagel=imread(•D:我的图片实验图.jpg');%读入图像imshow(imagel);%.姑示原阁像titleC原始彩色图像imgGray=rgb2gray(imagel);%转力黑白图像figure;%建立一个新窗I」imshow(imgGray);%显示转
6、化后的黑白剛象titlef转化后的黑白图像’);imwrite(imgGray,'gray.jpg');image2=imgGray(:);%将原始图像写成-‘维的数据外设为image2[c,r]=sizc(imgGray(:,:,l));image2=imgGray(:);%
7、nj.himage21ength=length(image2);%统计长度fori=l:l:image21ength%f转换为二值阉像ifimage2(i)>=127image2(i)=255;%纯黑色为255endifimage2(i)<127image2(i)=0;%纯白色为0endendimage3=re
8、shape(image2,c,r);%蚕建二维数组阁像,并设为image3figure,imshow(image3)titlef压缩后的二值图像%以下程序为对原图像进行游程编码,压缩X=image3(:);%令X为新建的二值图像的一维数据组x=l:l:length(X);%显示游程编码之前的剛象数据figure,plot(x,X(x));titlef编码前的图像数据’);image4=n;image4(l)=l;forz=l:l:(length