机器视觉算法(第12期)----图像处理中的卷积操作真的是在做卷积吗?

2019-11-23 08:42:37 浏览数 (1)

上期我们一起学习来了OpenCV中的绘图与注释, 机器视觉算法(第11期)----OpenCV中的绘图与注释

我们知道,图像处理以及深度学习的卷积神经网络中,都会有一个卷积的概念,但是这个卷积操作真的是在做卷积吗?今天我们一起揭开这个蛊惑人心的“卷积”操作!

我们常说的,对图像进行滤波就是一个卷积核在图像上进行滑动求和的过程,也就是图像和卷积核进行求卷积的过程, 如下图。但是真的是这样吗?

我们知道数学意义上的卷积是要对模板进行绕其中心180°旋转的,可是上面说的滤波为什么不旋转?

其实,我们在执行线性空间滤波的时候,必须要清楚的理解两个相近的概念,一个是相关,一个是卷积。相关就是滤波器模板在图像上移动,并计算每个位置乘积和的过程。而卷积的操作和相关类似,不同的是,卷积操作需要先将滤波器模板进行旋转180°。我们先从一维角度进行分析下两种操作的区别,如下图:

在上图中,显示了一个一维函数f和一个滤波器w的相关(左)和卷积(右)的操作。其中:

  • 图a表示函数f和滤波器w
  • 图b表示执行相关的起始位置
  • 图c表示对函数f进行边界扩充0
  • 图d表示执行完起始位置后移一位
  • 图e表示移动4位后的执行过程
  • 图f表示移动到最后一位的相关操作
  • 图g表示最后的相关结果
  • 图h表示裁剪过后的相关结果

而右侧的i-p卷积操作和左侧的相关操作极其相似,唯一不同的是在进行累加操作之前对模板w进行了180°旋转,其余都一样。

从上面的操作可以知道,如果卷积核不对称的情况下,相关和卷积在一维函数上得到的结果是不一样的,在二维情况下也是如此,如下操作:

二维情况下的相关和卷积操作跟在一维情况下极其相似,这里就不详细说明。至此,我们可以将相关和卷积的操作从公式上看下: 相关:

卷积:

从上公式,也可以看出,卷积确实是比相关多了一个180°旋转。难道我们一开始说的“卷积操作”(移动模板相乘求和)其实是一个相关操作? 而深度学习中的卷积神经网络实质上是相关神经网络?CNN中的卷积层实质上就是相关层?

答案是肯定的,我们所说的卷积滤波以及卷积神经网络中的卷积,其实做的就是一个相关操作。那么为什么不说是相关操作呢?奔着追根求源的精神,从冈萨雷斯的图像处理书籍中找到了答案,翻译过来如下:

“在图像处理文献中,您很可能会遇到卷积滤波器,卷积模板或者卷积核等这样的术语。按照惯例,这些术语用于描述一种空间滤波器,并且滤波器未必用于真正的卷积。类似的,模板与图像的卷积通常用于表示模板滑动乘积求和的相关处理,而不必区分相关与卷积间的具体差别。更符合的是,它通常用于表示两种操作(相关和卷积)之一。这一不太严谨的术语是产生混淆的根源。”

好了,至此,我们一起揭开了图像处理中卷积的真正面纱,希望对我们的学习有所帮助,感觉对您有帮助,就点个赞吧。

0 人点赞