很多人认为卷积就是滤波,两者并无区别,其实不然。两者在原理上相似,但是在实现的细节上存在一些区别。
滤波操作和卷积操作,实际都是用一个矩阵和原矩阵进行对应位置乘积做和。
滤波操作: Filtering
滤波操作不改变原图像矩阵的大小
具体以下图为例:
左边是滤波器,右边是原图像,滤波操作就是将滤波器的中心的‘5’放在原图像左上角‘0’的位置,然后依次向右滑动,原图像空缺的位置以‘0’填充,然后对应位置乘积,加和,便得到原图像对应位置的数值:原图像左上角‘0’对应的就是滤波后的图像‘64’。
如果我们想设计一个什么也不做的滤波器,这个滤波器应该是什么样子的?
答案如下:
这样的滤波器不会对原图像矩阵产生任何影响
卷积操作: Convolution
卷积操作会改变图像大小
具体如下:
卷积操作也是卷积核与图像对应位置的乘积和。但是卷积操作在做乘积之前,需要先将卷积核翻转180度,之后再做乘积。
卷积操作的具体过程是卷积核与原图像依次对齐,卷积核左上角的‘1’与原图像左上角的‘0’对齐。这样对应位置相乘求和之后,图像的大小就变小了,得到了最后的2*2的图像。
由于卷积操作会导致图像变小(损失图像边缘),所以为了保证卷积后图像大小与原图一致,经常的一种做法是人为的在卷积操作之前对图像边缘进行填充(填充的数值因实际情况不同而不同)。