/normxcorr/trunk

To get this branch, use:
bzr branch http://suren.me/webbzr/normxcorr/trunk

« back to all changes in this revision

Viewing changes to local_strainx.m

  • Committer: Suren A. Chilingaryan
  • Date: 2010-08-17 01:41:15 UTC
  • Revision ID: csa@dside.dyndns.org-20100817014115-xbh0h6086nz5sj2o
Synchronize with Chris version, set precision to 1, initial implementation of labview wrapper

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%% This function calculates the local resolved strain in the horizontal or
 
2
% x-direction. It is recommended to run displacement.m first to clean up
 
3
% your validx.dat and validy.dat. local_displacement.m allows you to
 
4
% define e.g. 20 regions along x where the function calculates the gradient
 
5
% (strainx) and plots it for each image. The gradientx e.g. contains the
 
6
% strainx in the columns for each image in rows.
 
7
 
 
8
function [marker_displacementx marker_displacementy gradientx gradienty]=...
 
9
    local_strainx(validx, validy)
 
10
 
 
11
if exist('validx')==0
 
12
    [validx,Pathvalidx] = uigetfile('*.dat','Open validx.dat');
 
13
    cd(Pathvalidx);
 
14
    validx=importdata(validx,'\t');
 
15
end
 
16
if exist('validy')==0
 
17
    [validy,Pathvalidy] = uigetfile('*.dat','Open validy.dat');
 
18
    cd(Pathvalidy);
 
19
    validy=importdata(validy,'\t');
 
20
end
 
21
 
 
22
sizevalidx=size(validx);
 
23
sizevalidy=size(validy);
 
24
looppoints=sizevalidx(1,1);
 
25
loopimages=sizevalidx(1,2);
 
26
 
 
27
displacementx=(mean(validx(:,1))-mean(validx));
 
28
displacementy=(mean(validy(:,1))-mean(validy));
 
29
 
 
30
 
 
31
prompt = {'From which image do you want to select markers?'};
 
32
dlg_title = 'Marker selection';
 
33
num_lines= 1;
 
34
defaultimage=1;
 
35
def     = {num2str(defaultimage)};
 
36
answer = inputdlg(prompt,dlg_title,num_lines,def);
 
37
selectedimage = str2num(cell2mat(answer(1,1)));
 
38
if selectedimage>loopimages
 
39
    selectedimage=loopimages;
 
40
end
 
41
if selectedimage<1
 
42
    selectedimage=1;
 
43
end
 
44
 
 
45
h=figure;
 
46
 
 
47
plot(validx(:,selectedimage),validy(:,selectedimage),'+b');
 
48
title(sprintf('Define the region of interest.  Pick (single click) a point in the LOWER LEFT region of the gage section.\n  Do the same for a point in the UPPER RIGHT portion of the gage section.'))
 
49
hold on
 
50
[x(1,1),y(1,1)]=ginput(1);
 
51
plot(x(1,1),y(1,1),'+b')
 
52
plot([min(validx(:,selectedimage)); max(validx(:,selectedimage))], [y(1,1); y(1,1)],'-r')
 
53
plot([x(1,1),x(1,1)], [min(validy(:,selectedimage)),max(validy(:,selectedimage))],'-r')
 
54
 
 
55
[x(2,1),y(2,1)]=ginput(1);
 
56
hold on
 
57
plot(x(2,1),y(2,1),'+b')
 
58
plot([min(validx(:,selectedimage)); max(validx(:,selectedimage))], [y(2,1); y(2,1)],'-r')
 
59
plot([x(2,1),x(2,1)], [min(validy(:,selectedimage)),max(validy(:,selectedimage))],'-r')
 
60
 
 
61
xmin = min(x);
 
62
xmax = max(x);
 
63
ymin = min(y);
 
64
ymax = max(y);
 
65
 
 
66
lowerline=[xmin ymin; xmax ymin];
 
67
upperline=[xmin ymax; xmax ymax];
 
68
leftline=[xmin ymin; xmin ymax];
 
69
rightline=[xmax ymin; xmax ymax];
 
70
 
 
71
plot(lowerline(:,1),lowerline(:,2),'-g')
 
72
plot(upperline(:,1),upperline(:,2),'-g')
 
73
plot(leftline(:,1),leftline(:,2),'-g')
 
74
plot(rightline(:,1),rightline(:,2),'-g')
 
75
 
 
76
selectpoints=find(validx(:,selectedimage)>min(x) & validx(:,selectedimage)<max(x) & validy(:,selectedimage)<max(y) & validy(:,selectedimage)>min(y));
 
77
 
 
78
validx_new=validx(selectpoints,:);
 
79
validy_new=validy(selectpoints,:);
 
80
 
 
81
hold on
 
82
 
 
83
plot(validx_new(:,selectedimage),validy_new(:,selectedimage),'+g')
 
84
title(sprintf('Red dots represent your new raster.'))
 
85
hold off
 
86
drawnow
 
87
 
 
88
 
 
89
% ---------------------------------
 
90
gridselection1 = menu(sprintf('Do you want to use the green highlighted markers?'),...
 
91
    'Yes','No');
 
92
 
 
93
if gridselection1==2
 
94
    return
 
95
end
 
96
 
 
97
%% here you can input into how many areas you would like the strain to be
 
98
% split up
 
99
 
 
100
prompt = {'Into how many areas do you want to split the markers?'};
 
101
dlg_title = 'Divide markers';
 
102
num_lines= 1;
 
103
defaultsplit=10;
 
104
def     = {num2str(defaultsplit)};
 
