问题标签 [concave-hull]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
10659 浏览

geometry - 包围给定点集的边界

我目前使用的算法有点问题。我想让它做一个边界。

以下是当前行为的示例:

当前行为

这是一个想要行为的 MSPaint 示例:

通缉行为

C# 中 Convex Hull 的当前代码:https ://hastebin.com/dudejesuja.cs

所以这是我的问题:

1)这甚至可能吗?

回复:是的

2)这甚至被称为凸壳吗?(我不这么认为)

R:不,它被称为边界,链接:https ://www.mathworks.com/help/matlab/ref/boundary.html

3)这会比传统的凸包对性能更友好吗?

R:嗯,据我研究,它应该是相同的性能

4)这个算法的例子在伪代码或类似的东西?

R:还没有回答或者我还没有找到解决方案

0 投票
0 回答
416 浏览

c++ - 3D 凹壳算法(alpha 形状 3),不能使用 CGAL

有谁知道用于计算 3D 点集的凹壳的 GPL(最好是 MIT)代码。我知道 CGAL 中有执行此操作的功能,但我不能使用 CGAL atm。如果可能的话,在我花时间自己实现之前,MIT 实现会很好,甚至是 GPL 作为概念证明。对一些凹面/阿尔法形状算法的任何解释也有助于更好地理解如何实现这一点。我正在努力寻找 alpha_shapes_3/concave hull 的 c++ 实现。我正在寻找除 CGAL 之外的其他实现或 alpha 形状算法的解释。

谢谢你。

[编辑:] 换一种说法......除了 CGAL 之外还有什么可以做 3D alpha 形状的吗,麻省理工学院会很高兴帮我做这件事,但是一个专门的开源项目也足够了,它是孤立的,不是框架的一部分. 如果不提供任何用于执行此 3D 的算法的信息,也将不胜感激。

0 投票
1 回答
623 浏览

julia - 使用 Julia 获取一组点的 alpha 形状(凹壳)

我想使用 Julia 计算一组点的 alpha 形状(甚至只是凹壳)。在其他问题中,他们通过使用包含给定点集的 Delaunay tesselation Boundary在 python 中解决了这个问题。

Julia 中的这个包可以获得 Delaunay 镶嵌 https://github.com/JuliaGeometry/VoronoiDelaunay.jl(虽然我不确定它是否针对 julia v0.7 进行了更新)。我想知道 julia v0.7 是否已经有一个实现可以得到 eh alpha 形状,甚至只是一组点的凹壳。

或者,有没有办法有效地调用 python (scipy.spatial.Delaunay) 来完成这项工作?

0 投票
3 回答
648 浏览

matlab - 连接一组点以获得非自相交的非凸多边形

我有一组无序的 2D 点,它们代表建筑物的角落。我需要连接它们以获得建筑物的轮廓。

这些点是通过组合不同个体收集的不同多边形获得的。我的想法是使用这些多边形来按顺序获取点(例如,取最大和最小多边形之间的区域并连接这些点,使其进入该区域)。

我尝试使用最小距离标准并根据角度连接点。但不幸的是,它不起作用。我拥有的一件有用的事情是点顺序正确的许多多边形的原始数据。那么有没有可能与那些多边形进行比较来连接这些点呢?正如我上面提到的,我的教授提出了采用最大和最小多边形并将其之间的区域用作缓冲区的想法。所有的点都会落在这个缓冲区中。但我不确定如何实现这一点。

在此处输入图像描述 在此处输入图像描述

预期结果是一个代表建筑物平面图的封闭多边形。我有 15 个建筑样本,代码需要适用于所有人。一些建筑物不保留角落之间的直角标准。我附上了我拥有的数据。我拥有的点是通过整合多边形获得的。那么有没有办法在集成之前使用这个多边形(其中的点是按顺序排列的)实际数据

0 投票
1 回答
683 浏览

computational-geometry - 构建多边形的约束 alpha 形状

我有一个非常具体的任务。
我需要计算一组点的alpha 形状(你可以在那里玩已经实现的算法)

关键是我已经预定义了点的子集(我们称它们为细节),我不希望它们的结构被改变。例如,假设这些多边形是细节:

在此处输入图像描述

然后,根据 alpha 半径,以下船体是可以的:

在此处输入图像描述

在此处输入图像描述

以下不是:

在此处输入图像描述

简而言之,我希望指定点子集的结构在减小半径期间保持不变。

那么,你怎么看:

  1. 我可以使用任何已经实现的算法还是应该找出一些特定的算法?
  2. 在任何地方都有开源代码的 Alpha-Shape 算法的实现示例吗?(Alpha-Shape,不是Concave hull。减小半径时必须将轮廓分成几部分)
0 投票
3 回答
11746 浏览

python - 一组线的Python凹壳多边形

我正在寻找凹壳问题的 python 实现。我的问题有点不同,因为我没有一组点,而是一组线,结果凹壳将大致沿线绑定(如左图所示)。 左:输入,右:输出

我知道没有单一的“正确答案”。但是一些近似值足以满足我的需要。一种可能的解决方案是获取每条线并将其插值到假设为 20 个点的范围内,然后找到所有创建点的凹壳。不确定。

编辑:

我认为这些线条增加了一些价值,使船体更清晰,更容易找到。

即使不使用线条(只是从点列表中找到一个凹壳),一个好的 python 实现也会有帮助

0 投票
0 回答
427 浏览

algorithm - 创建点云的最小边界框组合的算法

我有一组二维点。我想为这些点的子集找到一组(可能重叠和任意方向的)边界框,使得每个点位于至少一个框内,每个框包含至少 k 个点,并且框的组合区域为最小化。

我拥有的算法的一个想法是:

  • 使用凹壳算法找到点的凹壳。
  • 使用凸分解算法找到一组凸包。
  • 为每个凸包计算任意方向的最小边界框。

我正在为这个问题寻找其他(可能更适合)算法的列表?

0 投票
1 回答
374 浏览

r - 获取R中分散数据的多个多边形

我有一个区域的点云数据(x、y、z 坐标) X 和 Y 的图如下所示: 在此处输入图像描述

我正在尝试在此数据中获取不同集群的多边形。我尝试了以下方法:

好像我只是得到一个绑定整个数据的多边形。conc$polygons是一个变量的列表。如何定义多个多边形?当我使用 concaveman 时我错过了什么以及它可以提供什么?

0 投票
1 回答
136 浏览

python - 用于在 python 中查找点云边界的 3D alpha 形状

我正在尝试使用 3D alpha 形状算法找到点云的表面。当我计算外接半径时,行列式 a 等于 0,导致错误“在 double_scalars 中除以零”。我该怎么办?非常感谢!这是代码:

0 投票
0 回答
45 浏览

python - 图像处理:concaveHull 查找图像的缺陷

我一直在尝试确定一种计算缺陷(线粗糙度)的方法,而 convexHull 是我发现的唯一真正的方法。这种方法完全符合我的要求,只是它根本不遵循线条的曲率。下面是正在分析的图像,上面绘制了一个凸包。我绝对找不到可以解决问题的 concaveHull 函数。

在我找不到的地方有没有 concaveHull 函数?我知道会有需要优化的灵敏度等参数,但我不知道从哪里开始。这是我所指的功能。

凸包问题