您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 医学现状与发展 > MATLAB数字图像实验报告
1基于MATLAB的图像处理的课程设计一、课程设计的目的综合运用MATLAB工具箱实现图像处理的GUI程序设计。二、课程设计的基本要求1)熟悉和掌握MATLAB程序设计方法2)掌握MATLABGUI程序设计3)学习和熟悉MATLAB图像处理工具箱4)学会运用MATLAB工具箱对图像进行处理和分析三、程序需求和功能模块分析设计分为6个部分,分别为文件,实现图像读取、保存和退出该演示的功能;图像转换,实现RGB转为灰度图像、索引图像,二进制图像和创建轮廓等功能;工具,实现亮度改变、锐化、剪切、旋转和直方图统计与均衡等功能;缩放,实现最近邻插值法和双线性插值法的放大和缩小;噪声与滤波,实现对图像添加各种噪声和对图像进行去噪处理;帮助,是一个关于MATLAB的显示。四、详细设计过程,详细阐述如何实现具体操作,必要时画出流程图分析,附上关键程序代码。学习MATLABGUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。具体操作双击打开MATLAB7.0→File→New→GUI→修改名称→保存;单击→调整文本框的大小,输入该演示名称,修改字体大小、颜色等;单击→调整axes1大小→单击OK,调整按钮大小和颜色,再建axes2→单击OK,调整按钮大小和颜色;单击→调整噪声群文本框的大小,输入名称,修改字体大小、颜色等,单击,建立3个噪声框;单击建立滤波群框,单击,建立3个滤波框;单击,建立MenuEditor,即建目录;View→M-fileEdit→编写程序;最后单击,建立几个便捷按钮,相应的Viewcallbacks与之前同。程序代码及实现的功能1)图像的读取和保存。读取[name,path]=uigetfile('*.*','');file=[path,name];axes(handles.axes1);x=imread(file);handles.img=x;guidata(hObject,handles);imshow(x);2title(‘打开’);保存[sFileNamesFilePath]=uiputfile({'*.jpg','JPEG-Files(*.jpg)';...'*.*','AllFiles(*.*)'},'保存图像文件','untitled.jpg');if~isequal([sFileName,sFilePath],[0,0])sFileFullName=[sFilePathsFileName];imwrite(handles.noise_img,sFileFullName,'jpg');elsemsgbox('确定取消保存?');end退出clc;closeall;close(gcf);2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。亮度,对比度set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);prompt={'亮度low:','亮度high:','对比度:'};defans={'0','1','1'};p=inputdlg(prompt,'输入参数',1,defans);p1=str2num(p{1});p2=str2num(p{2});p3=str2num(p{3});f=imadjust(handles.img,[p1p2],[01],p3);imshow(f);handles.img=f;guidata(hObject,handles);set(handles.axes2,'HandleVisibility','OFF');3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。截图set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);x=imcrop(handles.img);imshow(x);imwrite(x,'cut.jpg');title('截图');set(handles.axes2,'HandleVisibility','OFF');4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。最近邻插值法set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);3x=imresize(handles.img,2,'nearest');imshow(x);imwrite(x,'nearfangda.jpg')title('最近邻插值法放大');set(handles.axes2,'HandleVisibility','OFF');set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);x=imresize(handles.img,0.5,'nearest');imshow(x);imwrite(x,'nearsuoxiao.jpg')title('最近邻插值法缩小');set(handles.axes2,'HandleVisibility','OFF');双线性插值法set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);x=imresize(handles.img,5,'bilinear');imshow(x);imwrite(x,'shuangfangda.jpg');title('双线性插值法放大');set(handles.axes2,'HandleVisibility','OFF');set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);x=imresize(handles.img,0.5,'bilinear');imshow(x);imwrite(x,'shuangsuoxiao.jpg');title('双线性插值法缩小');set(handles.axes2,'HandleVisibility','OFF');5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);x=imhist(handles.img);x1=x(1:10:256);horz=1:10:256;bar(horz,x1);%axis([02550150000]);set(handles.axes2,'xtick',0:50:255);%set(handles.axes2,'ytick',0:2000:15000);title('统计');set(handles.axes2,'HandleVisibility','OFF');set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);h=histeq(handles.img);imshow(h);%set(handles.axes2,'ytick',0:2000:15000);4title('均衡');set(handles.axes2,'HandleVisibility','OFF');6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。比较去噪效果。噪声str=get(hObject,'string');set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);switchstrcase'椒盐噪声'prompt={'输入参数1:'};defans={'0.02'};p=inputdlg(prompt,'输入参数',1,defans);p1=str2num(p{1});f=imnoise(handles.img,'salt&pepper',p1);imshow(f);handles.noise_img=f;guidata(hObject,handles);title('加椒盐噪声');case'高斯噪声'prompt={'输入参数1:','输入参数2'};defans={'0','0.02'};p=inputdlg(prompt,'输入参数',1,defans);p1=str2num(p{1});p2=str2num(p{2});f=imnoise(handles.img,'gaussian',p1,p2);imshow(f);handles.noise_img=f;guidata(hObject,handles);title('加高斯噪声');case'乘性噪声'prompt={'输入参数1:'};defans={'0.02'};p=inputdlg(prompt,'输入参数',1,defans);p1=str2num(p{1});f=imnoise(handles.img,'speckle',p1);imshow(f);handles.noise_img=f;guidata(hObject,handles);title('加乘性噪声');endset(handles.axes2,'HandleVisibility','OFF');滤波set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);5m1=rgb2gray(handles.noise_img);k=medfilt2(m1);imshow(k);title('中值滤波');set(handles.axes2,'HandleVisibility','OFF');set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);m1=rgb2gray(handles.noise_img);h=[010;1-41;010];H=h/9;i=double(m1);k=conv2(i,h);imshow(k);title('线性滤波');set(handles.axes2,'HandleVisibility','OFF');set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);m1=rgb2gray(handles.noise_img);k=wiener2(m1,[5,5]);imshow(k);title('自适应滤波');set(handles.axes2,'HandleVisibility','OFF');7)能对图像进行多次旋转操作set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);f=imrotate(handles.img,90);%可以改变旋转角度imshow(f);handles.img=f;guidata(hObject,handles)set(handles.axes2,'HandleVisibility','OFF');8)可以对图像进行锐化set(handles.axes2,'HandleVisibility','ON');axes(handles.axes2);prompt={'输入参数1:'};defans={'0.1'};p=inputdlg(prompt,'输入参数',1,defans);p1=str2num(p{1});y=edge(handles.img,'roberts',p1);i
本文标题:MATLAB数字图像实验报告
链接地址:https://www.777doc.com/doc-6203443 .html