gusucode.com > Matlab基于金字塔结构的图像处理 GUI界面源码程序 > Pyramid_Decomposition.m

    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