python - 检测曲线边界上的点

标签 python opencv curve smoothing

我有半圆形或椭圆形对象的边界。示例图像是enter image description here enter image description here

边界可能略有锯齿(放大时)。我正在寻找在这些曲线上检测到一个兴趣点(位置x和y),我们在其中看到形状的确定变化,例如

enter image description here enter image description here

可以有两个输出:

  • 没有兴趣点:我们找不到特定功能
  • 具有x和y位置的兴趣点

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

    最佳答案

    什么也没有说别人会同意我的闭幕投票,所以...

    我建议两个步骤:

  • 使椭圆适合给定的点。我敢肯定,您现在已经找到了曲线拟合算法(也许还有软件包),并且要求在Stack Overflow中明确禁止使用这些算法。
  • 对一个小的异常检测器进行编码,该检测器适用于拟合曲线和实际数据点之间的差异。

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

    我建议您在极坐标中进行拟合,然后根据θ和半径考虑结果。可以将两个曲线“展平”为一个单元,以使中心角(θ)为新的x坐标,到中心的距离为新的y坐标。

    现在,减去两条曲线并绘制差异(或仅将此新曲线存储为点数组)。在这些差异中寻找适当的异常。这是您必须决定所需内容的地方。也许“r”值有足够的偏差(半径,到中心的距离);也许是梯度有变化(找到一个峰/谷,但没有一个缓慢倾斜的凸起)。偏差(拟合与异常之间的面积),是否要线性或平方...或其他函数?异常的宽度是否符合您的标准?

    那就是你需要决定的。这会让你动起来吗?

    关于python - 检测曲线边界上的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42913952/

    相关文章:

    python - UnicodeDecodeError 'utf-8' 编解码器无法解码 - 使用 python shapefile reader

    python - 使用分隔符python在列表python中切片字符串

    android - 为 TensorFlow 导出的 .pb 文件添加权重

    opencv - 如何使用 PCA 降维

    java - 基于点的曲线变换。 Android 中的贝塞尔曲线变换

    matlab - 遮荫并计算比面积

    python - 使用 Pandas 进行 bool 索引对我不起作用

    c++ - OpenCV 错误 : Assertion failed in cross correlation

    python - 图像校正 - OpenCV - Python

    c - OpenGL Nurbs : finding knot coordinates