【图像处理】基于自适应中值滤波器处理被椒盐噪声干扰的图像(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

💥1 概述

大数据量高清视频流在拍摄、传输等过程中可能受到干扰而产生椒盐噪声。由于其具有数据传输速度快的特点,为了确保它的实时性,进一步提高滤波算法的时间效率和计算效率,对现有的自适应中值滤波进行了改进,提出了一种高速自适应中值滤波算法。滤波过程主要分为噪声点检测和噪声去除两个阶段。其,在噪声点检测阶段,根据椒盐噪声的极值特性,将图像的像素点分为噪声点和信号点;在噪声去除阶段,信号点保持原值,噪声点根据自适应中值进行赋值。中值滤波和自适应中值滤波被广泛地应用于消除图像的椒盐噪声。传统中值滤波算法无法根据图像噪声浓度改变窗口尺寸,并且噪声浓度过高时,中值滤波算法基本失效。自适应中值滤波算法可以根据椒盐噪声浓度大小对窗口尺寸进行改变,在高浓度噪声干扰下仍然具有较好的去噪效果。针对椒盐噪声,对中值滤波算法和自适应中值滤波算法去噪结果进行比较。通过仿真实验对图像添加不同浓度的椒盐噪声,并分别使用中值滤波算法和自适应中值滤波算法进行噪声去除,实验结果表明,该算法相较于多种中值滤波方法具有很好的滤波作用,以及很大的速度提升。在去除椒盐噪声方面,自适应中值滤波克服窗口尺寸局限性后,比中值滤波具有更好地去噪效果,能很好地保留图像细节,且它的信噪比、峰值信噪比数值最大,均方误差的值最小。

📚2 运行结果

 部分代码:

%% 基于自适应中值滤波器对图像去噪处理
clear all;
close all;
clc;
img=rgb2gray(imread('Lena.jpg'));       %将原图转成灰度图像
figure;imshow(img,[]);title('原图');     %显示原始图像
[m n]=size(img);            %m,n为图像的行数和列数
img=imnoise(img,'salt & pepper',0.2);   %加入20%的椒盐噪声
figure;imshow(img,[]);title('加入20%的椒盐噪声');     %显示加入椒盐噪声后的图像

%% 图像边缘扩展
%为保证边缘的像素点可以被采集到,必须对原图进行像素扩展。
%一般设置的最大滤波窗口为7,所以只需要向上下左右各扩展3个像素即可采集到边缘像素。
Nmax=3;        %确定最大向外扩展为3像素,即最大窗口为7*7
imgn=zeros(m+2*Nmax,n+2*Nmax);      %新建一个扩展后大小的全0矩阵
imgn(Nmax+1:m+Nmax,Nmax+1:n+Nmax)=img;  %将原图覆盖在imgn的正中间
%下面开始向外扩展,即把边缘的像素向外复制
imgn(1:Nmax,Nmax+1:n+Nmax)=img(1:Nmax,1:n);                 %扩展上边界
imgn(1:m+Nmax,n+Nmax+1:n+2*Nmax)=imgn(1:m+Nmax,n+1:n+Nmax);    %扩展右边界
imgn(m+Nmax+1:m+2*Nmax,Nmax+1:n+2*Nmax)=imgn(m+1:m+Nmax,Nmax+1:n+2*Nmax);    %扩展下边界
imgn(1:m+2*Nmax,1:Nmax)=imgn(1:m+2*Nmax,Nmax+1:2*Nmax);       %扩展左边界
% figure;imshow(uint8(imgn));
re=imgn;        %扩展之后的图像

%% 得到不是噪声点的中值
for i=Nmax+1:m+Nmax
    for j=Nmax+1:n+Nmax
        r=1;                %初始向外扩张1像素,即滤波窗口大小为3
        while r~=Nmax+1    %当滤波窗口小于等于7时(向外扩张元素小于4像素)
            W=imgn(i-r:i+r,j-r:j+r);
            W=sort(W(:));           %对窗口内灰度值排序,排序结果为一维数组
            Imin=min(W(:));         %最小灰度值
            Imax=max(W(:));         %最大灰度值
            Imed=W(ceil((2*r+1)^2/2));      %灰度中间值
            if Imin<Imed && Imed<Imax       %如果当前窗口中值不是噪声点,那么就用此次的中值为替换值
               break;
            else
                r=r+1;              %否则扩大窗口,继续判断,寻找不是噪声点的中值
            end          
        end
        
 %% 判断当前窗口内的中心像素是否为噪声,是就用前面得到的中值替换,否则不替换       
        if Imin<imgn(i,j) && imgn(i,j)<Imax         %如果当前这个像素不是噪声,原值输出
            re(i,j)=imgn(i,j);
        else                                        %否则输出邻域中值
            re(i,j)=Imed;
        end
    end
end
%显示加入椒盐噪声的图像通过自适应中值滤波器后的结果
figure;imshow(re(Nmax+1:m+Nmax,Nmax+1:n+Nmax),[]);

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]刘光宇,曹禹,王帅,赵恩铭,邢传玺.基于自适应中值滤波的图像去噪技术研究[J].安徽电子信息职业技术学院学报,2022,21(05):1-6.

[2]唐义杰,胡超,张倚玮,董卓昊,刘津铭,刘思源.强椒盐噪声下的模糊边缘自适应中值滤波算法[J].电子制作,2022,30(16):89-91.DOI:10.16589/j.cnki.cn11-3571/tn.2022.16.029.

[3]马炼,李林.一种针对椒盐噪声的高速自适应中值滤波算法[J].计算机时代,2021(10):68-71.DOI:10.16644/j.cnki.cn33-1094/tp.2021.10.017.

🌈4 Matlab代码实现

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值