【发布时间】:2014-01-06 12:41:13
【问题描述】:
阅读 this 并尝试了 np.correlate 和 cv2.matchTemplate 我仍然有一个我似乎无法解决的问题。
我有两个 numpy 数组,每个数组的形状都为 (6000,50)。 6000 个序列,每 50 个值。现在我想做这个数组的两个一维序列的互相关来检测时移。我简单地尝试了openCV,但对我来说这会返回一个数字(我希望相关性最高),所以现在我像这样使用numpy.correlate:
np.correlate(x[2500], y[2500], mode='same')
(在互相关图中,我不是在寻找最高峰,而是在寻找使用this 的第一个峰。请参见图中的示例)
如您所料,我想对所有 6000 个序列执行此操作,但希望避免迭代。我希望这会奏效:
np.correlate(x, y, mode='same')
但这给了我以下错误:ValueError: object too deep for desired array。
NumPy 或 OpenCV 是否有任何改变。还是我必须这样做:(
for i in range(x.shape[0]):
np.correlate(x[i], y[i], mode='same')
【问题讨论】:
-
为什么要避免迭代?即使有你想要的东西,它也只是将迭代打包在里面。复杂度不会更低。
-
@Skyler,我想这可能与某种矩阵计算有关。
-
嗯,我明白了。但是我不知道这样的功能:-(
标签: python opencv numpy cross-correlation