转换数据点以匹配其他数据点
数据挖掘
数据集
数学
2022-02-20 07:14:59
2个回答
对于这个任务,你需要决定 3 件事:
(1) 允许的变换是什么。
例如,您是否允许任意仿射变换(旋转、缩放、平移)。然后你需要一个矩阵(使用齐次坐标)将左图的点映射到右图。矩阵的每个条目都是您要确定的变量。中设置某些条目来限制特定的仿射图(例如仅旋转)。
原则上你可以使用任何映射,这取决于一些变量。
(2) 你需要考虑一个度量(或“损失”),它评估两组的相似程度。对于任意集合,有 Hausdorff 距离,它忽略任何时间信息。如果您将数据视为随时间变化的两条曲线,则存在Frechet 距离。您可以在这里查看一下,通常使用 Haussdorf 距离是一个难题。事实上,只计算豪斯多夫距离,不做任何优化已经 不是小事了。但是,对于多边形曲线,您可以有效地计算 Hausdorff 距离、Frechet 距离和离散 Frechet 距离。
最后,在您的特定情况下,对于中的对应点,您可以测量每个对应点的距离(这只是为您提供中的均方误差)。
(3) 根据 (1) 和 (2) 的选择,您需要使用相应的优化器。
如果您想最小化成对距离,但没有可用的对应关系,则有迭代最近点。如果你简单地计算对应点之间的距离,你就会遇到一个非线性优化问题。您可以使用Levenberg–Marquardt等求解器。
正如@bogovicj 指出的那样,该主题称为点集注册。
动态时间扭曲测量两个值序列在时间上的相似性。它将比较一对点 的想法与找到两个序列之间的对齐算法类似于字符串之间的编辑距离,可用于提取序列之间的映射。
其它你可能感兴趣的问题
