新算法对应的子函数:

%一种高效快速的高密度椒盐噪声滤除算法
%quickdelhighnoise.m
function [R] = quickdelhighnoise(J)[e,f]=size(J);
R=zeros(e,f);
Nmax=3; %确定最大的滤波半径,那么滤波窗口最大为7
%下面是边界扩展,图像上下左右各增加Nmax像素
z=zeros(e+2*Nmax,f+2*Nmax);%引入一个新矩阵,用以贴上图片
z(Nmax+1:e+Nmax,Nmax+1:f+Nmax)=J;%将图片贴在新矩阵的中心位置%扩展图像边界
z(1:Nmax,Nmax+1:f+Nmax)=J(1:Nmax,1:f);                 %扩展上边界
z(1:e+Nmax,f+Nmax+1:f+2*Nmax)=z(1:e+Nmax,f:f+Nmax-1);  %扩展右边界
z(e+Nmax+1:e+2*Nmax,Nmax+1:f+2*Nmax)=z(e:e+Nmax-1,Nmax+1:f+2*Nmax); %扩展下边界
z(1:e+2*Nmax,1:Nmax)=z(1:e+2*Nmax,Nmax+1:2*Nmax);       %扩展左边界
%z即为一个扩展后的图像
y=z;%y复制z,y为最后输出的图像%%%%%1 噪声检测阶段
F=zeros(e+2*Nmax,f+2*Nmax);%噪声标记矩阵,初始所有像素默认为信号点,标记为0for i=Nmax+1:e+Nmaxfor j=Nmax+1:f+Nmax%检测窗口开始用3*3if  z(i,j) == 0 | z(i,j) == 255 %疑似噪声点,需要进一步判断F(i,j) = 1;endend
end%%%%%% 2 噪声滤除阶段for i=Nmax+1:e+Nmaxfor j=Nmax+1:f+Nmax%初始滤波窗口为3*3if F(i,j) == 1 %噪声点,需要进行滤波 N=sum(sum(F(i-1:i+1,j-1:j+1) == 0));%统计高密度区域内信号点的个数%N=sum(sum( F(i-1:i+1,j-1:j+1) == 0  &  z(i-1:i+1,j-1:j+1) ~= max(z1) &  z(i-1:i+1,j-1:j+1) ~= min(z1) ))if  N > 0z6 = zeros(1,N);%放置信号点的矩阵%存放信号点矩阵for i1 = i-1:i+1for j1 = j-1:j+1if F(i1,j1) == 0%if F(i1,j1) == 0 & z(i1,j1) ~= max(z1) & z(i1,j1) ~= min(z1)z6(1,N) = z(i1,j1);N = N-1;endendend%z6内存放着信号点灰度值%for i1 = 1:sum(sum(F(i-1:i+1,j-1:j+1) == 0))%for i1 = 1:sum(sum( F(i-1:i+1,j-1:j+1) == 0  &  z(i-1:i+1,j-1:j+1) ~= max(z1) &  z(i-1:i+1,j-1:j+1) ~= min(z1) ))%    sum1 = sum1 + z6(1,i1)/( 1 + ( z6(1,i1) - median(z6) )^2 );%   sum2 = sum2 + 1.0/( 1 + ( z6(1,i1) - median(z6) )^2 );%endy(i,j) = mean(z6); %medy4 =median( [ y(i-1,j-1),y(i-1,j),y(i-1,j+1),y(i,j-1) ] );%已经处理过的4领域系数%y(i,j) = y(i-1,j-1)/( 1 + ( y(i-1,j-1) - medy4  )^2 ) +  y(i-1,j)/( 1 + ( y(i-1,j) - medy4  )^2 ) +  y(i-1,j+1)/( 1 + ( y(i-1,j+1) - medy4  )^2 ) + y(i,j-1)/( 1 + ( y(i,j-1) - medy4  )^2 ) ;%y(i,j) =( y(i-1,j-1) + y(i-1,j) + y(i-1,j+1) + y(i,j-1) ) / 4;%y(i,j) = median( [ y(i-1,j-1),y(i-1,j),y(i-1,j+1),y(i,j-1) ] );%y(i,j) = y(i-1,j-1)/( 1 + ( y(i-1,j-1) - z(i,j)  )^2 ) +  y(i-1,j)/( 1 + ( y(i-1,j) - z(i,j)  )^2 ) +  y(i-1,j+1)/( 1 + ( y(i-1,j+1) - z(i,j)  )^2 ) + y(i,j-1)/( 1 + ( y(i,j-1) - z(i,j)  )^2 ) ;end%F(i,j) = 0;%处理完了噪声点%z(i,j) = y(i,j);end%处理完该噪声点后,将处理完的新像素用来迭代endend%第一步滤波结束,第二波开始在预处理的图像上进行滤波z=y;for i=Nmax+1:e+Nmaxfor j=Nmax+1:f+Nmax%初始滤波窗口为3*3if F(i,j) == 1 %噪声点,需要进行滤波N =0;for i1= i-1:i+1for j1 =j-1:j+1if i1 == i & j1 == j%中心像素被排除在外,不进行统计continue;endif z(i1,j1) ~= 0 & z(i1,j1) ~= 250N = N + 1;%统计信号点的个数endendendif  N > 0z6 = zeros(1,N);%放置信号点的矩阵%存放信号点矩阵for i1 = i-1:i+1for j1 = j-1:j+1if i1 == i & j1 == j%中心像素被排除在外,不进行统计continue;endif z(i1,j1) ~= 0 & z(i1,j1) ~= 250 %if F(i1,j1) == 0 & z(i1,j1) ~= max(z1) & z(i1,j1) ~= min(z1)z6(1,N) = z(i1,j1);N = N-1;endendendy(i,j) = mean(z6); %medy4 =median( [ y(i-1,j-1),y(i-1,j),y(i-1,j+1),y(i,j-1) ] );%已经处理过的4领域系数%y(i,j) = y(i-1,j-1)/( 1 + ( y(i-1,j-1) - medy4  )^2 ) +  y(i-1,j)/( 1 + ( y(i-1,j) - medy4  )^2 ) +  y(i-1,j+1)/( 1 + ( y(i-1,j+1) - medy4  )^2 ) + y(i,j-1)/( 1 + ( y(i,j-1) - medy4  )^2 ) ;%y(i,j) =( y(i-1,j-1) + y(i-1,j) + y(i-1,j+1) + y(i,j-1) ) / 4;%y(i,j) = median( [ y(i-1,j-1),y(i-1,j),y(i-1,j+1),y(i,j-1) ] );%y(i,j) = y(i-1,j-1)/( 1 + ( y(i-1,j-1) - z(i,j)  )^2 ) +  y(i-1,j)/( 1 + ( y(i-1,j) - z(i,j)  )^2 ) +  y(i-1,j+1)/( 1 + ( y(i-1,j+1) - z(i,j)  )^2 ) + y(i,j-1)/( 1 + ( y(i,j-1) - z(i,j)  )^2 ) ;end%F(i,j) = 0;%处理完了噪声点%z(i,j) = y(i,j);end%处理完该噪声点后,将处理完的新像素用来迭代endendR(1:e,1:f) = y( Nmax+1:e+Nmax,Nmax+1:f+Nmax );%拷出滤波后的图像
主函数:
I=imread('2.png');
I=rgb2gray(I);
[e,f]=size(I);J=imnoise(I,'salt & pepper',0.7);
%J=imnoise(J,'gaussian',0.002);
R=quickdelhighnoise(J);
tic;R=quickdelhighnoise(J);toc;
subplot(1,2,1),imshow( uint8(I) ),title('原图像');
subplot(1,2,2),imshow( uint8(R) ),title('新算法滤波后的图像');
% 计算三种算法的峰值信噪比
B=8;                %编码一个像素用多少二进制位
MAX=2^B-1;          %图像有多少灰度级I=double(I);
R=double(R);%%%%%% psnr1=
MES1=sum(sum((I-R).^2))/(e*f);     %自适应中值去噪的均方差
PSNR1=20*log10(MAX/sqrt(MES1));           %自适应中值算法去噪的峰值信噪比
												

