imfilter
一、图像处理中常常需要用一个滤波器做空间滤波操作。空间滤波操作有时候也被叫做卷积滤波,或者干脆叫卷积(离散的卷积,不是微积分里连续的卷积);滤波器也有很多名字:卷积模版、卷积核、掩模、窗口等。
介绍卷积与滤波,必须要介绍下滤波函数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°对称的那么卷积和相关是相同的。但是并不是所有的模版都对称。因此,我建议,在滑窗操作、计算图像梯度等场合,不要使用“卷积”,而要使用“滤波”或者“相关”。因为,我们通常讲的卷积,其实是相关,那就不要用卷积这个词以免引起混淆。
文章最后发布于: 2018-08-09 17:26:11
相关阅读
scheduleAtFixedRate 与 scheduleWithFixedDelay 的区
scheduleAtFixedRate ,是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕,如果上一个任务执行完毕,则当前任
iPad mini5和iPad 2018哪款值得入手 iPad mini5和iPad
现在虽说手机的功能也是逐渐的强大,但是基于便于携带这个理念,所以手机的体积需要有所控制,但是视野的局限性上就比较大,毕竟体积只有
卷积(convolution)和互相关(cross-correlation)
现在大部分的深度学习教程中都把卷积定义为图像矩阵和卷积核的按位点乘。实际上,这种操作亦应该是互相关(cross-correlation),而卷积
相同点: ①都是C++的字符处理函数,把数字字符串转换成int输出 ②头文件都是#include<cstring> 不同点: ①atoi()的参数是 const
HTML是一种标记语言,它的全称为:"Hypertext Markup Language",超文本标记语言的意思。 htm是来源于老的8.3文件格式,DOS操作系统只