pyramid_decomposition.m

来自「Matlab基于金字塔结构的图像处理 GUI界面」· M 代码 · 共 44 行

M
44
字号
function imgout = Pyramid_Decomposition(imgin,level)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% imgout = Pyramid_Decomposition(imgin,level)
%
% NOTE:
% Image Multi-resolution Decomposition based on neibourhood average
% Pyramid algorithm.  
% The input image can be RGB or GRAYSCALE.
%
% ARGUMENT:
%    INPUT:   imgin - The input image.
%             level - The number of level to which the image is
%                     decomposited.
%    OUTPUT: imgout - A cell array that contain the original image
%                     and its n-level decomposition images.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (nargin == 1)
    error('Please input the level');
    return
end
if isrgb(imgin)
    imgin = rgb2gray(imgin);
end
if isgray(imgin)
    imgin = double(imgin);
end
imgout = cell(level+1,1);
imgout{1} = imgin;
for ii = 1:level
    imgin11 = dyaddown(imgin,1,'m');
    imgin22 = dyaddown(imgin,2,'m');
    imgin12 = dyaddown(imgin,2,'c');
    imgin12 = dyaddown(imgin12,1,'r');
    imgin21 = dyaddown(imgin,1,'c');
    imgin21 = dyaddown(imgin21,2,'r');
    imgin22 = imresize(imgin22,size(imgin11));
    imgin12 = imresize(imgin12,size(imgin11));
    imgin21 = imresize(imgin21,size(imgin11));
    imgin1 = imgin11+imgin12+imgin21+imgin22;
    imgin1 = imgin1/4;
    imgout{ii+1} = imgin1;
    imgin = imgin1;
end
    

⌨️ 快捷键说明

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