1、Douglas-Peucker(DP)算法 -- 多边形逼近

//! approximates contour or a curve using Douglas-Peucker algorithm
CV_EXPORTS_W void approxPolyDP( InputArray curve,OutputArray approxCurve,double epsilon, bool closed );

[Douglas73]Douglas-Peucker算法(道格拉斯-普克算法)是将曲线近似表示为一系列点,并减少点的数量的一种算法。它的优点是具有平移和旋转不变性,给定曲线与阈值后,抽样结果一定。Douglas—Peucker算法通常用于线状矢量数据压缩、轨迹数据压缩等。https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm

approxPolyDP是多边形逼近:当需要对图像进行形状分析时,需要使用多边形逼近一个轮廓,使得顶点数目变少,算法原理比较简单,核心就是不断找多边形最远的点加入形成新的多边形,直到最短距离小于指定的精度。

approxPolyDP算法步骤:
(1)连接曲线首尾两点A、B形成一条直线AB;
(2)计算曲线上离该直线段距离最大的点C,计算其与AB的距离d;
(3)比较该距离与预先给定的阈值threshold的大小,如果小于threshold,则以该直线作为曲线的近似,该段曲线处理完毕。
(4)如果距离大于阈值,则用点C将曲线分为两段AC和BC,并分别对两段曲线进行步骤[1~3]的处理。
(5)当所有曲线都处理完毕后,依次连接各个分割点形成折线,作为原曲线的近似。

2、Teh-Chin算法

//! the contour approximation algorithm
enum
{CHAIN_APPROX_NONE=CV_CHAIN_APPROX_NONE,CHAIN_APPROX_SIMPLE=CV_CHAIN_APPROX_SIMPLE,CHAIN_APPROX_TC89_L1=CV_CHAIN_APPROX_TC89_L1,CHAIN_APPROX_TC89_KCOS=CV_CHAIN_APPROX_TC89_KCOS
};//! retrieves contours and the hierarchical information from black-n-white image.
CV_EXPORTS_W void findContours( InputOutputArray image, OutputArrayOfArrays contours,OutputArray hierarchy, int mode,int method, Point offset=Point());method –
Contour approximation method (if you use Python see also a note below).CV_CHAIN_APPROX_NONE stores absolutely all the contour points. That is, any 2 subsequent points (x1,y1) and (x2,y2) of the contour will be either horizontal, vertical or diagonal neighbors, that is, max(abs(x1-x2),abs(y2-y1))==1.
CV_CHAIN_APPROX_SIMPLE compresses horizontal, vertical, and diagonal segments and leaves only their end points. For example, an up-right rectangular contour is encoded with 4 points.
CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS applies one of the flavors of the Teh-Chin chain approximation algorithm. See [TehChin89] for details.

[TehChin89]Teh, C.H. and Chin, R.T., On the Detection of Dominant Points on Digital Curve. PAMI 11 8, pp 859-872 (1989)

3、Rosenfeld-Johnson

[Rosenfeld73]

---

参考文献

https://docs.opencv.org/2.4/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html

https://blog.csdn.net/qq_30815237/article/details/86901728 图像轮廓的多边形逼近approxPolyDP、轮廓包围框\圆\椭圆、凸包

《学习Opencv中文版》第8章

