游程编码(Run Length Coding)

news2024/9/21 0:46:54

游程编码

  • 游程编码
    • 基本介绍
    • 示例1
    • 示例2
    • 游程编码适用的场景

游程编码

游程编码(Run Length Coding,简称RLC)又称游程编码、行程长度编码、变动长度编码 等,是一种统计编码。主要技术是检测重复的比特或字符序列,并用它们的出现次数取而代之。比较适合于二值图像的编码,但是不适用于连续色调阁像的压缩,例如日常生活中的照 片。为了达到较好的压缩效果,有时行程编码和其他一些编码方法混合使用。

该编码属于无损压缩编码,是栅格数据压缩的重要编码方法。对于二值图有效。该压缩编码技术相当直观和经济,运算也相当简单,因此解压缩速度很快。RLE压缩编码尤其适用于计算机生成的图形图像,对减少存储容量很有效果。

RLC的基本原理是:用一个符号值或串长代替具有相同值的连续符号(连续符号构成了一段连续的“行程”。行程编码因此而得名),使符号长度少于原始数据的长度。

基本介绍

行程编码(Run-length Coding)是相对简单的编码技术,主要思路是将一个相同值 的连续串用一个代表值和串长来代替。例如,有一个字符串“aaabccddddd”,经过行程 编码后可以用“3a1b2c5d”来表示。对图像编码来说,可以定义沿特定方向上具有相同灰度值的相邻像素为一轮,其延续长度称为延续的行程,简称为行程或游程。例如,若沿水平方向有一串M个像素具有相同的灰度N,则行程编码后,只传递2个值(N,M) 就可以代替M个像素的M个灰度值N。

此方式下每两个字节组成一个信息单元。第一个字节给出其后面相连的象素的个数。第二个字节给出这些象素使用的颜色索引表中的索引。例如:信息单元03 04,03表示其后的象素个数是3个,04表示这些象素使用的是颜色索引表中的第五项的值。压缩数据展开后就是04 04 04 .同理04 05 可以展开为05 05 05 05. 信息单元的第一个字节也可以是00,这种情况下信息单元并不表示数据单元,而是表示一些特殊的含义。这些含义通常由信息单元的第二个字节的值来描述。
行程编码对传输差错很敏感,如果其中一位符号发生错误,就会影响整个编码序列的正确性,使行程编码无法还原回原始数据,因此一般要用行同步、列同步的方法.把差错控制 在一行一列之内。

示例1

例如:5555557777733322221111111。行程编码为:(5,6)(7,5)(3,3)(2,4)(l,7)。可见,行程编码的位数远远少于原始字符串的位数。

示例2

在对图像数据进行编码时,沿一定方向排列的具有相同灰度值的像素可看成是连续符号,用字串代替这些连续符号,可大幅度减少数据量。行程编码是连续精确的编码,在传输过程中,如果其中一位符号发生错误,即可影响整个编码序列,使行程编码无法还原回原始数据。

在这里插入图片描述

对如上图所示的栅格数据,可沿行方向进行如下游程长度编码: (9,4),(0,4),(9,3),(0,5),(0,1)(9,2),(0,1),(7,2),(0,2),(0,4),(7,2),(0,2),(0,4),(7,4),(0,4),(7,4) ,(0,4),(7,4) ,(0,4),(7,4)。游程长度编码只用了40个整数就可以表示,而如果用前述的直接编码却需要64个整数表示,可见游程长度编码压缩数据是十分有效又简便的。事实上,压缩比的大小是与图的复杂程度成反比的,在变化多的部分,游程数就多,变化少的部分游程数就少,图件越简单,压缩效率就越高。

游程长度编码在栅格加密时,数据量没有明显增加,压缩效率较高,且易于检索,叠加合并等操作,运算简单,适用于机器存贮容量小,数据需大量压缩,而又要避免复杂的编码解码运算增加处理和操作时间的情况。

游程编码适用的场景

算法的基本思想是将重复且连续出现的字符进行压缩,使用更简短的方式来描述,这种方式是基于柯氏复杂度的,那么什么是柯氏复杂度呢,比如有这么三个字符串,它们的长度都是100,其中第一个是100个A,第二个是99个A和一个B,第三个是100个完全随机的字符,我们想办法用尽可能短的语言来描述原字符串,描述第一个字符串时可以说“这是100个A”,描述第二个字符串可以说“这是99个A,然后是一个B”,但是描述第三个字符串时应该怎么说呢?比较容易想到的是“这是100个随机字符”,看上去似乎没有问题,但是这里一个比较重要的点是描述信息需要符合这么一个条件,当单独给出对字符串的描述时能够根据描述恢复出原字符串的内容,100个A和先99个A然后是一个B可以,但是100个随机字符太笼统了显然不行,这个描述信息的长度就称之为柯氏复杂度,在这个例子中第一个柯氏复杂度最小,第二第三依次次之。

