matlab游程编码
二值图像的游程编码及解码一、实验目的 掌握游程编码,并用编程实现游程编码及解码。二、实验引言二值图像在图像分析中应用非常广泛,二值图像就是指只有黑白两个灰度级的图像,二值图像具有存储空间小,处理速度快,可以方便地对图像进行布尔逻辑运算等特点.更重要的是,在二值图像的基础上,还可以进一步对图像处理(编码等),获得该图像的一些几何特征或者其他更多特征。游程编码作为编码技术中常用的一种,对二值图像非常有效。本文介绍了二值图像和游程编码,并利用Matlab语言实现了二值图像的游程编码及解码。三、实验原理读入图象—>二值转换—>游程编码(压缩)—>恢复原图象3.1二值转换所谓二值图像,就是指图像上的所有像素点的灰度值只用两种可能,不为“0”就为“1”,也就是整个图像呈现出明显的黑白效果。 3.2游程编码及其原理又称“运行长度编码”或“行程编码”,是一种统计编码,该编码属于无损压缩编码对于二值图有效。 行程编码的基本原理是:用一个符号值或串长代替具有相同值的连续符号(连续符号构成了一段连续的“行程”。行程编码因此而得名),使符号长度少于原始数据的长度。据进行编码时,沿一定方向排列的具有相同灰度值的像素可看成是连续符号,用字串代替这些连续符号,可大幅度减少数据量。行程编码分为定长行程编码和不定长行程编码两种类型。行程编码是连续精确的编码,在传输过程中,如果其中一位符号发生错误,即可影响整个编码序列,使行程编码无法还原回原始数据。3.3游程编码算法一般游程编码有两种算法第一种:使用1的起始位置和1的游程长度第二种:只使用游程长度,如果第一个编码值为0,则表示游程长度编码是从0像素的长度开始。两种方法各有优缺点:第一种存储比第二种困难,因此编程也比较复杂。而第二种需要知道第一个像素值,故压缩编码算法中需给出所读出的图的第一个像素值。 此次试验中采用第一种算法。算法举例图示压缩后输出为:(2,2)(6,3)(13,6)(20,1)(4,6)(11,10)(1,5)(11,1)(17,4)压缩程序流程图:解压流程图:四.结果:以下为实验的运行结果,分别为转换所得的二值图像,游程编码结果,以及游程编码解码后的图像图中第一幅图为原始图片,中间一幅为压缩数据(横轴表示1游程的起始位置,纵轴代表对应的宽度)五:结果分析比较游程编码前的二值图像其像素大小为32*32,游程编码后的大小为其大小为1*1的结构数组,但每一数组长为101。故总长为202.两者比值为0.1973.六:参考文献贾云得,机器视觉,科学出版社,2000。七、附录一、主函数: 二、压缩函数三、解压函数:执行结果: