第一篇:《数字图像处理》结课小论文
2013-2014年第一学期《数字图像处理》科目考查卷
专业:通信工程 班 级: 任课教师:王新新 姓名: 学 号: 成 绩:
一 Deblurring Images Using the Wiener Filter ——使用维纳滤波器进行图像去模糊简介
在人们的日常生活中,常常会接触很多的图像画面,而在景物成像的过程中有可能出现模糊,失真,混入噪声等现象,最终导致图像的质量下降,我们现在把它还原成本来的面目,这就叫做图像还原。引起图像的模糊的原因有很多,举例来说有运动引起的,高斯噪声引起的,斑点噪声引起的,椒盐噪声引起的等等,而图像的复原也有很多,常见的例如逆滤波复原法,维纳滤波复原法,约束最小二乘滤波复原法等等。它们算法的基本原理是,在一定的准则下,采用数学最优化的方法从退化的图像去推测图像的估计问题。因此在不同的准则下及不同的数学最优方法下便形成了各种各样的算法。而我接下来要介绍的算法是一种很典型的算法,维纳滤波复原法。它假定输入信号为有用信号与噪声信号的合成,并且它们都是广义平稳过程和它们的二阶统计特性都已知。维纳根据最小均方准则,求得了最佳线性滤波器的的参数,这种滤波器被称为维纳滤波器。
维纳滤波器是最小均方差准则下的最佳线性滤波器,它在图像处理中有着重要的应用。本文主要通过介绍维纳滤波的结构原理,以及应用此方法通过MATLAB函数来完成图像的复原。关键词:维纳函数、图像复原。
二 维纳滤波器结构
维纳滤波自身为一个FIR或IIR滤波器,对于一个线性系统,如果其冲击响应为h(n),则当输入某个随机信号x(n)时,式(1)
这里的输入
式(2)
式中s(n)代表信号,v(n)代表噪声。我们希望这种线性系统的输出是尽可能地逼近s(n)的某种估计,并用s^(n)表示,即
式(3)
因而该系统实际上也就是s(n)的一种估计器。这种估计器的主要功能是利用当前的观测值
x(n)以及一系列过去的观测值x(n-1),x(n-2),……来完成对当前信号值的某种估计。维纳滤波属于一种最佳线性滤波或线性最优估计,是一最小均方误差作为计算准则的一种滤波。设信号的真值与其估计值分别为s(n)和)s^(n),而它们之间的误差
式(4)
则称为估计误差。估计误差e(n)为可正可负的随机变量,用它的均方值描述误差的大小显然更为合理。而均方误差最小,也就是
式(5)
最小。利用最小均方误差作为最佳过滤准则比较方便,它不涉及概率的描述,而且以它导出的最佳线性系统对其它很广泛的一类准则而言是属最佳。
图1 维纳滤波器一般结构
三、维纳滤波器的局限
维纳滤波复原法存在着几个实质性的局限。第一,最有标准是基于最小均方误差的且对所有误差等权处理,这个标准在数学上可以接受,但却是个不适合人眼的方式,原因在于人类对复原错误的感知在具有一致灰度和亮度的区域中更为严重,而对于出现在暗的和高梯度区域的误差敏感性差得多。第二,空间可变的退化不能用维纳滤波复原法复原,而这样的退化是常见的。第三,维纳滤波不能处理非平稳信号和噪声。
四、模拟仿真
运行程序及结果
% 读入图像
The example reads in an RGB image and crops it to be 256-by-256-by-3.The deconvwnr function can handle arrays of any dimension.I = imread('peppers.png');I = I(10+[1:256],222+[1:256],:);figure;imshow(I);title('Original Image');
图2 原始图像
% 图像模拟模糊处理。模拟一个真实的图像,可以模糊。摄像机运动。示例创建一个point-spread函数PSF,对应直线运动在31个像素(LEN = 31),在11度角(θ= 11)。模拟模
糊,过滤器是使用imfilter convolved与形象。
Simulate a a real-life image that could be blurred e.g., by camera motion.The example creates a point-spread function, PSF, corresponding to the linear motion across 31 pixels(LEN=31), at an angle of 11 degrees(THETA=11).To simulate the blur, the filter is convolved with the image using imfilter.LEN = 31;THETA = 11;PSF = fspecial('motion',LEN,THETA);Blurred = imfilter(I,PSF,'circular','conv');figure;imshow(Blurred);title('Blurred');
图3图像模拟模糊处理
%恢复模糊图像。真正的PSF由模糊变清晰,这个例子执行三个修复
wnr1 = deconvwnr(Blurred,PSF);figure;imshow(wnr1);title('Restored, True PSF');
图4恢复模糊图像
% 第二个恢复使用估计PSF,模拟运动模糊长度的两倍长(LEN)。
wnr2=deconvwnr(Blurred,fspecial('motion',2*LEN,THETA));figure;imshow(wnr2);title('Restored, “Long” PSF');
图5两倍长模糊处理
%第三恢复使用估计PSF,模拟运动两倍陡峭的角度模糊角度(θ)。
wnr3=deconvwnr(Blurred,fspecial('motion',LEN,2*THETA));figure;
imshow(wnr3);title('Restored, Steep');
图6两倍陡峭的角度处理
% 模拟加性噪声。模拟使用态分布随机数相加噪声,并将它添加到模糊图像,模糊。
noise = 0.1*randn(size(I));BlurredNoisy = imadd(Blurred,im2uint8(noise));figure;imshow(BlurredNoisy);title('Blurred & Noisy');
图7模拟加性噪声处理
%恢复图像模糊处理。
恢复模糊和噪声图像使用一个逆滤波器,假设zero-noise,并比较这第一个结果实现了在步骤3中,wnr1。噪声呈现在原始的数据显著放大。
wnr4 = deconvwnr(BlurredNoisy,PSF);figure;imshow(wnr4);title('Inverse Filtering of Noisy Data');
图8恢复噪声图像
%控制噪声放大,NSR功能提供了信噪比。
NSR = sum(noise(:).^2)/sum(im2double(I(:)).^2);wnr5 = deconvwnr(BlurredNoisy,PSF,NSR);figure;imshow(wnr5);title('Restored with NSR');
图9 NSR功能恢复噪声图像
%不同NSR值影响恢复的结果。小NSR值放大噪声
wnr6 = deconvwnr(BlurredNoisy,PSF,NSR/2);figure;imshow(wnr6);title('Restored with NSR/2');
图10 小NSR功能恢复噪声图像
%使用自相关来提高图像恢复
改进模糊的恢复和嘈杂的图像,提供完整的自相关函数(ACF)噪音,NCORR,和信号,ICORR NP = abs(fftn(noise)).^2;NPOW = sum(NP(:))/prod(size(noise));% noise power NCORR = fftshift(real(ifftn(NP)));% noise ACF, centered IP = abs(fftn(im2double(I))).^2;IPOW = sum(IP(:))/prod(size(I));% original image power ICORR = fftshift(real(ifftn(IP)));% image ACF, centered
wnr7 = deconvwnr(BlurredNoisy,PSF,NCORR,ICORR);figure;imshow(wnr7);title('Restored with ACF');
图11 自相关来提高图像恢复
%探索修复提供了有限的统计信息:权力的噪音,NPOW,和一个单维的自相关函数的真实形象,ICORR1 ICORR1 = ICORR(:,ceil(size(I,1)/2));wnr8 = deconvwnr(BlurredNoisy,PSF,NPOW,ICORR1);figure;imshow(wnr8);title('Restored with NP & 1D-ACF');
图12 单维自相关来提高图像恢复
五、结论与心得体会
通过这个实验,使我们更加深刻和具体的了解到了维纳滤波的原理,功能以及在图像处理方面的应用。维纳滤波器是对噪声背景下的信号进行估计,它是最小均方误差准则下的最佳线性滤波器。在实验的过程中,我发现采用维纳滤波复原可以得到比较好的效果,这个算法可以使估计的点扩散函数值更加接近它的真实值。但实现维纳滤波的要求是输入过程是广义平稳的;输入过程的统计特性是已知的。根据其他最佳准则的滤波器也有同样的要求。然而,由于输入过程取决与外界信号,干扰环境,这种环境的统计特性常常是未知的,变化的,因而这两个要求很难满足,这就促使人们研究自适应滤波器。
通过本次实验,深深地了解了图像处理是一门既有用又有难度的一门学科,需要我们认真的学习,自己在学习上还有很多的漏洞,在以后的学习中会更加的努力上进,做一个引以为自豪的人。
参考文献
《数字图像处理》,2007年,清华大学出版社。
《数字图像处理(第3版)》,2010年,科教出版社。
《基于0penCV的计算机视觉技术实现》,2001,科学出版社。《计算机图像处理》,2005,武汉大学出版社。
第二篇:数字图像处理界面切换技术结课论文
彩色图像界面切换技术研究与设计
摘 要
数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。在日常生活中,图像处理已经得到了广泛应用,例如:电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动识别和利用指纹、虹膜、面部等特征的身份识别等。图像的特技切换是计算机软件开发,尤其是多媒体软件设计中经常遇到的问题。
本文就所学到的微薄知识对利用VB程序设计实现彩色图像界面切换技术做以基本阐述。
关键字:数字图像处理 计算机软件开发 界面切换
一、数字图像处理概述: 数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。
数字图像处理的目的:一般来说,图像进行处理(或加工、分析)的主要目的有三个方面:
(1)提高图像的视感质量,如进行图像的亮度、彩色变换,增强、抑制某些分,对图像进行几何变换等,以改善图像的质量。
(2)提取图像中所包含的某些特征或特殊信息,这些被提取的特征或信息往往为计算机分析图像提供便利。提取特征或信息的过程是模式识别或计算机视觉的预处理。提取的特征可以包括很多方面,如频域特征、灰度或颜色特征、边界特征、区域特征、纹理特征、形状特征、拓扑特征和关系结构等。
(3)图像数据的变换、编码和压缩,以便于图像的存储和传输。
不管是何种目的的图像处理,都需要由计算机和图像专用设备组成的图像处理系统对图像数据进行输入、加工和输出。
在日常生活中,图像处理已经得到了广泛应用。例如:电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动识别和利用指纹、虹膜、面部等特征的身份识别等。
二、系统总体分析 2.1 窗口设计
图像的界面切换主要是指图像进入界面时的显示方式,也就是按不同的规律显示图像中的各个像素点。
根据需要在窗体上配置必要的控件,并修改相应的值,如图1所示,图片框用于显示图像,命令按钮“获取图像”用于选择指定图像文件,并且将图像显示在图片框内。命令按钮“退出”用于退出该窗口,其他命令的具体作用将在下文列举。
图1 添加控件及修改名称
以同样的方式添加其他控件按钮,如上下对接进入、从坐上到右下进入、从中央到四周扩散、以斜线方式进入、以渐显方式进入、利用Bitlit函数实现界面切换和以工字型进入等控件按钮。如图2所示:
图2 窗格及控件按钮
2.2 程序设计及实现过程
下面通过几个具有代表性的界面切换实现过程,对界面切换技术加以简单阐述。2.2.1 读图像数据
单击“读图像数据”命令按钮,相应的单击事件程序为: Private Sub Command1_Click()’以二进制的方式打开文件对话框中用户选择的图像文件 On Error GoTo Err CommonDialog1.Filter = “(*.*)|*.*|(*.gif)|*.gif|(*.bmp)|*.bmp|(*.jpg)|*.jpg” CommonDialog1.ShowOpen Picture1.Picture = LoadPicture(CommonDialog1.FileName)Err: Exit Sub End Sub Private Sub Command2_Click()End 通过该程序选择.jpg文件实现图像的读取,如图3所示。
图3 获取图像的实现
2.2.2 图像从上下对接进入界面
图像以上下对接方式进入界面时,首先显示图像的第一行和最后一行,然后显示图像的第二行和倒数第二行,以此类推,最后将图像中所有的像素显示出来。其实现过程如图4所示。
图4 图像以上下对接方式进入界面的过程图
对该控制命令进行VB编程如下: Private Sub Command3_Click()Picture2.Picture = Picture3.Picture width2 = Picture1.ScaleWidth height2 = Picture1.ScaleHeight
For j = 0 To height2 / 2
For i = 0 To width2jj1
For j = 0 To i
c1 = Picture1.Point(i, j)
rr1 = c1 Mod 256
gg1 = c1 / 256 Mod 256
bb1 = c1 / 65536 If j < height2 And i < width2 Then Picture2.PSet(i, j), RGB(rr1, gg1, bb1)
c2 = Picture1.Point(j, i)
rr2 = c2 Mod 256
gg2 = c2 / 256 Mod 256
bb2 = c2 / 65536 If j < width2 And i < height2 Then Picture2.PSet(j, i), RGB(rr2, gg2, bb2)
Next j Next i End Sub 2.2.4 图像从中央向四周扩散进入界面
图像从中央向四周扩散进入界面时,首先显示的是中心点像素,然后显示图像中心点周围的像素,依次类推,每次显示当前已显示像素的周围一圈像素,最后将图像中所有像素显示出来.如图6所示。
图6 图像从中央向四周扩散进入界面
图像从中央向四周扩散进入界面的程序代码如下: Picture2.Picture = Picture3.Picture w = Picture1.ScaleWidth h = Picture1.ScaleHeight x0 = w 2 y0 = h 2 rmax = Int(Sqr(x0 ^ 2 + y0 ^ 2))For r = 1 To rmax
dc = 1 /(6.28 * r)
For c = 0 To 6.28 Step dc
x = x0 + r * Cos(c)
y = y0 + r * Sin(c)
c1 = Picture1.Point(x, y)
If x >= 0 And x < w1 Then
rr1 = c1 Mod 256
gg1 = c1 / 256 Mod 256
bb1 = c1 / 65536
Picture2.PSet(x0, y0), RGB(rr1, gg1, bb1)
Picture2.PSet(x, y), RGB(rr1, gg1, bb1)
End If
Next c Next r End Sub 2.2.5 图像以斜线方式进入界面
图像以斜线方式进入界面时,首先显示图像的左上角像素,然后以斜线方式显示当前已显示像素的下一个斜线上的像素,最后将图像中所有像素都显示出来。显示过程如图7所示。
图7 图像以斜线方式进入界面的过程图
其对应的程序代码为: Picture2.Picture = Picture3.Picture w = Picture1.ScaleWidth
h = Picture1.ScaleHeight Max = If(h < w, w, h)For d = 0 To 2 * Max y = d For x = 0 To d
If x < w And y < h Then
c1 = Picture1.Point(x, y)
rr1 = c1 Mod 256
gg1 = c1 / 256 Mod 256
bb1 = c1 / 65536
Picture2.PSet(x, y), RGB(rr1, gg1, bb1)
End If
y = y1 Step 2
For i = 0 To w1 Step 2
For i = 1 To w1 Step 2
For i = 1 To w1 Step 2
For i = 0 To w-1 Step 2
c1 = Picture1.Point(i, j)
rr1 = c1 Mod 256
gg1 = c1 / 256 Mod 256
bb1 = c1 / 65536
Picture2.PSet(i, j), RGB(rr1, gg1, bb1)
Next i Next j End Sub 2.2.7利用Bitblt函数实现界面切换
Bitblt是Windows API函数,它用于从源对象向目标对象成块复制图形,该函数对指定的源设备环境区域中的像素进行位块(bit block)转换,以传送到目标设备环境。其实现过程如图9所示:
图9 Bitblt图像进入效果
其实现程序为:
Picture2.Picture = Picture3.Picture
w = Picture1.ScaleWidth
h = Picture1.ScaleHeight For i = 0 To w / 10 + 1
For j = 0 To 10
Bitblt Picture2.hDC, j * w / 10, 0, i, h, Picture1.hDC, j * w / 10, 0, &HCC0020
DoEvents
Delay 100000
Next j Next i End Sub
三、课程总结及心得体会
通过本学期对数字图像处理课程的学习,我掌握了基本的知识和操作技能,了解了数字图像处理作为一门理论性和实用性很强学科,在日常生活中有很多的用处,例如电脑人像艺术,电视中的特殊效果,自动售货机钞票的识别,邮政编码的自动识别和利用指纹、虹膜、面部等特征的身份识别等。本文仅就简单的界面切换技术以巩固所学的基本VB操作能力和图像处理知识,这是我大学学习中的又一项技能。
第三篇:数字图像matlab结课作业[模版]
clear all;close all;I=imread('e:5.tif');imshow(I);I_gray=rgb2gray(I);figure,imshow(I_gray);I_gray_hist=imhist(I_gray);figure,imshow(I_gray_hist);Ibw=im2bw(I_gray,0.7);figure,imshow(Ibw);
第四篇:《数字图像处理》
实验五 图像的几何变换
一.实验目的及要求
掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。
二、实验内容
(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1.图像缩放 clear all, close all I = imread('cameraman.tif');Scale = 1.35;
% 将图像放大1.35倍
J1 = imresize(I, Scale, 'nearest');
% using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');
% using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');help imresize
% 查看imresize使用帮助
1.95倍
I = imread('cameraman.tif');Scale = 1.96;
% 将图像放大1.96倍
J1 = imresize(I, Scale, 'nearest');
% using the nearest neighbor interpolation J2 = imresize(I, Scale, 'bilinear');
% using the bilinear interpolation imshow(I), title('Original Image');figure, imshow(J1), title('Resized Image--using the nearest neighbor interpolation ');figure, imshow(J2), title('Resized Image--using the bilinear interpolation ');
说明:
注意观察不同插值方法的图像表现; 改变图像缩放因子Scale,重做上述实验。2.图像旋转
clear all, close all I = imread('cameraman.tif');Theta = 45;
% 将图像逆时针旋转45。
J1 = imrotate(I, Theta, 'nearest');
% using the nearest neighbor interpolation Theta =-45;
% 将图像顺时针旋转45。
J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');% 查看imrotate使用帮助 help imrotate %-------
图像旋转30顺时针逆时针
clear all, close all I = imread('cameraman.tif');Theta = 30;
% 将图像逆时针旋转30。
J1 = imrotate(I, Theta, 'nearest');
% using the nearest neighbor interpolation Theta =-30;
% 将图像顺时针旋转30。
J2 = imrotate(I, Theta, 'bilinear', 'crop');% using bilinear interpolation and crops the output image imshow(I), title('Original Image');figure, imshow(J1), title('Rotated Image--using the nearest neighbor interpolation ');figure, imshow(J2), title(' Rotated Image--using the bilinear interpolation ');7 说明:
注意观察不同插值方法和输出图像后处理方法的图像表现; 改变旋转角度大小和方向,重做上述实验。
3.图像水平镜象
clear all, close all I = imread('cameraman.tif');I1 = flipdim(I,2);
I2 = flipdim(I,1);figure(1), subplot(1,2,1), imshow(I);subplot(1,2,2), imshow(I1);figure(2), subplot(2,1,1), imshow(I);subplot(2,1,2), imshow(I2);%----
(二)用MATLAB编程实现以下图像几何变换(参考自编讲义相关章节)
1.图像扭曲变换 2.球面变换
三、实验设备
1.PIII以上微机; 2.MATLAB6.5;
四、预习与思考
1.预习实验内容,阅读教材熟悉实验原理;
2.查阅资料,熟悉实验中涉及的有关MATLAB函数;
3.利用课余时间,采用MATLAB底层函数编程实现实验内容
(二)中的图像平移、图像转置等几何变换。
五、实验报告要求
1.简述试验的目的和试验原理;
2.叙述各段程序功能,改变有关函数的参数,分析比较实验结果; 3.打印出所编写的实验程序。4.写出本实验的心得体会及意见。
实验六
数字图像处理应用
一.实验目的及要求
1.利用MATLAB提供的图像处理函数实现图像中物体属性的测量; 2.训练综合运用MATLAB图像处理函数的能力; 3.了解数字图像处理基本应用。
二、实验内容
以大米粒特性测量为例,综合应用课程中图像分割、形态学滤波、图像增强、图像特征提取等图像处理方法,实现大米粒特性自动测量。实验过程简述:
1. 读取和显示图像 2. 估计图像背景 3. 获取背景均匀的图像 4. 图像增强 5. 图像二值化分割 6. 区域标记及为彩色处理
7. 测量图像中的区域特性(面积、质心等)
8.统计大米粒的特性分布规律。
(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结 果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
% Read and Display an Image clear, close all,close all;I = imread('rice.png');
figure, imshow(I)
% Use Morphological Opening to Estimate the Background
background = imopen(I,strel('disk',15));
figure, imshow(background);
%Display the Background Approximation as a Surface
figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]);set(gca,'ydir','reverse');% Subtract the Background Image from the Original Image I2 = imsubtract(I,background);figure, imshow(I2)% Adjust the Image Contrast I3 = imadjust(I2, stretchlim(I2), [0 1]);figure, imshow(I3);% Apply Thresholding to the Image level = graythresh(I3);bw = im2bw(I3,level);figure, imshow(bw)% Determine the Number of Objects in the Image [labeled,numObjects] = bwlabel(bw,4);
% Label components.numObjects % Examine the Label Matrix RGB_label = label2rgb(labeled, @spring, 'c', 'shuffle');figure, imshow(RGB_label);% Measure Object Properties in the Image graindata = regionprops(labeled,'basic')allgrains = [graindata.Area];% Compute Statistical Properties of Objects in the Image max(allgrains);biggrain = find(allgrains==695)mean(allgrains);figure, hist(allgrains,20);12
(详见MATLAB IPT的 帮助文档demo中的Correcting Nonuniform Illumination)
(二)查看MATLAB IPT 帮助文档,研究其它应用演示
三、实验设备 1.PIII以上微机; 2.MATLAB6.5;
四、预习与思考
1.预习实验内容,阅读教材熟悉实验原理; 2.查阅资料,熟悉实验中涉及的有关函数。
3.利用课余时间,采用MATLAB函数编程实现实验内容
(二)。
五、实验报告要求
1.简述试验的目的和试验原理;
2.叙述各段程序功能,改变有关函数的参数,分析比较实验结果; 3.打印出所编写的实验程序。4.写出本实验的心得体会及意见。
第五篇:数字图像处理
中南大学
数字图像处理实验 实验名称:空间滤波和频域滤波
班级:电子信息0802班
姓名:李哲 学号:0909080609 实验日期:2010年12月22日
目录
一,实验目的„„„„„„„„„„„„„„„„„„„„„„„3 二,给图像添加噪声„„„„„„„„„„„„„„„„„„„„4 三,对被噪声污染的图像进行中值滤波和均值滤波„„„„„„„5 四,对图像进行空间域的锐化„„„„„„„„„„„„„„„„6 五,MATLAB以外函数空间滤波和图像锐化„„„„„„„„„„7 六,自带函数傅立叶变换和反变换„„„„„„„„„„„„„„8 七,低通滤波器程序„„„„„„„„„„„„„„„„„„„„9 八,心得体会 „„„„„„„„„„„„„„„„„„„„„„10 九,参考文献 „„„„„„„„„„„„„„„„„„„„„„10
一、实验目的 1,空间滤波:
图像平滑主要目的是减少噪声。噪声有很多种类,不同的噪声有不同的抑制措施。本实验要求用平滑线性滤波和中值滤波2种最典型、最常用的处理算法进行程序设计,学习如何对已被噪声污染的图像进行“净化”。通过平滑处理,对结果图像加以比较,得出自己的实验结论。学习如何用锐化处理技术来加强图像的目标边界和图像细节,对图像进行梯度算子、拉普拉斯算子,使图像的某些特征(如边缘、轮廓等)得以进一步的增强及突出。本实验锐化处理主要在空间域中进行 2,频域滤波:
掌握傅里叶变换的基本性质; 掌握傅里叶正变换和反变换; 通过实验了解二维频谱的分布特点; 掌握怎样利用傅立叶变换进行频域滤波
利用MATLAB程序数字图像的傅立叶变换并且进行频域滤波
二,给图像添加椒盐噪声或者高斯噪声: 原理:利用MATLAB自带函数添加噪声 程序代码:A=imread('onion.png');I=rgb2gray(A);imshow(I);J = imnoise(I,'salt & pepper',0.05);figure,imshow(J),title('椒盐噪声');%添加椒盐噪声 K = imnoise(I,'gaussian',0,0.03);
figure,imshow(K),title('高斯噪声');%添加高斯噪声
三,对被噪声污染的图像进行中值滤波和均值滤波: 原理:自带函数进行中值滤波和均值滤波 源程序:A=imread('onion.png');I=rgb2gray(A);J = imnoise(I,'salt & pepper',0.05);k2=medfilt2(J,[5 5]);k3=medfilt2(J,[7 7]);imshow(J),title('原图');figure,imshow(k2),title('中值滤波5*5模板');figure,imshow(k3),title('中值滤波7*7模板');
四,对图像进行空间域的锐化: 原理:自带函数进行空间锐化。源程序:I=imread('coins.png');subplot(121),imshow(I),title('原图像');H=fspecial('sobel');I2=filter2(H ,I);subplot(122),imshow(I2),title('sobel算子锐化图像');
五,MATLAB以外函数空间滤波和图像锐化:
源程序:I = imread('eight.tif');J = imnoise(I,'salt & pepper',0.02);K = medfilt2(J);imshow(J);title('噪声干扰图像')figure, imshow(K);title('medfilt2滤波图像')X=J;a=2;b=2;k=floor(a*b/2)+1;[M,N]=size(X);uint8 Y=zeros(M,N);funBox=zeros(a,b);temp=zeros(a*b);
for i=1:M-a
for j=1:N-b
funBox=X(i:i+a,j:j+b);
temp=funBox(:);
tempSort=sort(temp);
Y(i,j)=tempSort(k);
end;end;figure, imshow(Y);title('滤波图像')
六,利用Matlab的图像处理工具箱中提供的函数实现图像的傅立叶变换和反变换: 源程序:
A=imread('onion.png');f=rgb2gray(A);subplot(131),imshow(f),title('原图');F=fft2(f);% 快速傅立叶变换
subplot(132),imshow(F),title('傅里叶变换')Fabs=abs(F);% 求幅频绝对值 Fc=fftshift(Fabs);% 中心移位 SFc=log(1+Fc);% 对数变换
iFc1=ifftshift(Fc);% 中心移位的逆变换,绝对值 iF2=ifft2(iFc1);% 快速傅立叶变换的逆变换
subplot(133),imshow(iF2),title('快速傅立叶变换的逆变换')
七,低通滤波器程序:
I=imread('testpat1.png');subplot(221),imshow(I);title('原始图像')J1=imnoise(I,'gaussian',0.02);% 叠加高斯白噪声
subplot(222),imshow(J1);title('添加高斯白噪声的图像')f=double(J1);
% 数据类型转换 g=fft2(f);
% 傅立叶变换 g=fftshift(g);
[M,N]=size(g);nn=2;
% 二阶巴特沃斯(Butterworth)低通滤波器 d0=50;
% 设置截止频率 m=fix(M/2);n=fix(N/2);for i=1:M for j=1:N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));% 计算低通滤波器传递函数
result(i,j)=h*g(i,j);end end result=ifftshift(result);J2=ifft2(result);J3=uint8(real(J2));subplot(223),imshow(J3);title('低通滤波后图像')
心得体会
1,进一步熟悉了Matlab软件、编程以及图像处理工具箱 2,学会利用自带函数对图像做简单的处理,例如:均值化等。3,熟练了一些基本函数的运用,例如fspecial,imfilter等。4,加深了对MATLAB编程的理解。
5,对于试验中的出现的一些问题,懂得怎样去处理。6,通过实际操作,增强了自己的动手能力,把理论用于实践。
参考文献:数字图像处理第二版
MATLAB教程