www.gusucode.com > 图像融合工具箱 > 图像融合工具箱/fusetool11/es.m

    function Y = es(X, n, wo)
%Y = ES2(X, n) symmetric extension of a matrix on selected borders
%    
%    X  - input matrix
%    n  - number of rows/columns to extend
%    wo - where to extend
%       wo == 1: left and right
%				wo == 2: up and bottom
%				wo == 3: all borders
%
%    Y  - extended matrix

%    (Oliver Rockinger 16.08.99)

[z s] = size(X);

if wo == 1
  Y = zeros(z, s+2*n);
  Y(:,n:-1:1)  = X(:,2:1:n+1); 
  Y(:,n+1:1:n+s) = X(:,:);
  Y(:,n+s+1:1:s+2*n) = X(:,s-1:-1:s-n); 
end;

if wo == 2
  Y = zeros(z+2*n, s);
  Y(n:-1:1,:)  = X(2:1:n+1,:); 
  Y(n+1:n+z,:) = X(:,:);
  Y(n+z+1:1:z+2*n,:) = X(z-1:-1:z-n,:); 
end;

if wo == 3
  Y = zeros(z+2*n, s+2*n);
  Y(n+1:n+z,n:-1:1)  = X(:,2:1:n+1); 
  Y(n+1:n+z,n+1:1:n+s) = X;
  Y(n+1:n+z,n+s+1:1:s+2*n) = X(:,s-1:-1:s-n);
  Y(n:-1:1,n+1:s+n)  = X(2:1:n+1,:); 
  Y(n+1:n+z,n+1:s+n) = X;
  Y(n+z+1:1:z+2*n,n+1:s+n) = X(s-1:-1:s-n,:); 
end;