如何将非直线分布的睡莲定位点拟合到rectilinear grid?
解决不规则点集拟合到Rectilinear网格的方案&相关关键词
先爆个彩蛋:这绝对是《仙剑奇侠传1》里仙灵岛的莲花迷宫!当年为了踩对莲花进岛找赵灵儿,不知道读档重来了多少次,满满的童年回忆拉满😎
回到你的问题,既然已经明确目标是12×12的正交网格(rectilinear grid),解决思路可以分成「分组规整」+「网格拟合」两步走,具体方法和搜索关键词如下:
一、具体实现步骤
1. 先按行/列分组(利用12×12的先验信息)
因为你已经知道网格规模,这一步可以走捷径:
- 行分组:提取所有方块左上角点的y坐标,用K-means聚类(指定聚类数
n_clusters=12),把y值接近的点归为同一行。如果点的y值差异不算极端,甚至可以直接对y坐标排序后,均分拆成12组(不过聚类的容错性更强)。 - 列排序:对每一行的点,按x坐标从小到大排序,这样每行的12个点就对应了12列的固定位置。
2. 拟合严格的Rectilinear网格
拿到分组后的点集,就可以生成规整的正交网格了:
- 对每一行:计算该行所有点y坐标的均值(或者用最小二乘法拟合一条水平线,取截距作为该行的基准y值),把该行所有点的y值统一替换成这个基准值。
- 对每一列:收集所有行中对应列位置的点的x坐标,计算它们的均值(或拟合垂直线取截距作为该列的基准x值),把该列所有点的x值统一替换成这个基准值。
- 最终得到的所有点就会落在严格的正交网格上,完全符合rectilinear grid的定义——行线平行、列线垂直,行列间距可以不均但结构规整。
如果不想硬编码12×12的规模,也可以先通过点的x/y坐标密度聚类自动检测行列数,再重复上述步骤。
二、查找相关算法的关键词
如果想找更学术或工程化的现成方案,用这些关键词搜索就能找到计算机视觉、点云处理领域的相关论文或开源实现:
rectilinear grid fitting from scattered pointsirregular point set grid regularizationorthogonal grid alignment for structured pointsrow-column clustering grid calibrationstructured point cloud rectilinear grid fitting
内容的提问来源于stack exchange,提问作者Brondahl
相关产品推荐
相关产品推荐

