2012-10-18 54 views
1

我正在使用Dynamic Time Warping来查找与模板轨迹不匹配的轨迹段。如何使变形的轨迹平滑。

模板轨迹:

  . . . 
     .   . 
    .   . 
    .    . 
.     . . 
        . 

测试轨迹:

  . 
      . . 
     .  . 
     .   . 
    .   . 
    .    . 
.     . . 
        . 

使用动态时间规整,我发现不符合以下几点(标有星号)

  * 
      * * 
     .  . 
     .   . 
    .   . 
    .    . 
.     . . 
        . 

现在我想扩大错误我所做的是, 我乘以x和d y错误(不匹配)点的坐标系 x = x * 1.2; y = y * 1.2;

这给了我一个畸形的轨迹是这样的:

  * 
     * * 

    .  . 
    .   . 
    .    . 
.     . 
.     . . 
         . 

,但我希望有一个平稳的轨迹,其中所有的点改变,并且错误扩大。像这样:

  * 
     * * 
    .  . 

    .    . 
    .    . 
.     . 
.     . . 
         . 

我该怎么做? PS:我真的无法想到一个简单的方式来描述我遇到的问题。我使用C++,如果无论如何解释你的解决方案。

回答

1

定义A(t)作为时间= t处的位移矢量。然后每个点的位移矢量就是它的位置矢量(x,y)减去以前的位置矢量。

将这些向量缩放以获得缩放后的误差向量,然后通过将向量相加在一起来逐点移动。这不仅会改变误差的范围(y轴),还会改变域(x轴),所以它看起来很平滑。

有什么用?