function rec = interpolation(s,delta_est,phi_est,factor)
n=length(s);
ss = size(s{1});
if (length(ss)==2) ss=[ss 1]; end
center = (ss+1)/2;
phi_rad = phi_est*pi/180;
for k=1:ss(3)
for i=1:n
s_c{i}=s{i}(:,:,k);
s_c{i} = s_c{i}(:);
r{i} = [1:factor:factor*ss(1)]'*ones(1,ss(2));
c{i} = ones(ss(1),1)*[1:factor:factor*ss(2)];
r{i} = r{i}-factor*center(1);
c{i} = c{i}-factor*center(2);
coord{i} = [c{i}(:) r{i}(:)]*[cos(phi_rad(i)) sin(phi_rad(i)); -sin(phi_rad(i)) cos(phi_rad(i))];
r{i} = coord{i}(:,2)+factor*center(1)+factor*delta_est(i,1);
c{i} = coord{i}(:,1)+factor*center(2)+factor*delta_est(i,2);
rn{i} = r{i}((r{i}>0)&(r{i}<=factor*ss(1))&(c{i}>0)&(c{i}<=factor*ss(2)));
cn{i} = c{i}((r{i}>0)&(r{i}<=factor*ss(1))&(c{i}>0)&(c{i}<=factor*ss(2)));
sn{i} = s_c{i}((r{i}>0)&(r{i}<=factor*ss(1))&(c{i}>0)&(c{i}<=factor*ss(2)));
end
s_ = []; r_ = []; c_ = []; sr_ = []; rr_ = []; cr_ = [];
for i=1:n
s_ = [s_; sn{i}];
r_ = [r_; rn{i}];
c_ = [c_; cn{i}];
end
clear s_c r c coord rn cn sn
h = waitbar(0.5, 'Image Reconstruction');
set(h, 'Name', 'Please wait...');
rec_col = griddata(c_,r_,s_,[1:ss(2)*factor],[1:ss(1)*factor]','cubic',{'QJ'});
rec(:,:,k) = reshape(rec_col,ss(1)*factor,ss(2)*factor);
end
rec(isnan(rec))=0;
close(h);