繁体   English   中英

从一组点中找到四边形的角点

[英]Find corner points of a Quadrilateral from set of points

我尝试从一组点中获取四边形的角点。

  • 点集排序并描述轮廓
  • 有时轮廓有些杂音(参见第二张图片)
  • 搜索的角点不必一定是给定点集中的点(请参阅左下第三张图片)
  • 搜索的角点描述了凸四边形,不一定是矩形

例子1例子2例子3

第二张图片有些极端,但是我的观点集的“质量”介于第一张图片和第二张图片之间。

首先,我想到了从1-360°和长度上制作直方图的方法,以下两点说明了这一点。 四个最高峰将描述每条线的长度。 但是由于失去顺序点,所以只知道度数和长度或一条线,却不知道一条线属于哪个位置。

然后,我想合并以下两条线,如果它们具有或多或少相同的程度,但是我不知道如何在此处处理噪音或预测拐角。

有谁知道处理这个问题或类似问题的算法?

您可以将其视为聚类问题,其中聚类的“中心”实际上是直线。 要计算聚类,可以使用k-means算法:

  1. 随机选择4对点。 每条线都适合,因此您有4条线穿过点云。
  2. 重复直到解决方案似乎收敛为止:
    1. 对于每个点,计算到4条线中每条线的距离。
    2. 将点分配到与其最接近的线相对应的存储桶。
    3. 在4个桶中的每个点上拟合4条新线(可以使用线性回归或SVD)

为了改善第一步,您可以考虑对各个角度进行直方图绘制,然后将每个点最初分配给与最接近的峰相对应的存储桶。 然后将线装配到四个桶中,并开始进行迭代。

您也可以将其视为优化问题:选择4个点,以使差异的面积(四边形内部的白色区域和四边形外部的黑色区域)最小。 通用优化算法可能会起作用,但是要使其更快,您需要一种合理的算法来计算面积。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM