卷积与相关性

时间:2013-12-02 05:11:33

标签: image-processing signals signal-processing correlation convolution

任何人都可以向我解释相关与卷积的相同点和不同点吗?请解释背后的直觉,而不是数学方程式(即翻转内核/脉冲)。每个类别的图像处理域中的应用示例也将受到赞赏

3 个答案:

答案 0 :(得分:24)

你可能会在dsp堆栈交换上获得更好的答案但是...对于初学者我发现了许多类似的术语,他们可能很难确定定义。

  1. 相关性
  2. 互相关
  3. 卷积
  4. 相关系数
  5. 滑动点积
  6. Pearson相关
  7. 1,2,3和5非常相似

    4,6是相似的

    请注意,所有这些术语都有点产品正在抬头

    你问过关联和卷积 - 这些在概念上是相同的,只是输出是在卷积中翻转的。我怀疑你可能一直在询问相关系数(如Pearson)和卷积/相关之间的区别。

    <强>先决条件

    我假设您知道如何计算点积。给定两个相等大小的向量v和w,每个向量具有三个元素,代数点积为v [0] * w [0] + v [1] * w [1] + v [2] * w [2]

    点数产品背后的理论背后有许多理论......等等。

    注意点积是单个数字(标量),表示这两个矢量/点之间的映射v,w在几何中经常计算使用点积的两个矢量之间角度的余弦。两个矢量之间的角度的余弦在-1和1之间,可以被认为是相似性的度量。

    相关系数(Pearson)

    相等长度v,w之间的相关系数简单地是两个零均值信号的点积(从v减去平均值v得到zmv并且从w得到zmw的平均值w - 这里zm是零均值的简写)除以zmv和zmw的大小。

    产生介于-1和1之间的数字。接近零意味着很少的相关性,接近+/- 1是高相关性。它测量这两个向量之间的相似性。

    有关更好的定义,请参阅http://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient

    卷积与关联

    当我们想要关联/卷积v1和v2时,我们基本上计算了一系列点积并将它们放入输出向量中。假设v1是三个元素,v2是10个元素。我们计算的点积如下:

    output[0] = v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]
    output[1] = v1[0]*v2[1]+v1[1]*v2[2]+v1[2]*v2[3]
    output[2] = v1[0]*v2[2]+v1[1]*v2[3]+v1[2]*v2[4]
    output[3] = v1[0]*v2[3]+v1[1]*v2[4]+v1[2]*v2[5]
    output[4] = v1[0]*v2[4]+v1[1]*v2[5]+v1[2]*v2[6]
    output[5] = v1[0]*v2[7]+v1[1]*v2[8]+v1[2]*v2[9]
    output[6] = v1[0]*v2[8]+v1[1]*v2[9]+v1[2]*v2[10] #note this is 
    #mathematically valid but might give you a run time error in a computer implementation 
    

    如果需要真正的卷积,可以翻转输出。

    output[5] = v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]
    output[4] = v1[0]*v2[1]+v1[1]*v2[2]+v1[2]*v2[3]
    output[3] = v1[0]*v2[2]+v1[1]*v2[3]+v1[2]*v2[4]
    output[2] = v1[0]*v2[3]+v1[1]*v2[4]+v1[2]*v2[5]
    output[1] = v1[0]*v2[4]+v1[1]*v2[5]+v1[2]*v2[6]
    output[0] = v1[0]*v2[7]+v1[1]*v2[8]+v1[2]*v2[9]
    

    请注意,为简单起见,输出中的元素少于10个我只计算v1和v2的卷积时计算卷积

    另请注意,卷积只是一些点积。多年来,为了加速卷积,已经做了大量工作。扫描点产品很慢,可以通过首先将矢量转换为傅里叶基础空间然后计算单个矢量乘法然后反转结果来加速,但我不会在这里进行...

    您可能希望查看这些资源以及Google搜索:Calculating Pearson correlation and significance in Python

答案 1 :(得分:8)

我得到的最佳答案来自此文件:http://www.cs.umd.edu/~djacobs/CMSC426/Convolution.pdf

我只是要复制文档中的摘录:

“两者之间的关键区别在于卷积是关联的。也就是说,如果F和G是滤波器,那么F *(G I)=(F G)* I.如果你不要相信这一点,尝试一个简单的例子,例如使用F = G =( - 1 0 1)。卷积是关联的非常方便。假设,例如,我们想要平滑图像然后采取我们可以通过用高斯滤波器对图像进行卷积,然后用导数滤波器对其进行卷积来实现这一点。但我们可以将导数滤波器与高斯滤波器卷积在一起,以产生称为高斯差分(DOG)的滤波器,并且然后将其与我们的图像进行对比。这个好处是DOG滤镜可以预先计算,我们只需要将一个滤镜与我们的图像卷积。

通常,人们使用卷积进行平滑等图像处理操作,并使用相关性将模板与图像匹配。然后,我们不介意相关性不是关联的,因为将两个模板组合成一个具有相关性的模板并不合理,而我们可能经常想要将两个过滤器组合在一起进行卷积。“

答案 2 :(得分:5)

卷积就像相关,除了我们在关联之前翻转过滤器