原理

  • 高斯噪声
    高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声包括热噪声和散粒噪声。在通信信道测试和建模中,高斯噪声被用作加性白噪声以产生加性白高斯噪声。
  • 椒盐噪声
    椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。
  • 中值滤波
    对待处理的当前像素,选择一个模板3x3、5x5或其他,这里选择3x3矩阵,该模板为其邻近的若干个像素组成,对模板的像素由小到大进行排序,再用模板的中值来替代原像素的值的方法。
  • 修正的阿尔法均值滤波
    统计排序滤波器的响应基于由该滤波器包围的图像区域中的像素值的排序,为一种非线性滤波器。常用的非线性滤波器有中值滤波器、、自适应中值滤波、最大值(最小值)滤波器、中点滤波器与修正的阿尔法均值滤波器等。
    修正的阿尔法均值滤波器类似于去掉最高分与去掉最低分评价一个选手水平的方法,即将滤波范围内的数据进行排序,从大到小的顺序去除d个数据,从小到大的顺序去除d个数据,将剩下的数据计算均值。这样的滤波器,很擅长去除椒盐噪声与其他类型噪声一起污染过的图片。

实际操作(先加噪声再去噪)

  1. 加噪声
    如图所示,为不同噪声强度的加噪声处理。对高斯噪声,改变高斯函数的均值和方差即可产生不同强度噪声。对椒盐噪声,在代码实现中,对于某一个特定位置产生两个随机数,设定一个阈值,若大于阈值则置1,小于阈值则置0,再通过对两个随机数进行逻辑运算(交并补),可实现在对应位置加椒盐噪声。改变阈值即可实现不同噪声强度的加噪声处理。
  2. 不同滤波方法去噪
  3. 不同滤波器原理分析与比较
  • 算数均值滤波
    算术均值滤波即滤波后的中心点像素值为原图中中心点范围内的像素值的平均值。
    对本张经过椒盐噪声和高斯噪声处理的图片,算术均值滤波的结果并不十分理想,因为椒盐噪声的像素值为0或255,经过算数均值滤波处理后,模糊了图片原本的信息,会使图片处于“灰蒙蒙”的状态。
  • 几何均值滤波
    几何均值滤波即滤波后的中心点像素值为原图中中心点范围内的像素值的乘积开根号,开根号的次数为滤波器长宽乘积的倒数。
    对本张经过椒盐噪声和高斯噪声处理的图片,几何均值滤波的处理结果十分不理想,由几何均值滤波的公式可知,若滤波器范围内有一个像素值为0,则处理后的中心像素点的值均为0,这是由公式中的连乘性质决定的。而由于原图像经过椒盐处理,有很多像素值为“椒”噪声,即为0。由此可知,处理后的图像中有很多像素均为0,展示出来的是黑色像素。
  • 中值滤波
    中值滤波原理如以上2.3所述,在本实验中,中值滤波可以很好的处理椒盐噪声,因为一个区域内的像素值的中值不太可能是255或0,因此很好的处理了椒盐噪声。而对于高斯噪声的处理,本滤波器就没有什么独到之处了。
  • 修正阿尔法均值滤波
    修正阿尔法均值滤波原理如以上2.4所述,在本实验中,修正的阿尔法均值滤波的表现差强人意,由其原理,它最大程度上去除了椒盐噪声,并模糊了原图像。
  • 不同滤波器的比较分析
    在本实验中,中值滤波的表现可以说是最为良好的。不同滤波器的优势和劣势均如上所述,
  1. 几何均值滤波会让滤波后的图像过多“黑”像素。
  2. 由于椒盐噪声存在,算数均值滤波表现不良好,会让滤波后的图像处于“灰蒙蒙”的状态
  3. 修正的阿尔法均值滤波去除了“极端像素点”,再进行平均滤波,效果就要比算术均值滤波好很多了。

源代码

