Code covered by the BSD License  

Highlights from
Toolbox Wavelets

image thumbnail
from Toolbox Wavelets by Gabriel Peyre
Wavelet transform and coding functions, including other more exotic transforms (laplacian, steerable

perform_image_extension(M,n, type)
function M = perform_image_extension(M,n, type)

% perform_image_extension - extend the size by symetry
%
%   M = perform_image_extension(M,n, type);
%
%   n is the new size of the image
%
%   type can be '1side' or '2sides' depending on wether you want to extend
%   the image on only one side or on both.
%
%   Works for 2D and 3D volumetric images 
%
% Copyright (c) 2007 Gabriel Peyre

if nargin<3
    type = '1side';
end

m = size(M,1);
if strcmp(type, '1side')
    k = n-m;
    while k>size(M,1)
        M = perform_image_extension(M,size(M,1)*2,type);
        k = k - size(M,1)/2;
    end
    M = [M; M(end:-1:end-k+1,:,:)];
    M = [M, M(:,end:-1:end-k+1,:)];
    if size(M,3)>1 && size(M,3)~=3
       M = cat(3,M, M(:,:,end:-1:end-k+1));
    end
else
    w1 = floor((n-m)/2);
    w2 = n-m-w1;
    M = [M(w1:-1:1,:,:); M; M(end:-1:end-w2+1,:,:)];
    M = [M(:,w1:-1:1,:) M M(:,end:-1:end-w2+1,:)];
    if size(M,3)>1 && size(M,3)~=3
        M = cat(3, M(:,:,w1:-1:1), M, M(:,:,end:-1:end-w2+1));        
    end
end

Contact us at files@mathworks.com