图像处理中滤波和卷积是经常使用到的操做。不少人认为卷积就是滤波,二者并没有区别,其实否则。二者在原理上类似,可是在实现的细节上存在一些区别。这篇博文主要叙述这二者之间的区别。ide
一、滤波(或者叫相关)
简单来讲,滤波操做就是图像对应像素与掩膜(mask)的乘积之和。图片
好比有一张图片和一个掩膜,以下图:图像处理
那么像素(i,j)的滤波后结果能够根据如下公式计算:
其中G(i,j)是图片中(i,j)位置像素通过滤波后的像素值。原理
当掩膜中心m5位置移动到图像(i,j)像素位置时,图像(i,j)位置像素称为锚点。im
滤波步骤:img
- 对原始图像的边缘进行某种方式的填充(通常为0填充)。
- 将掩膜划过整幅图像,计算图像中每一个像素点的滤波结果。
依照这个步骤,假设咱们有一个二维矩阵I,掩膜M,则滤波的结果以下:
滤波后的图像大小不变。
二、卷积
卷积的原理与滤波相似。可是卷积却有着细小的差异。
卷积操做也是卷积核与图像对应位置的乘积和。可是卷积操做在作乘积以前,须要先将卷积核翻转180度,以后再作乘积。
卷积步骤:
- 180度翻转卷积核。
- 不作边界填充,直接对图像进行相应位置乘积和。
从以上步骤能够看出,若是卷积核不是中心对称的,那么卷积和滤波操做将会获得彻底不同的结果。另外,
卷积操做会改变图像大小!
因为卷积操做会致使图像变小(损失图像边缘),因此为了保证卷积后图像大小与原图一致,常常的一种作法是人为的在卷积操做以前对图像边缘进行填充。
最后,关于卷积后图像尺寸的计算:假设原始图像为M*M,卷积核大小为N*N,边缘填充像素个数为pad,步长为stride。则卷积后图像的尺寸变为:m =(M-N+2*pad)/sride+1。