/normxcorr/trunk

To get this branch, use:
bzr branch http://suren.me/webbzr/normxcorr/trunk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
function line_visual(filenamelist,raw_peak_results,int_width_y_mark);

%"Stand alone" code to visualize DIC .dat results files
%Programmed by Rob slightly changed by Chris
%Last revised: 2//06


%Load the necessary files

if exist('filenamelist')==0
load('filenamelist')
end
if exist('raw_peak_results')==0
load('raw_peak_results.dat')
end
if exist('int_width_y_mark')==0
load('int_width_y_mark.dat')
end

%Number of images to analyze is r; also initialize xpos, y_mark

[r,c]=size(filenamelist);
xpos_o=raw_peak_results(1,:);
y_mark=int_width_y_mark(2,1);

%Start analysis of results

g=waitbar(0,'Processing the results...');

for m=2:(r-1)
    
    %Calculate displacements and engineering strains (i.e. average strains between
    %the two selected points...similar to an ISDG measurement)
    
    waitbar(m/(r-1));
    warning off MATLAB:divideByZero
    
    xdis=raw_peak_results(m,:)-xpos_o;  
    epsxx=(xdis(2)-xdis(1))/(xpos_o(2)-xpos_o(1));     
    
    epsxx_plot(1)=0;
    epsxx_plot(m+1)=epsxx*100;
    
    %Initialize and then save displacement and strain field data for each image
    
    xdis_all(m,:)=xdis;      
    epsxx_all(m)=epsxx;
end

epsxx_all=epsxx_all';

close(g)

save disp_x.dat xdis_all -ascii -tabs 
save strain_x.dat epsxx_all -ascii -tabs

%Show user strain vs. image number plot and save the data and figure

l=figure;
plot(1:r,epsxx_plot,'.-b')
axis([1 (max(r)*1.1) 0 (max(epsxx_plot)*1.1)])
xlabel('Image Number (Image #1 defined to be the very first image loaded for analysis)')
ylabel('Engineering Strain [%]')
title('Engineering Strain vs. Image Number') 

strain_image_data_x=[(1:r)' epsxx_plot'];
save strain_image_x.txt strain_image_data_x -ascii -tabs
saveas(l,'strain_image_x.fig')

%Ask user if a full-figure stress vs. strain plot is desired; save data and figure too

plot_selection = menu(sprintf('The displacement and strain values from each image have been saved and plotted.\n  An Eng Stress vs. Eng Strain curve can now be generated if the files "time_stress.txt" (raw data from Labview, stress values in [MPa]) and "time_image.txt" (saved by AutoIt)\n are available in the image directory.  Matlab will sort through these files and select the correct stress value for a given image and calculated strain using system time as the reference.\n  (Note: The matching logic used in this step to correlate the stress and strain values requires that the raw data aquisition rate be at least 2 data points per second.)\n  Click "Generate Plot" to do this or click "Exit" to quit Matlab.'),'Generate Plot','Exit');

if plot_selection == 1
    
    stress_strain_match
    
    n=figure;
    plot(epsxx_plot,stress_image(:,2),'.-b')
    axis([0 (max(epsxx_plot)*1.1) 0 (max(stress_image(:,2))*1.1)])
    xlabel('Engineering Strain [%]')
    ylabel('Engineering Stress [MPa]')
    title('Engineering Stress vs. DIC Engineering Strain') 
    
    stress_strain_data_x=[epsxx_plot' stress_image(:,2)];
    save stress_strain_x.txt stress_strain_data_x -ascii -tabs
    saveas(n,'stress_strain_x.fig')
    
elseif plot_selection == 2
    return
end

%Ask user if a figure with two subplots is desired...good for presentation animations

plot_selection2 = menu(sprintf('A figure with two subplots can now be generated for use in animated presentations.\n  (Caution: The .avi movie saved in this step can become very large depending on the number of images analyzed.)\n  Click "Generate Subplots" to do this or click "Exit" to quit Matlab.'),'Generate Subplots','Exit');

if plot_selection2 == 1
    
    %Define counter for image capture and load stress data
    
    mov_count=0;
    
    for M=1:r
        
        subplot(2,1,1)
        imshow(filenamelist(M,:))
        hold on 
        plot(raw_peak_results(1,1),y_mark,'xr','markersize',10)           %,'markersize',12
        plot(raw_peak_results(1,2),y_mark,'xr','markersize',10)
        
        if M > 1
            
            plot(raw_peak_results(M,1),y_mark,'xg','markersize',10)
            plot(raw_peak_results(M,2),y_mark,'xg','markersize',10)
        end
        
        title(['Image Correlation Results',sprintf(' (Current image: %10s)',filenamelist(M,:))],'fontweight','bold')
        drawnow
        hold off
        
        subplot(2,1,2)
        hold on
        plot(epsxx_plot(M),mov_stress(M),'og')
        box on
        axis([0 (max(epsxx_plot)*1.1) 0 (max(mov_stress)*1.1)])
        xlabel('Engineering Strain [%]','fontsize',8,'fontweight','bold')
        ylabel('Engineering Stress [MPa]','fontsize',8,'fontweight','bold')
        title('Engineering Stress vs. DIC Engineering Strain','fontweight','bold')
        drawnow
        hold off
        
        
    end
    
elseif plot_selection2 == 2
    return
end