一、实验名称

图像的噪声与滤波处理

二、实验目的

1.熟悉MATLAB软件的使用。
2.掌握图像的噪声与滤波处理。

三、实验内容

1.对一张图片添加不同强度的高斯噪声、椒盐噪声
2.对图像进行不同模板的均值滤波、高斯加权滤波、中值滤波,对比结果并分析不同滤波方式的优劣

四、实验仪器与设备

Win10 64位电脑
MATLAB2017a

五、实验原理

高斯噪声
    所谓高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。高斯白噪声包括热噪声和散粒噪声。在通信信道测试和建模中,高斯噪声被用作加性白噪声以产生加性白高斯噪声。
椒盐噪声
    椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。盐和胡椒噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。
均值滤波
    均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度g(x,y),即g(x,y)=∑f(x,y)/m m为该模板中包含当前像素在内的像素总个数。
高斯加权滤波
    高斯滤波实质上是一种信号的滤波器,其用途是信号的平滑处理,人们知道数字图像用于后期应用,其噪声是最大的问题,由于误差会累计传递等原因,很多图像处理教材会在很早的时候介绍Gauss滤波器,用于得到信噪比SNR较高的图像(反应真实信号)。与此相关的有Gauss-Laplace变换,其实就是为了得到较好的图像边缘,先对图像做Gauss平滑滤波,剔除噪声,然后求二阶导矢,用二阶导的过零点确定边缘,在计算时也是频域乘积至空域卷积。
中值滤波
    中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为33,55区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。

六、实验过程及代码

添加高斯噪声

方案一:利用imnoise()函数

t=imread('a1.jpg');
imshow(t),title('原图');
t1=imnoise(t,'gaussian',0,0.01);
figure,imshow(t1),title('添加均值为0,方差为0.01的高斯噪声');
t2=imnoise(t,'gaussian',0,0.02);
figure,imshow(t2),title('添加均值为0,方差为0.02的高斯噪声');
t3=imnoise(t,'gaussian',0,0.03);
figure,imshow(t3),title('添加均值为0,方差为0.03的高斯噪声');
t4=imnoise(t,'gaussian',0.2,0.01);
figure,imshow(t4),title('添加均值为0.2,方差为0.01的高斯噪声');
t5=imnoise(t,'gaussian',0.4,0.01);
figure,imshow(t5),title('添加均值为0.4,方差为0.01的高斯噪声');

方案二:利用randn()函数

t=imread('a1.jpg');
[m,n,z]=size(t);
y=0+0.1*randn(m,n);
t1=double(t)/255;
t1=t1+y;
t1=t1*255;
t1=uint8(t1);
subplot(1,2,1),imshow(t),title('原图');
subplot(1,2,2),imshow(t1),title('加入均值为0,标准差为0.1的高斯噪声后');

方案三:自主随机生成二维高斯分布矩阵

 image=imread('a1.jpg');
[width,height,z]=size(image);
subplot(1,2,1);
imshow(image);
title('原图');
av=0;
std=0.1;
u1=rand(width,height);
u2=rand(width,height);
x=std*sqrt(-2*log(u1)).*cos(2*pi*u2)+av;
result1=double(image)/255+x;
result1=uint8(255*result1);
subplot(1,2,2);
imshow(result1);
title('加入均值为0,标准差为0.1的高斯噪声后');

加入椒盐噪声

方案一:利用imnoise()函数

 t=imread('a1.jpg');
subplot(1,2,1),imshow(t),title('原图');
t1=imnoise(t,'salt & pepper',0.1);
subplot(1,2,2),imshow(t1),title('加入噪声密度:0.1的椒盐噪声');
t2=imnoise(t,'salt & pepper',0.2);
figure,subplot(1,2,1),imshow(t2),title('加入噪声密度:0.2的椒盐噪声');
t3=imnoise(t,'salt & pepper',0.3);
subplot(1,2,2),imshow(t3),title('加入噪声密度:0.3的椒盐噪声');

方案二:产生随机数

