Algorithm 如何将这个不太直线的数据集拟合到直线网格
以这幅图像为例: 我可以(已经!)编写代码来定位每个lilypad(即那些红色方块,它们不在原始图像中) 对人类来说,这些单独的百合花垫形成了一个非常明显的12 x 12的正方形网格,让人类将这些垫分配到一个2D垫数组中是很简单的,在这一点上,我可以用它们做很多有趣的事情 但它们实际上并不在一个很好的网格中。它们不是直线,它们甚至不是均匀偏移的。 如何将焊盘(或等效地,每个正方形的左上角)安装到直线网格上。(或者查找现有算法所需的关键字是什么)Algorithm 如何将这个不太直线的数据集拟合到直线网格,algorithm,dataset,Algorithm,Dataset,以这幅图像为例: 我可以(已经!)编写代码来定位每个lilypad(即那些红色方块,它们不在原始图像中) 对人类来说,这些单独的百合花垫形成了一个非常明显的12 x 12的正方形网格,让人类将这些垫分配到一个2D垫数组中是很简单的,在这一点上,我可以用它们做很多有趣的事情 但它们实际上并不在一个很好的网格中。它们不是直线,它们甚至不是均匀偏移的。 如何将焊盘(或等效地,每个正方形的左上角)安装到直线网格上。(或者查找现有算法所需的关键字是什么) 识别来源的额外90秒儿童积分;) 您可以选择第
识别来源的额外90秒儿童积分;) 您可以选择第一个正方形(任意一个),给它一个虚拟坐标
(0,0)
,然后将该正方形添加到队列中。然后在每一步中,从队列中弹出一个正方形,并尝试找到最佳的上/下/左/右邻居。例如,在查找上邻居时,我们可以最小化等于|current.top-x.bottom |+| current.left-x.left |
的函数。然后,如果这个最佳邻居方块不在队列中,您可以使用新坐标(current.x,current.y+1)
将其添加到队列中,依此类推。如果你得到了令人怀疑的大的最佳距离-你是在边缘,你不需要添加一个邻居
当队列为空时,您将获得所有具有相对(相对于选定的第一个正方形)坐标的正方形,并可以将它们转换为所需的网格坐标。工作正常。谢谢