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