2017-03-20 72 views
0

我有半圆或椭圆形物体的边界。示例图像为enter image description hereenter image description here检测曲线边界上的点

边界可以稍微锯齿(放大时)。我期待检测感兴趣在这些曲线上,我们看到的形状一定的变化(位置x和y)的点,如

enter image description hereenter image description here

可以有两个输出:

  1. 没有一点兴趣:我们无法找到特定功能
  2. 的x和y位置的兴趣点

目前,我正在使用Python和OpenCV。我想不出一种有效的方法来解决这个问题。任何帮助将非常感激。

+0

欢迎来到StackOverflow。请阅读并遵守帮助文档中的发布指南。[关于主题](http://stackoverflow.com/help/on-topic)和[如何问](http ://stackoverflow.com/help/how-to-ask)在这里适用 StackOverflow不是一个设计,编码或教程服务。 – Prune

回答

1

没有说其他人会与我的封票同意,所以......

我建议两个步骤:

  1. 适合椭圆给定的点。我相信你现在已经找到了曲线拟合算法(也许还有软件包) - 并要求那些在Stack Overflow中被明确禁止。
  2. 编写一个小型异常检测器,它可以处理拟合曲线和实际数据点之间的差异。

第2步很大程度上取决于您对“兴趣点”的定义。什么是标准?我注意到你的第二个兴趣点实际上非常接近拟合曲线;这是在任何一方向内偏离的区域。

我建议你在极坐标中做你的拟合,然后根据θ和半径来考虑结果。考虑将两条曲线“拼合”为一个单位,以使中心角(theta)为新的x坐标,而与中心的距离为新的y坐标。

现在,减去两条曲线并绘制差异(或将这条新曲线存储为一个点数组)。在这些差异中寻找适当的异常。这是你必须决定你需要的地方。也许在“r”值(半径,距中心的距离)方面有足够的偏差;或许梯度发生了变化(找到一个峰值/谷值,但不是一个平缓倾斜的凸出)你想要绝对差值还是积分值偏差(拟合与异常之间的区域),你想要它是线性的还是平方的......或者其他功能吗?异常宽度是否符合你的标准?

这就是你需要决定的。让你感动?