问题标签 [cross-correlation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
884 浏览

python - 各种距离测量的混淆:归一化互相关、归一化相关系数和巴塔查里亚系数

我对上述这些距离度量感到困惑-至于哪种距离度量对匹配图像相似度有用。我已经对这些措施进行了调查,这是我的结论。谁能告诉我我的距离测量是否出错。

1)归一化互相关:这适用于普通图像并提供旋转图像,它可以测量一定程度的相似性,它不适用于具有不同亮度/对比度的图像,但它应该根据 [ http://en.wikipedia ] 提供支持.org/wiki/Cross-correlation]。它不支持移位图像。

2)-归一化相关系数:匹配旋转和强度差异图像,但不支持移位图像。

3) Bhattacharya 系数 - 它适用于旋转和移位的图像,但对于具有强度差异的图像,即亮度或低对比度的图像,它不会检测到。

我知道所有这些数据相似性度量都取决于您拥有的数据集的类型,但是谁能告诉我,如果我的度量结果在任何地方都出错了?

0 投票
1 回答
743 浏览

r - 为什么R的ccf会说“系列'X'的自相关,滞后”?

在 R shell 中执行 a 和 b 之间的互相关:

为什么使用术语“自相关”?我认为“自相关”是序列与其自身滞后版本的相关性,而不是与另一个(可能滞后的)序列的相关性。

0 投票
1 回答
3166 浏览

matlab - 在 Matlab 中使用互相关进行 3D 模板匹配

这是我尝试做的一个最小示例:

创建 3D 矩阵

创建 3D 模板

计算互相关(matlab 中的 3D 互相关)。我认为互相关与翻转模板的卷积相同。那是对的吗?

查找最佳匹配的下标

我读到必须减去最终坐标的模板大小的一半,但我不再拥有包含此信息的页面链接。但是,我认为如果不这样做,返回的坐标不是模板中心所在的位置,而是模板的一角。

作为我的示例的结果,我期望:x=2, y=2, z=4. Matlab 告诉我它是x=4, y=4, z=4. 但是,当将模板更改为

我得到正确的结果(x=3, y=3, z=3)

我必须改变什么才能得到正确的结果?

0 投票
1 回答
2768 浏览

python - numpy 和 statsmodels 在计算相关性时给出不同的值,如何解释这个?

我找不到为什么使用计算两个系列 A 和 B 之间的相关性numpy.correlate给我的结果与我使用得到的结果不同的原因statsmodels.tsa.stattools.ccf

这是我提到的这种差异的一个示例:

在此处输入图像描述

在此处输入图像描述

结果似乎有质的不同,这种差异从何而来?

0 投票
1 回答
520 浏览

matlab - Matlab xcorr 为互相关的不同实现提供不同的值

我正在尝试执行互相关,但注意到以两种不同的方式执行此操作会导致结果略有不同。

我有一个带有一些尖峰('dual_spikes')的向量,我想将它与'dips'交叉关联(在Matlab中使用xcorr)。

当我以两种不同的方式执行此操作时,我注意到了不同之处:

  • 使用“dual_spikes”正常执行 xcorr
  • 对每个单独的尖峰执行 xcorr,将它们加在一起,然后标准化。

我不知道为什么应该有区别。使用下面的函数进行说明。

请注意,xcorr 信号必须有一个“背景”(bg)划分,因此只能找到下降。这发生在“xcorr_div”中。

IMG

0 投票
5 回答
1363 浏览

c++ - Matlab 仍然比 C++ 中的 opencv 慢吗

根据这个链接和这个据说opencv比matlab快得多。第一个链接写于 2012 年 3 月,第二个链接稍晚一些。

在第一个链接中,它说,“用 OpenCV 编写的程序比用 Matlab 编写的类似程序运行得快得多。” 和费率Matlab: 2/10OpenCV: 9/10

考虑一下,我有两个浮点矩阵,其大小为1024*1024mat1mat2)。我想关联这个矩阵。

在matlab中,

在opencv中,C++

据我所知,c 和 c++ 的速度大致相同。

