自主学习周 MATLAB图像添加噪声和降噪
学习与实践报告
学生姓名:
班 级:
学 号:
导 师: 时 间: 2011年9月
一、背景资料
1. MATLAB
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连 matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
2. 图像噪声
目前大多数数字图像系统中,输入图像都是采用先冻结再扫描方式将多维图像变成一维电信号,再对其进行处理、存储、传输等加工变换。最后往往还要在组成多维图像信号,而图像噪声也将同样受到这样的分解和合成。在这些过程中电气系统和外界影响将使得图像噪声的精确分析变得十分复杂。另一方面图像只是传输视觉信息的媒介,对图像信息的认识理解是由人的视觉系统所决定的。不同的图像噪声,人的感觉程度是不同的,这就是所谓人的噪声视觉特性课题。
图像噪声在数字图像处理技术中的重要性越来越明显,如高放大倍数航片的判读,X射线图像系统中的噪声去除等已经成为不可缺少的技术步骤。
3.高斯噪声
所谓高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。 高斯白噪声包括热噪声和散粒噪声。 编辑本段高斯分布 高斯分布的概念
高斯分布,也称正态分布,又称常态分布,记为N(μ,σ^2),其中μ,σ^2为分布的参数,分别为高斯分布的期望和方差。当有确定值时,p(x)也就确定了,特别当μ=0,σ^2=1时,X的分布为标准正态分布。 高斯噪声的抑制
在电子技术测控系统中,对干扰与噪声抑制方法主要有屏蔽、合理接地、隔离、合理布线、净化电源、滤波、采用专用器件等等措施。 除了采用通用的噪声抑制方法外,对高斯噪声的抑制方法常常采用数理统计方法。
4.椒盐噪声
椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。去除脉冲干扰级椒盐噪声最常用的算法是中值滤波。路面图像属于结构光图像,使用区域分割技术中的阀值分割法消除白噪声及部分椒盐噪声,而不能使用中值滤波对白噪声及椒盐噪声进行滤波,因为滤波模板在图像中漫游时会改变光条中像素的真实灰度分布,给随后的重心法细化过程带来负面影响。
大量的实验研究发现,由摄像机拍摄得到的图像受离散的脉冲、椒盐噪声和零均值的高斯噪声的影响较严重。噪声给图像处理带来很多困难,对图像分割、特征提取、图像识别等具有直接影响。因此,实时采集的图像需进行滤波处理。消除图像中的噪声成份叫做图像的平滑化或滤波操作。滤波的目的有两个:一是抽出对象的特征作为图像识别的特征模式;二是为适应计算机处理的要求,消除图像数字化时所混入的噪声。对滤波处理的要求有两条:一是不能损坏图像轮廓及边缘等重要信息;二是使图像清晰,视觉效果好。
5.中值滤波
中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值.
实现方法:
1:通过从图像中的某个采样窗口取出奇数个数据进行排序 2:用排序后的中值取代要处理的数据即可
中值滤波法对消除椒盐噪音非常有效,在光学测量条纹图象的相位分析处理方法中有特殊作用,但在条纹中心分析方法中作用不大.
中值滤波在图像处理中,常用于用来保护边缘信息,是经典的平滑噪声的方法
中值滤波原理。中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是去某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为2*2,3*3区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。
参考资料:二、程序源代码
M=imread('') % 打开图像“” subplot(2,3,1)
imshow(M) %在一行一列显示原始图像
title('original')
P1=imnoise(M,'gaussian', %加入高斯躁声 subplot(2,3,2)
imshow(P1) %在一行二列显示加入高斯躁声后的图像 title('gaussian noise');
P2=imnoise(M,'salt & pepper', %subplot(2,3,3)
imshow(P2) %title('salt & pepper noise');
P12=im2bw(P1, P22=im2bw(P2, %
P01=im2bw(M, subplot(2,3,4) imshow(P01)
title('original-binary') %
P3=medfilt2(P12) %subplot(2,3,5)
imshow(P3) %title('medfilter gaussian')
P4=medfilt2(P22) %subplot(2,3,6) imshow(P4)
加入椒盐躁声 在一行三列显示加入椒盐躁声后的图像 将添加噪音后的图像转为二进制 将原图像转为二进制并于二行一列显示对高斯躁声中值滤波 在二行二列显示高斯躁声中值滤波后的图像 对椒盐躁声中值滤波
title('medfilter salt & pepper noise') %在二行三列显示对椒盐躁声中值滤波
三、运行结果
运行环境:MATLAB R2010b
四、相关函数
IMNOISE
Add noise to image.
J = IMNOISE(I,TYPE,...) Add noise of a given TYPE to the intensity image I. TYPE is a string that can have one of these values:
'gaussian' Gaussian white noise with constant mean and variance
'localvar' Zero-mean Gaussian white noise with an intensity-dependent variance
'poisson' Poisson noise
'salt & pepper' \"On and Off\" pixels
'speckle' Multiplicative noise
Depending on TYPE, you can specify additional parameters to IMNOISE. All numerical parameters are normalized; they correspond to operations with
images with intensities ranging from 0 to 1. IM2BW
Convert image to binary image by thresholding.
IM2BW produces binary images from indexed, intensity, or RGB images. To do this, it converts the input image to grayscale format (if it is not already
an intensity image), and then converts this grayscale image to binary by thresholding. The output binary image BW has values of 1 (white) for all pixels in the input image with luminance greater than LEVEL and 0 (black) for all other pixels. (Note that you specify LEVEL in the range [0,1], regardless of the class of the input image.)
BW = IM2BW(I,LEVEL) converts the intensity image I to black and white.
BW = IM2BW(X,MAP,LEVEL) converts the indexed image X with colormap MAP to black and white.
BW = IM2BW(RGB,LEVEL) converts the RGB image RGB to black and white.
Note that the function GRAYTHRESH can be used to compute LEVEL
automatically.
MEDFILT2
2-D median filtering.
B = MEDFILT2(A,[M N]) performs median filtering of the matrix A in two dimensions. Each output pixel contains the median value in the M-by-N neighborhood around the corresponding pixel in the input image. MEDFILT2 pads the image with zeros on the edges, so the median values for the points within [M N]/2 of the edges may appear distorted.
B = MEDFILT2(A) performs median filtering of the matrix A using the default 3-by-3 neighborhood.
B = MEDFILT2(...,PADOPT) controls how the matrix boundaries are padded. PADOPT may be 'zeros' (the default),
'symmetric', or 'indexed'. If PADOPT is 'zeros', A is padded with zeros at the boundaries. If PADOPT is 'symmetric', A is symmetrically extended at the boundaries. If PADOPT is 'indexed', A is padded with ones if it is double; otherwise it is padded with zeros.
参考资料:MATLAB Product Help
五、学习心得
之前对MATLAB仅仅只是有所耳闻,只知道这个软件在功能强大,在数学建模、信号处理等方面都有着极其广泛的应用并起到了很大的推动作用。在这几天,终于开始真正接触MATLAB,随是刚刚接触,就已经被其众多的函数、强大的功能深深震撼。对于有C语言基础的我来说,在看过图书馆和互联网上的一些资料后,入门并不困难。除了拥有TC无法比拟的函数库外,其语法规则也比C语言更加简洁。当然,通过短短几天的学习和实践,我掌握
的还只是最基本的功能和语句,甚至都还不熟练。要熟练掌握更高级的功能并灵活运用,我还需要更多的学习与实践,需要长期不懈的努力。
在选题方面,我选择的是图像处理中的添加噪声和降噪。这些功能之前在一些图形处理软件中很容易实现,而在学习了《信号与信息处理》之后,我们从原理上了解了这些功能的物理、数学原理,而在运用MATLAB实现之后,我又有了更深的理解。MATLAB还有专门的信号处理工具箱、simulink组建等等,不得不说,MATLAB绝对是在我们通信工程专业学生学习、实践过程中的一大利器,值得我们好好研究、好好利用。网络上有不少成熟的MATLAB学习网站和用户交流经验心得的论坛,在同学中也有不少正在学习MATLAB,我相信通过交流,我们将更好地学习与实践,相互帮助共同进步。
因篇幅问题不能全部显示,请点此查看更多更全内容