picture=imread('ckt-board-orig.tif');
[m,n]=size(picture);y1=0+0.1*randn(m,n);%二维高斯分布矩阵 0是均值 0.1是标准差
%先将其double化,再除以255 便于后面计算
gauss1=double(picture)/255;
%加上噪声
gauss1=gauss1+y1;
%将像素范围扩大至0--255
gauss1=gauss1*255;
%转换为uint8类型
gauss1=uint8(gauss1);y2=0+0.4*randn(m,n);
gauss2=double(picture)/255;
gauss2=gauss2+y2;
gauss2=gauss2*255;
gauss2=uint8(gauss2);y3=1+0.1*randn(m,n);
gauss3=double(picture)/255;
gauss3=gauss3+y3;
gauss3=gauss3*255;
gauss3=uint8(gauss3);salt1=picture;
k1=0.1;
k2=0.1;
a1=rand(m,n)<k1;
a2=rand(m,n)<k2;
salt1(a1&a2)=255;
salt1(a1& ~a2)=0;salt2=picture;
k1=0.2;
k2=0.2;
a1=rand(m,n)<k1;
a2=rand(m,n)<k2;
salt2(a1&a2)=255;
salt2(a1& ~a2)=0;salt3=picture;
k1=0.3;
k2=0.3;
a1=rand(m,n)<k1;
a2=rand(m,n)<k2;
salt3(a1&a2)=255;
salt3(a1& ~a2)=0;figure(1);
subplot(3,3,2),imshow(picture),title('原图');
subplot(3,3,4),imshow(gauss1),title('高斯噪声1');
subplot(3,3,5),imshow(gauss2),title('高斯噪声2');
subplot(3,3,6),imshow(gauss3),title('高斯噪声3');
subplot(3,3,7),imshow(salt1),title('椒盐噪声1');
subplot(3,3,8),imshow(salt2),title('椒盐噪声2');
subplot(3,3,9),imshow(salt3),title('椒盐噪声3');GSalt=gauss1;
k1=0.1;
k2=0.1;
a1=rand(m,n)<k1;
a2=rand(m,n)<k2;
GSalt(a1&a2)=255;
GSalt(a1& ~a2)=0;%算术均值
dGSalt=im2double(GSalt);
resultImage1=dGSalt;
for i=2:m-1for j=2:n-1resultImage1(i,j)=(dGSalt(i-1,j-1)+dGSalt(i-1,j)+dGSalt(i-1,j+1)+dGSalt(i,j-1)+dGSalt(i,j)+dGSalt(i,j+1)+dGSalt(i+1,j-1)+dGSalt(i+1,j)+dGSalt(i+1,j+1))/9;end
end
resultImage1=im2uint8(resultImage1);resultImage2=dGSalt;
for i=2:m-1for j=2:n-1resultImage2(i,j)=(dGSalt(i-1,j-1)*dGSalt(i-1,j)*dGSalt(i-1,j+1)*dGSalt(i,j-1)*dGSalt(i,j)*dGSalt(i,j+1)*dGSalt(i+1,j-1)*dGSalt(i+1,j)*dGSalt(i+1,j+1))^(1/9);end
end
%resultImage=resultImage2;
resultImage2=im2uint8(resultImage2);for r=2:m-1for c=2:n-1median3x3 =[GSalt(r-1,c-1)    GSalt(r-1,c)    GSalt(r-1,c+1)GSalt(r,c-1)      GSalt(r,c)      GSalt(r,c+1)GSalt(r+1,c-1)   GSalt(r+1,c)    GSalt(r+1,c+1)];sort1=sort(median3x3,2,'descend');sort2=sort([sort1(1),sort1(4),sort1(7)],'descend');sort3=sort([sort1(2),sort1(5),sort1(8)],'descend');sort4=sort([sort1(3),sort1(6),sort1(9)],'descend');mid_num=sort([sort2(3),sort3(2),sort4(1)],'descend');Median_Img(r,c) = mid_num(2);end
enda=5;
b=5;
alpha=dGSalt;
for i=1:m-a+1for j=1:n-a+1g3=dGSalt(i:i+a-1,j:j+a-1);g3=sort(g3(:)); %对邻域内的像素点进行排序min_num=ceil(b/2); %去掉最小灰度值的个数max_num=floor(b/2); %去掉最大灰度值的个数%去掉d个最值灰度级后求算术均值g3(1:min_num)=zeros(min_num,1);g3(a*a-max_num+1:a*a)=zeros(max_num,1);s3=sum(g3);%中心点的值用子图像的算术均值代替alpha(i+(a-1)/2,j+(a-1)/2)=s3/(a*a-b); end
endfigure(2);
subplot(2,3,1),imshow(picture),title('原图');
subplot(2,3,2),imshow(GSalt),title('高斯+椒盐');
subplot(2,3,3),imshow(resultImage1),title('算术均值滤波');
subplot(2,3,4),imshow(resultImage2),title('几何均值滤波');
subplot(2,3,5),imshow(Median_Img),title('中值滤波');
subplot(2,3,6),imshow(alpha),title('修正阿尔法均值滤波');