所以,我想知道,为什么 matlab 在进行互相关时比 opencv/c++ 快。是因为我在比较错误的东西(即使结果相同)还是 matlab 的互相关实现比 opencv 实现快一倍?

请注意,我正在使用Matlab 2013aand Visual Studio 2010

谢谢,

0 投票
0 回答
240 浏览

matlab - 频域中的逐块互相关

我在 MATLAB 中有以下代码来计算 2 个序列 x 和 y 的直接互相关:

上述结果与 xcorr(x,y) 完全匹配。美好的!现在,我想通过从 x 和 y 一次获取 8 个样本来逐块执行相同的操作。那是:

为了获得与使用整个序列相同的结果,我的下一步应该是什么?我知道我应该执行重叠添加方法,但我不确定每个块应该附加多少个零,以及相邻块的重叠长度应该是多少才能达到与 xcorr(x,y) 相同的结果?请通过扩展上述代码来帮助我在频率域中进行块级互相关。

提前致谢!

0 投票
2 回答
1403 浏览

android - 互相关查找声纳回声

我正在尝试在 Android 上的录音中检测我的啁啾回声,似乎互相关是找到两个信号的 FFT 相似位置的最合适方法,从那里我可以识别互相关数组中的峰值将对应于距离。

据我了解,我提出了以下互相关函数。这个对吗?我不确定是否在开头添加零并重新开始一些元素?

次要问题:

根据这个答案,也可以这样计算

我根本不明白,但似乎很容易实现。那就是说我失败了(假设我的xcorr1是正确的)。我觉得我完全误解了这一点?

假设我两个都工作了,考虑到数组将包含几千个元素,哪个函数最合适?

编辑:顺便说一句,我已经尝试在 FFT 版本的两个数组的两端添加零。


在 SleuthEye 的回应后编辑:

您能否验证一下,因为我正在处理“实际”数据,所以我只需要通过进行真正的转换来完成一半的计算(实际部分)吗?

从您的代码中,看起来 REAL 转换返回的数组中的奇数元素是虚构的。这里发生了什么?

我如何从实数数组变为复数?或者这是转换的目的吗?将实数移入复数域?(但实数只是复数的一个子集,所以它们不是已经在这个域中了吗?)

如果 realForward 实际上返回的是虚数/复数,它与 complexForward 有何不同?我如何解释结果?复数的大小?

对于我对变换缺乏了解,我深表歉意,我到目前为止才研究过傅立叶级数。

感谢您的代码。这是“我的”工作实现:

然而,直到每个大约 5000 个元素,xcorr1 似乎更快。我是否在做任何特别慢的事情(也许是不断“更新”内存——也许我应该转换为 ArrayList)?或者我生成数组来测试它们的任意方式?或者我应该做共轭而不是逆转它?也就是说,性能并不是真正的问题,因此除非有明显的东西,否则您无需费心指出优化。

0 投票
1 回答
952 浏览

audio - 使用互相关检测信号的开始

我正在使用互相关来查找音频信号在录音中出现的位置。执行此操作时,始终可以在录音中的信号内某处找到相关性最高的点,但我正在寻找一种方法来找到该信号在录音中开始的点。有没有人知道这样做的方法,或者互相关是否可以完成这项工作?提前致谢。

0 投票
1 回答
4178 浏览

python - Python中的GCC-PHAT互相关

我正在尝试在 python 中实现 GCC-PHAT。

做法类似于下面两个链接: link1link2

GCC-PHAT 和使用 FFT 的正常互相关之间的唯一区别似乎是除以幅度。

这是我的代码:

我已经通过注释检查fs = fs / denom该函数产生与宽带信号的正常互相关相同的结果。

这是一个示例测试代码,它显示了上面的 GCC-PHAT 代码的性能比正常的互相关差:

这是 GCC-PHAT 的结果:

在此处输入图像描述

这是具有正常互相关的结果:

在此处输入图像描述

由于 GCC-PHAT 应该为宽带信号提供更好的互相关性能,我知道我的代码有问题。非常感谢任何帮助!