目录

  • 1. 折线转成光滑曲线
  • 2. 求拐点
  • 3. paper
    • 3.1 基于图像轮廓曲线的拐点检测算法
      • 摘要
      • 0. 引言
      • 1. APTD 拐点检测算法
        • 1.1 算法原理
        • 1.2 拐点判别函数的推导
    • 3.2 基于轮廓曲率的多边形角点检测算法
  • 参考资料

1. 折线转成光滑曲线

[1] 将折线图转换成光滑的曲线 2021.4;

[2] python 数据、曲线平滑处理 2022.4;

2. 求拐点

3. paper

3.1 基于图像轮廓曲线的拐点检测算法

摘要

拐点是图像很重要的特征,包含图像的主要结构信息,拐点检测对图像配准、目标识别和三维重建
等任务的处理都有着非常重要的作用。

从研究轮廓上点的曲率出发,针对传统基于轮廓的拐点检测算法对噪声和局部变化敏感而造成检测结果不稳定的问题,提出一种间接反映轮廓曲率特性的方法,记为 APTD( Accumulation of Point to Tangent Distance) 。

使用高斯函数对轮廓曲线进行平滑处理,轮廓上点的曲率越大则该点附近的点到该点处切线的距离也越大,根据这一思想,将轮廓上点附近支撑域内的点到该点所对应切线相对距离的累加和作为拐点的判别函数,从而实现轮廓拐点的检测。

经由数学推导表明所提出的算法具有合理性和可行性,对比实验分析表明该算法精度高、运算量小、定位准确。

0. 引言

拐点检测( Corner Detection) 是计算机视觉系统中用来获得图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维建模和目标识别等领域。目前的拐点检测算法可分为两类: 基于灰度图像的拐点检测算法和基于轮廓曲线的拐点检测算法
基于灰度图像的拐点检测算法主要是通过计算像素点各个方向上的灰度变化来检测拐点。这类方法主要有 Moravec 算法、Harris 算法和 Shi-Tomasi 算法。Moravec 算法[1]将拐点定义为自相关性非常低的点,其基本思想是: 在图像中设计一个局部检测窗口,当该窗口沿各个方向做微小移动时,观察窗口的平均能量变化,当该能量变化值超过设定的阈值时,就将窗口的中心像素点提取为拐点。但此方法存在一定的缺陷,例如由于位置点的坐标限制只能最多考虑到 8 个方向的移动变化。
Harris 算法[2]在 Moravec 算法的基础上进行了一定改进,通过自相关矩阵( Harris 矩阵) 变换和偏微分操作,有效解决了 Moravec 算法只能检测 8个方向上基本变化的缺陷。Shi-Tomasi 算法[3]首先假设图像中每个像素的函数值都是稳定且光滑的,然后简化了 Harris 算法中分别求解 Harris 矩阵两个特征值进行判断的方法,直接计算两个特征值中的最小值作为判断依据,并从理论上和实验上证明了这种改进的优势。

基于轮廓曲线的拐点检测算法[4]主要是利用轮廓上点的曲率信息和几何位置信息来衡量该点的弯曲程度,从而判定该点是否为拐点。其中,最经典的是Mokhtarian 等[5]于 1998 年提出的 CSS( Curvature ScaleSpace) 算法,根据轮廓上每个像素点的曲率值衡量拐点响应程度。该算法首次引入曲率尺度空间的概念,在不同的尺度下检测拐点和定位拐点。由此衍生出了一系列的改进算法,从不同角度对 CSS 算法进行了一定程度的改进,如 ACSS[6]、ARCSS[7]、MSCP[8]等。然而,由于在基于曲率尺度空间的算法中涉及曲率的计算会导致拐点检测的不稳定性和不精确性,并且对噪声比较敏感,于是 Awrangjeb 等[9]于 2008 年提出了CPDA( Chord-to-Point Distance Accumulation) 算法,在详细分析了基于曲率尺度空间的算法的局限性之后,提出一种从侧面反映曲率的方法,利用轮廓曲线上的点到弦的距离累加和作为拐点判别函数,从而实现拐点的检测。

