3
function [rasterx, rastery, validx,validy,x,y]=ppselection_func(validx,validy,x,y);
5
% Code to analyze the displacement data (contained by validx and validy)
7
% Last revision: 8/24/06
9
% Prompt user for displacement data
11
[validx,Pathvalidx] = uigetfile('*.mat','Open validx.mat');
16
validx=importdata(validx,'\t');
19
[validy,Pathvalidy] = uigetfile('*.mat','Open validy.mat');
24
validy=importdata(validy,'\t');
27
% Checking for plot orientation and give standard orientations
41
[looppoints loopimages]=size(validx);
43
prompt = {'From which image do you want to select the view?'};
44
dlg_title = 'Marker selection';
47
defaultimage=loopimages;
50
defaultimage=selectedimage;
52
def = {num2str(defaultimage)};
53
answer = inputdlg(prompt,dlg_title,num_lines,def);
54
selectedimage = str2num(cell2mat(answer(1,1)));
55
if selectedimage>loopimages
56
selectedimage=loopimages;
63
% Call the selection tool
64
[rasterx, rastery, validx,validy,x,y]=gridtypeselection(validx,validy,x,y,selectedimage,rasterx,rastery);
68
%-------------------------------
70
% Decide which type of raster you want to analyze
72
function [rasterx, rastery, validx,validy,x,y] = gridtypeselection(validx,validy,x,y,selectedimage,rasterx,rastery);
74
gridselection = menu(sprintf('Which type of grid do you want to use'),...
75
'Two Markers','Rectangular','Two Rectangles of Markers','Circular','Line','Change view','Cancel');
78
[validx,validy,rasterx, rastery,selectedimage,x,y]=twop_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
89
[validx,validy,rasterx, rastery,selectedimage,x,y]=rect_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
100
[validx,validy,rasterx, rastery,selectedimage,x,y]=line_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
111
[validx,validy,rasterx, rastery,selectedimage,x,y]=tworect_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
122
[validx,validy,rasterx, rastery,selectedimage,x,y]=circ_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
133
[validx,validy,x,y,selectedimage,rasterx,rastery] = change_view_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
150
if exist('validx')==0
154
if exist('rasterx')==0
164
if exist('validx')==0
168
if exist('rasterx')==0
179
%-------------------------------
183
function [validx,validy,x,y,selectedimage,rasterx,rastery] = change_view_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
185
[looppoints loopimages]=size(validx);
193
validxfirst=zeros(size(validx));
194
validxfirst=validx(:,1)*ones(1,loopimages);
195
pos=validx-validxfirst;
198
validyfirst=zeros(size(validy));
199
validyfirst=validy(:,1)*ones(1,loopimages);
200
pos=validy-validyfirst;
209
validxfirst=zeros(size(validx));
210
validxfirst=validx(:,1)*ones(1,loopimages);
211
displ=validx-validxfirst;
214
validyfirst=zeros(size(validy));
215
validyfirst=validy(:,1)*ones(1,loopimages);
216
displ=validy-validyfirst;
220
plot(pos(:,selectedimage),displ(:,selectedimage),'o','MarkerEdgeColor','k','MarkerFaceColor','g')
222
title(sprintf('View.') )
224
changeviewselection = menu(sprintf('Do you want to change the coordinate system to select markers?'),...
225
'x-position vs. y-position','x-position vs. x-displacement','y-position vs. x-displacement',...
226
'x-position vs. y-displacement','y-position vs. y-displacement','Change image #','Go back to grid-type selection');
228
if changeviewselection==1
232
[validx,validy,x,y,selectedimage,rasterx,rastery] = change_view_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
234
if changeviewselection==2
238
[validx,validy,x,y,selectedimage,rasterx,rastery] = change_view_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
240
if changeviewselection==3
244
[validx,validy,x,y,selectedimage,rasterx,rastery] = change_view_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
246
if changeviewselection==4
250
[validx,validy,x,y,selectedimage,rasterx,rastery] = change_view_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
252
if changeviewselection==5
256
[validx,validy,x,y,selectedimage,rasterx,rastery] = change_view_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
258
if changeviewselection==6
259
prompt = {'From which image do you want to select the view?'};
260
dlg_title = 'Marker selection';
263
defaultimage=loopimages;
266
defaultimage=selectedimage;
268
def = {num2str(defaultimage)};
269
answer = inputdlg(prompt,dlg_title,num_lines,def);
270
selectedimage = str2num(cell2mat(answer(1,1)));
271
if selectedimage>loopimages
272
selectedimage=loopimages;
277
[validx,validy,x,y,selectedimage,rasterx,rastery] = change_view_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
279
if changeviewselection==7
281
[rasterx, rastery, validx,validy,x,y]=gridtypeselection(validx,validy,x,y,selectedimage,rasterx,rastery);
284
%-------------------------------
286
% Define two rectangles and add them to one marker array
288
function [validx,validy,rasterx,rastery,selectedimage,x,y] = tworect_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
290
[validx,validy,rasterx1, rastery1,selectedimage]=rect_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
291
[validx,validy,rasterx2, rastery2,selectedimage]=rect_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
293
% if size(rasterx1)~size(rasterx2)
295
% rasterx=0;rastery=0;
299
rasterx=[rasterx1; rasterx2];
300
rastery=[rastery1; rastery2];
303
pos1=validx;pos2=rasterx;
306
pos1=validy;pos2=rasterx;
309
validxfirst=zeros(size(validx));rasterxfirst=zeros(size(rasterx));
310
validxfirst=validx(:,1)*ones(1,loopimages);rasterxfirst=rasterx(:,1)*ones(1,loopimages);
311
pos1=validx-validxfirst;pos2=rasterx-rasterxfirst;
314
validyfirst=zeros(size(validy));rasteryfirst=zeros(size(rastery));
315
validyfirst=validy(:,1)*ones(1,loopimages);rasteryfirst=rastery(:,1)*ones(1,loopimages);
316
pos1=validy-validyfirst;pos2=rastery-rasteryfirst;
319
displ1=validx;displ2=rasterx;
322
displ1=validy;displ2=rastery;
325
validyfirst=zeros(size(validy));rasteryfirst=zeros(size(rastery));
326
validyfirst=validy(:,1)*ones(1,loopimages);rasteryfirst=rastery(:,1)*ones(1,loopimages);
327
displ1=validy-validyfirst;displ2=rastery-rasteryfirst;
330
[looppoints loopimages]=size(validx);
331
defaultimage=loopimages;
333
prompt = {'From which image do you want to select the rectangles?'};
334
dlg_title = 'Marker selection';
337
defaultimage=loopimages;
340
defaultimage=selectedimage;
342
def = {num2str(defaultimage)};
343
answer = inputdlg(prompt,dlg_title,num_lines,def);
344
selectedimage = str2num(cell2mat(answer(1,1)));
345
if selectedimage>loopimages
346
selectedimage=loopimages;
353
plot(pos1(:,selectedimage),displ1(:,selectedimage),'o','MarkerEdgeColor','k','MarkerFaceColor','g')
355
plot(pos2(:,selectedimage),displ2(:,selectedimage),'o','MarkerEdgeColor','k','MarkerFaceColor','r')
357
% Accept the chosen markers, try again or give up
359
confirmcircselection = menu(sprintf('Do you want to use these markers?'),...
360
'Yes','No, try again','Go back to grid-type selection');
362
if confirmcircselection==2
364
[validx,validy,rasterx,rastery,selectedimage,x,y] = tworect_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
367
if confirmcircselection==3
369
[rasterx, rastery,validx,validy, x,y] = gridtypeselection(validx,validy,x,y,selectedimage,rasterx,rastery);
372
if confirmcircselection==1
376
%-------------------------------
378
% Define line and find markers
380
function [validx,validy,rasterx,rastery,selectedimage,x,y]=line_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
382
[looppoints loopimages]=size(validx);
383
defaultimage=loopimages;
392
validxfirst=zeros(size(validx));
393
validxfirst=validx(:,1)*ones(1,loopimages);
394
pos=validx-validxfirst;
397
validyfirst=zeros(size(validy));
398
validyfirst=validy(:,1)*ones(1,loopimages);
399
pos=validy-validyfirst;
408
validxfirst=zeros(size(validx));
409
validxfirst=validx(:,1)*ones(1,loopimages);
410
displ=validx-validxfirst;
413
validyfirst=zeros(size(validy));
414
validyfirst=validy(:,1)*ones(1,loopimages);
415
displ=validy-validyfirst;
418
prompt = {'From which image do you want to select markers?'};
419
dlg_title = 'Marker selection';
422
defaultimage=loopimages;
425
defaultimage=selectedimage;
427
def = {num2str(defaultimage)};
428
answer = inputdlg(prompt,dlg_title,num_lines,def);
429
selectedimage = str2num(cell2mat(answer(1,1)));
430
if selectedimage>loopimages
431
selectedimage=loopimages;
438
plot(pos(:,selectedimage),displ(:,selectedimage),'o','MarkerEdgeColor','k','MarkerFaceColor','g')
440
title(sprintf('Pick two points on the sample.') )
442
[xpos(1,1),ypos(1,1)]=ginput(1);
444
plot(xpos(1,1),ypos(1,1),'+g')
446
[xpos(2,1),ypos(2,1)]=ginput(1);
447
plot(xpos(2,1),ypos(2,1),'+g')
449
centerpoint=[xpos(1,1)+(xpos(2,1)-xpos(1,1))/2; ypos(1,1)+(ypos(2,1)-ypos(1,1))/2];
450
plot(centerpoint(1,1),centerpoint(2,1),'+b')
452
linelength=sqrt((xpos(2,1)-xpos(1,1))*(xpos(2,1)-xpos(1,1))+(ypos(2,1)-ypos(1,1))*(ypos(2,1)-ypos(1,1)));
453
lineslope=(ypos(2,1)-ypos(1,1))/(xpos(2,1)-xpos(1,1));
454
intersecty=ypos(1,1)-lineslope*xpos(1,1);
456
ycalc=lineslope*xpos+intersecty;
457
plot(xpos(:,1),ycalc(:,1),'-b')
458
intercept=[0; centerpoint(2,1)-centerpoint(1,1)*(-1/lineslope)];
460
distancefromline=(abs((xpos(2,1)-xpos(1,1))*(ypos(1,1)-displ(:,selectedimage))-(xpos(1,1)-pos(:,selectedimage))*(ypos(2,1)-ypos(1,1))))/sqrt((xpos(2,1)-xpos(1,1))*(xpos(2,1)-xpos(1,1))+(ypos(2,1)-ypos(1,1))*(ypos(2,1)-ypos(1,1)));
461
distancefromcenterpoint=(abs((intercept(1,1)-centerpoint(1,1))*(centerpoint(2,1)-displ(:,selectedimage))-(centerpoint(1,1)-pos(:,selectedimage))*(intercept(2,1)-centerpoint(2,1))))/sqrt((intercept(1,1)-centerpoint(1,1))*(intercept(1,1)-centerpoint(1,1))+(intercept(2,1)-centerpoint(2,1))*(intercept(2,1)-centerpoint(2,1)));
466
while linewidthquestion==0
467
prompt = {'Enter the width of the line in [pixel]:'};
468
dlg_title = 'Input for grid creation';
470
def = {num2str(linewidth)};
471
answer = inputdlg(prompt,dlg_title,num_lines,def);
472
linewidth = str2num(cell2mat(answer(1,1)))
474
selectpoints=find(distancefromline<linewidth & distancefromcenterpoint<linelength/2);
475
plot(pos(selectpoints,selectedimage),displ(selectpoints,selectedimage),'.r')
478
confirmlineselection = menu(sprintf('Do you want to use these markers?'),...
479
'Yes','No, try different linewidth','No, different line','Go back to grid-type selection');
481
if confirmlineselection==1
484
rasterx=[validx(selectpoints,:);validx(selectpoints,:)];
485
rastery=[validy(selectpoints,:);validy(selectpoints,:)];
488
if confirmlineselection==2
490
plot(pos(:,selectedimage),displ(:,selectedimage),'o','MarkerEdgeColor','k','MarkerFaceColor','g')
492
plot(xpos(:,1),ycalc(:,1),'-b')
493
plot(xpos(1,1),ypos(1,1),'+g')
494
plot(xpos(2,1),ypos(2,1),'+g')
496
if confirmlineselection==3
499
[validx,validy,rasterx, rastery,selectedimage,x,y]=line_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
502
if confirmlineselection==4
505
[rasterx, rastery,validx,validy, x,y] = gridtypeselection(validx,validy,x,y,selectedimage,rasterx,rastery);
510
%-------------------------------
514
function [validx,validy,rasterx, rastery,selectedimage,x,y]=twop_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
516
[looppoints loopimages]=size(validx);
517
defaultimage=loopimages;
526
validxfirst=zeros(size(validx));
527
validxfirst=validx(:,1)*ones(1,loopimages);
528
pos=validx-validxfirst;
531
validyfirst=zeros(size(validy));
532
validyfirst=validy(:,1)*ones(1,loopimages);
533
pos=validy-validyfirst;
542
validxfirst=zeros(size(validx));
543
validxfirst=validx(:,1)*ones(1,loopimages);
544
displ=validx-validxfirst;
547
validyfirst=zeros(size(validy));
548
validyfirst=validy(:,1)*ones(1,loopimages);
549
displ=validy-validyfirst;
551
prompt = {'From which image do you want to select markers?'};
552
dlg_title = 'Marker selection';
555
defaultimage=loopimages;
558
defaultimage=selectedimage;
560
def = {num2str(defaultimage)};
561
answer = inputdlg(prompt,dlg_title,num_lines,def);
562
selectedimage = str2num(cell2mat(answer(1,1)));
563
if selectedimage>loopimages
564
selectedimage=loopimages;
571
plot(pos(:,selectedimage),displ(:,selectedimage),'o','MarkerEdgeColor','k','MarkerFaceColor','g')
573
title(sprintf('Pick two markers.') )
575
[xpos(1,1),ypos(1,1)]=ginput(1);
576
whereisthispoint=abs(pos(:,selectedimage)-xpos(1,1))+abs(displ(:,selectedimage)-ypos(1,1));
577
selectedpoint1=find(whereisthispoint==min(whereisthispoint));
579
plot(pos(selectedpoint1,selectedimage),displ(selectedpoint1,selectedimage),'+r')
581
[xpos(2,1),ypos(2,1)]=ginput(1);
582
whereisthispoint=abs(pos(:,selectedimage)-xpos(2,1))+abs(displ(:,selectedimage)-ypos(2,1));
583
selectedpoint2=find(whereisthispoint==min(whereisthispoint));
584
plot(pos(selectedpoint2,selectedimage),displ(selectedpoint2,selectedimage),'+r')
587
% Accept the chosen markers, try again or give up
589
confirmcircselection = menu(sprintf('Do you want to use these two markers?'),...
590
'Yes','No, try again','Go back to grid-type selection');
592
if confirmcircselection==2
595
[validx,validy,rasterx,rastery,selectedimage,x,y]=twop_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
598
if confirmcircselection==3
600
[rasterx,rastery,validx,validy,x,y]=gridtypeselection(validx,validy,x,y,selectedimage,rasterx,rastery);
603
if confirmcircselection==1
604
rasterx=[validx(selectedpoint1,:);validx(selectedpoint2,:)];
605
rastery=[validy(selectedpoint1,:);validy(selectedpoint2,:)];
609
%-------------------------------
613
function [validx,validy,rasterx,rastery,selectedimage,x,y] = circ_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
622
validxfirst=zeros(size(validx));
623
validxfirst=validx(:,1)*ones(1,loopimages);
624
pos=validx-validxfirst;
627
validyfirst=zeros(size(validy));
628
validyfirst=validy(:,1)*ones(1,loopimages);
629
pos=validy-validyfirst;
638
validxfirst=zeros(size(validx));
639
validxfirst=validx(:,1)*ones(1,loopimages);
640
displ=validx-validxfirst;
643
validyfirst=zeros(size(validy));
644
validyfirst=validy(:,1)*ones(1,loopimages);
645
displ=validy-validyfirst;
648
plot(pos(:,selectedimage),displ(:,selectedimage),'.b')
651
title(sprintf('Pick three points on the circle in clockwise order with the highest radius.') )
653
[xpos(1,1),ypos(1,1)]=ginput(1);
655
plot(xpos(1,1),ypos(1,1),'+g')
657
[xpos(2,1),ypos(2,1)]=ginput(1);
658
plot(xpos(2,1),ypos(2,1),'+g')
660
[xpos(3,1),ypos(3,1)]=ginput(1);
661
plot(xpos(3,1),ypos(3,1),'+g')
663
% Calculate center between the 3 sorted points and the normal slope of the vectors
664
slope12=-1/((ypos(2,1)-ypos(1,1))/(xpos(2,1)-xpos(1,1)));
665
slope23=-1/((ypos(3,1)-ypos(2,1))/(xpos(3,1)-xpos(2,1)));
666
center12(1,1)=(xpos(2,1)-xpos(1,1))/2+xpos(1,1);
667
center12(1,2)=(ypos(2,1)-ypos(1,1))/2+ypos(1,1);
668
center23(1,1)=(xpos(3,1)-xpos(2,1))/2+xpos(2,1);
669
center23(1,2)=(ypos(3,1)-ypos(2,1))/2+ypos(2,1);
670
plot(center12(1,1),center12(1,2),'+b')
671
plot(center23(1,1),center23(1,2),'+b')
674
[validx,validy,rasterx,rastery,selectedimage,x,y] = circ_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery)
677
% Calculate the crossing point of the two vectors
678
achsenabschnitt1=center12(1,2)-center12(1,1)*slope12;
679
achsenabschnitt2=center23(1,2)-center23(1,1)*slope23;
680
xcross=(achsenabschnitt2-achsenabschnitt1)/(slope12-slope23);
681
ycross=slope12*xcross+achsenabschnitt1;
682
xdata=min(xpos):xcross;
683
ydata1=achsenabschnitt1+slope12*xdata;
684
ydata2=achsenabschnitt2+slope23*xdata;
687
R=sqrt((xcross-xpos(1,1))*(xcross-xpos(1,1))+(ycross-ypos(1,1))*(ycross-ypos(1,1)))
689
% Calculate angle between vectors
691
x1vec(1,1)=xpos(1,1)-xcross;x1vec(2,1)=ypos(1,1)-ycross;
692
x3vec(1,1)=xpos(3,1)-xcross;x3vec(2,1)=ypos(3,1)-ycross;
693
alpha13=acos((dot(x1vec,x3vec))/(sqrt(x1vec'*x1vec)*sqrt(x3vec'*x3vec)))*180/pi;
694
alpha01=acos((dot(xvector,x1vec))/(sqrt(x1vec'*x1vec)*sqrt(xvector'*xvector)))*180/pi;
696
alpha01=alpha01*(-1)+360;
698
alpha03=acos((dot(xvector,x3vec))/(sqrt(xvector'*xvector)*sqrt(x3vec'*x3vec)))*180/pi;
700
alpha03=alpha03*(-1)+360;
706
angldiv=abs(round(totalangle))*10;
707
anglstep=(totalangle/angldiv);
708
anglall(1:angldiv+1)=minangle-anglstep*(1:angldiv+1)-anglstep;
709
xcircle(1:angldiv+1)=xcross+R*cos(anglall(1:angldiv+1)/180*pi);
710
ycircle(1:angldiv+1)=ycross+R*sin(anglall(1:angldiv+1)/180*pi);
711
plot(xcircle,ycircle,'-r');
714
% Accept the chosen circle, try again or give up
715
confirmcircselection = menu(sprintf('Do you want to use this circle as basis?'),...
716
'Yes','No, try again','Go back to grid-type selection');
717
if confirmcircselection==2
720
[validx,validy,rasterx,rastery,selectedimage,x,y] = circ_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
723
if confirmcircselection==3
725
[rasterx,rastery,validx,validy,x,y]=gridtypeselection(validx,validy,x,y,selectedimage,rasterx,rastery);
728
if confirmcircselection==1
730
% Pick the lower bound in the image
731
title(sprintf('Pick lower bound for the raster') )
733
[xpos(4,1),ypos(4,1)]=ginput(1);
735
plot(xpos(1,1),ypos(1,1),'+r')
737
R2=sqrt((xcross-xpos(4,1))*(xcross-xpos(4,1))+(ycross-ypos(4,1))*(ycross-ypos(4,1)))
738
xcrossmatrix=ones(size(pos(:,selectedimage)))*xcross;
739
ycrossmatrix=ones(size(pos(:,selectedimage)))*ycross;
741
% Calculate Radius for all points
742
Rall=sqrt((xcrossmatrix-pos(:,selectedimage)).*(xcrossmatrix-pos(:,selectedimage))+(ycrossmatrix-displ(:,selectedimage)).*(ycrossmatrix-displ(:,selectedimage)));
744
% Calculate Angle for all points relativ to circle center
745
newpos=pos(:,selectedimage)-xcross;newdispl=displ(:,selectedimage)-ycross;
746
angleallpoints=acos((newpos.*xvector(1,1)+newdispl.*xvector(2,1))./(sqrt(newpos.*newpos+newdispl.*newdispl).*sqrt(xvector(1,1).*xvector(1,1)+xvector(2,1).*xvector(2,1))))*180/pi;
747
negativangle=find(displ(:,selectedimage)<ycross);
748
angleallpoints(negativangle)=angleallpoints(negativangle)*(-1)+360;
749
selectpoints=find(Rall>min(R,R2) & Rall<max(R,R2) & angleallpoints>maxangle & angleallpoints<minangle);
750
plot(pos(selectpoints,selectedimage),displ(selectpoints,selectedimage),'.r')
754
% Do you want to keep the grid?
755
confirmselectionraster = menu(sprintf('Do you want to use this raster?'),...
756
'Yes','No, try again','Go back to raster-type selection');
758
if confirmselectionraster==1
759
rasterx=pos(selectpoints,:);
760
rastery=displ(selectpoints,:);
764
if confirmselectionraster==2
775
[validx,validy,rasterx,rastery,selectedimage,x,y] = circ_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
778
if confirmselectionraster==3
780
[rasterx,rastery,validx,validy,x,y]=gridtypeselection(validx,validy,x,y,selectedimage,rasterx,rastery);
787
%-------------------------------
790
function [validx,validy,rasterx, rastery,selectedimage,x,y]=rect_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
792
[looppoints loopimages]=size(validx);
793
defaultimage=loopimages;
802
validxfirst=zeros(size(validx));
803
validxfirst=validx(:,1)*ones(1,loopimages);
804
pos=validx-validxfirst;
807
validyfirst=zeros(size(validy));
808
validyfirst=validy(:,1)*ones(1,loopimages);
809
pos=validy-validyfirst;
818
validxfirst=zeros(size(validx));
819
validxfirst=validx(:,1)*ones(1,loopimages);
820
displ=validx-validxfirst;
823
validyfirst=zeros(size(validy));
824
validyfirst=validy(:,1)*ones(1,loopimages);
825
displ=validy-validyfirst;
828
prompt = {'From which image do you want to select markers?'};
829
dlg_title = 'Marker selection';
832
defaultimage=loopimages;
835
defaultimage=selectedimage;
837
def = {num2str(defaultimage)};
838
answer = inputdlg(prompt,dlg_title,num_lines,def);
839
selectedimage = str2num(cell2mat(answer(1,1)));
840
if selectedimage>loopimages
841
selectedimage=loopimages;
848
plot(pos(:,selectedimage),displ(:,selectedimage),'o','MarkerEdgeColor','k','MarkerFaceColor','g')
849
title(sprintf('Define the region of interest. Pick (single click) a point in the LOWER LEFT of your selection.\n Do the same for a point in the UPPER RIGHT.'))
851
[xpos(1,1),ypos(1,1)]=ginput(1);
853
plot(xpos(1,1),ypos(1,1),'+b')
856
[xpos(2,1),ypos(2,1)]=ginput(1);
858
plot(xpos(2,1),ypos(2,1),'+b')
866
lowerline=[xmin ymin; xmax ymin];
867
upperline=[xmin ymax; xmax ymax];
868
leftline=[xmin ymin; xmin ymax];
869
rightline=[xmax ymin; xmax ymax];
871
plot(lowerline(:,1),lowerline(:,2),'-b')
872
plot(upperline(:,1),upperline(:,2),'-b')
873
plot(leftline(:,1),leftline(:,2),'-b')
874
plot(rightline(:,1),rightline(:,2),'-b')
876
selectpoints=find(pos(:,selectedimage)>min(xpos) & pos(:,selectedimage)<max(xpos) & displ(:,selectedimage)<max(ypos) & displ(:,selectedimage)>min(ypos))
881
pos=validx(selectpoints,:);
884
pos=validy(selectpoints,:);
887
validxfirst=zeros(size(validx));
888
validxfirst=validx(:,1)*ones(1,loopimages);
889
pos=validx(selectpoints,:)-validxfirst(selectpoints,:);
892
validyfirst=zeros(size(validy));
893
validyfirst=validy(:,1)*ones(1,loopimages);
894
pos=validy(selectpoints,:)-validyfirst(selectpoints,:);
897
displ=validx(selectpoints,:);
900
displ=validy(selectpoints,:);
903
validxfirst=zeros(size(validx));
904
validxfirst=validx(:,1)*ones(1,loopimages);
905
displ=validx(selectpoints,:)-validxfirst(selectpoints,:);
908
validyfirst=zeros(size(validy));
909
validyfirst=validy(:,1)*ones(1,loopimages);
910
displ=validy(selectpoints,:)-validyfirst(selectpoints,:);
913
plot(pos(:,selectedimage),displ(:,selectedimage),'o','MarkerEdgeColor','k','MarkerFaceColor','r')
914
title(sprintf('Red dots represent your new raster.'))
917
% Do you want to keep the grid?
918
confirmselection = menu(sprintf('Do you want to use this raster?'),...
919
'Yes','No, try again','Go back to raster-type selection');
921
if confirmselection==1
927
if confirmselection==2
938
[validx,validy,rasterx, rastery,selectedimage,x,y]=rect_grid_displ(validx,validy,x,y,selectedimage,rasterx,rastery);
941
if confirmselection==3
943
[rasterx,rastery,validx,validy,x,y]=gridtypeselection(validx,validy,x,y,selectedimage,rasterx,rastery);