一种高效快速的高密度椒盐噪声消除算法(吕宗伟等)相关推荐

  1. 一种高效快速的内存池实现(附源码)

    此算法灵感来自于apache内存池实现原理,不过读者如果没有看过apache内存池实现也无关系,因为本算法相对apache内存池算法更为简单而且易懂,个人认为某些场合也更为高效,或许真正到了apach ...

  2. 停止无效学习,4种高效学习方法,快速提升自己

     来源:此文章为小精灵讲堂原创,仅供学习使用. 目录 1.费曼学习法 Feynman Technique 2.思维导图学习法 Mind Mapping 3.SQ3R 阅读法 4.西蒙学习法 Simon ...

  3. Code128条形码:一种高密度、全字符集的一维条码

    Code128条形码:一种高密度.全字符集的一维条码 在现代商业中,条形码已经成为了不可或缺的工具.而在各种条形码中,Code128 条形码无疑是最受欢迎的之一.Code128 条形码是一种高密度.高 ...

  4. 申威 linux内核,一种申威防火墙快速移植高版本linux内核的方法与流程

    技术特征: 1.一种申威防火墙快速移植高版本linux内核的方法,其特征在于,包括以下步骤: s1:预先制作生成内存根文件系统的压缩文件: 所述步骤s1包括以下步骤: s11:通过编译busybox制 ...

  5. 英文不好如何高效快速地阅读英文文献——提供一种快速首篇文献阅读方法

    英文不好如何高效快速地阅读英文文献 文章目录 英文不好如何高效快速地阅读英文文献 更新前言: 前言 关于阅读英文文献的重要性 中国人最新最优秀的科研成果基本上都会发表在国外的期刊,用的英语. 1.确定 ...

  6. 【实拍】YASA高密度电机技术分析

    切磋:shbinzer. " 重要的问题值得我们持续研究,高密度的技术路线是八仙过海各有神通,本期我们继续介绍另外一种高密度电机技术路线-YASA 轴向磁场电机." 01 何谓YA ...

  7. 高密度 ARM 服务器如何引领“数智时代”发展,打通“智变质变”正循环

    并行计算 | 多样性计算 | ARM架构 深度学习 | 高性能计算 | ARM服务器 如今随着算力.高性能计算的快速发展,数字经济已经成为全球经济增长的主引擎.数字经济的快速发展,使得深度学习.数据分 ...

  8. 以数据为中心的AI构建的一种高效的MLOps系统

    深蓝学院是专注于人工智能的在线教育平台,致力于打造国内一流前沿科技学习交流平台,学院讲师均是各领域顶级研究者,累计发布顶刊论文3000+篇.目前已有数万名伙伴在深蓝学院平台学习,其中不乏北京大学.清华 ...

  9. YOLOv4-5D:一种高效的自动驾驶物体检测器

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨CY 来源丨 当交通遇上机器学习 1. 文章信息 本次介绍的文章是2021年3月份发表在IEEE ...

