2011-06-14 210 views
1

我在2d有散乱的点云。我的问题是我想获得边界点来获得点云​​的轮廓。2d点云的轮廓

我知道这个'marching square',但是这个算法通常用于2d中的像素。 任何人都有想法如何从二维点云或“行军方”算法的细节获得轮廓?另外,凸包在我的情况下不起作用。

在此先感谢。

+0

我认为步行广场的方法仍然是你最好的选择。 (如果我错了,请纠正我)。您可以将2d点映射到“像素”值,更新该像素周围点的密度。因此,如果许多点接近某个像素,则密度比顶部或附近只有一个点的密度要高。从那里你将继续与行军广场。 – Bart 2011-06-14 15:08:12

+0

thanks.can你请解释你的意思是什么我的2D点映射到'像素'? – stephie 2011-06-15 07:51:23

+0

我正在考虑类似于3D中的元球(或者你可能会看看SPH流体模拟的表面重构方法)。这个链接主要包含我暗示的内容:http://www.geisswerks.com/ryan/BLOBS/blobs.html现在当然你会忽略3D和光线投射。这样的事会适合你吗?另一个有趣的链接可能是这样的:http://http.developer.nvidia.com/GPUGems3/gpugems3_ch07.html – Bart 2011-06-16 01:18:43

回答

-1

我建议使用Delaunay triangulation作为基础算法,然后删除所有太大的三角形(从而将云分成组),然后删除多于一个三角形使用的所有边。

0

我认为2D“Alpha形状”算法会为您提供正确的选择。

http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Alpha_shapes_2/Chapter_main.html

阿尔法形状可以被认为是为“凸壳”算法,其允许生成更一般的形状的概括。

通过使用alpha形状,您将可以通过更改alpha参数值来控制要生成的形状捕获的细节水平。

你可以在这里尝试的Java小程序:http://cgm.cs.mcgill.ca/~godfried/teaching/projects97/belair/alpha.html

有更好的了解有关执行此算法做。