中值滤波 matlab程序实现(一)

中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。中值滤波对椒盐噪声抑制很好,对高斯噪声抑制一般。 

clc
close all
f=[1 2 1 4 3;
   1 10 2 3 4;
   5 2 6 8 8;
   5 5 7 0 8 ;
   5 6 7 8 9];
[row, col]=size(f);
k=f;
for r=2:row-1
    for c=2:col-1
        m=ones(3, 3);
        n=ones(3, 3);
        b=k;
        n(2,2)=b(r,c);    %22
        n(1,1)=b(r-1,c-1);%11
        n(1,2)=b(r-1,c);  %12       
        n(1,3)=b(r-1,c+1);%13
        n(2,1)=b(r,c-1);  %21
        n(3,1)=b(r+1,c-1);%31
        n(3,2)=b(r+1,c);  %32
        n(2,3)=b(r,c+1);  %23
        n(3,3)=b(r+1,c+1); %33
        out=n.*m;
        mid=median(out(:));
        f(r,c)=mid;       
    end
end

原来的f矩阵: 

中值滤波后:

 

%%%median函数能取一列或者一行数的中值

编的这个有点菜

问题:确定一个点,其邻域怎么定

相关推荐
1. 主要工作: 基于MATLAB图像处理的中值滤波、均值滤波以及高斯滤波的实现与对比: a) 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. b) 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。 c) 高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。 2. 代码功能: 实现中值滤波、均值滤波以及高斯滤波,并对图像进行输出 3. 结果分析 a) 图像经过中值滤波后,高斯噪声没有被完全去除,椒盐噪声几乎被完全去除效果较好。经过均值滤波后不管是高斯噪声还是椒盐噪声大部分都没有被去除,只是稍微模糊化。经过高斯滤波后,高斯噪声和椒盐噪声几乎被很大程度的模糊化,原图好像被加上了一层蒙版。 【注】若添加图片分辨率过高会发出警报,如果可以正常输出则可以忽视。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页