1、运行长度编码(RLE)

游程长度编码是栅格数据压缩的重要编码方法,它的基本思路是:对于一幅栅格图像,常常有行(或列)方向上相邻的若干点具有相同的属性代码,因而可采取某种方法压缩那些重复的记录内容。其编码方案是,只在各行(或列)数据的代码发生变化时依次记录该代码以及相同代码重复的个数,从而实现数据的压缩。

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

例如:5555557777733322221111111 
行程编码为:(5,6)(7,5)(3,3)(2,4)(l,7)。

2、代码

function S=RLC(I)
%======================================================================================================
% 游程长度编码是栅格数据压缩的重要编码方法,它的基本思路是:对于一幅栅格图像,常常有行(或列)方向上相邻的若干点
% 具有相同的属性代码,因而可采取某种方法压缩那些重复的记录内容。其编码方案是,只在各行(或列)数据的代码发生变化
% 时依次记录该代码以及相同代码重复的个数,从而实现数据的压缩。
%------------------------------------------------------------------------------------------------------
% 例如:5555557777733322221111111
% 行程编码为:(5,6)(7,5)(3,3)(2,4)(l,7)。
%===================================================================================================
[m,n]=size(I);
if m~=1&&n~=1I=I';I=reshape(I,1,m*n);
end
j=1;
count=1;
% 对第一个到第m*n个进行一般化处理
for i=1:m*n-1if I(i+1)==I(i)count=count+1;elseS(j,1)=I(i);S(j,2)=count;j=j+1;count=1;end
end
% 最后一个元素处理有两种情况。其一,和前一个元素相等,其二,和前一个元素不等。
% 无论属于哪一种情况都没有在S中记录。
if I(m*n)==I(m*n-1)S(j,1)=I(i);S(j,2)=count;
elseS(j,1)=I(m*n);S(j,2)=1;
end
% I为字符串
% if m==1||n==1
%     S(:,1)=S(:,1)-'0';
%     S=double(S);
% end
end

3、示例

###    字符串(使用时需将处理字符串代码注释取消)

>> a='5555557777733322221111111 '
a =
5555557777733322221111111

>> RLC(a)
ans =
     5     6
     7     5
     3     3
     2     4

1     7

###    一般矩阵

>> a=randint(3,4)
Warning: This is an obsolete function and may be removed in the future. Please use RANDI instead. 
> In randint at 41 
a =
     0     0     1     1
     0     0     0     0
     1     0     1     1

>> RLC(a)
ans =
     0     2
     1     2
     0     4
     1     1
     0     1
     1     2

游程编码(运行长度编码)相关推荐

  1. python数组长度查询_python – 在numpy数组中查找相同值的序列长度(运行长度编码)...

    在pylab程序中(也可能是一个matlab程序)我有一个代表距离的numpy数组:d [t]是时间t的距离(我的数据的时间跨度是len(d)时间单位) . 我感兴趣的事件是当距离低于某个阈值时,我想 ...

  2. python exe运行报 编码错误_python运行显示编码错误

    python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...

  3. 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决

    在中国大陆,Windows默认的编码是gb2312,而Linux是UTF8: 多数情况下,把Linux上的程序转换至Windows上运行需要进行编码转换才能正常显示: 而其实大可以不必的,同样,文件使 ...

  4. matlab行程编码,报告论文:游程(行程)长度编码matlab(或者C++)实现

    游程(行程)长度编码matlab(或者C++)实现html 我须要的是算法实现,好比说我输入序列{1,0,0,0,0,1,1},输出为{11,04,12}.后面输出结果的含义是,"11&qu ...

  5. python显示编码错误,python运行显示编码错误

    python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...

  6. 信源编码的代码实现 (香农编码、费诺编码、哈夫曼编码、游程编码、算术编码)

    文章目录 香农编码 费诺编码 哈夫曼编码 C++版 C语言版 游程编码 算术编码 香农编码 (1) 将信源消息符号按其出现的概率大小依次排列 p1 ≥ p2 ≥ - ≥ pn (2) 确定满足下列不等 ...

  7. mysql 运行sql 编码_关于解决运行 sql 文件时, 找不到 MySQL 默认编码 utf8mb4 的问题...

    关于解决运行 sql 文件时, 找不到 MySQL 默认编码 utf8mb4 的问题 本人小白一名, 最近碰到了一个问题, 在 navicat 导入 MySQL 文件时, 报出 MySQL 找不到 u ...

  8. linux 运行python 看不到异常信息_linux python运行报编码错误

    一次重启服务器后,supervisor接管的python脚本中的函数open()和print()都会报下面的编码错误: UnicodeEncodeError: 'ascii' codec can't ...

  9. python实现游程编码(leetcode)

    游程编码又称"运行长度编码"或"行程编码",是一种统计编码,该编码属于无损压缩编码.对于二值图有效. 行程编码的基本原理是:用一个符号值或串长代替具有相同值的连 ...

最新文章

  1. 华为深度学习新模型DeepShift:移位和求反代替乘法,神经网络成本大降
  2. 【Machine Learning】KNN学习算法与C语言实现
  3. hdu 4506(快速幂+找规律)
  4. Unity3D ----- 制作信息滚动提示(NGUI)
  5. 通过java调用webservice服务详细案例一
  6. mysql 创建同义词_Oracle synonym 同义词创建与删除
  7. 斯坦福大学公开课IOS 7 学习笔记(2)
  8. 图像的指纹——从自然图片到GAN
  9. 声明式导航编程式导航
  10. MYSQL分区表学习
  11. thinkPHP基于php的枣院二手图书交易系统--php-计算机毕业设计
  12. python基础知识之整除、取余、幂运算
  13. 教你三分钟修改视频画面的尺寸大小
  14. 阿里架构师:双十一「大促」,多亏了 Node.js
  15. Android常见的错误及解决
  16. 合宙 ESP32C3 使用micropython 驱动配套0.96寸 TFT ST7735 屏幕显示色块和文字
  17. C#在Pdf画统计图表之【雷达图】(以五边形为例)
  18. Docker Mirror
  19. 【R】【密度聚类、层次聚类、期望最大化聚类】
  20. 服务器显示无法获取列表,无法获取服务器列表

热门文章

  1. 多进程log4j日志丢失问题分析
  2. java图片加文字水印_JAVA实现图片的修改,添加文字水印效果
  3. 一文读懂CCSC—数据安全认证
  4. Android 手机录制wav格式音频文件实现
  5. D7100 调节白平衡
  6. 线条边框简笔画图片大全_各种简笔画边框大全_边框简单又漂亮简笔画
  7. 自动生成带昵称的头像(仿照钉钉头像)
  8. VB操作EXCEL方法汇总
  9. @Value 读取yml 文件
  10. 近地天体撞击地球原理的设想