基于MATLAB的图像处理的课程设计论文 下载本文

要将用Matlab语言编写的函数文件编译成可独立执行的*.exe文件(即可脱离Matalab环境的执行程序),首先要安装和配置好Matlab Compiler,一般来说,在安装Matlab时就已经安装了相应版本的Matlab Compiler。只是不同版本的Matlab,其编译器的使用方法有一定的差异,这一点要引起一定的注意。

在确定安装好Matlab Compiler后,还需要对Compiler进行适当的配置,方法是在Matlab命令窗口输入:

Mbuild –setup

然后根据提示执行相应的操作,使用者可根据自己计算机中现有编译器的情况选择合适的编译器,如VC++ 6.0、VC++7.0、Bland C的编译器等,目前Matlab好象还不支持VC++8.0(我计算机安装的就是VC++2005,Matlab就无法识别)。当然,如果你的计算机里根本就没有安装其他任何语言的编译器,也可选择Matlab自带的Lcc编译器,其实这个编译器对大多数用户已经够用了(我就是选择的Matlab自带的Lcc编译器)。

配置好编译器后,自然就是对自己编写的M文件进行编译了。 将M文件编译为独立可执行文件的语法是: >>mcc –m fun1.m fun2.m…..

其中fun1就是最后的可执行文件的名称。 3、通过本次课程设计,使自己对MATLAB GUI设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。

九、 参考文献

【1】 郑阿奇,曹戈,赵阳.MATLAB实用教程[M].北京:电子工业出版社

【2】 程卫国,冯峰,姚东,徐听.MATLAB5.3应用指南[M].北京:人民邮电出

版社

【3】 陈杨.MATLAB 6.X图像编程与图像处理[M].西安:西安电子科技大学出版

17

十、 附录

function varargout = two(varargin)

% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @two_OpeningFcn, ...

'gui_OutputFcn', @two_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback str2func(varargin{1});

end if nargout

[varargout{1:nargout}] gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:}); end

% End initialization code - DO NOT EDIT % --- Executes just before erzhi is made visible. function two_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

--------------------------------------------------------- %接下来是菜单的程序

--------------------------------------------------------- function handles)

-------------------------------------------------------- %文件打开程序

function open_Callback(hObject, eventdata, handles)

[name,path]=uigetfile({'*.bmp'},'载入图像'); if isequal(name,0)|isequal(path,0) errordlg('没有选中文件','出错');

file_Callback(hObject,

eventdata,

= =

=

struct('gui_Name',

return; else

x=imread([path,name]); axes(handles.axes1); imshow(x); handles.img=x; handles.noise_img=x; guidata(hObject,handles) end

--------------------------------------------------- function save_Callback(hObject, eventdata, handles)

%文件保存

[filename,pathname] = uiputfile('*.bmp','图片保存为');

if isequal([filename,pathname],[0,0]) errordlg('没有保存','出错'); return; else

file=strcat(pathname,filename); (handles.axes2); i=getimage(gca); imwrite(i,file); end

----------------------------------------------------- function handles)

clc; close all; close(gcf);

--------------------------------------------------------- %编辑菜单的程序

------------------------------------------------------ function handles)

------------------------------------------------- function huidu_Callback(hObject, eventdata, handles)

%灰度处理 axes(handles.axes2); if isrgb(handles.img)

y=rgb2gray(handles.img); %RGB??????????

edit_Callback(hObject,

eventdata,

exit_Callback(hObject,

eventdata,

18

imshow(y); else

msgbox('这已经是灰度图像','转换失败'); end

------------------------------------------------------ function liangdu_Callback(hObject, eventdata, handles)

%亮度处理

prompt={'输入参数1','输入参数2','输入gamma'};

defans={'[0 0.7]','[0 1]','1'};

p=inputdlg(prompt,'输入参数',1,defans); p1=str2num(p{1}); p2=str2num(p{2}); p3=str2num(p{3}); gamma=p3; x=(handles.img);

y=imadjust(x,p1,p2,gamma); axes(handles.axes2); imshow(y);

------------------------------------------------------ function jietu_Callback(hObject, eventdata, handles)

%截图

set(handles.axes2,'HandleVisibility','ON'); axes(handles.axes2); y=imcrop(handles.img); imshow(y); handles.Timage=y;

------------------------------------------------------ function fangda_Callback(hObject, eventdata, handles)

------------------------------------------------------ function lingjz_Callback(hObject, eventdata, handles)

%邻近插值放大 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'2'};

p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});

y=imresize(handles.img,p1,'nearest'); %最近邻插值法放大

imshow(y);

------------------------------------------------------ function eventdata, handles)

%双线放大 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'2'};

p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});

y=imresize(handles.img,p1,'bilinear'); %最近邻插值法放大

imshow(y);

------------------------------------------------ function eventdata, handles)

%双三次放大 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'2'};

p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});

y=imresize(handles.img,p1,'bicubic'); imshow(y);

------------------------------------------------------- function suoxiao_Callback(hObject, eventdata, handles)

%邻近插值缩小 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'0.2'};

p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});

y=imresize(handles.img,p1,'nearest');

%最近邻插值法缩小

imshow(y);

------------------------------------------------------ function eventdata, handles)

%双线性缩小 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'0.2'};

p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});

shuangxian_Callback(hObject, shuangsanci_Callback(hObject, shuangxianfa_Callback(hObject,

19

y=imresize(handles.img,p1,'bilinear'); %最近邻插值法缩小

imshow(y);

--------------------------------------------------------

function

shuangsancisuox_Callback(hObject,

eventdata, handles)

%双三次缩小 axes(handles.axes2); prompt={'输入放大倍数:'}; defans={'0.2'};

p=inputdlg(prompt,'输入放大倍数',1,defans); p1=str2num(p{1});

y=imresize(handles.img,p1,'bicubic'); imshow(y);

------------------------------------------------------ function eventdata, handles)

------------------------------------------------------- function updown_Callback(hObject, eventdata, handles)

%上下翻转 axes(handles.axes2); x=(handles.img); if isrgb(handles.img) for k=1:3

y(:,:,k)=flipud(x(:,:,k));%上下翻转函数 end imshow(y); else

x=(handles.img); y=flipud(x); imshow(y); end

--------------------------------------------------------- function leftright_Callback(hObject, eventdata, handles)

%左右翻转 axes(handles.axes2); if isrgb(handles.img) x=(handles.img); for k=1:3

y(:,:,k)=fliplr(x(:,:,k));%左右翻转函数 end imshow(y);

xuanzhuan_Callback(hObject,

else

x=(handles.img); y=fliplr(x); imshow(y); end

------------------------------------------------------ function zeft90_Callback(hObject, eventdata, handles)

%左转90度 axes(handles.axes2); x=(handles.img);

y=imrotate(x,90); imshow(y);

------------------------------------------------------- function right90_Callback(hObject, eventdata, handles)

%右转90度 axes(handles.axes2); x=(handles.img);

y=imrotate(x,-90); imshow(y);

------------------------------------------------------ function other_Callback(hObject, eventdata, handles)

%任意角度旋转 axes(handles.axes2); prompt={'输入参数1:'}; defans={'30'};

p=inputdlg(prompt,'输入参数',1,defans); p1=str2num(p{1});

y=imrotate(handles.img,p1); imshow(y);

----------------------------------------------------- function handles)

%加入高斯噪声 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);

gs_Callback(hObject,

eventdata,

20