opencv区域合并与融合笔记(非教程)
不适合纯新手,因为很多基础知识没有提及
split-merge图像分割,在这篇文章中,指的并不是图像的通道的分离与通道的合并,而是图像的区域分离与合并,这两种的英文名字似乎有点相似,没学过的人看名字就混淆了。
早就学过区域分离与合并的算法,但是算法的种类太多,并不是每一个都有自己去实现一遍的价值。今天有时间就整理一下这个东西。和大家分享,有不同的见解与我讨论欢迎留言(我也不知道这文章下能不能留言,哈),首页上有联系方式,加我联系方式讨论吧。
如果是纯新手,不太适合看这些东西,因为有些东西在书上描述的很清楚,这里不重复说明这些重复内容
Quick Start
原理
原理简述
把图像细分为任意互相不相连的区域,在一定的规则下合并或者分离这些区域。在网上和书中的介绍中,将是否进行合并或分离的条件称之为谓词 P。其实就是条件P。满足则合并,不满足则分离。程序的核心思路就是上面那些。其细致的描述在书中可以查到。(比如冈萨雷斯的《数字图像处理》),不重复描述了。
程序的思路可以总结为一下的步骤:
1.把任意区域Ri分为4个不相连的象限,其满足P(Ri);
2.当不可能在分时,合并任何满足P(Rj ⋃ ⋃ \bigcupRk)=True的区域Rj和Rk;
3.不能进一步合并时,则停止。
P(Rj ⋃ ⋃ \bigcupRk)=True的区域Rj和Rk;
程序则可能有多种变体,比如在分裂的同时合并等。在步骤2中,满足条件的使用1或者255来填充,不满足用0来填充,则很容易检测出其连通性,最终得到一副分割图像。
注意的点
图像的尺寸如果不是2的整数次幂,最后将无法保证最后分离的到尺寸为1的区域。如果非要处理这种图像,算法需要作出一定的更改。
程序有多种变种,这个会影响到程序的效率和显示效果。
改变分裂与合并标准是改动程序的重要方向,可以得到不同的合并效果和分裂效果。如均方差等等。所以网上的程序有很多,但是结果图却有些不一样,要仔细看程序采用了哪些方法。
我自己用c++按照上面思路写的代码。运行效果如下:
如图,用窗口和划线显示了分裂和合并的过程,用struct 和stack解决的分裂时的存储问题。改程序采用了经典的四叉树分裂。不会适配所有尺寸的图像,随意图像并不完美。
为了方便读入图片和显示图片,我这里调用了opencv库。其代码已经上传至csdn上,毕竟有时候还是要下载点程序的。这种东西都是单个的算法,算不上项目要求,就不放在github上了,太难看。
这次就写那么多吧。更细致的内容全在书里了
参考内容
冈萨雷斯的《数字图像处理》
《精通matlab数字图像处理与识别》
opencv区域合并与融合笔记(非教程)相关推荐
- OpenCV之Python学习笔记
RSS订阅 登陆 注册 原文链接地址:http://www.itozi.net/19477.html OpenCV之Python学习笔记 ITOZI 发布于 2015-08-06 分类:OpenSta ...
- OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并
OpenCV之Python学习笔记 一直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看到一本国外的新书< ...
- 基于OpenCV的图像融合
OpenCV实践-基于OpenCV的图像融合 –<小白学视觉>学习笔记 我们可以尝试多种不同图像组合. 比如可以将两张不同的图片或文本图像与图像组合在一起, 或将彩色背景与圈像组合在一起. ...
- 12月19日 OpenCV 实战基础学习笔记——特征匹配
文章目录 前言 一.特征匹配 1.Brute-force 蛮力匹配 2.1 对 1 匹配 3.k 对最佳匹配 二.答题卡识别 前言 本文为12月19日 OpenCV 实战基础学习笔记--特征匹配,分为 ...
- OpenCV for Ios 学习笔记(4)-标记检测1
本文原始地址:OpenCV for Ios 学习笔记(4)-标记检测1 简单的标记经常是以白色块和黑色块构成的规则图形.因为我们预先知道这些因素,所以我们可以很容易检测标记. 如图: 首先,我们需要找 ...
- Python 自学笔记(教程)(七)
Python 自学笔记(教程)(七) 代码 代码讲解 import time time.sleep() random random.randint() % 传送门 代码 今天的笔记很简单,就用课程作业 ...
- 蚂蚁笔记 linux安装教程,群晖docker安装蚂蚁笔记安装教程
原标题:群晖docker安装蚂蚁笔记安装教程 背景 偶然看见其他网友群晖一个 用途 当然是安装镜像了,需要安装2个 映像 mongo与leanote 2.直接创建mongo容器,端口27017 其他默 ...
- 最新zotero与obsidian笔记联动教程(可代替citations和mdnotes)
最新zotero与obsidian笔记联动教程(可代替citations和mdnotes) 一.联动原理 二.插件配置 1.zotero-better-bibtex 2.Bibnotes Format ...
- 108页《SpringBoot 学习笔记完整教程》PDF附下载
今天Hydra分享给大家一本108页的<SpringBoot 学习笔记完整教程>,从SpringBoot的基本入门使用,到搭建项目进行代码实战,最终研究底层实现原理,基本涵盖了各个环节,可 ...
最新文章
- 活动助手Beta用户试用报告
- Memcache存储大数据的问题(大于1m)
- Active Directory系列之十七:实战详解域信任关系
- Mybatis生成器插件扩展,定制方法生成,list参数生成
- SpringAOP aspectJ ProceedingJoinPoint 获取当前方法
- 都会五星回评,欢迎留下地址-博客之星
- 2.8_single_cycle_link_list_单向循环链表
- Kafka 安装部署、集群启动、命令行操作 与 可视化工具 Kafka Tool
- linux下tomcat缓存磁盘文件,Linux环境下清理Tomcat缓存
- 走向Java架构师之路:成为架构师要掌握的8大能力
- python自动抓取局域网文件_python使用tcp实现局域网内文件传输
- 如何调试 chrome插件
- 没有公网IP?快解析实现内网穿透
- 在线Word文档怎么做—使用超级文档一站式解决
- Everyone Do this at the Beginning!!--kaggle数据预处理-超详细的解说
- 结识51CTO学院后【51CTO学院三周年】
- 《RFID技术与应用》测试选择题
- 项目管理的3个关键动作:启动、推进、复盘
- 运动会加油稿计算机学院150字,大学运动会经典加油稿150字左右2018
- 22岁90后白羊座罗生和勒索病毒的背后故事