opencv findcourter之后的轮廓点拟合相关推荐

  1. (openCV 十九)轮廓Contours形状拟合

    什么是轮廓? 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同 的颜色或者灰度.轮廓在形状分析和物体的检测和识别中很有用. • 为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈 ...

  2. OpenCV:07图像轮廓

    图像轮廓 什么是图形轮廓 查找轮廓 绘制轮廓 计算轮廓的面积和周长 轮廓面积 轮廓周长 多边形逼近 凸包 轮廓拟合 外接矩形 最小外接矩形 最大外接矩形 外接圆 边缘检测`Canny` 霍夫变换 直线 ...

  3. 【opencv】(6) 图像轮廓处理

    各位同学好,今天和大家分享一下opencv中如何获取图像轮廓,以及对轮廓的一些其他操作.内容有: (1)轮廓检测:cv2.findContours():(2)轮廓绘制:cv2.drawContours ...

  4. 【图像处理】——Python+opencv实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(findcontours函数和contourArea函数)

    目录 一.函数 cv.findContours 二.轮廓层级(返回参数hierarchy) 三.轮廓寻找方式 1. RETR_LIST 2. RETR_TREE 3. RETR_EXTERNAL 4. ...

  5. OpenCV之findContours获取轮廓(Python版)

    参考:https://blog.csdn.net/loovelj/article/details/78739790 OpenCV自带寻找轮廓的函数,流程是:获取灰度图→图片二值化→寻找轮廓 直接上代码 ...

  6. 实战 | OpenCV如何将不同轮廓合并成一个轮廓(附Python / C++源码)

    点击下方卡片,关注"OpenCV与AI深度学习"公众号! 视觉/图像重磅干货,第一时间送达! 导读 本文主要介绍如何用OpenCV将不同的轮廓合并成一个轮廓的实现方法和代码演示. ...

  7. opencv 查找并绘制轮廓

    一个轮廓一般对应一系列的点, 也就是图像中的一条曲线.其表示方法可能根据不同的情况而有所不同. 在opencv中可以用findContours()函数从二值图像查找轮廓 findContours()函 ...

  8. 【OpenCV】直线、轮廓的提取与描述

    基于内容的图像分析的重点是提取出图像中具有代表性的特征,而线条.轮廓.块往往是最能体现特征的几个元素,这篇文章就针对于这几个重要的图像特征,研究它们在OpenCV中的用法,以及做一些简单的基础应用. ...

  9. OpenCV使用findContours查找轮廓和相关函数——C++

    OpenCV使用findContours查找轮廓和相关函数--C++ findContours函数的使用 findContours函数的使用 //查找前景的区域 vector<vector< ...

最新文章

  1. 删除链表中全部值为k的节点
  2. Dynamics 365-关于Solution的那些事(一)
  3. 戏说模式-追MM与设计模式 (转载)
  4. 十步让你成为一名优秀的 Web开发人员
  5. Yarn管理界面中各个参数和yarn-site.xml中参数的对应关系
  6. Spring Boot应用程序浪费了内存
  7. mit数据集_MIT的DNN硬件加速器教程(二)流行的DNN和数据集
  8. 几个接下来要解决的问题
  9. 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》一一第0章 初识数字图像处理与机器视觉...
  10. Linux使用 tar命令-g参数进行增量+差异备份、还原文件
  11. session与cookie的区别和用法
  12. 1.关于Python,你可能不知道的
  13. ADB 操作命令详解及用法大全
  14. 密西根州立大学计算机排名,密歇根州立大学MSU(Michigan State University)计算机科学Computer Science专业排名第91位(2021年THE世界大学商科排名)...
  15. 批处理切换host文件
  16. python解析MNIST数据集(IDX格式)
  17. 沪深A股分析数据机构持股信息API接口(JSON标准格式,Get请求方式)
  18. java 事件流_JDK14的新特性:JFR,JMC和JFR事件流
  19. change lan.php lanid,天融信负载均衡本地文件包含漏洞
  20. CDN工作原理(CNAME)

热门文章

  1. 1157:哥德巴赫猜想
  2. 【电脑运用及修理】电脑常见技巧大全(超全)
  3. 2022 综合英语慕课(大学英语二)最新满分章节测试答案(题库中自找具体题目)
  4. 【应用多元统计分析】——第三章(1)
  5. what Data Fabric
  6. 新任学校领导的国家简报
  7. java 主动释放_java如何进行内存自动释放,垃圾回收的?
  8. php留言板的实验步骤,PHP实现基本留言板功能原理与步骤详解
  9. 通达信指标公式编写常用函数(八)——MAX、MIN、BETWEEN、ABS
  10. 排球计分规则功能说明书