/normxcorr/trunk

To get this branch, use:
bzr branch http://suren.me/webbzr/normxcorr/trunk
1 by Suren A. Chilingaryan
Initial import
1
function [FileNameBase,PathNameBase,filenamelist]=filelist_generator
2
3
% Code to construct a list of 9999 or less filenames
4
% Programmed by Rob, changed by Chris. Automatic filelist generation 
5
% and image time aquisition added by Chris.
6
% Last revision: 12/25/06
7
8
filenamelistmode = menu(sprintf('How do you want to create the filenamelist?'),...
9
    'Manually','Automatically','Cancel');
10
if filenamelistmode==3
11
    return
12
end
13
if filenamelistmode==2
14
    [FileNameBase,PathNameBase,filenamelist]=automatically;
15
end
16
if filenamelistmode==1
17
    [FileNameBase,PathNameBase,filenamelist]=manually;
18
end
19
20
[FileNameBase,PathNameBase,filenamelist]=imagetime(FileNameBase,PathNameBase,filenamelist);
21
22
%  -------------------------------------------------------
23
24
function [Firstimagename,ImageFolder,filenamelist]=automatically
25
26
[Firstimagename ImageFolder]=uigetfile('*.tif','Open First Image');
27
if Firstimagename~~[];
28
    cd(ImageFolder);
29
end
30
31
if Firstimagename~~[];
32
    % Get the number of image name
33
    letters=isletter(Firstimagename);
34
    Pointposition=findstr(Firstimagename,'.');
35
    Firstimagenamesize=size(Firstimagename);
36
    counter=Pointposition-1;
37
    counterpos=1;
38
    letterstest=0;
39
    while letterstest==0
40
        letterstest=letters(counter);
41
        if letterstest==1
42
            break
43
        end
44
        Numberpos(counterpos)=counter;
45
        counter=counter-1;
46
        counterpos=counterpos+1;
47
        if counter==0
48
            break
49
        end
50
    end
51
52
    Filename_first = Firstimagename(1:min(Numberpos)-1);
53
    Firstfilenumber=Firstimagename(min(Numberpos):max(Numberpos));
54
    Lastname_first = Firstimagename(max(Numberpos)+1:Firstimagenamesize(1,2));
55
    Firstfilenumbersize=size(Firstfilenumber);
56
    onemore=10^(Firstfilenumbersize(1,2));
57
    filenamelist(1,:)=Firstimagename;
58
59
    Firstfilenumber=str2num(Firstfilenumber);
60
    u=1+onemore+Firstfilenumber;
61
    ustr=num2str(u);
62
    filenamelist(2,:)=[Filename_first ustr(2:Firstfilenumbersize(1,2)+1) Lastname_first];
63
    numberofimages=2;
64
65
    counter=1;
66
    
67
    while exist(filenamelist((counter+1),:),'file') ==2;
68
        counter=counter+1;
69
        u=1+u;
70
        ustr=num2str(u);
71
        filenamelist(counter+1,:)=[Filename_first ustr(2:Firstfilenumbersize(1,2)+1) Lastname_first];
72
        if exist(filenamelist((counter+1),:),'file') ==0;
73
            warning('Last image detected')
74
            filenamelist(counter+1,:)=[];
75
            break
76
        end
77
    end
78
end
79
[FileNameBase,PathNameBase] = uiputfile('filenamelist.mat','Save as "filenamelist" in image directory (recommended)');
80
cd(PathNameBase)
81
save(FileNameBase,'filenamelist');
82
83
%  -------------------------------------------------------
84
function [FileNameBase,PathNameBase,filenamelist]=manually;
85
% Prompt user for images to be used for analysis  
86
87
prompt = {'Enter number of first image (i.e. "3" for PIC00003):','Enter number of last image (i.e. "100" for PIC00100):'};
88
dlg_title = 'Input images to be used for the analysis';
89
num_lines= 1;
90
def     = {'1','100'};
91
answer = inputdlg(prompt,dlg_title,num_lines,def);
92
F2 = str2num(cell2mat(answer(1,1)));
93
F = str2num(cell2mat(answer(2,1)));
94
95
if F >= 10000
96
    error0 = menu('!!! ERROR - Code will only work properly for 9999 or less picture files !!!','Restart');
97
    return
98
end
99
100
% Choose first name of images
101
G = 'PIC1';
102
prompt = {'Enter Image Name (first 4 letters):'};
103
dlg_title = 'Input images to be used for the analysis';
104
num_lines= 1;
105
def     = {'PIC1'};
106
answer = inputdlg(prompt,dlg_title,num_lines,def);
107
G = cell2mat(answer(1,1));
108
109
E='.tif';
110
111
namelist(1:F-F2+1,1)=G(1,1);
112
namelist(1:F-F2+1,2)=G(1,2);
113
namelist(1:F-F2+1,3)=G(1,3);
114
namelist(1:F-F2+1,4)=G(1,4);
115
116
% create the numberlist
117
num=((10000+F2):(10000+F))';
118
119
% Creation of final results
120
filenamelist=namelist;
121
str=num2str(num);
122
filenamelist(:,5:8)=str(:,2:5);
123
124
filenamelist(1:F-F2+1,9)=E(1,1);
125
filenamelist(1:F-F2+1,10)=E(1,2);
126
filenamelist(1:F-F2+1,11)=E(1,3);
127
filenamelist(1:F-F2+1,12)=E(1,4);
128
129
130
% Save results
131
[FileNameBase,PathNameBase] = uiputfile('filenamelist.mat','Save as "filenamelist" in image directory (recommended)');
132
cd(PathNameBase)
133
save(FileNameBase,'filenamelist');
134
135
136
%  ----------------------------------------
137
% Extract the time from images?
138
139
function [FileNameBase,PathNameBase,filenamelist]=imagetime(FileNameBase,PathNameBase,filenamelist)
140
141
selection_time_image = menu(sprintf('Do you also want to extract the time from images to match stress and strain?'),'Yes','No');
142
143
if selection_time_image==1
144
  
145
    % Loop through all images in imagetimelist to get all image capture times
146
    
147
    [ri,ci]=size(filenamelist);
148
    
149
    o=waitbar(0,'Extracting the image capture times...');
150
    
151
    for q=1:ri
152
        
153
        waitbar(q/ri);
154
        info=imfinfo(filenamelist(q,:));
155
        time=datevec(info.FileModDate,13);
156
        seconds(q)=time(1,4)*3600+time(1,5)*60+time(1,6);
157
        
158
    end
159
    
160
    close(o)
161
    
162
    % Configure and then save image number vs. image capture time text file
163
    
164
    im_num_im_cap_time=[(1:ri)' seconds'];
165
    save time_image.txt im_num_im_cap_time -ascii -tabs
166
    
167
end