此函数模版摘自冈萨雷斯数字图像处理MATLAB版,内容包括函数格式,输入参数处理等
function out=test(in,varargin) % % % just for test % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 输入参数个数检测,重要的函数有nargin nargout nargchk,
%分别用来返回函数的输入参数个数、输出参数个数、检查参数。 error(nargchk(2,4,nargin));
%检测变量类型,返回类型为字符串类型,如果要比较字符串可以使用
%类似c语言的函数 strcmp函数 classin=class(f);
% 这里要注意的是符号'...',MATLAB中有物理行和逻辑行的定义,如果
%一个逻辑行不能容纳一个物理行,可以使用‘...’来换行
%同样,MATLAB可以使用逻辑表达式来完成严格的逻辑。例如本例中的&
if strcmp( classin,'double') & max( f(:) ) >10 ... ~strcmp( varargin{1},'log' ) f=mat2gray(f); else f=im2double(f); end
%注意参数数组varargin,这个一个数组,要和矩阵相区别开来。
%MATLAB的多参数和变参数输入就是在这里完成的。
method=vararg{1};
switch method case 'neg' g=imcomplement(f); case 'log' if length(varargin)==1 c=1; elseif length(varargin)==2 c=varargin{2}; elseif length(varargin)==3 c=varargin{2}; classin=vararg{3}; else error( 'Incorrect number of inputs for the log option') end g=imadjust(f,[],[],gam); case 'gama' if length(varargin)<2 error(' Not enough inputs for the gama option') end gam=varargin{2}; g=imadjust(f,[],[],gama); case 'stretch' if length(varargin)==1 m=mean2(f); E=4.0; elseif length(varargin)==3 m=varargin{2}; E=varargin{3}; else error(' Incorrect number of inputs for the strech option'); end otherwise error(' unknown enhancement method') end
g=changeclass(classin,g);
|
注意nargin nargout nargchk,和varargin等。以后各种函数的编写就可以按照这个模版进行了。
阅读(1061) | 评论(0) | 转发(0) |