-1-昆明理工大学信息工程与自动化学院学生实验报告(2015—2016学年第一学期)课程名称:图形图像基础程序设计开课实验室:2015年12月1日年级、专业、班物联网131学号201310410133姓名李哲成绩实验项目名称图像综合处理指导教师毛存礼教师评语教师签名:年月日一、实验目的及内容目的:掌握和熟悉Matlab编程环境及语言;掌握图像降噪算法和用途。内容:在课程教学和查阅相关文献资料的基础上,选择下面一个数字图像处理技术专题,实现相应算法进行仿真实验,并完成大作业报告。专题如下:(1)图像增强处理技术;(2)图像降噪处理技术。2、题目分析利用matlab的GUI程序设计一个简单实用的图像处理程序。该程序应具备图像处理的常用功能,以满足用户的使用。现设计程序有以下基本功能:1)图像的读取和保存。2)通过自己输入数值,实现图像的旋转。3)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。4)能对图像加入各种噪声,5)并通过几种滤波算法实现去噪并显示结果。6)将图像转化成灰度图像。-2-3.总体设计软件的总体设计界面布局如上图所示分为显示区域与操作区域。上边为显示区域:显示载入原图,以及通过处理后的图像。操作区域:通过功能键实现对图像的各种处理。设计完成后运行的软件界面如下:-3-4、具体设计现介绍各个功能模块的功能与实现。4.1图像的读取和保存:(1)利用matlab中“uigetfile”、“imread”“imshow”实现图像文件的读取与显示:实现代码:functionpushbutton2_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)-4-[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'载入图像');ifisequal(filename,0)|isequal(pathname,0)errordlg('没有选中文件','出错');return;elsefile=[pathname,filename];globalS%设置一个全局变量S,保存初始图像路径,以便之后的还原操作S=file;x=imread(file);set(handles.axes1,'HandleVisibility','ON');axes(handles.axes1);imshow(x);set(handles.axes1,'HandleVisibility','OFF');axes(handles.axes2);imshow(x);handles.img=x;guidata(hObject,handles);end%---Executesonbuttonpressinpushbutton4.functionpushbutton4_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[sfilename,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存图像文件','untitled.jpg');if~isequal([sfilename,sfilepath],[0,0])sfilefullname=[sfilepath,sfilename];imwrite(handles.img,sfilefullname);elsemsgbox('你按了取消键','保存失败');end(2)图像保存。利用uiputfile和imwrite函数实现图像文件的保存。-5-实现代码:functionpushbutton4_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[sfilename,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存图像文件','untitled.jpg');if~isequal([sfilename,sfilepath],[0,0])sfilefullname=[sfilepath,sfilename];imwrite(handles.img,sfilefullname);elsemsgbox('你按了取消键','保存失败');end3)程序的退出。-6-实现代码:functionpushbutton5_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton5(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)clc;closeall;close(gcf);clear;4.2图像转化为灰度图像因为matlab中较多的图像处理函数支持对灰度图像进行处理,故对图像进行灰度转化十分必要。利用rgb2gray(X)函数对其他图像进行灰度图像的转化。-7-实现代码:functionpushbutton11_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton11(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalTaxes(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)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalTaxes(handles.axes2);-8-T=getimage;h=histeq(handles.img);imshow(h);handles.img=h;guidata(hObject,handles);(2)直方图统计。通过利用imhist(X)函数来实现直方图统计。实现代码:functionpushbutton13_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton13(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)axes(handles.axes2);x=imhist(handles.img);%直方图统计x1=x(1:10:256);horz=1:10:256;bar(horz,x1);axis([0255015000]);set(handles.axes2,'xtick',0:50:255);set(handles.axes2,'ytick',0:2000:15000);4.4加入各种噪声,并通过几种滤波算法实现去噪(1)加入噪声。通过imnoise(I,type,parameters)来加入各种噪声。-9-加入椒盐噪声实现代码:functionpushbutton6_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton6(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB-10-%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalTaxes(handles.axes2);T=getimage;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;guidata(hObject,handles);加入高斯噪声:-11-实现代码:functionpushbutton10_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton10(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalTaxes(handles.axes2);T=getimage;prompt={'输入高斯噪声1:','输入高斯噪声2'};defans={'0','0.02'};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});p2=str2num(p{2});f=imnoise(handles.img,'gaussian',p1,p2);imshow(f);handles.img=f;guidata(hObject,handles);加入乘性噪声:-12-实现代码:functionpushbutton8_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton8(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalTaxes(handles.axes2);-13-T=getimage;prompt={'输入乘性噪声1:'};defans={'0.02'};p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1});f=imnoise(hand