dir_name='F:\SRT\program_leo_ini\test\MVI_2508_1Hz_4p2V_2_';
file_name ='MVI_2508_1Hz_4p2V_2_.mat';
load 'polymask.mat';
load(sprintf('%s\\%s',dir_name, file_name));
%**以下一行被注释 movie是哪来的参数?
%thismovie = movie;
%clear movie;
num_increase=1;
num_start=1;
% num_end=15;
num_end=size(thismovie, 1);
index=2;
total_index=floor((num_end-num_start)/num_increase)+1;
I1=squeeze(thismovie(num_start, :,:));
I2=squeeze(thismovie(num_start+num_increase, :,:));
[m,n]=size(I1);
x = {linspace(1,m,m),linspace(1,n,n)};
[I1,p] = csaps(x,double(I1),[],x);
[I2,p] = csaps(x,double(I2),[],x);
[u,v,nan_ret,xx,yy]=PIVcombined_function(I1,I2);
[u,v]=naninterp(u,v,'linear','polymask.mat',xx,yy);
%naninterp? undefined
uu=zeros(total_index,size(u,1), size(u,2));
vv=uu;
nan_ret_3=uu;
uu(index,:,:)=u;
vv(index,:,:)=v;
nan_ret_3(index,:,:)=nan_ret;
for num=num_start+num_increase:num_increase:num_end-num_increase
index=index+1
%I1=I2;
I2=squeeze(thismovie(num+num_increase,:,:));
[I2,p] = csaps(x,double(I2),[],x);
[u,v,nan_ret]=PIVcombined_function(I1,I2);
[u,v]=naninterp(u,v,'linear','polymask.mat',xx,yy);
uu(index,:,:)=u;
vv(index,:,:)=v;
nan_ret_3(index,:,:)=nan_ret; %1 stands for NaN return
end
mkdir(sprintf('%s\\results5\',dir_name));
save(sprintf('%s\\results5\\aftersubpixelest_%s-%s-%snew.mat', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
% % accumalative displacements;
% [disp_uu, disp_vv]=strain_cum(uu,vv);
% x_org and y_org for result interpolation
[org_m,org_n]=size(I1);
x_org=ones(org_m,1)*(1:org_n);
y_org=(-1:-1:-org_m)'*ones(1,org_n);
%make videos of displacement
% save(sprintf('%s\\results5\\strains_%s-%s-%snew.mat', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')), 'xx','yy','uu', 'vv');
% makemovie(uu, sprintf('%s\\results5\\xdisp_%s-%s-%snew.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
% makemovie(vv, sprintf('%s\\results5\\ydisp_%s-%s-%snew.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
% filter displacement signals:
% indexnan=isnan(disp_uu);
% disp_uu(index)=0;
% disp_vv(index)=0;
% disp_uuflt=disp_uu;
% disp_vvflt=disp_vv;
%
% [m,n]=size(squeeze(disp_uu(1,:,:)));
% linexy = {linspace(1,m,m),linspace(1,n,n)};
%
%
% size_w=20;
% for i=1: frames
%
% [disp_uuflt(i,:,:),p] = csaps(linexy,squeeze(disp_uu(i,:,:)),[],linexy);
% [disp_vvflt(i,:,:),p] = csaps(linexy,squeeze(disp_vv(i,:,:)),[],linexy);
%
% %
% % disp_uuflt(i,:,:)= wiener2(squeeze(disp_uu(i,:,:)),[size_w size_w]);
% % disp_vvflt(i,:,:)= wiener2(squeeze(disp_vv(i,:,:)),[size_w size_w]);
% end
%
% disp_uu(index)=NaN;
% disp_vv(index)=NaN;
% disp_vvflt(index)=NaN;
% disp_uuflt(index)=NaN;
%
% makemovie(disp_uuflt, sprintf('%s\\results\\xdisp_%s-%s-%snewflt.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
% makemovie(disp_vvflt, sprintf('%s\\results\\ydisp_%s-%s-%snewflt.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
% calculate strain
frames=size(uu,1);
m=size(uu,2);
n=size(uu,3);
xylinspace = {linspace(1,m,m),linspace(1,n,n)};
xylinspace_org={linspace(1,org_m,org_m),linspace(1,org_n,org_n)};
% strain_xx=zeros(size(disp_uu));
% strain_yy=strain_xx;
% strain_xy=strain_xx;
mask1=nan(size(squeeze(uu(2,:,:))));
mask1(~isnan(squeeze(uu(2,:,:))))=1; %nan 'nan', others '1';
IN=zeros(size(maske(1).msk));
for i=1:length(maske)
IN=IN+double(maske(i).msk);
end
IN(IN>=1)=NaN;
IN(IN==0)=1;
%indexnan=isnan(disp_uu);
uu_flt=zeros(total_index,org_m, org_n);
vv_flt=uu_flt;
for i=220:frames
xstrain=squeeze(uu(i,:,:));
ystrain=squeeze(vv(i,:,:));
[suf, svf]= naninterp(xstrain,ystrain,'linear');
% suf=xstrain;
% svf=ystrain;
% [suf2,p] = csaps(xylinspace, suf,0.3,xylinspace);
% [svf2,p] = csaps(xylinspace, svf,0.3,xylinspace);
% uu_tmp=interp2(xx,yy, suf2, x_org, y_org);
% vv_tmp=interp2(xx,yy, svf2, x_org, y_org);
% uu_flt(i,:,:)=uu_tmp.*IN; % disp_uu is the smoothing of uu
% vv_flt(i,:,:)=vv_tmp.*IN;
[epsx,epsy,epsxy,xa,ya]=strain_leo_2(xx,yy,suf,svf,'circulation');
[epsx, epsy]= naninterp(epsx,epsy,'linear');
[epsxy, epsx]= naninterp(epsxy,epsx,'linear');
% epsx=interp2(xx,yy, epsx, x_org, y_org);
epsy=interp2(xx,yy, epsy, x_org, y_org);
epsxy=interp2(xx,yy, epsxy, x_org, y_org);
% [epsx,p] = csaps(xylinspace, epsx,[],xylinspace_org);
% [epsy,p] = csaps(xylinspace, epsy,[],xylinspace_org);
% [epsxy,p] = csaps(xylinspace, epsxy,[],xylinspace_org);
% strain_xx(i-200,:,:)=epsx.*IN;
strain_yy(i-219,:,:)=epsy.*IN;
strain_xy(i-219,:,:)=epsxy.*IN;
end
makemovie(uu_flt, sprintf('%s\\results5\\filtered_xdisp_%s-%s-%snew.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
makemovie(vv_flt, sprintf('%s\\results5\\filtered_ydisp_%s-%s-%snew.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
makemovie(strain_xx, sprintf('%s\\results5\\strainxx_%s-%s-%snew.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
makemovie(strain_yy, sprintf('%s\\results5\\strainyy_%s-%s-%snew.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
makemovie(strain_xy, sprintf('%s\\results5\\strainxy_%s-%s-%snew.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
strain_e=strain_xx+strain_yy;
makemovie(strain_e, sprintf('%s\\results5\\dilatatione_%s-%s-%snew.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));
makemovie_overlay(strain_e, sprintf('%s\\results5\\dilatationewithvideo_%s-%s-%snew2.avi', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')),thismovie,x_org, y_org)
index=~isnan(strain_e(2,:,:));
for i=1:frames
temp=squeeze(strain_e(i,:,:));
dilatation(i)=mean(temp(index));
end
figure, plot(1:frames, -dilatation,'ro-');
xlabel('frames');
ylabel('area decrease');
save(sprintf('%s\\results5\\%s-%s-%s_all_results.mat', dir_name, num2str(num_start, '%02d'),num2str(num_increase, '%02d'),num2str(num_end, '%02d')));