【问题标题】:Convolution Vs Correlation卷积与相关
【发布时间】:2013-12-17 17:56:57
【问题描述】:

谁能解释一下相关性和卷积的异同?请解释其背后的直觉,而不是数学方程式(即翻转内核/脉冲)。每个类别的图像处理领域的应用示例也将不胜感激

【问题讨论】:

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


【解决方案1】:

您可能会在 dsp stack exchange 上得到更好的答案,但是...对于初学者,我发现了许多类似的术语,它们很难确定定义。

  1. 相关性
  2. 互相关
  3. 卷积
  4. 相关系数
  5. 滑动点积
  6. 皮尔逊相关

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 之间,可以将其视为相似度的度量。

相关系数(皮尔逊)

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

产生一个介于 -1 和 1 之间的数字。接近 0 表示相关性小,接近 +/- 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 的情况下计算卷积

还要注意,卷积只是一些点积。多年来,为了能够加速卷积,已经进行了大量工作。扫点积很慢,可以通过首先将向量转换为傅立叶基空间,然后计算单个向量乘法然后反转结果来加快速度,尽管我不会在这里讨论...

您可能想查看这些资源以及谷歌搜索:Calculating Pearson correlation and significance in Python

【讨论】:

    【解决方案2】:

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

    我只是从文档中复制摘录:

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

    一般来说,人们将卷积用于平滑等图像处理操作,并使用相关性将模板与图像匹配。然后,我们不介意相关性不是关联性的,因为将两个具有相关性的模板合并为一个并没有真正意义,而我们可能经常希望将两个过滤器组合在一起进行卷积。”

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这个答案对上面的答案没有任何新意!
      • 但它很短,几乎是我想要的。这个答案缺少的是如何翻转它。我相信它既是垂直翻转又是水平翻转
      猜你喜欢
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      相关资源
      最近更新 更多