最新文章

  1. 任正非迷茫的背后是华为在“治未病”
  2. 关于java继承中父类方法可见性探讨
  3. 函数式编程之-拒绝空引用异常(Option类型)
  4. 开发日记-20190828 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 4
  5. RTOS原理及功能简介
  6. “面试不败计划”: java语言基础面试题(三)
  7. ipad/iphone启动界面Default.png
  8. Spring JDBC 框架,我的学习笔记
  9. Collections类操作集合详解
  10. UnsupportedClassVersionError 错误解决办法
  11. 大型网站的架构设计问题--大型高并发高负载网站的系统架构
  12. matlab画图,均值±标准差
  13. 计算机进制转换列表,计算机进制转换汇总
  14. Android实战简易教程五(ListView用法研究)
  15. Oracle EBS 统计数据收集模式(Gather Schema Statistics)报错处理
  16. 无法启动此程序因为计算机丢失msvcr110.dll,Win7运行程序提示计算机中丢失msvcr110.dll如何解决...
  17. ubuntu如何安装Mac OS X主题
  18. Citrix 服务器虚拟化之二十一 桌面虚拟化之部署Provisioning Services
  19. 云数据库精华问答 | 什么是云数据库?
  20. 关于软文营销,你真的了解它吗?

热门文章

  1. 关于雷达隐身的一些事
  2. Android6.0源码解读之ViewGroup点击事件分发机制
  3. 终极五笔 v6.02 正式版 下载
  4. linux 安装配置java环境 jdk1.6 jdk-6u45-linux-x64.bin
  5. 15个微软Edge浏览器插件,你用过哪几个?
  6. 010 Editor算法逆向与编写注册机
  7. 【mysql】-【innodb数据存储结构】
  8. 最近最开心的一件事情
  9. python哈姆雷特词频统计_人生苦短我用Python——哈姆雷特词频统计
  10. java 文件头_常用文件的文件头(附JAVA测试类)