本博文针对在高压输电线的视觉测量过程中出现的,由于图像分割不完全,使提取到的输电线轮廓边缘有大量连通域的问题,研究了图像轮廓曲线的拐点检测算法,并提出一种新的反映曲率特性的拐点检测方案,从曲线轮廓上点的切线出发,利用该点周围的点,到该点切线的相对距离的累加和作为拐点判别函数,从而实现拐点的检测,避免了使用一阶和二阶导数,因此拐点判别函数对噪声和局部细节的鲁棒性较好,为解决图像轮廓曲线的连通域去除问题做了铺垫。

1. APTD 拐点检测算法

1.1 算法原理

如图 1 所示,以两条开口向上的抛物线 y=4x2y = 4x^2y=4x2 和 y=x2y = x^2y=x2 为例,黑色粗线表示两条曲线的切线并且切点是原点。对于切线上以原点为切点的附近一点(x0,0)( x_0,0)(x0​,0),从该点出发作一条垂线与两条曲线分别交于 (x0,4x02)( x_0,4x_0^2 )(x0​,4x02​) 、(x0,x02)( x_0,x_0^2 )(x0​,x02​) 。从而可知 d1=4x02d_1 = 4x_0^2d1​=4x02​,d2=x02d_2 = x_0^2d2​=x02​,有 d1>d2d_1 > d_2d1​>d2​。

所以可以得出结论,对于曲线上某一点来说,曲线开口越小( 曲率越大) ,该点附近的点,到以该点为切点的切线的距离越大。通过这一思想,下面给出拐点判别函数的推导。

1.2 拐点判别函数的推导

假设轮廓上 mmm 位置上的点为(xm,ym)(x_m,y_m)(xm​,ym​) ,那么半径为 LLL 的支持域内的点集可以表示为 [(xm+l,ym+l)]l=-LL[( x_{m + l},y_{m + l}) ]^L_{l = - L}[(xm+l​,ym+l​)]l=-LL​,不妨令 l=0l = 0l=0 时该位置弧长 Sm=0S_m = 0Sm​=0。具体推导步骤如下。

( 1) 弧长参数化方程。
由弧长参数化方程可得,支持域内的点集{(xm+l,ym+l)}Ll=-L\{ ( x_{m + l},y_{m + l} ) \} L_l = - L{(xm+l​,ym+l​)}Ll​=-L可使用弧长作为参数,从而转化为关于 xxx、yyy的两个坐标点列{(Sm+l,xm+l)}Ll=-L\{ ( S_{m + l},x_{m + l }) \} L_l = - L{(Sm+l​,xm+l​)}Ll​=-L和{(Sm+l,ym+l)}Ll=-L\{ ( S_{m + l},y_{m + l}) \} L_l = - L{(Sm+l​,ym+l​)}Ll​=-L。

因而构造弧长关于 xxx,yyy 的函数:

为了计算的方便和算法的简洁,使用不超过二次的函数来构造弧长关于 xxx,yyy 的函数。

