fspecial()和imfilter()用法解析

这篇blog里简单介绍下空间域滤波的方法,冈萨雷斯书里讲,通常情况下,当滤波器较小时,空间域滤波要比频域滤波更有效。“小”的定义较为复杂,取决于众多因素,如所使用的机器和算法、缓冲器的大小、所处理数据的复杂度等。

fspecial(), 这个函数,百度百科给的很明白,是一个用来定义滤波器的函数,可以定义各种滤波器,包括 'average' 'disk'  'gaussian'  'laplacian'  'log'  'motion' 'prewitt'  'sobel'  'unsharp'

语法格式为
h = fspecial(type) 或者为
h = fspecial(type,para)
其中type指定算子的类型,para指定相应的参数;各个类型的滤波器写法可以参照百度百科。
现在滤波器是有了,下面需要 imfilter() 登场了。
功能:对任意类型数组或多维图像进行滤波
用法:B = imfilter(A,H)
   B = imfilter(A,H,option1,option2,...)
   或写作g = imfilter(f, w, filtering_mode, boundary_options, size_options)
其中,f输入图像,w为滤波器(这里可以使上面用fspecial()生成的滤波器),g为滤波后图像。filtering_mode用于指定在滤波过程中是使用“相关”还是“卷积”。boundary_options用于处理边界充零问题,边界的大小由滤波器的大小确定。具体参数选项见下表:

选项
描述
filtering_mode
‘corr’
通过使用相关来完成,该值为默认。

‘conv’
通过使用卷积来完成
boundary_options
‘X’
输入图像的边界通过用值X(无引号)来填充扩展
其默认值为0

‘replicate’
图像大小通过复制外边界的值来扩展

‘symmetric’
图像大小通过镜像反射其边界来扩展

‘circular’
图像大小通过将图像看成是一个二维周期函数的一个周期来扩展
size_options
‘full’
输出图像的大小与被扩展图像的大小相同

‘same’
输出图像的大小与输入图像的大小相同。这可通过将滤波掩模的中心点的偏移限制到原图像中包含的点来实现,该值为默认值。

下面给一些例子说明这两个函数合在一起用的效果:

用5*5 均值滤波:
w1=fspecial('average',5);
       A=imfilter(RGB,w1,'replicate');
       imshow(A)
结果是:

用sobel 算子提取边缘:
w8=fspecial('sobel');
       H=imfilter(RGB,w8,'replicate');
       imshow(H);
结果是:






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值