那么在不同情况下这个编码的效果如何呢,假如采用定长1个字节来描述连续出现次数,并且一个字符占用1个字节,那么描述(连续出现次数,某个字符)需要的空间是2个字节,只要这个连续出现次数大于2就能够节省空间,比如AAA占用3个字节,编码为(3,A)占用两个字节,能够节省一个字节的空间,可以看出连续出现的次数越多压缩效果越好,节省的空间越大,对一个字符编码能够节省的空间等于=连续出现次数-2,于是就很容易推出连续出现次数等于2时占用空间不变,比如AA占用两个字节,编码为(2,A)仍然占用两个字节,白白浪费了对其编码的资源却没有达到节省空间的效果,还有更惨的情况,就是连续出现次数总是为1,这个时候会越压越大,比如A占用一个字节,编码为(1,A)占用两个字节,比原来多了一个字节,这种情况就很悲剧,一个1M的文件可能一下给压缩成了2M(真是效果奇佳啊),这是能够出现的最糟糕的情况,相当于在文件的每一个字节前面都插入了一个多余的字节0X01(这个字节表示连续出现次数为1),这种情况说明不适合使用游程编码,事实上,绝大多数数据的特征都属于第三种情况,不适合使用游程编码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亚马逊云科技re:Invent 2022 Ruba Borno主题演讲

2022亚马逊云科技re:Invent全球大会精彩内容应接不暇,亚马逊云科技全球渠道与联盟副总裁Ruba Borno在2022亚马逊云科技re:Invent大会的全球合作伙伴峰会上,为合作伙伴带来一系列全新的合作伙伴创新服务。 云上发展持续加速的当下,上云好比一场…

使用Fiddler对手机App抓包

目录 一、查看 Fiddler 的 ip 地址 二、设置 Fiddler 允许远程连接 三、进行手机端 App 的抓包 3.1.准备工作 3.2.手机设置 3.3.安装根证书 四、可能会遇到的问题 一、查看 Fiddler 的 ip 地址 有两种方法都可以查询到。 第一种方法: 打开 Fiddler&#xff…

[附源码]计算机毕业设计springboot在线招聘网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

一分钟带你了解音视频开发进阶(先收藏了)

FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发学习路线 随着基础设施的完善(光纤入户、wifi覆盖、5G普及)的影响,将短视频、直播、视频会议、在线教育、在线医疗瞬间推到了顶峰,人们对音视频的需求和要求也越来越强烈 音视…

实现java项目idea打包发布至服务器(完整版)

问题:如何快速部署本地代码到服务器? 今天介绍的是使用idea的一款插件(Alibaba Cloud Toolkit)实现,首先需要在自己的服务器上安装运行环境,包括:jdk、maven、mysql等,这些操作就不详细说了,可…

Inductive Representation Learning on Large Graphs 论文/GraphSAGE学习笔记

1 动机 1.1 过去的方法 现存的方法大多是transductive的,也就是说,在训练图的时候需要将整个图都作为输入,为图上全部节点生成嵌入,每个节点在训练的过程中都是可知的。举个例子,上一次我学习了GCN模型,它…

考研数据结构大题整合_组三(LZH组)

