DTW算法

DTW简称动态时间规则,一般多用于语音识别、动作识别等领域。其主要思想是在两个序列的距离度量过程中,引入了弹性距离法则,

相比于欧式距离,在计算两个非对齐的序列的相似度时,能够一定程度容忍数据的部分变形。

基本公式:

设A、B为两个长度分别为m,n的待匹配序列。

DTW(A,B)=,P代表序列中最小距离所对应的一系列路径

Cp计算公式:

其中最开始计时第一行计算方式为:

第一列为:

上式中C(x,y)为两个序列的距离,可以用二范数计算,为||bj-ai||2。 

其他位置的r(i,j)计算方式为:


可以看出,每个i,j位置对应的r(i,j)值都是当前两帧的二范数,加上相邻帧最小的距离累加值,作为当前位置的距离累加值,以此进行迭代计算。

对于长度为m、n的A、B两个序列,采用上述计算方式,可以迭代求出最后的r(m,n),则A、B之间的DTW距离为

而最开始所提到的路径P,就是从最后的结果r(m,n)处开始向后回溯,得到前一列最小的总距离,也就是在当前位置(m,n)处开始,判断左边、下边、左下边的元素那个最小,然后迭代进行,直到到达第一列。因此从第一列到n列中的点形成一条最小匹配路径,表明此路径对应的帧之间最相似。


注:第一篇文章,话说输入个公式好难,直接用图片代替了。







你可能感兴趣的:(数据结构与算法)