105
answer = inputdlg(prompt,dlg_title,num_lines,def);
 
106
selectesplit = str2num(cell2mat(answer(1,1)));
 
107
 
 
108
 
 
109
if selectesplit<1
 
110
    selectesplit=20;
 
111
end
 
112
clear marker_displacement
 
113
 
 
114
hold on
 
115
for i=1:selectesplit
 
116
    clear validx_plot
 
117
    clear validy_plot
 
118
    clear selectmarkers
 
119
    posx(i)=xmin+((xmax-xmin)/selectesplit)*i;
 
120
    plot([posx(i);posx(i)], [ymin; ymax],'-m')
 
121
    selectmarkers=find(validx_new(:,selectedimage)>(xmin+((xmax-xmin)/selectesplit)*(i-1)) & validx_new(:,selectedimage)<(xmin+((xmax-xmin)/selectesplit)*(i)));
 
122
    validx_plot=validx_new(selectmarkers,:);
 
123
    validy_plot=validy_new(selectmarkers,:);
 
124
    plot(validx_plot(:,selectedimage),validy_plot(:,selectedimage),'+r')
 
125
    drawnow
 
126
    clear validy_local
 
127
    validy_local=validy_plot;
 
128
    marker_displacementy(:,i)=mean(validy_local)';
 
129
    clear validx_local
 
130
    validx_local=validx_plot;
 
131
    marker_displacementx(:,i)=mean(validx_local)';
 
132
    plot(validx_local(:,selectedimage),validy_local(:,selectedimage),'xg')
 
133
    drawnow
 
134
    drawnow
 
135
end
 
136
 
 
137
hold off
 
138
 
 
139
%% save everything
 
140
 
 
141
save marker_displacementx.txt marker_displacementx -ASCII
 
142
save marker_displacementy.txt marker_displacementy -ASCII
 
143
 
 
144
sizemvalidx=size(marker_displacementx);
 
145
clear mdisplx;
 
146
clear mdisply;
 
147
mvalidxfirst=ones(sizemvalidx(1,1),1)*marker_displacementx(1,:);
 
148
mdisplx=marker_displacementx-mvalidxfirst;
 
149
mvalidyfirst=ones(sizemvalidx(1,1),1)*marker_displacementy(1,:);
 
150
mdisply=marker_displacementy-mvalidyfirst;
 
151
clear mvalidxfirst
 
152
clear mvalidyfirst
 
153
 
 
154
grad_mdisplx=gradient(mdisplx);
 
155
grad_mdisply=gradient(mdisply);
 
156
 
 
157
grad_marker_displacementx=gradient(marker_displacementx);
 
158
grad_marker_displacementy=gradient(marker_displacementy);
 
159
 
 
160
gradientx=grad_mdisplx./grad_marker_displacementx;
 
161
gradienty=grad_mdisply./grad_marker_displacementy;
 
162
 
 
163
save gradientx.txt gradientx -ASCII
 
164
save gradienty.txt gradienty -ASCII
 
165
 
 
166
%% Here you can let the function plot the displacement
 
167
 
 
168
checkdisplacement = menu(sprintf('Do you want to check the displacement x?'),...
 
169
    'Yes','No');
 
170
 
 
171
if checkdisplacement==1
 
172
 
 
173
 
 
174
    minmeanx=min(min(marker_displacementx));
 
175
    maxmeanx=max(max(marker_displacementx));
 
176
    minmdisplx=min(min(mdisplx));
 
177
    maxmdisplx=max(max(mdisplx));
 
178
 
 
179
    figure
 
180
    for i=1:loopimages
 
181
        plot(marker_displacementx(i,:),mdisplx(i,:),'.r')
 
182
        title(['Displacement',sprintf(' (Current image #: %1g)',i)])
 
183
        axis([minmeanx maxmeanx minmdisplx maxmdisplx])
 
184
        drawnow
 
185
    end
 
186
end
 
187
 
 
188
 
 
189
%% Here, you can let the function plot the strainx
 
190
checkdisplacement = menu(sprintf('Do you want to check the local strain x?'),...
 
191
    'Yes','No');
 
192
videoselection = menu(sprintf('Do you want to create a video?'),'Yes','No');
 
193
if videoselection==1
 
194
    close all
 
195
    mkdir('video_local_strain')
 
196
    cd('video_local_strain');
 
197
    Vid='Vid';
 
198
end
 
199
if checkdisplacement==1
 
200
    minmeanx=min(min(marker_displacementx));
 
201
    maxmeanx=max(max(marker_displacementx));
 
202
    min_marker_gradx=min(min(gradientx));
 
203
    max_marker_gradx=max(max(gradientx));
 
204
    H=figure;
 
205
    for i=1:loopimages
 
206
        plot(marker_displacementx(i,:),gradientx(i,:),'.-b')
 
207
        title(['Gradient of Displacement',sprintf(' (Current image #: %1g)',i)])
 
208
        axis([minmeanx maxmeanx min_marker_gradx max_marker_gradx])
 
209
        xlabel('Position in Pixel [ ]')
 
210
        ylabel('Local Displacement Gradient [ ]')
 
211
        drawnow
 
212
        
 
213
        if videoselection==1
 
214
            u=i+10000;
 
215
            ustr=num2str(u);
 
216
            videoname=[Vid ustr '.jpg'];
 
217
            saveas(h,videoname,'jpg');
 
218
        end
 
219
        %                 pause(0.1)
 
220
    end
 
221
    if videoselection==1
 
222
        cd('..')
 
223
    end
 
224
end
 
225