线性滤波器matlab代码,20.5.2 线性滤波(1)

20.5.2  线性滤波(1)

MATLAB图像处理工具箱利用函数imfilter对图像作线性滤波,其一般的调用格式为:

B = imfilter(A,H);

B = imfilter(A,H,option1,option2,...)。

其中A、B分别为输入、输出图像。线性滤波器可以由相关或卷积实现,默认情况下由相关实现,可以通过设置option3 = 'conv',使线性滤波由卷积实现。H为对应的相关窗或卷积窗;通过设置option1决定线性滤波器对边界的处理方式,'replicate'使用最近邻边界填充,默认情况下option1 = 0,边界由0填充。

下面的例子中利用 等权重的滤波器对受高斯噪声污染的coins图像作线性滤波,通常称这种等权重的线性滤波器为均值滤波器(averaging filter)。

【例20.18】  均值滤波器应用示例。

(1)读入coins的图像数据I,并显示。在MATLAB命令窗口输入以下代码。

>>I=imread('coins.png');

>>imshow(I);

上述代码运行结果如图20.60所示。

(2)对I施加高斯噪声,得到受噪声污染的图像。在MATLAB命令窗口输入以下代码。

>>I=imnoise(I,'gaussian');

>>imshow(I);

上述代码运行结果如图20.61所示。

(3)利用5 5均值滤波器对受加性噪声污染的coins图像作线性滤波。在MATLAB命令窗口输入以下代码。

>>h=ones(5,5)/25;   %滤波窗口

>>I=imfilter(I,h);    %线性滤波

>>imshow(I);

上述代码运行结果如图20.62所示,可以看到均值滤波器降低了噪声,但是也使得图像更加模糊。

40310316e80ffc02bc35098423bdbc83.png

注意:函数imfilter在考虑图像的数据类型时,遵循与图像代数运算相同的运算规则,读者如有疑问,请参考第20.3节。

在利用MATLAB图像处理工具箱对图像作线性滤波时,用户除了使用自定义的滤波器外,还可以使用一些MATLAB预定义的滤波器。用户可以利用函数fspecial得到MATLAB预定义的滤波器。例如,h = fspecial('gaussian',HSIZE,SIGMA)产生高斯滤波器,HSIZE为滤波窗口的大小,默认为[3,3];SIGMA表示高斯滤波器的峰度,SIGMA越小,h越接近冲击函数,SIGMA越大,h越接近均值滤波器。

【责任编辑:book TEL:(010)68476606】

点赞 0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值