二值图像的游程编码及解码
一、实验目的
掌握游程编码,并用编程实现游程编码及解码。
二、实验引言
二值图像在图像分析中应用非常广泛,二值图像就是指只有黑白两个灰度级的图像,二值
图像具有存储空间小,处理速度快,可以方便地对图像进行布尔逻辑运算等特点.更重要的是,
在二值图像的基础上,还可以进一步对图像处理(编码等),获得该图像的一些几何特征或
者其他更多特征。游程编码作为编码技术中常用的一种,对二值图像非常有效。本文介绍
了二值图像和游程编码,并利用 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)