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中所用的算法原理疑问。相关推荐

  1. 用实际例子详细探究OpenCV的轮廓检测函数findContours(),彻底搞清每个参数、每种模式的真正作用与含义

    关于OpenCV的轮廓检测函数findContours()各参数的大概意义,已在博文 https://blog.csdn.net/wenhao_ir/article/details/51798533中 ...

  2. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  3. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  4. GIS开发中常用几何算法原理图解

    转自:OSGeo中国中心 http://www.osgeo.cn/post/ae457 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简 ...

  5. 机器学习中的K-means算法原理与R语言实例

    聚类是将相似对象归到同一个簇中的方法,这有点像全自动分类.簇内的对象越相似,聚类的效果越好.支持向量机.神经网络所讨论的分类问题都是有监督的学习方式,现在我们所介绍的聚类则是无监督的.其中,K均值(K ...

  6. asp.net怎么实现按条件查询_用这个提取函数王中王,制作数据查询表

    当Excel表的数据太多时,需要进行数据的查询与提取,往往要使用查找与引用函数.提取条件简单还好说,一复杂起来,就要使用又长又头疼的嵌套函数,不要说用了,光看懂函数都要死一片脑细胞. 别伤脑筋了,为什 ...

  7. js 实现2的n次方计算函数_JS中数据结构与算法---排序算法

    排序算法的介绍 排序也称排序算法 (Sort Algorithm),排序是将 一组数据 , 依指定的顺序 进行 排列的过程 . 排序的分类 内部排序 : 指将需要处理的所有数据都加载 到 内部存储器( ...

  8. 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 ...

  9. Sklearn机器学习中的主要算法原理以及实现

    资源下载地址:https://download.csdn.net/download/sheziqiong/85894781 资源下载地址:https://download.csdn.net/downl ...

最新文章

  1. SharePoint 2013 - Callout
  2. oracle开窗函数是什么,ORACLE数据库(六)-----开窗函数
  3. eclipse-连接TFS错误 the server to respond with a valid http response解决方法
  4. linux find prune排除某目录或文件
  5. java swing 模拟发牌_用java设计一个发牌程序
  6. php登陆+链接+验证,php+ajax验证登录跳转登录的实现方法
  7. 《软硬件接口》课程大纲
  8. matlab动画_用matlab做一个脉动磁势分解的动画
  9. 新建一个包,并生成可以直接在命令行执行的指令
  10. JavaScript 3D 散点图
  11. html 日期选择器 ie8,兼容IE8的简单jQuery日期选择器插件
  12. 草图大师(SketchUp Pro 2019)多语言 永久启用教程
  13. 《黑天鹅》纳西姆-尼古拉斯-塔勒布_epub+mobi+azw3
  14. Photoshop中的标尺、参考线
  15. 用 Rust 写一个声控小动画
  16. Webtoos 仿Q+云桌面框架
  17. jnlp文件打开方式(jnlp文件打开方式Java)
  18. c语言指针 —— 面试题
  19. 数据人如何提高核心竞争力
  20. linux系统调用创建无名管道,无名管道系统调用

热门文章

  1. android打包证书文件在线生成
  2. 课后作业4:个人总结
  3. 微信小程序-知晓云等云产品导出excel
  4. Java高级程序员必备:高性能计数器及Striped64和LongAdder
  5. 解决开发板不兼容earpods问题
  6. android应用商店代码,仿小米应用商店Android客户端
  7. 使用openlayers加载地图行政区域(结合百度云地图)
  8. echarts自定义地图总结(VUE)
  9. 安卓设备脱离pc自动化测试,Termux模拟器下python+uiautomator2的环境设置。本人亲测,踩坑总结。
  10. semiplannar 什么是_图像识别VPU——易用的嵌入式AI支持深度学习平台介绍