3

我正在分析粒子在 2D 平面中的轨迹。该轨迹通常由 5 到 50 个(在极少数情况下更多)点(离散整数坐标)组成。我已经匹配了我的数据集的点以形成轨迹(因此我有时间分辨率)。
我想对这条轨迹的曲率进行一些分析,不幸的是我使用的分析框架不支持拟合轨迹。据我所知,可以使用样条曲线/贝塞尔曲线来完成这项工作,但我希望得到您的意见和/或建议使用什么。
由于这只是我工作的一个可选部分,我无法投入大量时间自行实施解决方案或理解复杂的框架。解决方案必须尽可能简单。

让我从一个可能的库中指定我需要的特征:
- 从不同数量的点创建轨迹
- 由于点是离散的,它应该插入它们的位置;只要轨迹和点之间的最终距离小于阈值,就不需要对所有点进行精确匹配
- 库必须为任何给定点生成轨迹的导数
- 如果库可以报告插值的质量水平(如拟合的 chiSquare)

编辑:阅读评论后,我想补充一些:
轨迹不必与点完全匹配。这些点是从像素矩阵的值创建的,因此它们形成一个离散的坐标矩阵,其空间分辨率受每个给定距离的像素数限制。因此,这些点(位于发射像素的中心)不(完全)匹配粒子的实际轨迹。只要解决方案可以处理可能/很可能既不是双射也不是单射的轨迹,插值或拟合对我来说都很好。
因此,大多数传统的拟合方法(例如使用最小二乘拟合拟合多项式或指数函数)无法满足我的标准。
另外,我尝试过的所有传统拟合方法都产生了一个似乎很好地描述轨迹的函数,但是当查看它们的一阶导数(或更高分辨率)时,可以发现许多“微振荡”(根据我的解释)是结果将非直线函数拟合到轨迹的(几乎)直线部分。

Edit2:评论中有一些讨论,这些轨迹可能是什么样子。本质上,它们可能具有任何形状、长度和“卷曲度”,尽管我试图排除在前面的步骤中重叠或交叉的轨迹。我在下面包含了两个示例;忽略彩色框,它们只是原始像素矩阵值的表示。黑色圆点是我想与轨迹匹配的点,如您所见,它们始终以像素为中心,因此可能只有离散(整数)值。

前一
ex2

提前感谢您的任何帮助和贡献!

4

2 回答 2

1

这可能是要走的路

http://alglib.codeplex.com/

根据您的描述,我会说参数样条插值可能适合您的要求。我自己没有使用过上述库,但它确实支持样条插值。使用插值意味着您不必担心拟合优度 - 曲线将通过您给出的每个点。

于 2012-06-14T16:08:36.477 回答
0

如果您不介意使用矩阵库,线性最小二乘法是最简单的解决方案(请查看一般问题部分的末尾以了解要使用的方程)。您还可以使用线性/多项式回归来解决此类问题。

线性最小二乘法总是会给出最好的解决方案,但它不可扩展,因为矩阵乘法的成本适中。回归是一种迭代启发式方法,因此您可以运行它,直到获得“足够好的”答案。我已经在您的数据中看到了大约 1000-10000 维的截止准则。因此,对于您的数据集,我建议使用线性最小二乘法,除非您出于某种原因决定对其进行高度标注。

于 2012-06-14T16:20:34.430 回答