gscale.m

来自「Matlab數位影音處理 影像方面的處理」· M 代码 · 共 33 行

M
33
字号
function g=gscale(f,varargin)
if length(varargin) == 0
    method = 'full8';
else
    method = varargin{1};
end
if strcmp(class(f), 'double') & (max(f(:)) > 1 | min(f(:)) < 0)
    f = mat2gray(f);
end
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
        g = imadjust(f, [low_in high_in], [low high]);
    otherwise
        error('unknow method.')
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?