数字图像处理(二):非线性空间滤波

一、基本概念

非线性空间滤波也基于邻域操作,与线性空间滤波相同,可通过定义一个大小为 m x n 的邻域,以其中心点滑过一幅图像的方式进行操作。

领域处理

见上节

与线性空间滤波的区别

线性空间滤波基于计算乘积之和,而非线性空间滤波基于非线性操作。例如:令每个中心点处的响应等于其邻域内的最大像素值的操作即为非线性滤波。
在非线性滤波中,“滤波器”应看作是一个基于邻域像素操作的非线性函数,其响应组成了在邻域的中心像素处操作的响应

二、非线性空间滤波函数

函数nlfilter

nlfilter 直接执行二维操作;colfilt 以列的形式组织数据,速度更快。

函数colfilt

给定一个大小为 M X N 的图像 f 和一个大小为 m x n 的邻域,函数 colfilt 生成一个最大尺寸为 mn x MN 1的矩阵A,在该矩阵中,每一列对应于其中心位于图像内某个位置的邻域所包围的像素。

函数 colfilt 语法g = colfilt(f,[m,n],'sliding',@fun,parameters)
m 和 n 表示滤波区域的维数,‘sliding’ 表示处理过程是在输入图像 f 中逐个像素地滑动该 m x n 区域,@fun引用一个函数,parameters表述函数fun可能需要的参数。符号@称为函数句柄,它是一种MATLAB数据类型,它包含有引用函数用到的一些信息。
基于矩阵A的组织形式,函数fun必须对矩阵的每一列操作,并返回一个包含所有列结果的行向量v。v的第k个元素表示的是对A中的第k列进行fun操作后的结果。因而,A中可以有 MN 列,v 的最大维数为 1 x MN。

函数padarry

线性滤波中,需要对图像进行填充来处理空间滤波中固有的边界问题。但在使用colfilt时,滤波前必须经过填充
由此引入函数 padarryfp = padarray(f,[r,c],method,direction)
其中,f 为输入图像,fp 为填充后的图像,[r,c]用于给出填充 f 的行数和列数,
method 和 direction 的意义见下表:
函数padarry的选项

>> f = [1 2;3 4]

f =
     1     2
     3     4
% 如果参数中不包含direction,则默认值为'both'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值