matlab的gscale函数

来源:互联网 发布:phpcms和帝国cms 编辑:程序博客网 时间:2024/06/05 09:23
function g=gscale(f,varargin)if length(varargin)==0  method='full8';else method=varargin{1};endif strcmp(class(f),'double')&(max(f(:))>1 | min(f(:))<0)   f=mat2gray(f);endswitch methodcase '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              g=imadjust(f,[low_in high_in],[low high]);otherwise       error('Unknown method')end


函数gscale的语法为:

g = gscale(f, method, low, high)

其中,f是将标定的图像。method的有效值是‘full8’(默认)和‘full16’,‘full8’把输出标定为全范围[0,255],而'full16'把输出标定为全范围[0,65535].如果使用这两个值之一,参数low和high在这两种变换中被忽略。method的第三个参数有效值是‘minmax’,在这种情况下,必须提供其值在[0,1]范围内的参数low和high。选中‘minmax’时,灰度级被映射到范围[low,high]内。尽管这些值指定在[0,1]范围内,但程序本身会根据输入的类别做出适当的标定,然后将输出转为与输入相同的类。例如,若f是uint8类,且将'minmax'限定在[0,0.5]范围内,则输出图像同样为uint8类,其值在[0,128]范围内。如f是浮点型图像,且其值在[0,1]范围以外,则程序在运行之前会将其转换到[0,1]范围内。


原创粉丝点击