MATLAB--数字图像处理 中值滤波

简介: MATLAB--数字图像处理 中值滤波

中值滤波

    概念
  中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为33,55区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。

原理解释
其实中值滤波比较好理解,首先需要我们找到中值,再用其去替代一个位置的像素。比如在一副图像中,我们取3*3的模板,在这个模板中,一个有9个元素,我们找出其中的中值,用它去代替最中间的那个位置的像素,这就是中值滤波。
图示:
在这里插入图片描述

MATLAB实现

方法一:medfilt2()函数实现

 t=imread('a1.jpg');
t=rgb2gray(t);
t1=imnoise(t,'salt & pepper',0.3);
subplot(1,2,1),imshow(t1),title('加入椒盐噪声后')
t2=medfilt2(t1,[3 3]);
subplot(1,2,2),imshow(t2),title('中值滤波后')

效果图:
在这里插入图片描述
注意:medfilt2()函数中的第一个参数必须是二维的,这就是为什么先要把图像灰度化的原因,那么有什么方法对彩色图像中值滤波呢?肯定可以的啊,分别对三个通道中值滤波就行了。

t=imread('a1.jpg');
t1=imnoise(t,'salt & pepper',0.3);
subplot(1,2,1),imshow(t1),title('加入椒盐噪声后')
t2=t
t2(:,:,1)=medfilt2(t1(:,:,1),[3 3]);
t2(:,:,2)=medfilt2(t1(:,:,2),[3 3]);
t2(:,:,3)=medfilt2(t1(:,:,3),[3 3]);
subplot(1,2,2),imshow(t2),title('中值滤波后')

效果图:
在这里插入图片描述
方法二:自己编写中值滤波函数
中值滤波函数:

function [ img ] = median_filter( image, m )
%----------------------------------------------
%中值滤波
%输入:
%image:原图
%m:模板的大小3*3的模板,m=3
 
%输出:
%img:中值滤波处理后的图像
%----------------------------------------------
    n = m;
    [ height, width ] = size(image);
    x1 = double(image);
    x2 = x1;
    for i = 1: height-n+1
        for j = 1:width-n+1
            mb = x1( i:(i+n-1),  j:(j+n-1) );%获取图像中n*n的矩阵
            mb = mb(:);%将mb变成向量化,变成一个列向量
            mm = median(mb);%取中间值
            x2( i+(n-1)/2,  j+(n-1)/2 ) = mm;
 
        end
    end
 
    img = uint8(x2);
end

主函数:

t=imread('a1.jpg');
t1=imnoise(t,'salt & pepper',0.3);
imshow(t1),title('加入椒盐噪声');
t2=median_filter(t,3);%调用函数
figure,imshow(t),title('中值滤波后')

效果图:
在这里插入图片描述
在这里插入图片描述

目录
相关文章
|
3月前
|
算法 测试技术 计算机视觉
基于FPGA的图像中值滤波开发,包括tb测试文件以及matlab验证代码
基于FPGA的图像中值滤波开发,包括tb测试文件以及matlab验证代码
|
7月前
|
机器学习/深度学习 传感器 算法
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
【图像去噪】基于高斯滤波+均值滤波+中值滤波+双边滤波滤波实现图像去噪(含信噪比)附Matlab代码
|
9月前
|
算法 计算机视觉 异构计算
基于FPGA的医学图像中值滤波verilog实现,包括testbench和MATLAB验证程序
基于FPGA的医学图像中值滤波verilog实现,包括testbench和MATLAB验证程序
117 0
|
11月前
|
算法
m基于KSVD字典训练法的图像噪声滤波matlab仿真,对比图像中值滤波,ACWMF滤波,DWMR滤波以及rold滤波
m基于KSVD字典训练法的图像噪声滤波matlab仿真,对比图像中值滤波,ACWMF滤波,DWMR滤波以及rold滤波
308 0
m基于KSVD字典训练法的图像噪声滤波matlab仿真,对比图像中值滤波,ACWMF滤波,DWMR滤波以及rold滤波
|
11月前
|
缓存 算法 数据可视化
数字图像处理Matlab函数全汇总
数字图像处理Matlab函数全汇总
286 0
|
11月前
|
算法 C++ 计算机视觉
MATLAB--数字图像处理 图像的灰度变换与直方图修正
MATLAB--数字图像处理 图像的灰度变换与直方图修正
196 0
MATLAB--数字图像处理  图像的灰度变换与直方图修正
|
11月前
|
编解码 计算机视觉
MATLAB--数字图像处理 图像的采样与量化
MATLAB--数字图像处理 图像的采样与量化
325 0
MATLAB--数字图像处理 图像的采样与量化
|
11月前
|
计算机视觉
MATLAB--数字图像处理 Hough变换
MATLAB--数字图像处理 Hough变换
128 0
MATLAB--数字图像处理 Hough变换
|
11月前
|
算法 计算机视觉
MATLAB--数字图像处理 Otsu算法(MATLAB原理验证)
MATLAB--数字图像处理 Otsu算法(MATLAB原理验证)
255 0
MATLAB--数字图像处理 Otsu算法(MATLAB原理验证)
|
11月前
|
计算机视觉
MATLAB--数字图像处理 cumsum()
MATLAB--数字图像处理 cumsum()
59 0

热门文章

最新文章

相关产品