【数字图像处理】二值图像行程编码
【数字图像处理】二值图像行程编码
前言
数字图像处理课设中要对二值图像进行压缩和解压缩,所以设计了这一部分。
Tip:此代码只适用于图像中有大面积相同色块,否则压缩效果欠佳。
一、代码部分
1. 二值图像压缩
代码如下:
import numpy as npdef BRLE(img):img=np.array(img)img_f=img.flatten() # 图像数组扁平化BRLE_seq=[] # 输出序列elemt=[0,1] # 序列元素种类,因为是二值图,所以元素只有0和1flag=0 # 连续元素的值,假设第一个为0count=0 # 连续元素个数for i in range(len(img_f)): # 开始遍历if img_f[i]==flag:count+=1if i==len(img_f)-1: # 遍历到最后一个元素if flag == 0:BRLE_seq.append(-1 * count)elif flag == 1:BRLE_seq.append(count)else:if count>=1:if flag==0:BRLE_seq.append(-1*count)elif flag==1:BRLE_seq.append(count)count=1temp=list(elemt.copy()) # 不更改elemt的值temp.remove(flag) # 元素不同,更换flagflag=temp[0]if i==len(img_f)-1: # 与上面相同,遍历到最后一个元素,避免bugif flag == 0:BRLE_seq.append(-1 * count)elif flag == 1:BRLE_seq.append(count)return BRLE_seq # 输出的是列表,不是二维数组
2. 二值图像解压缩
代码如下:
import numpy as npdef IBRLE(seq,rows,cols): # 这里要输入压缩后的序列(就是列表)以及源图像的尺寸ORG_seq=[] # 结果列表for i in range(len(seq)):if seq[i]>0:for m in range(seq[i]):ORG_seq.append(1)else:for n in range(np.abs(seq[i])): # seq[i]小于0,循环时要取绝对值ORG_seq.append(0)return np.array(ORG_seq).reshape(rows,cols)
二、运行部分
原二值图如下:
压缩后的序列如下:
[-1277, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55, -19, 55]
解压缩:
【数字图像处理】二值图像行程编码相关推荐
- Win8Metro(C#)数字图像处理--2.24二值图像闭运算
原文:Win8Metro(C#)数字图像处理--2.24二值图像闭运算 [函数名称] 二值图像闭运算函数CloseOperateProcess(WriteableBitmap src) [算法说 ...
- Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法
Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法 原文:Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法 [函数名称] 二值图像轮廓提取 ...
- Win8 Metro(C#)数字图像处理--2.39二值图像投影
原文:Win8 Metro(C#)数字图像处理--2.39二值图像投影 [函数名称] 二值图像投影 ImageProjection(WriteableBitmap src) [算 ...
- matlab数字图像处理——图像的读写,灰度、二值图像
一.实验目的 1.结合数字图像处理的知识,直观感受图像处理的基本实现过程 2.熟悉MATLAB工具的使用 3.了解图像的读写和显示 二.实验内容 实验内容一:图像读取 (1)利用编程实现读取图像 利用 ...
- 数字图像处理——形态学操作(二值图像篇)
形态学操作 内容简介 1. 预备知识--结构元 2. 形态学基本操作 2.1 腐蚀和膨胀 2.2 开操作与闭操作 2.3 击中和击不中变换(hit and miss transform) 3. 基本的 ...
- MATLAB 数字图像处理GUI二值图像实验
电信19-2 翁大弟 摘要 图像信息是人类获取信息的重要来源及利用信息的重要手段,数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展:二是广泛的农牧业.环境.军事.工业等方面的应用需求 ...
- 数字图像处理知识点总结
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 数字图像处理知识点总结 第一章 导论 1. ...
- 数字图像处理应用matlab,数字图像处理与应用(MATLAB版)
第 1章 绪论 1n 1.1 图像的概念 1n 1.2 图像的分类 2n 1.3 图像的表示 2n 1.3.1 图像信号的表示 2n 1.3.2 数字图像的表示 3n 1.3.3 颜色模型 4n 1. ...
- 数字图像处理与机器视觉光盘资料_机器视觉——数字图像处理知识点总结
数字图像处理知识点总结 第一章 导论 1. 图像:对客观对象的一种相似性的生动性的描述或写真. 2. 图像分类:按可见性(可见图像.不可见图像),按波段数(单波段.多波段.超波段),按空间坐标和亮度的 ...
最新文章
- Hadoop vs Spark性能对比
- 在c++中,如果派生类没有重写基类中对应virtual函数会怎样?
- java多线程编程(三)- 线程的创建
- 数据挖掘原理与算法(第二版)
- VUE 自定义取色器组件
- Docker创建镜像Nuget失败
- 关于SharePoint中文翻译的吐槽
- 安卓分屏神器_手机端必备神器,一经推出轻松拥有过千万用户下载量!
- KVM 核心技术详解
- Java 悲观锁和乐观锁的实现
- [Java]Mybatis学习笔记(动力节点老杜)
- Matlab实现二维Goldstein分支切割相位展开算法
- macOS Monterey升级
- 35家互联网金融企业与安存科技签订集体战略合作协议
- dedecms 列表页 隔行 插入样式
- 神盾特工hive_《神盾局特工》第七季再爆幕后照,这位角色复古装又美出新高度!...
- C语言如何取一个数的负数
- 20155322 2017-2018-1《信息安全系统设计》第六周学习总结
- TSP问题(34个省会城市):遗传算法
- VIM插件配置——ctags/taglist/omnicppcomplete/winmanager
热门文章
- 服务器怎么和本地共享文件夹同步,云服务器如何共享文件夹同步
- 微信消息收发与微信内部emoji表情转义
- python的拼音_python 中文分词和拼音首字母
- Python打印车次信息
- android+扁平+png,[3.28更新]更好看的扁平化主题 —Flat+ 超全图标
- 【MM系列】SAP MM物料账在制品承担差异功能及配置
- 【C/C++】【面经】2022 网易互娱面经( 游戏客户端方向 )(更新:一面;二面;)
- 搭建普罗米修斯Prometheus监控系统
- 变邻域搜索算法解决0-1背包问题
- 万字长文带你轻松了解LSTM全貌