假设:
x( S) = λ0 + λ1 S + λ2 S2
{y( S) = μ0 + μ1 S + μ2 S2
其中,${ ( S_{m + 1},x_{m + 1} ) } Ll = - L,分别为 x( S) ,y( S) 上的点,则系数 (λ0,λ1,λ2)( λ0,λ1,λ2 )(λ0,λ1,λ2) 和 (μ0,μ1,μ2)( μ0,μ1,μ2 )(μ0,μ1,μ2) 是满足 x ( Sm ) 和
y( Sm ) = ym 最小二乘意义下的解,由 Sm = 0 可得:

3.2 基于轮廓曲率的多边形角点检测算法

角点 是二维图像中亮度变化剧烈的点,或者是目标轮廓上曲率变化的局部极大值点。角点包含重要的图像信息,角点在目标跟踪、三维重建、图像融合、图像配准、全景图像拼接等方面都扮演着重要角色。

目前的角点检测算法可以归纳为以下四类:基于灰度图像的角点检测;基于数学形态学的角点检测算法;基于二值图像的角点检测;基于轮廓曲率的角点检测。

而基于图像的角点检测算法容易受到图像噪声的影响而出现伪角点的现象。本文研究了一种基于轮廓曲率的角点检测算法,算法具有较高的计算效率和稳定性,实现了对任意多边形轮廓角点的检测实验,并得到了可靠的轮廓角点。

参考资料

[] 基于轮廓曲率的多边形角点检测算法 [J] 2019.10;
[2] python 数据、曲线平滑处理 2022.4

折线图转成光滑曲线并求拐点相关推荐

  1. Echarts中折线图如何绘制光滑曲线?

    "data":[{"name":"指标a","type":"line","stack&qu ...

  2. 多个折线样式_新技能get,折线图转化成多阶梯瀑布图

    瀑布图是由麦肯锡顾问公司所独创的图表类型,因为形似瀑布流水而称之为瀑布图. 此种图表采用绝对值与相对值结合的方式,适用于表达数个特定数值之间的数量变化关系. 10月-12月累计等于四季度,一季度-四季 ...

  3. WPF将点列连接成光滑曲线——贝塞尔曲线

    背景 最近在写一个游戏场景编辑器,虽然很水,但是还是遇到了不少问题.连接离散个点列成为光滑曲线就是一个问题.主要是为了通过关键点产生2D的赛道场景.总之马路不可能是直线相连的,当然需要曲线光滑相连.现 ...

  4. 数据可视化之折线图让数据变得更直观易懂

    折线图用于显示随时间或有序类别而变化的趋势,可能显示数据点以表示单个数据值,也可能不显示这些数据点. 折线图是排列在工作表的列或行中的数据可以绘制到折线图中.折线图可以显示随时间(根据常用比例设置)而 ...

  5. python【Matlibplot绘图库】画多个曲线的折线图(Matplotlib.pyplot.plot)

    文章目录 1.代码 2.输出 3.方法解释  这里我利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图: 1.代码 # -*- coding: UTF ...

  6. python绘制曲线图-python绘制多个曲线的折线图

    这篇文章利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图: # -*- coding: UTF-8 -*- import numpy as np i ...

  7. php制作曲线柱形图的框架,用GD图库生成横竖柱状图折线图的类_php

    最近写的一个GD图库用以生成横竖柱状图和折线图的类库,算是一个教学例程吧 Class ImageReport{ var $X;//图片大小X轴 var $Y;//图片大小Y轴 var $R;//背影色 ...

  8. python画两条曲线图_python绘制多个曲线的折线图

    这篇文章利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图: # -*- coding: UTF-8 -*- import numpy as np i ...

  9. python画曲线图-python绘制多个曲线的折线图

    这篇文章利用的是matplotlib.pyplot.plot的工具来绘制折线图,这里先给出一个段代码和结果图: # -*- coding: UTF-8 -*- import numpy as np i ...

最新文章

  1. kafka生产者、消费者java示例
  2. 死锁是什么?死锁产生的条件?如何避免死锁?以及死锁的示例代码(Java代码)
  3. IE6页面最小宽度的设置方法
  4. spring系列-注解驱动原理及源码-AOP使用及源码解析
  5. c web文件服务器,使用C++制作简单的web服务器(续).pdf
  6. 【EasyUI】DataGrid自定义排序
  7. 如何改造现有文件为 CMD 模块
  8. 等保2.0标准下,测评中重点关注的内容
  9. VC++多线程工作笔记0003---MFC中用户界面线程的相关操作
  10. 8.企业应用架构模式 --- 通盘考虑
  11. LINQ(LINQ to Entities)
  12. 天锐绿盾技术大讲堂:终端出现红色“+”
  13. HTTP权威指南 文字版 带目录
  14. excel android版,Microsoft Excel手机版
  15. WPS简历模板的图标怎么修改_HR眼里的优秀简历模板长这样!30份中英文优秀模板,可一键修改!...
  16. 报错 mysql 1194
  17. 使用腾讯 CDN,结果网站现在出现您的连接不是私密连接”“,”隐私设置错误”如何解决?
  18. 计算机命令无法到达打印机,Win7打印机发送打印命令后不打印自动消失怎么办...
  19. Ubuntu 20.04连接蓝牙适配器5.0版本
  20. 汉堡造型的动态导航菜单,非常有意思

热门文章

  1. 【Arduino教程】GP2Y1014AU粉尘传感器原理分析及使用
  2. np.arctan2(x,y)解读
  3. iOS小技能:自定义时间格式(适配iOS15.4之后12/24小时制的问题)
  4. 揭秘IT领域:挑战,机遇与未来
  5. scratch 简单的下雨场景
  6. C++不同的数据成员类型
  7. A-Fast-RCNN: Hard Positive Generation via Adversary for Object Detection 笔记
  8. VSO Downloader下载工具vso_downloader_setup.exe
  9. 计算机办公自动化取证,办公自动化技术基础
  10. 计算机科学专业主修课程,计算机科学与技术专业的主干课程