利用游程编码实现二值图像压缩.

利用游程编码实现二值图像压缩.

ID:37409753

大小:72.50 KB

页数:10页

时间:2019-05-23

利用游程编码实现二值图像压缩._第1页
利用游程编码实现二值图像压缩._第2页
利用游程编码实现二值图像压缩._第3页
利用游程编码实现二值图像压缩._第4页
利用游程编码实现二值图像压缩._第5页
资源描述:

《利用游程编码实现二值图像压缩.》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实用文案算术编码、游程编码都属于无损压缩。算术编码(Arithmeticcoding)算术编码是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分割为符号,然后对每个符号进行编码。而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0≤n<1.0)的小数n。算术编码用到两个基本的参数:符号的概率和它的编码间隔。信源符号的概率决定压缩编码的效率,也决定编码过程中信源符号的间隔,而这些间隔包含在0到1之间。算术编码的算法思想如下:(1)对一组信源符号按照符

2、号的概率从大到小排序,将[0,1)设为当前分析区间。按信源符号的概率序列在当前分析区间划分比例间隔。(2)检索“输入消息序列”,锁定当前消息符号(初次检索的话就是第一个消息符号)。找到当前符号在当前分析区间的比例间隔,将此间隔作为新的当前分析区间。并把当前分析区间的起点(即左端点)指示的数“补加”到编码输出数里。当前消息符号指针后移。(3)仍然按照信源符号的概率序列在当前分析区间划分比例间隔。然后重复第二步。直到“输入消息序列”检索完毕为止。(4)最后的编码输出数就是编码好的数据。在算术编码中需要注意几个问题:(1)由于

3、实际计算机的精度不可能无限长,运算中出现溢出是一个明显的问题,但多数及其都有16位,32位或者64位的精度,因此这个问题可以使用比例缩放方法解决。(2)算术编码器对整个消息只产生一个码字,这个码字是在间隔[0,1)中的一个实数,因此译码器在接受到表示这个实数的所有位之前不能进行译码。(3)算术编码是一种对错误很敏感的编码方法,如果有一位发生错误就会导致整个消息译错。算术编码可以是静态的或者是自适应的。在静态算术编码中,信源符号的概率是固定的。在自适应算术编码中,信源符号的概率根据编码时符号出现的频率动态地进行修改,在编码

4、期间估算信源符号概率的过程叫做建模。需要开发动态算术编码的原因是因为事前知道精确的信源概率是很难的,而且不切实际。当压缩消息时,不能期待一个算术编码器获得最大的效率,所能做的最有效的方法是在编码过程中估算概率。因此动态建模就成为确定编码器压缩效率的关键。游程编码(RLE编码——RunLengthEncoding)标准文档实用文案游程编码又称“运行长度编码”或“行程编码”,是一种统计编码,该编码属于无损压缩编码。对于二值图有效。行程编码的基本原理是:用一个符号值或串长代替具有相同值的连续符号(连续符号构成了一段连续的“行程

5、”。行程编码因此而得名),使符号长度少于原始数据的长度。例如:5555557777733322221111111行程编码为:(5,6)(7,5)(3,3)(2,4)(l,7)。可见,行程编码的位数远远少于原始字符串的位数。在对图像数据进行编码时,沿一定方向排列的具有相同灰度值的像素可看成是连续符号,用字串代替这些连续符号,可大幅度减少数据量。行程编码分为定长行程编码和不定长行程编码两种类型。行程编码是连续精确的编码,在传输过程中,如果其中一位符号发生错误,即可影响整个编码序列,使行程编码无法还原回原始数据。游程编码所能获

6、得的压缩比有多大,主要取决于图像本身的特点。如果图像中具有相同颜色的图像块越大,图像块数目越少,获得的压缩比就越高。反之,压缩比就越小。利用游程编码实现二值图像压缩文章出处:http://www.diybl.com/course/3_program/c++/cppjs/2008331/107771.html编码方案设计:按位进行压缩,对二进制流进行超前扫描,判断是否值得压缩,如果压缩有意义,则压缩;否则保持原始数据。系统实现方案:总体思想:将图像文件以二进制方式读入缓冲区,把二进制位转制为整数,对缓冲区数据进行编码,以特

7、定的格式(unsignedshort)写入输出文件;解压缩过程反过来即可。压缩文件存储格式:以每两个字节为单位储存(即每次写入16位unsignedshort类型)。012~15...第0位 存储压缩信息(1压缩;0不压缩,原始数据)第1位 如果第0位为1(压缩),此位标明字符类别(0或1);如果第0位为0(原始数据),此位无意义,默认为0后14位 存储字符数量或者原始数据的值算法实现:缓冲区:定义缓冲区为一维char数组,因为只用14位来统计数量,所以缓冲区总字符量即维数应小于或等于214(16384)。判断可压缩性:

8、对当前指针位置,超前扫描16位,如果这16位全相同(例:11111111111111或00000000000000),那么可压缩性为真,从当前位置开始计数并指针前移,直到相同序列终止或到达缓冲区边界为止。将统计数量写入unsignedshort类型后14位,第0位置1,第0位置为当前字符;如果16位中有不相同数据(例

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。