数字图像处理(四)空间滤波

1.空间滤波基本概念

空间滤波是一种采用滤波处理的影像增强方法。其理论基础是空间卷积和空间相关。目的是改善影像质量,包括去除高频噪声与干扰,及影像边缘增强、线性增强以及去模糊等。分为低通滤波(平滑化)、高通滤波(锐化)和带通滤波。处理方法有计算机处理(数字滤波)和光学信息处理两种。

2.邻域处理

邻域处理包括以下过程:
(1)选择中心点(x,y);
(2)仅对预定义的围绕点(x,y)的邻域内的像素执行运算;
(3)令运算结果为该点处邻域处理的响应;
(4)对图像上的每一点重复上述处理。
移动中心点会产生新的邻域,每个邻域对应输入图像上的一个像素。对邻域中像素的计算为线性的,则运算称为线性空间滤波(空间卷积);否则是非线性空间滤波。

3.线性空间滤波

线性空间滤波可分为相关和卷积。相关是指模板w如图进行图像数组f的处理。卷积则是在w通过f之前先将它旋转180°。(过程如图所示)
在这里插入图片描述
在matlab中用函数imfilter实现线性空间滤波:

g = imfilter(f,w,filtering_mode,boundary_options,size_options)

f是输入图像
w是滤波模板
g是滤波结果
filtering_mode是制定滤波过程是使用卷积(conv)还是相关(corr)
boundary_options用于处理边界填充零问题,边界的大小由滤波器决定
size_options可以是same(输出于输入图像大小相同)或full(输出与被扩展图像大小相同)

 f = imread('4.png');
w = ones(31);
w=w./(31*31);
subplot(231),imshow(f),title('原图像');
gd = imfilter(f,w);
subplot(232),imshow(gd,[]),title('默认值滤波后');
gr = imfilter(f,w,'replicate');
subplot(233),imshow(gr,[]),title('用外边界扩展后');
gs= imfilter(f,w,'symmetric');
subplot(234),imshow(gs,[]), title('用自身镜像扩展后');
gc= imfilter(f,w,'circular');
subplot(235),imshow(gc,[]), title('周期扩展后');
f8 = im2uint8(f);
g8r = imfilter(f8,w, 'replicate');
subplot(236),imshow(g8r,[]), title('转换uint8后再外边界扩展后');

在这里插入图片描述
线性空间滤波后的图像黑白边缘被模糊了,用默认值滤波和二维周期函数的一个周期来扩展的图像,会产生黑色边缘,自身镜像和外边缘扩展不会产生黑色边缘。用几幅图来测试算法的稳定性,线性空间滤波后的图片均被模糊,可以适用于填补断裂的缝隙这类图像。

4.非线性空间滤波

非线性空间滤波是基于涉及邻域像素内的非线性操作。为了执行非线性滤波操作,工具箱提供了两个函数:nlfilter和colfilt,nlfilter直接执行二维操作,colfilt按列组织数据。在大多数图像处理应用中,更多采用colfilt而不是nlfilter。
在matlab中用函数colfilt实现非线性空间滤波

g = colfilt(f,[m n],'sliding',fun)  %m和n表示滤波区域的维数,'sliding'表明处理过程是m*n区域在输入图像f中逐像素进行滑动,fun是函数句柄

在使用colfilt之前需要对输入图像进行填充,我们需要用函数padarray,对于二维函数,语法为:

fp = padarray(f,[r c],method,direction) %f是输入图像,fp是输出图像,[r c]表示填充f的行列数
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值