image=imread('a1.jpg');
[width,height,z]=size(image);result2=image;
subplot(1,2,1)
imshow(image);
title('原图');
k1=0.2;
k2=0.2;
a1=rand(width,height)<k1;
a2=rand(width,height)<k2;
t1=result2(:,:,1);
t2=result2(:,:,2);
t3=result2(:,:,3);
t1(a1&a2)=0;
t2(a1&a2)=0;
t3(a1&a2)=0;
t1(a1& ~a2)=255;
t2(a1& ~a2)=255;
t3(a1& ~a2)=255;
result2(:,:,1)=t1;
result2(:,:,2)=t2;
result2(:,:,3)=t3;
subplot(1,2,2)
imshow(result2);
title('加高斯噪声后');

均值滤波(对高斯噪声和椒盐噪声)

 t=imread('a1.jpg');
[m,n,z]=size(t);
t1=imnoise(t,'gaussian',0,0.02);
imshow(t1),title('加入高斯噪声后')
t2=t;
for i=1:m-2
for j=1:n-2
t2(i+1,j+1,:)=round(t2(i,j,:)/9+t2(i,j+1,:)/9+t2(i,j+2,:)/9+t2(i+1,j,:)/9+t2(i+1,j+1,:)/9+t2(i+1,j+2,:)/9+t2(i+2,j,:)/9+t2(i+2,j+1,:)/9+t2(i+2,j+2,:)/9);
end
end
figure,
subplot(1,2,1),imshow(t2),title('3*3均值滤波');
t3=t;
for i=1:m-4
for j=1:n-4
t3(i+2,j+2,:)=round(t3(i,j,:)/25+t3(i,j+1,:)/25+t3(i,j+2,:)/25+t3(i,j+3,:)/25+t3(i,j+4,:)/25+t3(i+1,j,:)/25+t3(i+1,j+1,:)/25+t3(i+1,j+2,:)/25+t3(i+1,j+3,:)/25+t3(i+1,j+4,:)/25+t3(i+2,j,:)/25+t3(i+2,j+1,:)/25+...
t3(i+2,j+2,:)/25+t3(i+2,j+3,:)/25+t3(i+2,j+4,:)/25+t3(i+3,j,:)/25+t3(i+3,j+1,:)/25+t3(i+3,j+2,:)/25+t3(i+3,j+3,:)/25+t3(i+3,j+4,:)/25+...
t3(i+4,j,:)/25+t3(i+4,j+1,:)/25+t3(i+4,j+2,:)/25+t3(i+4,j+3,:)/25+t3(i+4,j+4,:)/25);
end
end
subplot(1,2,2),imshow(t3),title('5*5均值滤波');
t1=imnoise(t,'salt & pepper',0.3);
figure,imshow(t1),title('加入椒盐噪声后')
t2=t;
for i=1:m-2
for j=1:n-2
t2(i+1,j+1,:)=round(t2(i,j,:)/9+t2(i,j+1,:)/9+t2(i,j+2,:)/9+t2(i+1,j,:)/9+t2(i+1,j+1,:)/9+t2(i+1,j+2,:)/9+t2(i+2,j,:)/9+t2(i+2,j+1,:)/9+t2(i+2,j+2,:)/9);
end
end
figure,
subplot(1,2,1),imshow(t2),title('3*3均值滤波');
t3=t;
for i=1:m-4
for j=1:n-4
t3(i+2,j+2,:)=round(t3(i,j,:)/25+t3(i,j+1,:)/25+t3(i,j+2,:)/25+t3(i,j+3,:)/25+t3(i,j+4,:)/25+t3(i+1,j,:)/25+t3(i+1,j+1,:)/25+t3(i+1,j+2,:)/25+t3(i+1,j+3,:)/25+t3(i+1,j+4,:)/25+t3(i+2,j,:)/25+t3(i+2,j+1,:)/25+...
t3(i+2,j+2,:)/25+t3(i+2,j+3,:)/25+t3(i+2,j+4,:)/25+t3(i+3,j,:)/25+t3(i+3,j+1,:)/25+t3(i+3,j+2,:)/25+t3(i+3,j+3,:)/25+t3(i+3,j+4,:)/25+...
t3(i+4,j,:)/25+t3(i+4,j+1,:)/25+t3(i+4,j+2,:)/25+t3(i+4,j+3,:)/25+t3(i+4,j+4,:)/25);
end
end
subplot(1,2,2),imshow(t3),title('5*5均值滤波');

高斯滤波