图像去噪(包含修正的阿尔法均值滤波及通用滤波方法代码)相关推荐

  1. 数字图像处理(修正的阿尔法均值滤波)

    修正的阿尔法均值滤波 统计排序滤波器的响应基于由该滤波器包围的图像区域中的像素值的排序,为一种非线性滤波器.常用的非线性滤波器有中值滤波器..自适应中值滤波.最大值(最小值)滤波器.中点滤波器与修正的 ...

  2. 【图像去噪】基于matlab高斯+均值+中值+双边滤波图像去噪【含Matlab源码 1872期】

    ⛄一.高斯+均值+中值+双边滤波图像去噪简介 1 数字图像去噪技术简述 1.1 研究背景及目的 图像是人类认识世界的第一视角,我们可以通过图像获得比较真实的信息和直观的结果.但实际上,在产生和传输过程 ...

  3. 【图像去噪】基于非局部均值(NLM)滤波图像去噪含Matlab源码

    1 简介 图像在获取和传输过程中,不可避免地受到外部和内部的干扰,常常因为各种因素的影响而被加入很多噪声,这十分严重的影响了人们对传输后图像信息的读取.因此通过一定方法将被噪声污染的图像进行去噪处理一 ...

  4. 【图像去噪】基于非局部均值(NLM)滤波图像去噪matlab源码

    一.简介 1 NLM滤波原理 2 Pixelwise Implementation 3 Patchwise Implementation function [output]=NLmeans(input ...

  5. matlab 空域滤波,MATLAB--空域滤波学习笔记

    空域滤波 空域滤波是指对图像中每个像素为中心的邻域进行预定义操作,然后用得到的结果代替邻域中心像素点的像素值.滤波器的中心访问输入图像中的每个像素,就生成了滤波后的图像. 空域滤波器可分为线性空域滤波 ...

  6. 【OpenCV 例程200篇】99. 修正阿尔法均值滤波器

    [OpenCV 例程200篇]99. 修正阿尔法均值滤波器 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 3.6 修 ...

  7. matlab 修正后阿尔法,修正后的阿尔法均值滤波器Alpha.ppt

    修正后的阿尔法均值滤波器Alpha 数字图像处理Digital Image Processing 第6章 图像复原(Image Restoration) 第6章 图像复原(Image Restorat ...

  8. 《OpenCv视觉之眼》Python图像处理五 :Opencv图像去噪处理之均值滤波、方框滤波、中值滤波和高斯滤波

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  9. 空间滤波-统计排序滤波器-修正阿尔法均值滤波器

    目录 1. 介绍 2. 代码实现 3. code 1. 介绍 本章内容介绍的是修正阿尔法均值滤波器,它也是属于统计排序滤波器的一种.和之前的统计排序滤波不同的是,修正阿尔法均值滤波器会将kernel处 ...

最新文章

  1. 安全:incaseformat蠕虫病毒来袭,你中招了吗?
  2. JS的Date.setMonth()方法坑
  3. 1分钟完美安装最新 CentOS + Nginx + PHP-FPM + MySQL
  4. java选择安装路径的功能怎么实现_水槽怎么选择,从安装方式,材质功能,江水平给你一次性说清楚...
  5. VMware虚拟机中Centos7的IP地址设置方法
  6. python opencv 识别角度_opencv python 角点检测/FAST算法
  7. spark生成dataframe的几种方式
  8. 遗传算法求解多约束、多类型车辆、多目标优化的车辆路径问题
  9. my ReadBook_zhulidianzishangwushi / dianzishangwushi
  10. java窗口图标怎么换_如何更改Swing窗口的默认图标?
  11. 《攻守道》笔记(3)
  12. 明日之后八级房怎么造?明日之后好看的八级房蓝图造型汇总
  13. 4T移动硬盘 分区_手机连接移动硬盘教程
  14. 怎样设计完整的交易系统(主观交易和程序化交易均可借鉴)
  15. Python CSV Reader/Writer
  16. 计算机毕业设计-ssm智能小区管理系统(源码+数据库+文档)社区维修管理系统-小区缴费管理系统javaweb项目
  17. 7300 LE显卡只能使用VGA模式
  18. 鲜肉大葱包子的做法和配方
  19. a标签download下载
  20. tcpdump命令使用总结

热门文章

  1. js封装数组反转的方法--冯浩的博客
  2. 一道关于索引的使用和key_len的计算的面试题
  3. project中如何更改项目标题
  4. 腾讯QQ影像中心招聘算法实习生
  5. 性能测试的各种监控工具大全
  6. MATLAB中果蝇味道浓度判定函数,果蝇优化算法的加权策略研究
  7. iOS16系统手机设置开启开发者模式才能安装ipa包
  8. 《从偶然到必然 华为研发投资管理与实践》学习总结 第一章 IPD的价值
  9. 兼容各种版本浏览器网页视频播放制作路程
  10. mysql 代替不明_所有的死锁,都是不明就里的循环。又一必须升级MySQL的死锁问题!!!...