当前位置:文档之家› matlab 图像处理报告

matlab 图像处理报告

《 MATLAB 实践》课程设计学生姓名:学号:专业班级:指导教师:二○○九年三月十三日1.设计目的…………………………………………………第 3页2.题目分析…………………………………………………第3 页3.总体设计…………………………………………………第4 页4.具体设计…………………………………………………第 6页5.结果分析…………………………………………………第 20页6.心得体会…………………………………………………第 20页7.参考书目…………………………………………………第 20页1 课程设计的目的:综合运用MATLAB工具箱实现图像处理的GUI程序设计。

2、题目分析课程设计的基本要求1)熟悉和掌握MATLAB 程序设计方法2)掌握MATLAB GUI 程序设计3)学习和熟悉MATLAB图像处理工具箱4)学会运用MATLAB工具箱对图像进行处理和分析课程设计的内容学习MATLAB GUI程序设计,利用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.文件→保存global BW % 定义全局变量[filename,pathname]= uiputfile({'*.*'},'save picture'); x=[pathname,filename];imwrite(BW,x); %保存图像c.文件→退出clc;close all;close(gcf);(2)工具中的加入噪声a.工具→噪声→高斯噪声:global BWaxes(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.工具→噪声→乘性噪声global BWaxes(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.工具→噪声→椒盐噪声global BWaxes(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.工具→去噪→自适应滤波global BWaxes(handles.axes2);y=wiener2(handles.img); %自适应滤波imshow(y);imwrite(y,'wiener.jpg');title('自适应滤波');BW=y;b.工具→去噪→线性滤波global BWaxes(handles.axes2);h=[1 1 1;1 1 1;1 1 1];H=h/9;i=double(handles.img);k=conv2(i,h); %线性滤波imshow(k,[]);title('线性滤波');BW=y;c.工具→去噪→中值滤波global BWaxes(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.工具→缩放→最近邻插值global BWaxes(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.工具→缩放→双线性插值global BWaxes(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倍global BWaxes(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('频谱图');global BWaxes(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;图像→对比度调节global BWaxes(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;图像→亮度调节global BWaxes(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,[0 1], [p1 ,p2]); %亮度调节imshow(y);title('亮度调节');BW=y;图像→灰度图像global BWaxes(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([0 255 0 150000]);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、结果分析经过调试,修改之后所设计的功能均可以实现,其具体功能在其字面已很明显,这里就不再赘述。

相关主题