function h = gaussian( hsize, sigma)
siz = (hsize-1)/2;
[x,y] = meshgrid(-siz(2):siz(2),-siz(1):siz(1));
arg = -(x.*x + y.*y)/(2*sigma*sigma);
h = exp(arg);
h(h<eps*max(h(:))) = 0;
sumh = sum(h(:));
if sumh ~= 0
h = h/sumh;
end
endt=imread('a1.jpg');
[m,n,z]=size(t);
t1=imnoise(t,'gaussian',0,0.02);
imshow(t1),title('加入高斯噪声后');
martex=gaussian([3 3],1);
t2=t;
for i=m-2
for j=n-2
t2(i+1,j+1,:)=t2(i,j,:)*martex(1,1)+t2(i,j+1,:)*martex(1,2)+t2(i,j+2,:)*martex(1,3)+t2(i+1,j,:)*martex(2,1)+...
t2(i+1,j+1,:)*martex(2,2)+t2(i+1,j+2,:)*martex(2,3)+t2(i+2,j,:)*martex(3,1)+t2(i+2,j+1,:)*martex(3,2)+t2(i+2,j+2,:)*martex(3,3);
end
end
figure,imshow(t2),title('高斯滤波')

中值滤波

function [ img ] = median_filter( image, m )n = m;[ height, width ] = size(image);x1 = double(image);x2 = x1;for i = 1: height-n+1for j = 1:width-n+1mb = x1( i:(i+n-1),  j:(j+n-1) );mb = mb(:);mm = median(mb);x2( i+(n-1)/2,  j+(n-1)/2 ) = mm;endendimg = uint8(x2);
endt=imread('a1.jpg');
t1=imnoise(t,'salt & pepper',0.3);
imshow(t1),title('加入椒盐噪声');
t2=median_filter(t,3);
figure,imshow(t),title('中值滤波后')

七、实验结果与分析

添加高斯噪声
方案一:利用imnoise()函数




方案二:利用imnoise()函数

方案三:自主生成高斯噪声

分析:
对于不同强度的高斯噪声,通过上面三种方案的实验,我们可以得出以下结论:
1.均值决定图像的整体灰度范围,随着均值的增大,那么图像整体的灰度同样也会增长,当然,超过255依然为255,但更多的像素靠近255,从视觉上看起来更加偏白,偏亮。
2.方差决定着图像噪声的密集程度及概率分布程度,方差越大,图像中的噪声对图片的影响也就越大,从视觉上看就是更加密集。

添加椒盐噪声
方案一:


方案二:

分析:
对于imnoise()函数中的d,是指噪声的密度,比如d=0.5,则总数的50%的像素都会随机的变为黑白像素,用来模拟现实情况中图片拍摄过程中遇到的突变脉冲。
均值滤波
对高斯噪声:


对椒盐噪声:

高斯滤波:

中值滤波


不同滤波方式总结
高斯滤波:适用于噪声趋于正态分布的图像

均值滤波:把每个像素都用周围的8个像素来做均值操作。可以平滑图像,速度快,算法简单。但是无法去掉噪声。

中值滤波:常用的非线性滤波方法 ,也是图像处理技术中最常用的预处理技术。在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘。适用于椒盐噪声这种类型的噪声。

八、实验总结及心得体会

通过这次实验,学会了两种噪声和几种滤波方法。在此次实验过程中,觉得有点吃力的就是添加高斯噪声和高斯滤波了,那块需要的高数知识有点遗忘,所以在理解上有点问题,后面在csdn上慢慢学习别人写的文章,最后还是学会了。但是自己写的函数与MATLAB中库函数还是有一定的差别,这里应该是自己在一些细节的部分处理的还不行,以后还是应该深入学习。

更多

获取更多资料、代码,微信公众号:海轰Pro
回复 海轰 即可

