数字图像处理降噪滤波大作业要点Word文档下载推荐.docx
- 文档编号:17848739
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:30
- 大小:1.50MB
数字图像处理降噪滤波大作业要点Word文档下载推荐.docx
《数字图像处理降噪滤波大作业要点Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字图像处理降噪滤波大作业要点Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
(2)图像降噪处理技术。
2、题目分析
利用matlab的GUI程序设计一个简单实用的图像处理程序。
该程序应具备图像处理的常用功能,以满足用户的使用。
现设计程序有以下基本功能:
1)图像的读取和保存。
2)通过自己输入数值,实现图像的旋转。
3)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
4)能对图像加入各种噪声,
5)并通过几种滤波算法实现去噪并显示结果。
6)将图像转化成灰度图像。
3.总体设计
软件的总体设计界面布局如上图所示
分为显示区域与操作区域。
上边为显示区域:
显示载入原图,以及通过处理后的图像。
操作区域:
通过功能键实现对图像的各种处理。
设计完成后运行的软件界面如下:
4、具体设计
现介绍各个功能模块的功能与实现。
4.1图像的读取和保存:
(1)利用matlab中“uigetfile”、“imread”“imshow”实现图像文件的读取与显示:
实现代码:
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
[filename,pathname]=uigetfile({'
*.jpg'
;
'
*.bmp'
*.tif'
*.*'
},'
载入图像'
);
ifisequal(filename,0)|isequal(pathname,0)
errordlg('
没有选中文件'
'
出错'
return;
else
file=[pathname,filename];
globalS%设置一个全局变量S,保存初始图像路径,以便之后的还原操作
S=file;
x=imread(file);
set(handles.axes1,'
HandleVisibility'
ON'
axes(handles.axes1);
imshow(x);
OFF'
axes(handles.axes2);
handles.img=x;
guidata(hObject,handles);
end
%---Executesonbuttonpressinpushbutton4.
functionpushbutton4_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton4(seeGCBO)
[sfilename,sfilepath]=uiputfile({'
保存图像文件'
untitled.jpg'
if~isequal([sfilename,sfilepath],[0,0])
sfilefullname=[sfilepath,sfilename];
imwrite(handles.img,sfilefullname);
else
msgbox('
你按了取消键'
保存失败'
end
(2)图像保存。
利用uiputfile和imwrite函数实现图像文件的保存。
3)程序的退出。
functionpushbutton5_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton5(seeGCBO)
clc;
closeall;
close(gcf);
clear;
4.2图像转化为灰度图像
因为matlab中较多的图像处理函数支持对灰度图像进行处理,故对图像进行灰度转化十分必要。
利用rgb2gray(X)函数对其他图像进行灰度图像的转化。
functionpushbutton11_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton11(seeGCBO)
globalT
axes(handles.axes2);
T=getimage;
x=rgb2gray(handles.img);
%RGB?
?
×
imshow(x);
handles.img=x;
guidata(hObject,handles);
4.3图像直方图统计和直方图均衡
(1)通过histeq(X)函数实现直方图均衡。
此函数只能对灰度图像进行直方图均衡所以要先将彩图转为灰度图像。
functionpushbutton12_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton12(seeGCBO)
h=histeq(handles.img);
imshow(h);
handles.img=h;
(2)
直方图统计。
通过利用imhist(X)函数来实现直方图统计。
functionpushbutton13_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton13(seeGCBO)
x=imhist(handles.img);
%直方图统计
x1=x(1:
10:
256);
horz=1:
256;
bar(horz,x1);
axis([0255015000]);
set(handles.axes2,'
xtick'
0:
50:
255);
ytick'
2000:
15000);
4.4加入各种噪声,并通过几种滤波算法实现去噪
(1)加入噪声。
通过imnoise(I,type,parameters)来加入各种噪声。
加入椒盐噪声
functionpushbutton6_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton6(seeGCBO)
prompt={'
数日椒盐噪声参数1:
};
defans={'
0.02'
p=inputdlg(prompt,'
input'
1,defans);
p1=str2num(p{1});
f=imnoise(handles.img,'
salt&
pepper'
p1);
imshow(f);
handles.img=f;
加入高斯噪声:
functionpushbutton10_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton10(seeGCBO)
输入高斯噪声1:
输入高斯噪声2'
0'
p2=str2num(p{2});
gaussian'
p1,p2);
加入乘性噪声:
functionpushbutton8_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton8(seeGCBO)
输入乘性噪声1:
speckle'
(2)滤除噪声(椒盐噪声)
滤波前
中值滤波后
functionpushbutton14_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton14(seeGCBO)
T=getimage;
k=medfilt2(handles.img);
imshow(k);
handles.img=k;
线性滤波后
functionpushbutton16_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton16(seeGCBO)
h=[111;
111;
111];
H=h/9;
i=double(handles.img);
k=convn(i,h);
imshow(k,[]);
自适应滤波后
functionpushbutton18_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton18(seeGCBO)
k=wiener2(handles.img,[5,5]);
低通滤波器滤波后
functionpushbutton19_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton19(seeGCBO)
y1=handles.img;
f=double(y1);
%数据类型转换,matlab不支持图像的无符号整型的计算
g=fft2(f);
%傅里叶变换
g=fftshift(g);
%转换数据矩阵
[M,N]=size(g);
nn=2;
%二阶巴特沃斯低通滤波器
d0=50;
%截止频率50
m=fix(M/2);
n=fix(N/2);
fori=1:
M
forj=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);
result=ifftshift(result);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3);
%显示处理后的图像
高通滤波器滤波后
functionpushbutton20_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton20(seeGCBO)
x=(handles.img);
f=double(x);
%数据类型转换
k=fft2(f);
g=fftshift(k);
d0=25;
%截止频率25
%计算高通滤波器传递函数
ifd<
=d0
h=0;
elseh=1;
%显示滤波处理后的图像
4.5还原
通过一个全局变量保存原始图像路径,在需要还原至原始图像时,重新读取该全局变量即可。
functionpushbutton21_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton21(seeGCBO)
globalS%还原
y=imread(S);
f=imshow(y);
handles.img=y;
5、结果分析
软件测试基本成功,课题所要求的功能均能较好实现。
但一些功能只支持灰度图像的处理。
其中值得一提的是在滤波处理中的低通滤波与高通滤波的效果。
由于一般图像中含有较多的低频信息成分高频成分较少,通过低通滤波后,噪声以及高频成分被滤除,图像虽有少量失真,略显模糊,但尚可辨识。
但若是通过高通滤波后,大量的有效低频信息被滤除,图像严重失真,不可辨识。
当我第一次拿到此次的课题时,感到有些无所适从。
虽然,曾经学习过matlab的课程,在课程的考核中也取得了较好的成绩,但由于对matlab的学习更多的只是停留在理论上的学习,在课时内的试验也只是简单的基础性试验,所以对matlab实际运用不是很熟练。
为此,在实践正式开始前,我利用课余时间,重新复习了matlab教材,专门借阅了利用matlab进行图像处理的相关教程,通过索引网络上的相关资料,为课设做了较为充分的准备。
在参考了相关材料及源程序,我对自己要做的课设内容有了进一步的了解,并对matlab的使用有了更深的体会。
当然,在课设的进行过程中,我还是遇到了不少问题。
例如,起初由于我对句柄使用以及一些函数使用的不恰当,使得在对图像文件的保存上就遇到了问题,不过最后还是在老师的提示下解决了。
随着课设的进行,对matlab的的熟悉度逐步加深。
总体来说,此次的课程设计,还是较为满意的。
它不但鞭策着我去巩固matlab的基础理论知识,还提高了我对matlab的实际操作运用,使得理论与实践相结合,为进一步学习matlab打下坚实的基础;
同时,在实践的工程中,也让我体会到一种努力付出并得到回报的满足感觉。
参考书目:
(五号,宋体加粗)
[1]《数字图像处理(MATLAB)(第二版)》[美]RafaelC.Gonzalez电子工业出版社
附录:
functionvarargout=faded(varargin)
%FADEDMATLABcodeforfaded.fig
%FADED,byitself,createsanewFADEDorraisestheexisting
%singleton*.
%
%H=FADEDreturnsthehandletoanewFADEDorthehandleto
%theexistingsingleton*.
%FADED('
CALLBACK'
hObject,eventData,handles,...)callsthe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 滤波 作业 要点