MATLAB的图像处理的课程设计.docx
- 文档编号:25078928
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:12
- 大小:18.51KB
MATLAB的图像处理的课程设计.docx
《MATLAB的图像处理的课程设计.docx》由会员分享,可在线阅读,更多相关《MATLAB的图像处理的课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
MATLAB的图像处理的课程设计
封面
作者:
PanHongliang
仅供个人学习
基于MATLAB的图像处理的课程设计(2009-01-1617:
02:
21)
标签:
matlab 图像处理 课程设计 文化
基于MATLAB的图像处理的课程设计
一、课程设计的目的:
综合运用MATLAB工具箱实现图像处理的GUI程序设计.
二、课程设计的基本要求
1)熟悉和掌握MATLAB程序设计方法
2)掌握MATLABGUI程序设计
3)熟悉MATLAB图像处理工具箱
4)学会运用MATLAB工具箱对图像进行处理和分析
三、课程设计的内容
要求利用MATLABGUI设计实现图像处理的图形用户界面,利用MATLAB图像处理工具箱实现以下的图像处理功能:
双击打开MATLAB7.0→File→New→GUI→单击,调整axes1大小→单击OK,调整按钮大小和颜色,修改名称→再建axes2→单击OK,调整按钮大小和颜色,修改名称→保存→View→M-fileEdit→写程序
1)图像的读取和保存.
在functionopen_Callback(hObject,eventdata,handles)后面输入如下程序
[name,path]=uigetfile('*.*','');
file=[path,name];
axes(handles.axes1);
x=imread(file); %读取图像
handles.img=x;
guidata(hObject,handles);
imshow(x); %显示图像
title('打开');
在functionsave_Callback(hObject,eventdata,handles)后面输入如下程序
[name,path]=uigetfile('*.*','');
file=[path,name];
axes(handles.axes1);
x=imread(file);
handles.img=x;
guidata(hObject,handles);
imshow(x);
imwrite(x,'new.jpg'); %保存图像
title('保存');
2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像.
在functionliangdu_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imadjust(x,[0.150.9],[01]); %增亮图像
imshow(y);
title('亮度')
在functionhuidu_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=rgb2gray(handles.img); %RGB图像转换为灰度图像
imshow(x);
title('灰度')
3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域.
在functioncut_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=imcrop(handles.img); %截图
imshow(x);
imwrite(x,'cut.jpg'); %保存图像
title('截图');
4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果.
在functionnearfangda_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=imresize(handles.img,2,'nearest'); %最近邻插值法放大
imshow(x);
imwrite(x,'nearfangda.jpg')
title('最近邻插值法放大');
在functionnearsuoxiao_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=imresize(handles.img,0.5,'nearest'); %最近邻插值法缩小
imshow(x);
imwrite(x,'nearsuoxiao.jpg')
title('最近邻插值法缩小');
在functiondoublefangda_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=imresize(handles.img,5,'bilinear'); %双线性插值法放大图像
imshow(x);
imwrite(x,'doublefangda.jpg');
title('双线性插值法放大');
在functiondoublesuoxiao_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=imresize(handles.img,0.5,'bilinear'); %双线性插值法缩小图像
imshow(x);
imwrite(x,'doublesuoxiao.jpg');
title('双线性插值法缩小');
5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果.
在functionzhifangtu_Callback(hObject,eventdata,handles)后面输入如下程序
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');
在functionjunheng_Callback(hObject,eventdata,handles)后面输入如下程序
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');
6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果.比较去噪效果.
在functiongaussian_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imnoise(x,'gaussian',0,0.05); %加高斯噪声
imshow(y);
imwrite(y,'gaussian.jpg');
title('加高斯噪声')
在functionsalt_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imnoise(x,'salt&pepper',0.04); %加椒盐噪声
imshow(y);
imwrite(y,'salt.jpg');
title('加椒盐噪声')
在functionmedfilt_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imnoise(x,'salt&pepper',0.04); %加椒盐噪声
z=medfilt2(y,[55],'symmetric'); %中值滤波
imshow(z);
imwrite(z,'medfilt.jpg');
title('中值滤波');
在functionwiener_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y=imnoise(x,'gaussian',0,0.05); %加高斯噪声
z=wiener2(y,[55]); %自适应滤波
imshow(z);
imwrite(z,'wiener.jpg');
title('自适应滤波')
7)频谱处理,能够分析图像频谱,显示频谱图.
在functionpinputu_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=(handles.img);
J2=fft2(x); %傅立叶变换
K2=fftshift(J2); %转换数据矩阵
imshow(log(abs(K2)),[]); %显示频谱图
title('频谱图');
8)设计巴特沃斯低通滤波对图像进行低通滤波处理,显示结果.
在functionbutterdi_Callback(hObject,eventdata,handles)后面输入如下程序
axes(handles.axes2);
x=(handles.img);
y1=imnoise(x,'salt&pepper'); %叠加椒盐噪声
f=double(y1); %数据类型转换,MATLAB不支持图像的无符号整型的计算
g=fft2(f); %傅立叶变换
g=fftshift(g); %转换数据矩阵
[M,N]=size(g);
nn=2; %二阶巴特沃斯(Butterworth)低通滤波器
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);
end
end
result=ifftshift(result);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3); %显示滤波处理后的图像
imwrite(y3,'butterdi.jpg');
title('巴特沃斯低通滤波')
9)设计高斯高通虑波器,显示结果.
axes(handles.axes2);
x=(handles.img);
y1=imnoise(x,'gaussian'); %加高斯噪声
f=double(y1); %数据类型转换
k=fft2(f); %傅立叶变换
g=fftshift(k); %转换数据矩阵
[M,N]=size(g);
nn=2;
d0=25; %截止频率为25
m=fix(M/2);n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2); %计算高通滤波器传递函数
ifd<=d0
h=0;
elseh=1;
end
result(i,j)=h*g(i,j);
end
end
result=ifftshift(result);
y2=ifft2(result);
y3=uint8(real(y2));
imshow(y3); %显示滤波处理后的图像
imwrite(y3,'gaussiangao.jpg');
title('高斯高通滤波')
四、课程设计的体会
通过这次基于MATLAB的图像处理的课程设计,熟悉和掌握了MATLAB程序设计方法、MATLABGUI程序设计、MATLAB图像处理工具箱,了解了图形用户界面的制作的设计原则和一般步骤:
简单性、一致性、习常性、响应要迅速、连续等原则,学会了运用MATLAB工具箱对图像进行处理和分析.放大缩小图像时使用了两种方法,最近邻插值法比双线性插值法运行时间快;就效果而言,使用最邻近插值法确实出现了锯齿,但并不明显,而双线性插值则几乎没有什么改变.在做到加高斯噪声和椒盐噪声时,程序运行较慢,我认为这可能有两方面的原因:
一是程序的问题,二是计算机的反应速度.通过不同的加噪方法,得到了不同的加噪效果;不同的滤波方法,得到的滤波效果图也不同.中值滤波较自适应滤波运行速度快.下面是通过不同的方法放大、缩小、加噪、滤波后保存的图像:
(其中macs、bacteria为原图)
五、附录
1、参考书目:
1)《MATLAB语言及其在电子信息工程中的应用》王洪元主编 清华大学出版社
2)《MATLAB在数字图像处理中的应用》机械工业出版社
2、源代码
采用灰度变换的方法增强图像的对比度:
I=imread('rice.tif');
imshow(I);
figure,imhist(I);
J=imadjust(I,[0.150.9],[01]);
figure,imshow(J);
figure,imhist(J);
模拟图像受高斯白噪声和椒盐噪声的影响:
I=imread('eight.tif');
imshow(I);
J1=imnoise(I,'gaussian',0,0.02); %叠加均值为0,方差为0.02的高斯噪声
figure,imshow (J1);
J2=imnoise(I,'salt&pepper',0.04); %叠加密度为0.04的椒盐噪声.
figure,imshow(J2);
版权申明
本文部分内容,包括文字、图片、以及设计等在网上搜集整理。
版权为潘宏亮个人所有
Thisarticleincludessomeparts,includingtext,pictures,anddesign.CopyrightisPanHongliang'spersonalownership.
用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。
Usersmayusethecontentsorservicesofthisarticleforpersonalstudy,researchorappreciation,andothernon-commercialornon-profitpurposes,butatthesametime,theyshallabidebytheprovisionsofcopyrightlawandotherrelevantlaws,andshallnotinfringeuponthelegitimaterightsofthiswebsiteanditsrelevantobligees.Inaddition,whenanycontentorserviceofthisarticleisusedforotherpurposes,writtenpermissionandremunerationshallbeobtainedfromthepersonconcernedandtherelevantobligee.
转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任。
Reproductionorquotationofthecontentofthisarticlemustbereasonableandgood-faithcitationfortheuseofnewsorinformativepublicfreeinformation.Itshallnotmisinterpretormodifytheoriginalintentionofthecontentofthisarticle,andshallbearlegalliabilitysuchascopyright.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 图像 处理 课程设计