OEPNCV 轮廓提取函数findContours中所用的算法原理疑问。
OPENCV 中的轮廓提取函数findContours。
所实现的算法是 来自于 Satoshi Suzuki and others. Topological structural analysis of digitized binary images by border following. Computer Vision, Graphics, and Image Processing, 30(1):32–46, 1985.
根据文章内的,附录1:
这里说一下我的理解,
(1),如果是外边界或者是内边界,NBD++,并且根据边界把,(i,j-1)或者(i,j+1)定义为(i2,j2)。
(2),关于LNBD的不多说。就是根据LNBD来确定新的边界的parent关系。
(3):
(3.1),从(i2,j2)开始顺时针方向,查找(i,j)邻域的非零像素。把第一个找到的非零像素定义为(i1,j1)。没有找到就把(i,j)的值变为负NBD,goto (4)。
(3.2),把(i1,j1)定义为(i2,j2),把(i,j)定义为(i3,j3)。
(3.3),从(i2,j2)逆时针方向的下一个元素开始,逆时针方向,查找(i3,j3)邻域的非零像素,把第一个找到的非零像素定义为(i4,j4)。
(3.4),改变(i3,j3)的值,根据如下规则:
(a),如果(i3,j3+1)是零像素,(i3,j3)赋值负NBD。
(b),如果不是零像素,并且(i3,j3)的值是1,赋值正NBD。
(c),如果(i3,j3)的值不是1,那么不改变值。
(3.5),如果(i4,j4)等于(i,j)并且(i3,j3)等于(i1,j1),也就是回到了起点,那么go to (4)。
否则,(i3,j3)定义为(i2,j2),(i4,j4)定义为(i3,j3),go to (3.3)
(4),如果(i,j)的值不等于1,那么LNBD赋值(i,j)值的绝对值。重新从(i,j+1)开始扫描,直到图像最后一个像素。
具体疑问,等下一次再说。发现手动计算时结果不对,例如
{0,0,0,0
0,1,1,0
0,0,1,0
0,0,0,0
}
OEPNCV 轮廓提取函数findContours中所用的算法原理疑问。相关推荐
- 用实际例子详细探究OpenCV的轮廓检测函数findContours(),彻底搞清每个参数、每种模式的真正作用与含义
关于OpenCV的轮廓检测函数findContours()各参数的大概意义,已在博文 https://blog.csdn.net/wenhao_ir/article/details/51798533中 ...
- 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法
本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...
- 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法
本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...
- GIS开发中常用几何算法原理图解
转自:OSGeo中国中心 http://www.osgeo.cn/post/ae457 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简 ...
- 机器学习中的K-means算法原理与R语言实例
聚类是将相似对象归到同一个簇中的方法,这有点像全自动分类.簇内的对象越相似,聚类的效果越好.支持向量机.神经网络所讨论的分类问题都是有监督的学习方式,现在我们所介绍的聚类则是无监督的.其中,K均值(K ...
- asp.net怎么实现按条件查询_用这个提取函数王中王,制作数据查询表
当Excel表的数据太多时,需要进行数据的查询与提取,往往要使用查找与引用函数.提取条件简单还好说,一复杂起来,就要使用又长又头疼的嵌套函数,不要说用了,光看懂函数都要死一片脑细胞. 别伤脑筋了,为什 ...
- js 实现2的n次方计算函数_JS中数据结构与算法---排序算法
排序算法的介绍 排序也称排序算法 (Sort Algorithm),排序是将 一组数据 , 依指定的顺序 进行 排列的过程 . 排序的分类 内部排序 : 指将需要处理的所有数据都加载 到 内部存储器( ...
- matlab中sqp的算法原理_利用fmincon函数中的SQP算法求解非线性规划问题,模型本身.......
本人利用matlab里的fmincon函数求解一个优化问题,主函数: clc clear all lb=[3 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1]; ub=[3 5 5 4 5 ...
- Sklearn机器学习中的主要算法原理以及实现
资源下载地址:https://download.csdn.net/download/sheziqiong/85894781 资源下载地址:https://download.csdn.net/downl ...
最新文章
- SharePoint 2013 - Callout
- oracle开窗函数是什么,ORACLE数据库(六)-----开窗函数
- eclipse-连接TFS错误 the server to respond with a valid http response解决方法
- linux find prune排除某目录或文件
- java swing 模拟发牌_用java设计一个发牌程序
- php登陆+链接+验证,php+ajax验证登录跳转登录的实现方法
- 《软硬件接口》课程大纲
- matlab动画_用matlab做一个脉动磁势分解的动画
- 新建一个包,并生成可以直接在命令行执行的指令
- JavaScript 3D 散点图
- html 日期选择器 ie8,兼容IE8的简单jQuery日期选择器插件
- 草图大师(SketchUp Pro 2019)多语言 永久启用教程
- 《黑天鹅》纳西姆-尼古拉斯-塔勒布_epub+mobi+azw3
- Photoshop中的标尺、参考线
- 用 Rust 写一个声控小动画
- Webtoos 仿Q+云桌面框架
- jnlp文件打开方式(jnlp文件打开方式Java)
- c语言指针 —— 面试题
- 数据人如何提高核心竞争力
- linux系统调用创建无名管道,无名管道系统调用
热门文章
- android打包证书文件在线生成
- 课后作业4:个人总结
- 微信小程序-知晓云等云产品导出excel
- Java高级程序员必备:高性能计数器及Striped64和LongAdder
- 解决开发板不兼容earpods问题
- android应用商店代码,仿小米应用商店Android客户端
- 使用openlayers加载地图行政区域(结合百度云地图)
- echarts自定义地图总结(VUE)
- 安卓设备脱离pc自动化测试,Termux模拟器下python+uiautomator2的环境设置。本人亲测,踩坑总结。
- semiplannar 什么是_图像识别VPU——易用的嵌入式AI支持深度学习平台介绍