【问题标题】:Simple algorithm for approximation image contour for line segment线段近似图像轮廓的简单算法
【发布时间】:2018-03-09 00:58:18
【问题描述】:

图像轮廓是一个数组点。我需要在每边接近两个点来创建四个线段。

Image contour

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。
  • 那么当你尝试实现这个的时候有什么问题呢? StackOverflow 不是代码编写服务。预计您已经进行了一些研究并尝试自行解决问题。如需更多信息,请拨打tour 并阅读How to Ask 页面。然后编辑问题以反映这一点。

标签: c# image-processing emgucv opencv-contour


【解决方案1】:

一种可能的方法。

找到这些点的凸包。

然后找到相距最远的两个顶点。这给出了第一个对角线。

然后找到离第一条对角线最远的另外两个顶点。这给出了第二条对角线。

现在你可以使用这四个顶点组成的四边形了。

如果您想要更紧密的拟合,您可以考虑由对角线定义的四个象限中的点子集,并计算最佳拟合线,例如通过最小二乘法。

【讨论】:

  • 这种使用凸包的方法确实简单而高效。谢谢。
【解决方案2】:

另一个也使用凸包:

找到点集的凸包

计算凸包弧长。

最后计算一个近似多项式轮廓,误差等于弧长的 10%(如果超过 4 个点增加误差百分比)

CvInvoke.ApproxPolyDP(vec, vecApprox, 0.1 * arcLength, true);

这给出了很好的结果,并且通常用于车牌检测,这是同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2021-01-05
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多