我已经使用动态时间扭曲算法来生成距离矩阵,并找出两个数组之间的差异。然而,有没有一种算法可以将一个数组扭曲成与另一个相似(作为最终结果,我希望将一个视频扭曲成与另一个相似,即使用多维数组)。
背景:我有许多人做高尔夫挥杆的视频,我需要从相似性的角度来分析它们。然而,许多摆动都是慢动作,而有些是实时的。最重要的是,这些剪辑在挥杆前后的不同时间开始和停止,每个视频都让高尔夫球手站在画面本身的不同位置。
但是,为了解释起见,请举以下简单的例子:
a = [1, 2, 3]
b = [1, 1, 2, 2, 3, 3]变成:
a = [1, 2, 3]
b = [1, 2, 3]当b被扭曲成像a一样的时候。
说明:b只是a的时间扩展版本,例如视频的慢动作版本
下面是另一个例子:
a = [1, 2, 3]
b = [3, 4, 6]变成:
a = [1, 2, 3]
b = [1, 2, 4]当b被扭曲成像a一样的时候。
说明:b只是a的时间转换版本,有一点错误,例如从较低的高度和角度拍摄的视频
我的最终目标是一种算法,如果可能的话,它可以将扩张和平移结合在一起
发布于 2020-12-10 13:41:55
如果我没记错的话,动态时间规整是一种动态编程算法。因此,如果您想象算法在矩阵上运行,其中行是字符串a的字母,列是字符串b的字母,则通过矩阵逐行计算分数。
如果除了分数之外,您还在每个单元格存储了一个指针,该指针指向从中导出分数的单元格,那么您可以使用通过距离矩阵的反向传播来重建一条提供最佳分数的路径。
要将一个字符串映射到另一个字符串,您可以查看这些指针的方向,水平指针添加到一个字符串,垂直字符串从该字符串删除(添加到另一个字符串)(或者,水平和垂直都添加到一个字符串+从另一个字符串删除),对角线匹配两个字符串中的字母。
一般来说,对于动态编程算法来说,这是一个非常标准的方法,所以我打赌它可以被定制为适用于动态时间扭曲。
https://stackoverflow.com/questions/65226928
复制相似问题