如何在python

时间:2017-10-23 09:32:36

标签: algorithm python-3.x triangulation delaunay concave-hull

我想检测一组点的边界。我从scipy spatial尝试了Delaunay三角测量,但我得到了这个:enter image description here

当我从这些三角形中执行alpha形状时,我无法获得该组点的边界。所以我认为我应该使用受约束的Delaunay三角剖分。我选择三角形库来执行此操作。但麻烦的是,我不知道要向函数triangle.triangulate(tri,opts ='')提供什么。我提供了我改为字典的所有点,但它返回了我的一组点。那么任何人都可以帮我使用这个功能或其他替代方法来执行轮廓检测?感谢

2 个答案:

答案 0 :(得分:1)

我为我的目的使用另一个库:shapely。 以下是如何使用它来对凹面对象进行三角测量:

from shapely.geometry import MultiPoint
from shapely.ops import triangulate
points=MultiPoint(data)
triangles = triangulate(points)

答案 1 :(得分:0)

我不了解三角形库,但您可以使用替代方法来执行此操作。

这是一个普遍的问题,你可以得到一个简单的代码来解决这个问题。 算法中的这个问题也被称为凸壳,并且scipy中有一个类。

下面的代码带有注释。

#imports
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt

## Init graphics
axis = plt.gca(); axis.cla();

#Get points sample
points = np.random.rand(20, 2)

#get Convex hull instance for the points set
hull = ConvexHull(points)

#plor the points
plt.plot(points[:,0], points[:,1], 'v')

#Get and plot the boundary
for simplex in hull.simplices:
    axis.plot(points[simplex, 0], points[simplex, 1], 'r-')

结果图表很快就会出现:

enter image description here

个REF: