游程编码(运行长度编码)
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
游程编码(运行长度编码)相关推荐
- python数组长度查询_python – 在numpy数组中查找相同值的序列长度(运行长度编码)...
在pylab程序中(也可能是一个matlab程序)我有一个代表距离的numpy数组:d [t]是时间t的距离(我的数据的时间跨度是len(d)时间单位) . 我感兴趣的事件是当距离低于某个阈值时,我想 ...
- python exe运行报 编码错误_python运行显示编码错误
python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...
- 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
在中国大陆,Windows默认的编码是gb2312,而Linux是UTF8: 多数情况下,把Linux上的程序转换至Windows上运行需要进行编码转换才能正常显示: 而其实大可以不必的,同样,文件使 ...
- matlab行程编码,报告论文:游程(行程)长度编码matlab(或者C++)实现
游程(行程)长度编码matlab(或者C++)实现html 我须要的是算法实现,好比说我输入序列{1,0,0,0,0,1,1},输出为{11,04,12}.后面输出结果的含义是,"11&qu ...
- python显示编码错误,python运行显示编码错误
python中运行显示编码错误一般有2种原因: 编码与译码的方式不一致 在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息: SyntaxError: Non-ASCII chara ...
- 信源编码的代码实现 (香农编码、费诺编码、哈夫曼编码、游程编码、算术编码)
文章目录 香农编码 费诺编码 哈夫曼编码 C++版 C语言版 游程编码 算术编码 香农编码 (1) 将信源消息符号按其出现的概率大小依次排列 p1 ≥ p2 ≥ - ≥ pn (2) 确定满足下列不等 ...
- mysql 运行sql 编码_关于解决运行 sql 文件时, 找不到 MySQL 默认编码 utf8mb4 的问题...
关于解决运行 sql 文件时, 找不到 MySQL 默认编码 utf8mb4 的问题 本人小白一名, 最近碰到了一个问题, 在 navicat 导入 MySQL 文件时, 报出 MySQL 找不到 u ...
- linux 运行python 看不到异常信息_linux python运行报编码错误
一次重启服务器后,supervisor接管的python脚本中的函数open()和print()都会报下面的编码错误: UnicodeEncodeError: 'ascii' codec can't ...
- python实现游程编码(leetcode)
游程编码又称"运行长度编码"或"行程编码",是一种统计编码,该编码属于无损压缩编码.对于二值图有效. 行程编码的基本原理是:用一个符号值或串长代替具有相同值的连 ...
最新文章
- 华为深度学习新模型DeepShift:移位和求反代替乘法,神经网络成本大降
- 【Machine Learning】KNN学习算法与C语言实现
- hdu 4506(快速幂+找规律)
- Unity3D ----- 制作信息滚动提示(NGUI)
- 通过java调用webservice服务详细案例一
- mysql 创建同义词_Oracle synonym 同义词创建与删除
- 斯坦福大学公开课IOS 7 学习笔记(2)
- 图像的指纹——从自然图片到GAN
- 声明式导航编程式导航
- MYSQL分区表学习
- thinkPHP基于php的枣院二手图书交易系统--php-计算机毕业设计
- python基础知识之整除、取余、幂运算
- 教你三分钟修改视频画面的尺寸大小
- 阿里架构师:双十一「大促」,多亏了 Node.js
- Android常见的错误及解决
- 合宙 ESP32C3 使用micropython 驱动配套0.96寸 TFT ST7735 屏幕显示色块和文字
- C#在Pdf画统计图表之【雷达图】(以五边形为例)
- Docker Mirror
- 【R】【密度聚类、层次聚类、期望最大化聚类】
- 服务器显示无法获取列表,无法获取服务器列表