最近几天我花在搜索曲线重建实现上,但没有找到 - 不是作为库也不是作为工具。
描述我的问题。
我主要担心的是有差距的轮廓:
从我同时阅读的论文中,我猜解决方案将需要使用Delaunay三角测量,而参考最多的方法似乎在1997年的论文“The Crust and the β-Skeleton: Combinatorial Curve Reconstruction ”中进行了描述
有人能指出我的曲线重建实现,可以帮我解决这个问题吗?
答案 0 :(得分:1)
算法在CGAL中实现。可以在C ++ CGAL ipelets演示包中看到示例实现。更多编译演示允许用户在ipe GUI application中使用算法:
在上面的示例中,我只选择了部分图像,因为底线不符合必要的要求,因此在修正之前不能对该部位应用地壳。此外,必须对图像进行采样,这是值得注意的。
如果没有人提供其他实施示例,我会在几天后将答案标记为正确。
答案 1 :(得分:0)
Delaunay三角剖分使用离散化曲线,并且随之丢失信息。这可能会导致您不期望它们的奇怪问题。在你的例子中,下边界的中间部分可能会引起问题。
在这种情况下,最好从模型中收集相关信息并尝试进行匹配。
类似的东西,对于每个终点收集邻域中的轮廓导数。然后找到该端点可以连接的所有端点,使用近似导数方向并且该关节不与其他线交叉。可以通过关节距离和与局部导数的偏差来给予可能的连接的权重。给予权重定义具有可能的端点连接的加权图。该图中的最大边缘匹配可以很好地解决问题。
答案 2 :(得分:0)
有很多方法可以解决这个问题;
您可以简单地编写一条跟随曲线的蠕虫,当您到达曲线的末尾时,您将当前的方向向量与渐变一起并向前推断。找到最适合的所有其他端点,然后对其进行评分;重新连接分数最高的那个。简单,如果它不仅仅是一个简单的分解,而且容易出现问题。
A hierarchical waterfall method might be interesting
瀑布(和水平集方法)中有一些阈值方法可用于检测这些间隙并填充它们。