线性滤波和非线性滤波

来源:互联网 发布:高速铣编程用什么软件 编辑:程序博客网 时间:2024/06/05 15:02

        图像的空域线性滤波和非线性滤波在空域对图像进行滤波处理无非两种情况,线性滤波和非线性滤波。滤波的意思就是对原图像的每个像素周围一定范围内的像素进行运算,运算的范围就称为掩膜或领域。而运算就分两种了,如果运算只是对各像素灰度值进行简单处理(如乘一个权值)最后求和,就称为线性滤波;而如果对像素灰度值的运算比较复杂,而不是最后求和的简单运算,则是非线性滤波;如求一个像素周围3x3范围内最大值、最小值、中值、均值等操作都不是简单的加权,都属于非线性滤波。



非线性滤波:B = colfilt(A,[m n],block_type,@fun,paramerters)

B = colfilt(A,[m n],block_type,@fun,paramerters)
A:图像矩阵;
[m n]:邻域范围;
block_type:邻域块的处理方式,有如下两值可供选择:distinct 和 sliding

           二者通过fun运算返回的值不同,通过colfilt最终返回的矩阵也不同;

@fun:函数句柄,调用外部写好的函数fun进行邻域像素处理;
parameters:fun所需的参数 。

函数原理:
        邻域和图像例举:

       大致过程为:m x n大小领域矩阵中心从左至右,从上到下依次滑过M x N大小的图像的每一个像素点。邻域矩阵将其所包围范围内,所有像素点的亮度值挑选出来。colfilt函数调用im2col函数将之转换为列向量。如此一来,邻域矩阵中心每经过一个像素点,就产生一个mn维度的向量,M x N 大小的图像就会产生MN个这样的向量。我们得到一个mn x MN 的新的矩阵。对该矩阵每一列代入fun中运算,产生一个MN维的向量,colfilt调用col2im 函数将MN维向量重新还原为M x N 的矩阵,完成运算。





图片参考:https://www.mianbaoban.cn/blog/post/160789

原创粉丝点击