我有一个大的2D点集,已经被降采样成一个44x2的numpy数组(数组定义在后面)。我正在尝试找到这些点的边界形状,它们实际上是一个凹多边形。在第二张图中,我手动标记了一个近似的边界形状,我希望能得到它。
不幸的是,无论alpha参数如何,我似乎都无法达到所需效果。我已经尝试了一些手动设置和alphaoptimize,以下是其中的一些示例。
不幸的是,无论alpha参数如何,我似乎都无法达到所需效果。我已经尝试了一些手动设置和alphaoptimize,以下是其中的一些示例。
我是否对AlphaShape有什么关键的误解?文档似乎非常清晰,但显然我漏掉了一些东西。
import numpy as np
import alphashape
from descartes import PolygonPatch
import matplotlib.pyplot as plt
points = np.array(
[[0.16,3.98],
[-0.48,3.33],
[-0.48,4.53],
[0.1,3.67],
[0.04,5.67],
[-7.94,3.02],
[-18.16,3.07],
[-0.15,5.67],
[-0.26,5.14],
[-0.1,5.11],
[-0.96,5.48],
[-0.03,3.86],
[-0.12,3.16],
[0.32,4.64],
[-0.1,4.32],
[-0.84,4.28],
[-0.56,3.16],
[-6.85,3.28],
[-0.7,3.24],
[-7.2,3.03],
[-1.0,3.28],
[-1.1,3.28],
[-2.4,3.28],
[-2.6,3.28],
[-2.9,3.28],
[-4.5,3.28],
[-12.3,3.28],
[-14.8,3.28],
[-16.7,3.28],
[-17.8,3.28],
[-0,3.03],
[-1,3.03],
[-2.1,3.03],
[-2.8,3.03],
[-3.2,3.03],
[-5,3.03],
[-12,3.03],
[-14,3.03],
[-17,3.03],
[-18,3.03],
[-0.68,4.86],
[-1.26,3.66],
[-1.71,3.51],
[-9.49,3.25]])
alpha = 0.1
alphashape = alphashape.alphashape(points, alpha)
fig = plt.figure()
ax = plt.gca()
ax.scatter(points[:,0],points[:,1])
ax.add_patch(PolygonPatch(alphashape,alpha=0.2))
plt.show()