【问题标题】:Simplified concave-hulls简化的凹壳
【发布时间】:2011-03-27 12:26:53
【问题描述】:

问题:

给定:与 3d k 边非凸多边形强相关的 n 个点,其中 n >> k

找到:与点的原始几何形状相匹配的最佳拟合凹壳


尝试的解决方案:

警告:伪代码

segments = []
for each point in image:
    #segment points into planes via comparing approximate normals
    #actual implementation is more complicated
    findSegment(image,point)
for each segment in image:
    #transform coordinate system to be a 
    #2D-plane perpendicular to the normal of segment
    transform(segment, segment.normal)
    edges = findEdges(segment)
    polygonHull = reconstructPolygon(edges)
    #transform back to original coordinate system
    transform(segment, segment.normal)

示例:

 ___
|   |               |
|    \__    ==>     |   ___
|       |           |__/  /_____
|_______|          /  /   \_
                  /  /_____/
                 /

输入将只是一个高密度点云,它是多边形平面内近似均匀分布的随机点,带有一点噪音。

输出将是多边形在 3d 点中的顶点。


我的问题是,有没有更好的方法来解决这个问题?上述解决方案的问题是这些点可能是嘈杂的。此外,将点光栅化为 2d 然后执行边缘查找非常昂贵。

任何指针都会很棒。提前致谢

【问题讨论】:

  • 也许您需要定义“最佳”。你的意思是 3D k 面多面体而不是多边形吗?
  • 我想它的措辞有点糟糕,我现在将对其进行编辑。我的意思是多边形,因为我正在寻找投影到 3-D 中的 2-D 形状

标签: algorithm 3d polygon computational-geometry


【解决方案1】:

听起来您想计算投影到平面上的 3 空间中的一组点的凹壳。 2D 案例在here 中进行了详细讨论。

【讨论】:

  • 您链接到的 2D 案例似乎更多是稀疏点的种类。就我而言,对于一个简单的 9 边凹多边形,可能有大约 40000 个点。如果我使用相同的算法,似乎效率会非常低
【解决方案2】:

如果您的凹角不是太尖,我可能会尝试对点集进行 3d Delaunay 三角剖分。边界上的点的 Voronoi 区域将趋向于无限或比内部的更长。类似地,与多面体的单个面相关联的边界上的单元将倾向于在几乎垂直于它们相关联的面的方向上对齐,因为它们都将是长而细的,并且它们的长轴将是几乎平行并指向多边形外。有点像伪代码

Compute Delaunay triangulation
Collect long thin Voronoi regions
Partition the Voronoi regions into clusters that are nearby and nearly parallel.
Create faces normal to the axes of the Voronoi regions. 

编辑 现在我发现您只需要一个多边形。上述方法有效,但最好分两步完成。首先找到多边形所在的平面,对一小部分点进行最小二乘拟合可能就足够了。将点投影到平面上(这几乎就是您一直在做的事情),然后计算 2d Delaunay 三角剖分以找到边缘点并继续如上。

【讨论】:

    【解决方案3】:

    首先你要为你的网格选择一个表示。在 2D 中,我使用以下表示实现了 Python 凹壳算法:half-edge data structure

    那么,2D中的算法(你应该适应3D)可以接近to alpha shape algorithm, by Edelbrunner.

    【讨论】:

      猜你喜欢
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 2015-02-19
      • 2015-06-11
      • 2017-03-16
      • 2015-07-11
      • 2011-12-22
      相关资源
      最近更新 更多