gscale.m

%gscale源程序
function g = gscale(f, varargin) 
%GSCALE Scales the intensity of the input image. 
%   G = GSCALE(F, 'full8') scales the intensities of F to the full 
%   8-bit intensity range [0, 255].  This is the default if there is 
%   only one input argument. 
% 
%   G = GSCALE(F, 'full16') scales the intensities of F to the full 
%   16-bit intensity range [0, 65535].  
% 
%   G = GSCALE(F, 'minmax', LOW, HIGH) scales the intensities of F to 
%   the range [LOW, HIGH]. These values must be provided, and they 
%   must be in the range [0, 1], independently of the class of the 
%   input. GSCALE performs any necessary scaling. If the input is of 
%   class double, and its values are not in the range [0, 1], then 
%   GSCALE scales it to this range before processing. 
% 
%   The class of the output is the same as the class of the input. 
 
%   Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins 
%   Digital Image Processing Using MATLAB, Prentice-Hall, 2004 
%   $Revision: 1.5 $  $Date: 2003/11/21 14:36:09 $ 
 
if length(varargin) == 0 % If only one argument it must be f. 
   method = 'full8'; 
else  
   method = varargin{1}; 
end 
 
if strcmp(class(f), 'double') & (max(f(:)) > 1 | min(f(:)) < 0) 
   f = mat2gray(f); 
end 
 
% Perform the specified scaling. 
switch method 
case 'full8' 
   g = im2uint8(mat2gray(double(f))); 
case 'full16' 
   g = im2uint16(mat2gray(double(f))); 
case 'minmax' 
   low = varargin{2}; high = varargin{3}; 
   if low > 1 | low < 0 | high > 1 | high < 0 
      error('Parameters low and high must be in the range [0, 1].') 
   end 
   if strcmp(class(f), 'double') 
      low_in = min(f(:)); 
      high_in = max(f(:)); 
   elseif strcmp(class(f), 'uint8') 
      low_in = double(min(f(:)))./255; 
      high_in = double(max(f(:)))./255; 
   elseif strcmp(class(f), 'uint16') 
      low_in = double(min(f(:)))./65535; 
      high_in = double(max(f(:)))./65535;     
   end 
   % imadjust automatically matches the class of the input. 
   g = imadjust(f, [low_in high_in], [low high]);    
otherwise 
   error('Unknown method.') 
end 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值