是否有任何算法允许近似x-y平面上的路径(即由x和y定义的有序点集合),其中有限数量的线段和圆弧(恒定曲率)?得到的曲线需要为C1(斜率的连续性)。
最大数量或段和弧可以是参数。另一个有趣的限制是防止两个连续的圆弧,而没有连接它们的中间线段。
我认为没有办法做到这一点,我认为没有办法解决这个问题,但是对此目标的任何暗示都是值得欢迎的。
示例:
考虑这条道路。它看起来像一条线,但实际上是一个非常接近点的有序套件。没有噪音,点序列的顺序是众所周知的。
我想用最小数量的连续线段和圆弧(比如说10个线段和10个圆弧)和C1连续性来近似这条曲线。段/弧的数量本身并不是一个目标,但我需要任何参数来减少/增加这个数量,以达到参数化的某些简单性,但代价是精度损失。
解决方案:
根据Spektre的回答,这是我的解决方案。红色曲线是原始数据。黑线是段,蓝色曲线是圆弧。绿色十字形是弧形中心,半径显示,蓝色十字形是可能连接的区域。
答案 0 :(得分:2)
所以你得到了一个点云......对于这样的通常,靠近在一起的点被认为是连接的,所以:
您需要添加有关哪些点接近哪些点的信息
点仅关闭信号曲线/线内部的2个邻居。只有一个邻居意味着曲线/线的终点,然后多于2表示交叉或太近的几乎或平行的线/曲线。没有邻居意味着噪音或只是一个点。
将路径段组合在一起
这称为连通成分分析。因此,您需要从邻居信息表格中形成折线。
检测线性路径块
这些在相邻段之间具有相同的斜率,因此您可以将它们连接到单行。
将其余部分与曲线相匹配
此处有相关的质量保证:
[Edit1]数据上#3的简单线路检测
我使用5.0 deg
角度变化作为线条的阈值,并且将检测到的线条的最小尺寸用作50个样本(假设恒定点密度,懒得计算长度)。结果如下:
点是检测到的线端点,绿线是检测到的线,白色“线”是曲线,所以我现在看不出这种方法有任何问题。
现在问题在于左边的点(曲线)我认为应该还有几何方法,因为它只是圆弧,所以像这样
这也可能有所帮助:
答案 1 :(得分:1)
C1要求要求必须具有交替的直线和弧线。还要意识到,如果允许足够数量的线段,您可以通过直线轻松地适合每对点,并使用微小弧线来满足斜率连续性。
我建议使用此算法,
1最适合一组(指定的N)直段。 (当然有很好的算法。)
2考虑固定的直线段和每个关节处的弧形。单独处理每个关节我认为你有一个易处理的问题,找到最佳的弧中心/半径,以满足连续性和改善拟合。
3现在您已经非常接近尝试将所有圆弧中心和半径(由相切定义的线段)视为全局优化问题。如果N很大,这当然会爆炸。
答案 2 :(得分:0)
当通过某个其他曲线逼近给定曲线时的典型约束是将近似曲线绑定到原始曲线内的epsilon-hose(如果Minkowski sum,则使用固定半径为epsilon的磁盘)。
对于具有biarcs的G1或C2连续近似(来自CNC / CAD的人)(并且直线段可以看作具有无限半径的弧),我的同事开发了一种算法,给出了类似的解决方案这[点击放大]:
以上图片来自项目网站:https://www.cosy.sbg.ac.at/~held/projects/apx/apx.html
算法很快,也就是说,它在O(n log n)时间内运行,并且基于广义的Voronoi图。但是,它没有给出具有确切最小元素数的近似值。如果你寻找理论上的最优,我会参考Drysdale等人的论文,Approximation of an Open Polygonal Curve with a Minimum Number of Circular Arcs and Biarcs,CGTA,2008。