From 47a3cea544234ab4af1d90a13f4b815d4fe48b21 Mon Sep 17 00:00:00 2001 From: ShanMukha Innovations Date: Mon, 6 Aug 2018 13:22:36 +0530 Subject: [PATCH] Added source files --- src/Resources/DigImCorr_resources/icon_16.png | Bin 0 -> 955 bytes src/Resources/DigImCorr_resources/icon_24.png | Bin 0 -> 2005 bytes src/Resources/DigImCorr_resources/icon_48.png | Bin 0 -> 2491 bytes .../DigImCorrtt_resources/icon_16.png | Bin 0 -> 972 bytes .../DigImCorrtt_resources/icon_24.png | Bin 0 -> 2021 bytes .../DigImCorrtt_resources/icon_48.png | Bin 0 -> 7481 bytes src/dic/Beginner4.m | 810 ++++++++++++++++++ src/dic/DIC_Data_check_Beginner3.m | 150 ++++ src/dic/DIC_Linear_Interp_vector3.m | 81 ++ src/dic/DIC_check_vector.m | 25 + src/dic/DIC_cor5.m | 90 ++ src/dic/DIC_filter2.m | 28 + src/dic/DIC_interp_vector.m | 11 + src/dic/DIC_mqd5s.m | 96 +++ src/dic/DIC_smooth.m | 9 + src/dic/DIC_smooth_data.m | 8 + src/dic/DIC_spline_Interp_vector2.m | 19 + src/dic/DIC_vector_filter_median2.m | 38 + src/dic/cordinate_filter.m | 14 + src/dic/dic_filterHist3.m | 11 + src/dic/dic_xcor_m.m | 217 +++++ src/dic/diccwindowsize32.m | 46 + src/dic/findpeak32.m | 6 + src/dic/freezeColors.m | 275 ++++++ src/dic/gui_DIC_overlapCheck.m | 81 ++ src/dic/gui_DIC_sizeCheck.m | 206 +++++ src/dic/gui_DIC_sizeCheck1.m | 81 ++ src/dic/gui_Image_Crop_1.m | 271 ++++++ src/dic/gui_ask_cal_KNOWN_Point.m | 338 ++++++++ src/dic/gui_ask_calibration1.m | 289 +++++++ src/dic/gui_confirm_DICstart2.m | 268 ++++++ src/dic/gui_set_resolution_3.m | 441 ++++++++++ src/dic/image_background2.m | 80 ++ src/dic/myLogfile.m | 52 ++ src/dic/myLogfile_more.m | 52 ++ src/dic/preset_image.m | 5 + src/dic/uigetfile_with_preview2.m | 282 ++++++ src/images/IISc_logo1.png | Bin 0 -> 43004 bytes src/images/Shan_Logo1.jpg | Bin 0 -> 7167 bytes src/images/iisc_logo.png | Bin 0 -> 53872 bytes src/images/lines.png | Bin 0 -> 4664 bytes src/images/p1.png | Bin 0 -> 9347 bytes src/ui/Beginner4.fig | Bin 0 -> 114858 bytes src/ui/Interactive_GUI.fig | Bin 0 -> 22064 bytes src/ui/gui_DIC_overlapCheck.fig | Bin 0 -> 5211 bytes src/ui/gui_DIC_sizeCheck.fig | Bin 0 -> 19860 bytes src/ui/gui_DIC_sizeCheck1.fig | Bin 0 -> 5289 bytes src/ui/gui_Image_Crop_1.fig | Bin 0 -> 22795 bytes src/ui/gui_ask_cal_KNOWN_Point.fig | Bin 0 -> 27618 bytes src/ui/gui_ask_calibration1.fig | Bin 0 -> 26259 bytes src/ui/gui_confirm_DICstart2.fig | Bin 0 -> 28851 bytes src/ui/gui_set_resolution_3.fig | Bin 0 -> 31743 bytes 52 files changed, 4380 insertions(+) create mode 100644 src/Resources/DigImCorr_resources/icon_16.png create mode 100644 src/Resources/DigImCorr_resources/icon_24.png create mode 100644 src/Resources/DigImCorr_resources/icon_48.png create mode 100644 src/Resources/DigImCorrtt_resources/icon_16.png create mode 100644 src/Resources/DigImCorrtt_resources/icon_24.png create mode 100644 src/Resources/DigImCorrtt_resources/icon_48.png create mode 100644 src/dic/Beginner4.m create mode 100644 src/dic/DIC_Data_check_Beginner3.m create mode 100644 src/dic/DIC_Linear_Interp_vector3.m create mode 100644 src/dic/DIC_check_vector.m create mode 100644 src/dic/DIC_cor5.m create mode 100644 src/dic/DIC_filter2.m create mode 100644 src/dic/DIC_interp_vector.m create mode 100644 src/dic/DIC_mqd5s.m create mode 100644 src/dic/DIC_smooth.m create mode 100644 src/dic/DIC_smooth_data.m create mode 100644 src/dic/DIC_spline_Interp_vector2.m create mode 100644 src/dic/DIC_vector_filter_median2.m create mode 100644 src/dic/cordinate_filter.m create mode 100644 src/dic/dic_filterHist3.m create mode 100644 src/dic/dic_xcor_m.m create mode 100644 src/dic/diccwindowsize32.m create mode 100644 src/dic/findpeak32.m create mode 100644 src/dic/freezeColors.m create mode 100644 src/dic/gui_DIC_overlapCheck.m create mode 100644 src/dic/gui_DIC_sizeCheck.m create mode 100644 src/dic/gui_DIC_sizeCheck1.m create mode 100644 src/dic/gui_Image_Crop_1.m create mode 100644 src/dic/gui_ask_cal_KNOWN_Point.m create mode 100644 src/dic/gui_ask_calibration1.m create mode 100644 src/dic/gui_confirm_DICstart2.m create mode 100644 src/dic/gui_set_resolution_3.m create mode 100644 src/dic/image_background2.m create mode 100644 src/dic/myLogfile.m create mode 100644 src/dic/myLogfile_more.m create mode 100644 src/dic/preset_image.m create mode 100644 src/dic/uigetfile_with_preview2.m create mode 100644 src/images/IISc_logo1.png create mode 100644 src/images/Shan_Logo1.jpg create mode 100644 src/images/iisc_logo.png create mode 100644 src/images/lines.png create mode 100644 src/images/p1.png create mode 100644 src/ui/Beginner4.fig create mode 100644 src/ui/Interactive_GUI.fig create mode 100644 src/ui/gui_DIC_overlapCheck.fig create mode 100644 src/ui/gui_DIC_sizeCheck.fig create mode 100644 src/ui/gui_DIC_sizeCheck1.fig create mode 100644 src/ui/gui_Image_Crop_1.fig create mode 100644 src/ui/gui_ask_cal_KNOWN_Point.fig create mode 100644 src/ui/gui_ask_calibration1.fig create mode 100644 src/ui/gui_confirm_DICstart2.fig create mode 100644 src/ui/gui_set_resolution_3.fig diff --git a/src/Resources/DigImCorr_resources/icon_16.png b/src/Resources/DigImCorr_resources/icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..82511d4bbe4699d7d660482b8e0867627596b693 GIT binary patch literal 955 zcmV;s14R6ZP)DyO^qijKU|u3qo6Kw~LYpNdBx!^+S}I;jZIeU2m0;sowb)Fn&b+0SddU=} zQrBD>v+ti*xrT01hO$R`e@vL+H_ z;!V~dQb&AzrAP@A-WOwQi(^ZsL`5#HY?7mCq3s zJ1K^r5FOpa#fx?#BfsXtgju=LteoD*yEp$u6BtLVL*ttMb?Gl$t7x~EY zlIT&lEGXhJN0UU^Lji7Hu}RuREO6vybdA1|BB3SH!(jv zL1EiKSA2lEU|&FnNlWWPrMioxN0H7!c^(_R3Ibj;KcDx~_0CP%$uX)KAKJ$OEW>AH zH}9dT+{IFSOj6Q_aN-~KNkN9))(jG{uspY zU6|a)AO&S7WM(ZB6VoXw)FAmrt7WIqM4(N}p*s)XX$`%eCcX^5;Cdj0))heiB*e9W zBlPVd4CP@ACO_%vKZzQ(Vgt1rZ(#xNItzF^YhrcNNdHDHWv?HRv$2lqnGeHw7fJNE|vHzvr6>-pj?^C1q(t&uFNNhNDG{UM~@CPEmi%I-s75#oy4 zgHE?10OE`fG#cL9ZJf^mi`ave*{8M)RVYK;e@ z@fQK8LozHJ{L@~}-=0#u@0;oWYo0rQ9wB|`CarrN>w|MFjx#LvXI!uO17rRnX0xBX zyah5c8jy?@-@sK@!t{6r15@?f9PGg6oT8v>jGOIKSif>oSU!%`=A^(nDn5RX#WEx+ dbf8dF@h`gaNH0k<7_I;S002ovPDHLkV1m_~!}$OJ literal 0 HcmV?d00001 diff --git a/src/Resources/DigImCorr_resources/icon_24.png b/src/Resources/DigImCorr_resources/icon_24.png new file mode 100644 index 0000000000000000000000000000000000000000..c47babcec41e2297a30fe15a0833fd72e821f303 GIT binary patch literal 2005 zcmV;`2P*i9P))PRO5YIDw_g$LEWwB;W8Y@?R1y>;1ciKSw%|jUOok4o9jIC|A@vH43;6g6}S-pZ; z4}Njo1VoB+cn^W0eQXZyXVtpfqRJLgaUJW|U*h}kPYIyY;(UVT%ad5W`iNkvLt;J? zOkU+CF1AIHQZGkwuYhfLZW3S>m;Ks@|LGq5%{}<4I`N6?U`=>4n`8P}zoQM`zz$Jm zvjD0QRTqoP^ToxP{P07X06WT-Ek-0c89r1MEu*<%1D6{%bGA#c={-+auNA+hPF9yR z;g{2m&*2UNQ~KDbYG-Y93xTnH{{sowCJG5`W8=o_`1zIb(@$qbo4zv1Wc&6cBlPY&BRJP*A@xx?;eCyS3_N06)qOS>_OmN@n2#0;Nb;aijI(y_dBNcC0j!GCdM!trGW$2Kz!X552`4>qz6|)GaK|=cr!K6VWt|qQya6^)%X>3&fVbC85AZ ze8vnalM|KdC35+o5c{HNkzkM$8_R%T;4td(<{Me8*Wr1j=gC+UeYPxe`ZLIRSh3(s-<=$+oI_eXMNq~FyL7{7%x+`}lf=ah5Fg(rm5rSkRNTXj68#^Q{+REO&Uu_x}N8eWs^g3K; z)I2T>rm1u_!-ByhPd>GdaxN`)lI9#E?!_CHpS{VhE28R}Y2qtp2+12oc77J=u_>aA zFIlm&o~Wq%0^kn8!I?<%gvbv}CY~LL!kw?dc}q#_m31_=Z{_~G5=zEP$#ZmJoEal( z^d*1Gt!2+|Pf*l5h$tOrf6)Z;3wGkOX9!b{vFw`)Hg9ee0=M(?&&QEu3!DBS81(Mm z#%zv^clQjmR<6U^6M}U*4^@MOQ_cq@xoyaw+1cMTfwIYorom0zuhZn;gajrn7UoP!?4@EC-8)EK#R?wG9HD&T9P-v2(&xv-pn1?g z^I+`tqO&fdtacKf|BO`%E9znwiY&1kdP{7K{X@X z^O}PPM+8Whn1vK1g<)YV2!JmIhxyQwi1&?=$;G3zdCDpCbYh+xV|V{Bf6cAN(D@F< z4F^dzAJLXAu+=n(q39jv!X*sp?+6JU5e|BaPB%tEg4n#lqD5DwQr=lo_|MgJ{xN9b z{eqcie-_ic)XIgWaV*{iwlog#mtQK8)y!hL@g8-l3vHp;O}TD#*EMhc!MO$8r zh4)GTjIwXvZDG^XNNRH?@7$yWzpBT0l!QdE@I*XY*S-;SjmqN$y zncQm4;^OT>A>45e)mC$?v7L;{yI4xCWMA#&NKOli#NS9fQb$tiEs`w_s5KR$=NB=X nZ<3T$jz&`|W+6-bcvAQ;inS@3U3OW000000NkvXXu0mjfCPUMw literal 0 HcmV?d00001 diff --git a/src/Resources/DigImCorr_resources/icon_48.png b/src/Resources/DigImCorr_resources/icon_48.png new file mode 100644 index 0000000000000000000000000000000000000000..d9cedd97d7732fac44e86b0d0672832f41bee4d4 GIT binary patch literal 2491 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 0.9 + gui_DIC_overlapCheck('Title','ERROR'); + flg1=1; +end + +if (flg1==0) + + switch method + + case 'method_1' + + [xi,yi,iu,iv,da]=DIC_mqd5s( im1', im2', windowsize_x, windowsize_y, ... + overlap, overlap, iu_max, iv_max, i_recur); + + [iu_ft, iv_ft, iu_ip, iv_ip] = DIC_filter2(iu, iv, 2, 1.5, 2, 0 ); + [iu_s, iv_s] = DIC_smooth(iu_ip, iv_ip, 2); + + iu_s(isnan(iu_s))=0; iv_s(isnan(iv_s))=0; + iu_s = iu_s*inum; iv_s = iv_s*inum; % xi = xi*inum; yi = yi*inum; + [x11 y11]= meshgrid(min(xi):max(xi),min(yi):max(yi)); + [a, b]=meshgrid(yi,xi); + F = TriScatteredInterp(b(:),a(:),iu_s(:),'natural'); + U_inp = F(x11,y11); + F = TriScatteredInterp(b(:),a(:),iv_s(:),'natural'); + V_inp = F(x11,y11); + + M =[mean(iu_s(:)) mean(iv_s(:)) ... + min(iu_s(:)) max(iu_s(:)) min(iv_s(:)) max(iv_s(:))... + std2(iu_s) std2(iv_s)]; + + A.iu_s =iu_s; + A.iv_s =iv_s; + A.U_inp =U_inp; + A.V_inp =V_inp; + A.xi = xi; + A.yi = yi; + + + + + case 'method_2' + + + iu_max=windowsize_x; iv_max=windowsize_y; + [xi,yi,iu,iv]=DIC_cor5( im1', im2', windowsize_x, windowsize_y, ... + overlap, overlap, iu_max, iv_max, i_recur); + iu(1,:)=nan; iu(end,:)=nan;iu(:,1)=nan; iu(:,end)=nan; + iv(1,:)=nan; iv(end,:)=nan;iv(:,1)=nan; iv(:,end)=nan; + + [iu_ft, iv_ft, iu_ip, iv_ip] = DIC_filter2(iu, iv, 2, 2.0, 2, 0 ); + [iu_s, iv_s] = DIC_smooth(iu_ip, iv_ip, 2); + iv_s=-iv_s; + iu_s(isnan(iu_s))=0; iv_s(isnan(iv_s))=0; + iu_s = iu_s*inum; iv_s = iv_s*inum; % xi = xi*inum; yi = yi*inum; + [x11 y11]= meshgrid(min(xi):max(xi),min(yi):max(yi)); + [a, b]=meshgrid(yi,xi); + + F = TriScatteredInterp(b(:),a(:),iu_s(:),'natural'); + U_inp = F(x11,y11); + F = TriScatteredInterp(b(:),a(:),iv_s(:),'natural'); + V_inp = F(x11,y11); + +% M =[mean(iu_s(:)) mean(iv_s(:)) std2(iu_s) std2(iv_s)]; + + M =[mean(iu_s(:)) mean(iv_s(:)) ... + min(iu_s(:)) max(iu_s(:)) min(iv_s(:)) max(iv_s(:))... + std2(iu_s) std2(iv_s)]; + + A.iu_s =iu_s; + A.iv_s =iv_s; + A.U_inp =U_inp; + A.V_inp =V_inp; + A.xi = xi; + A.yi = yi; + + + + end + + [xx, yy]= meshgrid(xi,yi); + fig122=figure; set(fig122, 'Visible', 'off'); + imshow(IM*0.5),colormap(gray),hold on, + quiver (xx,yy, iu_s',-iv_s','g'), axis equal; + T=strcat('Vector Field--', FileNames); + title(T); + TT= strcat(Hpath,'\',T); + saveas(gcf, TT); + close(fig122) + + if pix_mic==0, titl='[Pixel]'; + else titl='[m]'; + end + +%%% if ~max((U_inp(:)))==0; ttm=max(abs(U_inp(:)));else ttm=1e-4; end + ttm= max(U_inp(:)); + fig126=figure; set(fig126, 'Visible', 'off'); + imagesc(U_inp,[min(U_inp(:)), ttm]), + colormap(jet), hcb=colorbar;title(hcb,titl), + axis image %Tt=strcat('U--', FileNames); title(Tt); + Tt=strcat('Displacement along X, File-', FileNames); title(Tt); xlabel('X-direction (pixels)'), ylabel('Y-direction (pixels)') + saveas(gcf, strcat(Hpath,'\',Tt)) + close(fig126) + + + image_background2(IM1 , xi,yi,U_inp,cordinates,titl, Tt,Hpath); + + +%%% if ~max(V_inp(:))==0; ttm=max(abs(V_inp(:)));else ttm=1e-4; end + ttm=max(V_inp(:)); + fig125=figure; set(fig125, 'Visible', 'off'); + imagesc(V_inp,[min(V_inp(:)), ttm]); + colormap(jet), hcb=colorbar;title(hcb,titl); + axis image %Tt=strcat('U--', FileNames); title(Tt); + Tt=strcat('Displacement along Y, File-', FileNames); title(Tt); xlabel('X-direction (pixels)'), ylabel('Y-direction (pixels)') + saveas(gcf, strcat(Hpath,'\',Tt)) + close(fig125) + + + + image_background2(IM1 , xi,yi,V_inp,cordinates,titl, Tt, Hpath); + + Tt=strcat('Displacement Magnitude, File-', FileNames); + image_background2(IM1 , xi,yi,sqrt(U_inp.^2+V_inp.^2),cordinates,titl, Tt, Hpath); + + + + + +end + + + diff --git a/src/dic/DIC_Linear_Interp_vector3.m b/src/dic/DIC_Linear_Interp_vector3.m new file mode 100644 index 0000000..979dbe4 --- /dev/null +++ b/src/dic/DIC_Linear_Interp_vector3.m @@ -0,0 +1,81 @@ + +function[ u_inp1 ] = DIC_Linear_Interp_vector3( ui ) +%======================================================================== + +tmp=ui; +[row,col]=find(isnan(ui(2:end-1,2:end-1))); row=row+1; col=col+1; +try +for ii=1:numel(col) + ro=row(ii);cl=col(ii); +% tmp(ro,cl)= (ui(ro-1,cl)+ui(ro+1,cl)+ui(ro,cl-1)+ui(ro,cl+1))/4; + tmp11=[ui(ro-1,cl) ui(ro+1,cl) ui(ro,cl-1) ui(ro,cl+1)]; + chk_nan= ~isnan(tmp11); + tmp11(isnan(tmp11))=0; + tmp(ro,cl)= sum(tmp11.*chk_nan)/ sum(chk_nan(:)); + +end +catch +end + + + + +[row,col]=find(isnan(ui(2:end-1,1))); row=row+1; +try +for ii=1:numel(col) + ro=row(ii);cl=col(ii); + if ~isnan(ui(ro,2)) + tmp(ro,1)= ui(ro,2); + else tmp(ro,1)= tmp(ro,2); + end +end +catch +end + + +[row,col]=find(isnan(ui(2:end-1,end))); row=row+1; +try +for ii=1:numel(col) + ro=row(ii);cl=col(ii); + if ~isnan(ui(ro,end-1)) + tmp(ro,end)= ui(ro,end-1); + else + tmp(ro,end)= tmp(ro,end-1); + end +end +catch +end + +[row,col]=find(isnan(ui(end,2:end-1))); col=col+1; +try +for ii=1:numel(row) + cl=col(ii); + if ~isnan(ui(end-1,cl)) + tmp(end,cl)= ui(end-1,cl); + else + tmp(end,cl)= tmp(end-1,cl); + end +end +catch +end + +[row,col]=find(isnan(ui(1,2:end-1))); col=col+1; +try +for ii=1:numel(row) + ro=row(ii);cl=col(ii); + if ~isnan(ui(2,cl)) + tmp(1,cl)= ui(2,cl); + else + tmp(1,cl)= tmp(2,cl); + end + +end +catch +end + +if isnan(ui(1,1)), tmp(1,1)=tmp(2,2);end +if isnan(ui(end,end)), tmp(end,end)=tmp(end-1,end-1);end +if isnan(ui(1,end)), tmp(1,end)=tmp(2,end-1);end +if isnan(ui(end,1)), tmp(end,1)=tmp(end-1,2);end + +u_inp1=tmp; \ No newline at end of file diff --git a/src/dic/DIC_check_vector.m b/src/dic/DIC_check_vector.m new file mode 100644 index 0000000..dbaf2fc --- /dev/null +++ b/src/dic/DIC_check_vector.m @@ -0,0 +1,25 @@ +function[ iu_f, iv_f, i_cond ] = DIC_check_vector( iu, iv, vec_std, i_filter ) +%======================================================================== +%%======================================================================== + +mx = size(iu,1); +my = size(iu,2); + + +if i_filter == 2 + +[ iu_f, i_cond ] = DIC_vector_filter_median2( iu, vec_std ); +[ iv_f, i_cond ] = DIC_vector_filter_median2( iv, vec_std ); + + +iu_f = iu_f - iv_f*0; +iv_f = iv_f - iu_f*0; + +else + iu_f=iu; + iv_f=iv; + +end + + + diff --git a/src/dic/DIC_cor5.m b/src/dic/DIC_cor5.m new file mode 100644 index 0000000..099c9ec --- /dev/null +++ b/src/dic/DIC_cor5.m @@ -0,0 +1,90 @@ +function [xi, yi, iu, iv] = DIC_cor5( im1, im2, ... + nx_pixel, ny_pixel, ... + overlap_x, overlap_y, ... + iu_max, iv_max, ... + i_mode ) +%======================================================================== +%====================================================================== + + +% set area of search +p_search = 1/3; % percentage of subwindow + +nx = size(im1,1); +ny = size(im1,2); + +pixel_twx = ceil(p_search*nx_pixel); +pixel_twy = ceil(p_search*ny_pixel); + +% (dx_center and dy_center) +[ xi, yi, nx_start, ny_start, nx_overlap, ny_overlap, dx_center, dy_center ] ... + = diccwindowsize32( 'mqd', ... + nx, ny, nx_pixel, ny_pixel, overlap_x, overlap_y ); + +% total number of vectors +mx = max(size(xi)); +my = max(size(yi)); + +if rem(ny_pixel,2)==0, tem=ny_pixel; +else tem=ceil((ny_pixel+ny_pixel-1)/2); end + +for iy = 1: my + + c_proc = strcat( 'process accomplished : ', ... + num2str( 100*(iy-1)/(my-1),' %03.0f' ), '/100' ); + disp( c_proc ) + + for ix = 1: mx + + ix1 = xi(ix) - dx_center; + ix2 = ix1 + nx_pixel - 1; + iy1 = yi(iy) - dy_center; + iy2 = iy1 + ny_pixel - 1; + + wn=nx_pixel/4; + ix11 = xi(ix) - dx_center -wn; if(ix11<1), ix11=1; end + ix22 = ix1 + nx_pixel - 1+ wn; if(ix22>size(im2,1)), ix22=size(im2,1); end + + iy11 = yi(iy) - dy_center -wn; if(iy11<1), iy11=1; end + iy22 = iy1 + ny_pixel - 1 + wn; if(iy22>size(im2,2)), iy22=size(im2,2);end + + f1 = im1( ix1:ix2, iy1:iy2 ); + f2 = im2( ix11:ix22, iy11:iy22 ); + + C3=dic_xcor_m_mex(f1, f2); + [ ip_x3, ip_y3, MMR] = findpeak32_mex( C3, 1); + + SNR = 3.00; + PPR = 1.10; + + tx = round(size(C3,1)/2); + ix_peak = -( ip_y3-tx); + iy_peak = ( ip_x3-tx); + +% +% --- eliminate odd displacement +% + + if (iu_max == 0) & (iv_max == 0) + u_max_dipl = p_search*nx_pixel; + v_max_dipl = p_search*ny_pixel; + else + u_max_dipl = iu_max; + v_max_dipl = iv_max; + end + + if ( abs(ix_peak) > u_max_dipl ) | ( abs(iy_peak) > v_max_dipl ) + ix_peak = NaN; + iy_peak = NaN; + end + + is_x(ix,iy) = ix_peak; + is_y(ix,iy) = iy_peak; + + end +end + iu = -is_x; + iv = is_y; + + + diff --git a/src/dic/DIC_filter2.m b/src/dic/DIC_filter2.m new file mode 100644 index 0000000..86aeee1 --- /dev/null +++ b/src/dic/DIC_filter2.m @@ -0,0 +1,28 @@ +function [iu_ft,iv_ft,iu_ip,iv_ip]=DIC_filter2( iu,iv, ... + i_filter, vec_std,... + i_interp, i_plot) +%======================================================================== +%%======================================================================== +% +% Local fitering to smooth +% + +if i_filter ~= 0 + + [ iu_ft, iv_ft, i_cond ] = DIC_check_vector( iu, iv, vec_std, i_filter ); + +end + + +if i_interp ~= 0 + + [ iu_ip ] = DIC_interp_vector( iu_ft, i_interp ); + [ iv_ip ] = DIC_interp_vector( iv_ft, i_interp ); + +else + + iu_ip = iu_ft; + iv_ip = iv_ft; + +end + diff --git a/src/dic/DIC_interp_vector.m b/src/dic/DIC_interp_vector.m new file mode 100644 index 0000000..c5da4eb --- /dev/null +++ b/src/dic/DIC_interp_vector.m @@ -0,0 +1,11 @@ +function[ uo ] = DIC_interp_vector( ui, ii ) +%======================================================================== + +uo = ui; + +% interpolation + +[ uo ] = DIC_spline_Interp_vector2( ui ); + + + diff --git a/src/dic/DIC_mqd5s.m b/src/dic/DIC_mqd5s.m new file mode 100644 index 0000000..9c50d68 --- /dev/null +++ b/src/dic/DIC_mqd5s.m @@ -0,0 +1,96 @@ +function [xi, yi, iu, iv, D] = DIC_mqd5s( im1, im2, ... + windo_x, windo_y, ... + X_overlap, Y_overlap, ... + u_max, v_max, ... + i_mode ) +%======================================================================== +%% + + +% set filter to eliminate stray vectors: 1-std, 2-median +i_filter = 2; + +% Set threshold value (times of standard deviation) +% Vectors will be eliminated if exceeded +vec_std = 1.5; + +% set interpolation of missing vector : 1-linear, 2-spline, 3-kriging +i_interp = 2; + +% SNR: signal to noise ratio to find peak +r_SNR = 3.0; + +% r_peak: ratio of maximum and mean +r_MMR = 1.10; + +% r_peak: ratio of 1st peak and 2nd peak +r_PPR = 1.1; + +% set area of search +p_search = 1/2; % percentage of subwindow + +% min and max values for MQD +d_min = 10^(-5); +d_max = Inf; + +%======================================================================== + + +% --- initialization +% + +im1 = double(im1); +im2 = double(im2); + +nx = size(im1,1); +ny = size(im1,2); + +% Get the seacrh area +if ( u_max <= 0 ) | ( v_max <= 0 ) + x_maxDis = ceil( p_search*windo_x ); + y_maxDis = ceil( p_search*windo_y ); +else + + x_maxDis = floor( u_max ); + y_maxDis = floor( v_max ); + if x_maxDis >= windo_x + x_maxDis = windo_x; + end + if y_maxDis >= windo_y + y_maxDis = windo_y; + end +end + +X_search = 2*x_maxDis + 1; +Y_search = 2*y_maxDis + 1; + +% to obtain the center locations of all the subwindows +% (dx_center and dy_center) +[ xi, yi, nx_start, ny_start, nx_overlap, ny_overlap, dx_center, dy_center ] ... + = diccwindowsize2( 'mqd', nx, ny, windo_x, windo_y, X_overlap, Y_overlap ); + +dx_center + +dy_center + + +bx=xi-dx_center+windo_x/2; +by=yi-dy_center+windo_y/2; + + +% number of vectors in x and y +mx = max(size(xi)); +my = max(size(yi)); + + + [xi,yi,iu,iv]=DIC_cor5( im1, im2, ... + windo_x, windo_y, ... + X_overlap, Y_overlap, ... + u_max, v_max, ... + i_mode ) +D=[]; + + + + + diff --git a/src/dic/DIC_smooth.m b/src/dic/DIC_smooth.m new file mode 100644 index 0000000..f1c9df0 --- /dev/null +++ b/src/dic/DIC_smooth.m @@ -0,0 +1,9 @@ +function [iu_s,iv_s] = DIC_smooth( iu, iv, i_plot) +%======================================================================== +% +%======================================================================== + +iu_s = DIC_smooth_data(iu); +iv_s = DIC_smooth_data(iv); + +i_plot =i_plot *1; \ No newline at end of file diff --git a/src/dic/DIC_smooth_data.m b/src/dic/DIC_smooth_data.m new file mode 100644 index 0000000..b0917b1 --- /dev/null +++ b/src/dic/DIC_smooth_data.m @@ -0,0 +1,8 @@ +function [y] = DIC_smooth_data(f) +%======================================================================== +%%======================================================================== + +H= [1 2 1; 2 4 2; 1 2 1]; +H= H / sum(H(:)); + +y=imfilter(f,H,'replicate'); \ No newline at end of file diff --git a/src/dic/DIC_spline_Interp_vector2.m b/src/dic/DIC_spline_Interp_vector2.m new file mode 100644 index 0000000..d78beb4 --- /dev/null +++ b/src/dic/DIC_spline_Interp_vector2.m @@ -0,0 +1,19 @@ +function[ tmp1] = DIC_spline_Interp_vector2( ui ) +%======================================================================== +%======================================================================== + +[ u_inp1 ] = DIC_Linear_Interp_vector3( ui ); +tmp=u_inp1; + +[row,col]=find(isnan(ui)); %row=row1+2; col=col1+2; +[X, Y]= meshgrid(1:size(tmp,2),1:size(tmp,1)); +Vq = interp2(X,Y,tmp,row,col); + +tmp1=tmp; + +for ii=1:numel(row) + tmp1(row(ii),col(ii))=Vq(ii); +end + +if any(isnan(tmp1)), tmp1=u_inp1; end + diff --git a/src/dic/DIC_vector_filter_median2.m b/src/dic/DIC_vector_filter_median2.m new file mode 100644 index 0000000..b88d4ec --- /dev/null +++ b/src/dic/DIC_vector_filter_median2.m @@ -0,0 +1,38 @@ +function[ uo, ii ] = DIC_vector_filter_median2( ui, vec_std ) +%======================================================================== +dia=4; +err_int = 0.25; +u_new=zeros(size(ui,1)+dia, size(ui,2)+dia)+nan; +u_new(3:end-2, 3:end-2)=ui; +uo= zeros(size(ui)); +[row, col]=size(ui); +ii=0; +for ri=1:row + for ci=1:col + tmp1 = u_new(ri:ri+4, ci:ci+4); + + + tmp = find(~isnan(tmp1)); + f = tmp1(tmp); + + [f_mean f_std f_med] = dic_filterHist3(f); + + if abs( ui(ri,ci) - f_med ) > (max(err_int, vec_std*f_std)) + uo(ri,ci)=nan; ii=1; + else + uo(ri,ci)=ui(ri,ci); + end + + end +end + + + + + + + + + + + diff --git a/src/dic/cordinate_filter.m b/src/dic/cordinate_filter.m new file mode 100644 index 0000000..1cde78d --- /dev/null +++ b/src/dic/cordinate_filter.m @@ -0,0 +1,14 @@ +function yD = cordinate_filter(yD1, s) +%#codegen + +if ~isempty(yD1) + + yD= round(yD1); + +else + yD=[]; +end + + + + diff --git a/src/dic/dic_filterHist3.m b/src/dic/dic_filterHist3.m new file mode 100644 index 0000000..ced278e --- /dev/null +++ b/src/dic/dic_filterHist3.m @@ -0,0 +1,11 @@ +function[ u_mean, u_std, u_med] = dic_filterHist3( u ) + +limt = 2.0; + +f = u(~isnan(u)); +tm= f.*(abs(f-mean(f))<(limt*std(f))); +tm=tm(find(tm)); + +u_mean=mean(tm); +u_std= std(tm); +u_med= median(tm); diff --git a/src/dic/dic_xcor_m.m b/src/dic/dic_xcor_m.m new file mode 100644 index 0000000..fba35b7 --- /dev/null +++ b/src/dic/dic_xcor_m.m @@ -0,0 +1,217 @@ +function C = dic_xcor_m(varargin) + +%#codegen + +[T, A] = ParseInputs(varargin{:}); + +% Haralick and Shapiro, Volume II (p. 317), +% "Fast Normalized Cross-Correlation", by J. P. Lewis, Industrial Light & Magic. +% + +xcorr_TA = xcorr2_fast(T,A); + +[m, n] = size(T); +mn = m*n; + +local_sum_A = local_sum(A,m,n); +local_sum_A2 = local_sum(A.*A,m,n); + +% Note: diff_local_sums should be nonnegative, but may have negative +% values due to round off errors. Below, we use max to ensure the +% radicand is nonnegative. +diff_local_sums = ( local_sum_A2 - (local_sum_A.^2)/mn ); +denom_A = sqrt( max(diff_local_sums,0) ); + +denom_T = sqrt(mn-1)*std(T(:)); +denom = denom_T*denom_A; +numerator = (xcorr_TA - local_sum_A*sum(T(:))/mn ); + +% We know denom_T~=0 from input parsing; +% so denom is only zero where denom_A is zero, and in +% these locations, C is also zero. +C = zeros(size(numerator)); +tol = sqrt( eps( max(abs(denom(:)))) ); +i_nonzero = find(denom > tol); +C(i_nonzero) = numerator(i_nonzero) ./ denom(i_nonzero); + +% Another numerics backstop. If any of the coefficients are outside the +% range [-1 1], the numerics are unstable to small variance in A or T. In +% these cases, set C to zero to reflect undefined 0/0 condition. +C( ( abs(C) - 1 ) > sqrt(eps(1)) ) = 0; + +%------------------------------- +% Function local_sum +% +function local_sum_A = local_sum(A,m,n) + +% We thank Eli Horn for providing this code, used with his permission, +% to speed up the calculation of local sums. The algorithm depends on +% precomputing running sums as described in "Fast Normalized +% Cross-Correlation", by J. P. Lewis, Industrial Light & Magic. + +B = padarray(A,[m n]); +s = cumsum(B,1); +c = s(1+m:end-1,:)-s(1:end-m-1,:); +s = cumsum(c,2); +local_sum_A = s(:,1+n:end-1)-s(:,1:end-n-1); + +%------------------------------- +% Function xcorr2_fast +% +function cross_corr = xcorr2_fast(T,A) + +T_size = size(T); +A_size = size(A); +outsize = A_size + T_size - 1; + +% figure out when to use spatial domain vs. freq domain +conv_time = time_conv2(T_size,A_size); % 1 conv2 +fft_time = 1*time_fft2(outsize); % 2 fft2 + 1 ifft2 + +cross_corr = conv2(rot90(T,2),A); + + +%------------------------------- +% Function freqxcorr +% +function xcorr_ab = freqxcorr(a,b,outsize) + +% calculate correlation in frequency domain +Fa = fft2(rot90(a,2),outsize(1),outsize(2)); +Fb = fft2(b,outsize(1),outsize(2)); +% xcorr_ab = ifft2(Fa .* Fb,'symmetric'); +xcorr_ab = real(ifft2(Fa .* Fb)); + +%------------------------------- +% Function time_conv2 +% +function time = time_conv2(obssize,refsize) + +% time a spatial domain convolution for 10-by-10 x 20-by-20 matrices + +% a = ones(10); +% b = ones(20); +% mintime = 0.1; + +% t1 = cputime; +% t2 = t1; +% k = 0; +% while (t2-t1)