r - 如何决定在 DTW 算法中使用哪个 stepPattern

标签 r algorithm image-processing comparison

我对使用 DTW 算法的 stepPattern 有点困惑。

我不得不承认,一个月前我还不知道这个算法的存在。

所以故事从特定类型的图像比较开始。 正如您在下面看到的,这是我选择从图像中提取“时间”序列数据的方式。

enter image description here

想法是在播种时获取从所有 fork 到第一个 fork 的距离。因此,对于两个不同的图像,您有两个具有距离值的不同数组。 这个想法的一个关键点是这两个数组的值是相互对应的。

我的意思是,两个数组的第一个值是从第二个左叉到第一个主叉的距离(如图中编号 1 所示)等等...

通过使用这些值,我通过使用 R package 来使用 DTW 算法.

这是我想听取您的意见的地方。我尝试了两种方法:

A)不对称

我使用了它,因为正如我从阅读的内容中了解到的那样,如果您有相应的值要检查,则可以使用非对称 stepPattern。将第一张图像的值 1 与另一张图像的值 1 进行比较,将第一张图像的值 2 与另一张图像的值 2 进行比较,依此类推...

首先我运行这个

dist = dtw(F,K1,keep=TRUE,step.pattern = asymmetric)

然后我把它改成了那个

dist = dtw(K1,F,keep=TRUE,step.pattern = asymmetric)

这两个不同的执行返回了不同的距离值 (dist$distance)。我不喜欢那样,但据我所知,结果必须是预期的,因为该方法仅通过 i 值(x 轴)改变(如果我错了请纠正我)。

B) 对称 1

在那之后我决定用不同的方式运行它

dist = dtw(F,K1,keep=TRUE,step.pattern = symmetric1)

dist = dtw(K1,F,keep=TRUE,step.pattern = symmetric1)

返回相同的距离值 (dist$distance)。

如您所知,不止这些 stepPatterns。那么我应该根据什么为我的案例选择 stepPattern?

谢谢。

最佳答案

最好的选择可能是 symmetric2 模式,它具有以下理想特征:

  1. 众所周知且常用
  2. 它是对称的,这是您可以理解的特性
  3. 它是可标准化的,因此您将能够比较不同长度的比对。

其他模式将缺少上述一个或多个属性。

关于r - 如何决定在 DTW 算法中使用哪个 stepPattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29399514/

相关文章:

python - 计算机视觉 : Opencv Counting small circles inside big circle

r - 翻转 gg TreeMap

c# - 在 C# 中从 List<T> 中选择 N 个随机元素的算法

java - 我怎样才能修改这个递归回溯算法 (NQueens) 来找到所有的解决方案而不是一个?

python - 使用 scipy.fftpack 进行频域滤波,ifft2 没有给出期望的结果

image - 背景图像的粒子分割

r - 如何根据 [is not] 条件对 xts 对象进行子集化

r - 如何将列传递给arrange()和mutate()

linux - 在 Unix 系统中查找用户主库的绝对路径

用于识别数字模式的 Java 程序