MATLAB--数字图像处理 图像噪声与滤波处理相关推荐

  1. matlab空域滤波,MATLAB数字图像处理基本操作及空域滤波

    MATLAB数字图像处理基本操作及空域滤波 实验一 MATLAB 数字图像处理基本操作及空域滤波实验目的1.了解有关数字图像处理的基本概念,熟悉Matlab软件中关于数字图像处理的基本命令,掌握利用M ...

  2. Matlab数字图像处理——图像的空间变换

    Matlab空间变换函数 imtransform Matlab空间变换函数 imtransform 可以实现图像仿射变换(如 平移.旋转.剪切.缩放).投影变换, 该函数可与 maketform 配合 ...

  3. matlab数字图像处理——图像的读写,灰度、二值图像

    一.实验目的 1.结合数字图像处理的知识,直观感受图像处理的基本实现过程 2.熟悉MATLAB工具的使用 3.了解图像的读写和显示 二.实验内容 实验内容一:图像读取 (1)利用编程实现读取图像 利用 ...

  4. python数字图像处理-图像噪声与去噪算法

    图像噪声 椒盐噪声 概述: 椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素.椒盐噪声是一种 ...

  5. Matlab数字图像处理——图像处理工具箱Image Processing Toolbox

    Image Processing Toolbox 图像处理工具箱包含的功能: 图像的读取和保存 图像的显示 创建GUI 图像的几何变换 图像滤波器设计及线性滤波 形态学图像处理 图像域变换 图像增强 ...

  6. Matlab数字图像处理——图像文件的读取

    文章目录 一.Matlab中获取图像信息的函数 imfinfo 二.Matlab读取图像文件的函数 imread 三.Matlab保存图像文件的函数 imwrite 完整目录 一.Matlab中获取图 ...

  7. 计算机图像进行滤波的函数,数字图像处理图像滤波.ppt

    数字图像处理图像滤波 图像滤波 图像处理中所用到的图像往往含有噪声,需要用图像滤波的方法去除噪声. 内容框架 像素基础知识介绍 算术和逻辑运算 直方图 直方图均衡算法,用于图像锐化. 图像增强基本方法 ...

  8. matlab图像低通滤波器 实验报告,基于matlab数字图像处理之低通滤波器

    <基于matlab数字图像处理之低通滤波器>由会员分享,可在线阅读,更多相关<基于matlab数字图像处理之低通滤波器(6页珍藏版)>请在人人文库网上搜索. 1.实践一:理想低 ...

  9. matlab 求其骨架,数字图像处理图像的骨架生成和提取(Matlab)三种方法

    [实例简介] 数字图像处理图像的骨架生成和提取(Matlab),有三种方法,推荐给大家! [实例截图] [核心代码] Programe ├── Programe1 │   ├── 00.JPG │   ...

最新文章

  1. 分享一个WM上绘制饼图、柱形图、折线图的控件类
  2. GC之二--GC是如何回收时的判断依据、shallow(浅) size、retained(保留) size、Deep(深)size...
  3. java系统时间怎么获取,java目前系统时间的获取
  4. log4j中配置日志文件相对路径方法
  5. hdu 3577Fast Arrangement
  6. 爬虫必须得会的Web知识
  7. 第二章 Java基本语法(一)
  8. css实现左(右)侧固定宽度,右(左)侧宽度自适应 ---清除浮动
  9. 代理ARP协议(Proxy ARP)
  10. v4l2驱动框架_【干货分享】Xilinx Linux V4L2视频管道(Video Pipeline)驱动程序分析...
  11. hp服务器安装win7普通系统安装,hp台式电脑安装系统一键安装win7系统
  12. 前端设计必备-Font awesome 插件使用菜鸟言语
  13. Android IPC数据在内核空间中的发送过程分析
  14. headerutf php_php header设置编码的方法
  15. EJB到底是什么?(通俗易懂白话文)
  16. 红黑树 一张导图解决红黑树全部插入和删除问题 包含详细操作原理 情况对比
  17. 奔图P3305DN安装官网windows驱动 打印乱码解决方法
  18. 个人投资课 张潇雨_张潇雨《个人投资课》学习笔记
  19. 随机误差与Allan方差的理解
  20. 51单片机用c语言倒计时程序,51单片机实现100以内倒计时,求大佬指点。

热门文章

  1. 多传感器融合定位十五-多传感器时空标定(综述)
  2. 2O19 江大计算机有调剂,江南大学2019年考研调剂公告
  3. 建模simulink - xpc自定义模块
  4. 记一次开发环境redis出现key丢失排查
  5. QQ2005正式版将于27日发布!(转)
  6. 2019年软件工程领域各大会议投稿时间
  7. MKS GEN_L V2.1使用说明书
  8. JQuery滚动条及位置相关方法
  9. ShaderForge适用于unity 2018x、2019x、2020版本
  10. thinkpad x12018换固态_ThinkPad X1 Carbon 2018.超强升级