【发布时间】:2011-06-24 14:13:15
【问题描述】:
我需要在一组点中找到“近”邻。
上图中有 10 个点。红线是Delaunay Triangulation 的边缘,黑色星星标记边缘的中线,蓝线是Voronoi tesselation。点 1 有 3 个“近”邻居,即 4、6 和 7,但不是 2 和 3,它们几乎与边缘 1-7 一致,但距离更远。
什么是识别近邻(或“好”边缘)的好方法?看这个图,在我看来,要么选择中点落在与 Voronoi 线相交的边缘,要么将那些与 Voronoi 细胞接触的边缘视为“近”邻居,这可能是一个很好的解决方案(分类 3-5可以去任何一种方式)。是否有一种在 Matlab 中实现任一解决方案的有效方法(我很高兴得到一个好的通用算法,然后我可以将其转换为 Matlab,顺便说一句)?
【问题讨论】:
-
+1 回答一个有趣的问题。为了更好地理解这一点,9 的“近”邻居是什么?
-
@Jacob:最有可能是 3、4、5、7、8、10。
-
Jonas,你确定 DelaunayTri 的返回对象有 1 和 3 连接吗?是否有一个引理表明如果它们的 voronoi 区域共享一条边,则两点之间存在 delaunay 边?我是这个领域的新手,所以如果我在这里遗漏了什么,请告诉我。
-
@sundar:我绘制了 DelaunayTri 的输出,所以是的,我确定。你说的可能有一个引理,但我不知道。
-
@Jonas,感谢您的回复,您能告诉我这些是 DelaunayTri 输入中唯一的点在哪里,还是这是一个放大版本,省略了一些外部点?
标签: matlab computational-geometry nearest-neighbor delaunay voronoi