我尝试从一组点中获取四边形的角点。
第二张图片有些极端,但是我的观点集的“质量”介于第一张图片和第二张图片之间。
首先,我想到了从1-360°和长度上制作直方图的方法,以下两点说明了这一点。四个最高峰将描述每条线的长度。但是由于失去顺序点,所以只知道度数和长度或一条线,却不知道一条线属于哪个位置。
然后,我想到了合并以下两条线,如果它们具有或多或少相同的程度,但是我不知道如何处理此处的噪音或预测拐角。
有谁知道可以解决此问题或类似问题的算法?
最佳答案
您可以将其视为聚类问题,其中聚类的“中心”实际上是直线。要计算聚类,可以使用k-means算法:
为了改进第一步,您可以考虑对各个角度进行直方图绘制,然后将每个点最初分配给与最接近的峰相对应的存储桶。然后将线装配到四个桶中,并开始进行迭代。
您也可以将其视为优化问题:选取4个点,以使差异的面积(四边形内部的白色区域和四边形外部的黑色区域)最小。通用优化算法可能会起作用,但是要使其快速运行,您需要一种合理的算法来计算面积。
关于algorithm - 从一组点中找到四边形的角点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15351616/