考研数据结构大题整合 目录考研数据结构大题整合三、LZH组LZH 组一LZH 组二LZH 组三LZH 组四LZH 组五LZH 组七三、LZH组 LZH 组一 给出如图所示的无向图G的邻接矩阵和邻接表两种存储结构. (2)解答下面的问题(6分) (…

二、进程管理(五)死锁

目录 5.1死锁的定义和产生条件 5.2死锁的处理策略 5.2.1死锁预防 5.2.2死锁避免 5.2.3死锁检测和解除 5.1死锁的定义和产生条件 在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现…

【GlobalMapper精品教程】034:创建漫游动画并制作漫游视频的方法

本实例讲解在globalmapper中根据路径创建漫游动画,并制作漫游视频的方法。 文章目录 一、绘制漫游路径二、创建3D虚拟漫游三、播放虚拟漫游四、保存虚拟漫游实验数据可以是点云数据、DEM、三维模型等,本文加载数字表面模型DSM进行演示。 一、绘制漫游路径 同创建矢量线状数据…

海带软件分享——日常办公学习软件分享(收藏)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f680; 写在前面 &#x1f431;‍&#x1f3cd; 本期开始&#xff0c;小海带会定期推荐一些日常办公学习软件及趣味网址&#xff0c;供大家交流参考 ~ 小伙伴们记得一键三连喔&#xff01;&#x1f6…

几款好用到爆炸的在线画图工具

前言 实际工作中&#xff0c;我们经常会编写文档以及制作图表。尤其是对一名优秀的攻城狮来说&#xff0c;经常会用各种各样的软件来制作流程、思维导图、思维笔记等。一个良好的思维导图能系统概括项目工程的整体结构和开发的系统框架。要想制作一个完美的流程图、思维导图离不…

菜狗杯Misc一层一层一层地剥开我的♥wp

目录一、原题二、解题步骤对jpg图片的处理对文件名是一个心形的数据文件的处理base100解码这题完全是看着官方wp复现的&#xff0c;感觉涉及的步骤比较多但每一步本身不难&#xff0c;多记录一遍加深印象。 一、原题 原题给的是一个叫myheart.zip的文件&#xff0c;但尝试解压…

高通开发系列 - ALSA声卡驱动中音频通路kcontrol控件

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 高通开发系列 - ALSA声卡驱动中音频通路kcontrol控件问题背景高通音频通路如何建立widget和routemixer类控件名组合mixer类控件名拼接…

CRM客户关系管理系统(含源码+论文+答辩PPT等)

该项目采用技术&#xff1a;JSP Servlet MySQLjdbccssjs等相关技术&#xff0c;项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等 项目功能介绍&#xff1a; 系统管理&#xff1a;用户登录退出、个人资料修改 客户管理&#xff1a;客户信息管理、客户来源、联系…

Softmax回归——动手学深度学习笔记

Softmax回归&#xff0c;虽然它的名称叫做回归&#xff0c;其实它是一个分类问题。 回归VS分类 回归估计一个连续值 如&#xff1a;回归估计下个月的房价 分类预测一个离散类别 如&#xff1a; &#xff08;1&#xff09;MNIST&#xff1a;手写数字识别&#xff08;10类&…

初识springmvc

狂神的servlet回顾就不在这里写了。可以翻之前的笔记。 原生开发&#xff1a; 创建webapp的maven项目。 也就是四个文件 &#xff08;不用思考里面的代码&#xff0c;直接CV先走一遍流程&#xff09; HelloController&#xff1a; package com.Li.controller;import org.sp…

SecureCRT之Xmodem操作步骤

以锐捷S3760为例&#xff1a; 故障现象&#xff1a;s3760无法加载&#xff0c;需要重刷RGOS。 一、使用控制线连接s3760&#xff0c;开机加载引导&#xff0c;按Ctrl_B进入“BOOT MENU”页面&#xff1a; 选择【0】进入XModem操作界面&#xff1a; 说明&#xff1a; 0--更新…

android 开发——疑难杂症ANR简单介绍与解析

一、ANR介绍 ANR-application not response&#xff0c;应用无响应&#xff0c;应用开发者一般是关注自己的APP进程有没有出现&#xff0c;系统开发者会关注当前系统运行起来后整体上所有的APP进程有没有出现ANR&#xff0c;从这句话可以知道&#xff0c;只有应用进程的主线程…

多元正态分布-参数估计-书后习题回顾总结

重点考察知识点汇总 协方差矩阵 协方差矩阵为对称矩阵协方差矩阵的对角线为各分量的方差&#xff0c;其余位置(i,j)(i,j)(i,j)表示的是分量iii和分量jjj的协方差 多元正态分布的线性组合仍然服从多元正态分布 设X∼Np(μ,Σ)X\sim N_{p}(\mu,Σ)X∼Np​(μ,Σ)&#xff0c;B…

Python从零到就业

Python面向对象编程五步曲基础阶段01-Python的注释02 乱码原因02-Python变量03-数据类型04-数据类型转换05-Python运算符06-Python输入07-Python输出08-占位格式符(补充)09-Python分支10-Python循环(while)11-Python循环(for)12-Python循环打断待更新基础阶段 01-Python的注释…