matlab 图像处理报告.docx
《matlab 图像处理报告.docx》由会员分享,可在线阅读,更多相关《matlab 图像处理报告.docx(21页珍藏版)》请在冰豆网上搜索。
matlab图像处理报告
《MATLAB实践》
Forpersonaluseonlyinstudyandresearch;notforcommercialuse
课程设计
学生姓名:
学号:
专业班级:
指导教师:
二○○九年三月十三日
1.设计目的…………………………………………………第3页
2.题目分析…………………………………………………第3页
3.总体设计…………………………………………………第4页
4.具体设计…………………………………………………第6页
5.结果分析…………………………………………………第20页
6.心得体会…………………………………………………第20页
7.参考书目…………………………………………………第20页
1课程设计的目的:
综合运用MATLAB工具箱实现图像处理的GUI程序设计。
2、题目分析
课程设计的基本要求
1)熟悉和掌握MATLAB程序设计方法
2)掌握MATLABGUI程序设计
3)学习和熟悉MATLAB图像处理工具箱
4)学会运用MATLAB工具箱对图像进行处理和分析
课程设计的内容
学习MATLABGUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop。
要求:
按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。
然后按照自己拟定的功能要求进行程序设计和调试。
以下几点是程序必须实现的功能。
1)图像的读取和保存。
2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。
3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。
4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。
5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。
比较去噪效果。
3、总体设计
本软件工具栏主要有文件,工具、图像等一些基本功能,如文件选项中包括打开、保存以及退出程序,操作选项卡中包含一些常用功能,对图像的处理通过对工具栏的操作来完成,下面将就具体功能逐个说明。
每一小段程序将在%后说明
4、具体设计
a.文件→打开
[name,path]=uigetfile('*.*','');
file=[path,name];
axes(handles.axes1);
x=imread(file);%读取图像
handles.img=x;
guidata(hObject,handles);
imshow(x);%显示图像
title('打开')
b.文件→保存
globalBW%定义全局变量
[filename,pathname]=uiputfile({'*.*'},'savepicture');
x=[pathname,filename];
imwrite(BW,x);%保存图像
c.文件→退出
clc;
closeall;
close(gcf);
(2)工具中的加入噪声
a.工具→噪声→高斯噪声:
globalBW
axes(handles.axes2);
prompt={'输入参数1:
','输入参数2:
'};
defans={'0','0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
p2=str2num(p{2});
y=imnoise(handles.img,'gaussian',p1,p2);%生成高斯噪声
imshow(y);
imwrite(y,'gaussian.jpg');%自动生成处理过的图像
title('高斯噪声');
BW=y;
b.工具→噪声→乘性噪声
globalBW
axes(handles.axes2);
prompt={'输入参数1:
'};
defans={'0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
y=imnoise(handles.img,'speckle',p1);%生成乘性噪声
imshow(y);
imwrite(y,'speckle.jpg');%自动生成处理过的图像
title('乘性噪声');
BW=y;
c.工具→噪声→椒盐噪声
globalBW
axes(handles.axes2);
prompt={'输入参数1:
'};
defans={'0.02'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
y=imnoise(handles.img,'salt&pepper',p1);%生成椒盐噪声
imshow(y);
imwrite(y,'salt.jpg');%自动生成处理过的图像
title('椒盐噪声');
BW=y;
工具→去噪
加入高斯噪声后的滤波
a.工具→去噪→自适应滤波
globalBW
axes(handles.axes2);
y=wiener2(handles.img);%自适应滤波
imshow(y);
imwrite(y,'wiener.jpg');
title('自适应滤波');
BW=y;
b.工具→去噪→线性滤波
globalBW
axes(handles.axes2);
h=[111;111;111];
H=h/9;
i=double(handles.img);
k=conv2(i,h);%线性滤波
imshow(k,[]);
title('线性滤波');
BW=y;
c.工具→去噪→中值滤波
globalBW
axes(handles.axes2);
x=(handles.img);
prompt={'输入参数1:
','输入参数2:
'};
defans={'5','5'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
p2=str2num(p{2});
z=medfilt2(x,[p1,p2],'symmetric');%中值滤波
imshow(y);
imwrite(y,'medfilt.jpg');
title('中值滤波');
BW=y;
工具→缩放(主要对文件的尺寸进行修改)
a.工具→缩放→最近邻插值
globalBW
axes(handles.axes2);
prompt={'缩放倍数'};
defans={'2'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
x=imresize(handles.img,p1,'nearest');%最近邻插值法缩放
imshow(x);
imwrite(x,'near.jpg')
title('最近邻插值法缩放');
BW=x;
把新图像保存为114(原图像为113)
新图像大小为原来的0.5*0.5倍
b.工具→缩放→双线性插值
globalBW
axes(handles.axes2);
prompt={'缩放倍数'};
defans={'2'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
x=imresize(handles.img,p1,'bilinear');%双线性插值法缩放
imshow(x);
imwrite(x,'double.jpg');
title('双线性插值');
BW=x;
把新图像保存为115(原图像为113)
新图像大小为原来的2*2倍
工具→剪切
globalBW
axes(handles.axes2);
x=imcrop(handles.img);%截图
imshow(x);
imwrite(x,'cut.jpg');%保存图像
title('截图');
BW=x;
工具→频谱
axes(handles.axes2);
x=(handles.img);
J2=fft2(x);%傅立叶变换
K2=fftshift(J2);%转换数据矩阵
y=imshow(log(abs(K2)),[8,10]);%显示频谱图
title('频谱图');
工具→旋转
globalBW
axes(handles.axes2);
x=(handles.img);
prompt={'旋转角度'};
defans={'60'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
y=imrotate(x,p1,'bilinear','crop');%旋转角度
imshow(y);%显示旋转效果
BW=y;
图像→对比度调节
globalBW
axes(handles.axes2);
x=(handles.img);
prompt={'下限0.00','上限1.00','r'};
defans={'0.15','0.85','0.5'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
p2=str2num(p{2});
p3=str2num(p{3});
y=imadjust(x,[p1,p2],[0.15,0.85],p3);%对比度调节
imshow(y);
title('对比度调节');
BW=y;
图像→亮度调节
globalBW
axes(handles.axes2);
x=(handles.img);
prompt={'下限0.00','上限1.00'};
defans={'0.15','0.85'};
p=inputdlg(prompt,'输入参数',1,defans);
p1=str2num(p{1});
p2=str2num(p{2});
y=imadjust(x,[01],[p1,p2]);%亮度调节
imshow(y);
title('亮度调节');
BW=y;
图像→灰度图像
globalBW
axes(handles.axes2);
x=rgb2gray(handles.img);%RGB图像转换为灰度图像
imshow(x);
imwrite(x,'huidu.jpg')
title('灰度');
BW=x;
直方图→直方图统计
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);
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);
set(handles.axes2,'HandleVisibility','OFF');
关于
msgbox('这是一个关于图像处理GUI程序','关于');
5、结果分析
经过调试,修改之后所设计的功能均可以实现,其具体功能在其字面已很明显,这里就不再赘述。
6、心得体会
GUI就是通过窗口、选单、按钮、文字说明等对象构成的一个美观的界面,提供用户利用鼠标和键盘方便的实现操作。
通过此次课程设计熟悉了GUI程序设计的基本步骤及方法。
在编程的过程中遇到很多的问题,如关于保存的问题,每次保存的结果都是未处理的图像,因此一直在寻找axes2的句柄,最后在同学的帮助下终于解决了问题。
遇到问题不能盲目的相信自己,同学、老师都能提供巨大的帮助。
参考书目:
[1]《MATLAB实用教程》郑阿奇电子工业出版社
[2]《应用MATLAB实现信号分析和处理》张明照等科学出版社
仅供个人用于学习、研究;不得用于商业用途。
Forpersonaluseonlyinstudyandresearch;notforcommercialuse.
NurfürdenpersönlichenfürStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'étudeetlarechercheuniquementàdesfinspersonnelles;pasàdesfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文