卷积与滤波、相关的区别,以及imfilter函数、conv2函数的介绍

一、图像处理中常常需要用一个滤波器空间滤波操作。空间滤波操作有时候也被叫做卷积滤波,或者干脆叫卷积(离散的卷积,不是微积分里连续的卷积);滤波器也有很多名字:卷积模版、卷积核、掩模、窗口等。

介绍卷积与滤波,必须要介绍下滤波函数imfliter。

函数名称:imfilter
函数语法:g=imfilter(f,w,filtering_mode,boundary_options,size_optinos)
函数功能:对任意类型数组或多维图像进行滤波
参数介绍:f是输入图像,w为滤波模板,g为滤波结果;表1-1总结了其他参数的含义。

1.'corr'表示相关操作,相关操作运算如下:

假设有一个滤波窗口(也叫卷积核)h,一般为3*3的矩阵:

有一个待处理矩阵x:

corr操作即为将卷积核h的中心对准x的第一个元素,然后对应元素相乘后相加,没有元素的地方补0。

这样结果Y中的第一个元素值Y(1,1)=-1*0+-2*0+-1*0+0*0+0*1+0*2+1*0+2*5+1*6=16。

2.'conv'表示卷积操作,相关操作运算如下:

第一步,将卷积核翻转180°,也就是成为了

第二步,将卷积核h的中心对准x的第一个元素,然后对应元素相乘后相加,没有元素的地方补0。

这样结果Y中的第一个元素值Y(1,1)=1*0+2*0+1*0+0*0+0*1+0*2+-1*0+-2*5+-1*6=-16

二、matlab里面提供了卷积操作函数conv2(表示的是二维矩阵的卷积操作函数)

函数名称:conv2
函数语法:g=conv2(f,w,shape)
函数功能:对任意类型数组或多维图像进行滤波
参数介绍:f是输入图像,w为滤波模板,g为滤波结果;shape一般有‘full’(一般默认为full)和‘same’。

当为full模式时,需要对矩阵进行填充,由于是卷积,需要将模板旋转180度,如下

                            

需要将3*3模板的元素w(3,3)与待处理矩阵的第一个元素对应,与之前介绍的模板的中心与第一个元素对应不同。其次得到的结果由原始5*5矩阵变成了7*7矩阵。当为same模式时其结果为

即是前面提到的中心元素与待处理的第一个元素对应,得到的结果还是5*5矩阵,处理的方式在前面已经介绍过了。

三、最后提一点,很多中文书把相关操作叫做"卷积"。然而这个概念其实叫做相关,而卷积则相当于:将同样的模版旋转180°后,再做"相关"操作。当然,如果模版是180°对称的那么卷积和相关是相同的。但是并不是所有的模版都对称。因此,我建议,在滑窗操作、计算图像梯度等场合,不要使用“卷积”,而要使用“滤波”或者“相关”。因为,我们通常讲的卷积,其实是相关,那就不要用卷积这个词以免引起混淆。

猜你喜欢

转载自blog.csdn.net/mrahut/article/details/81539435