-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathS01__Crop_Footprints.m
140 lines (120 loc) · 5.13 KB
/
S01__Crop_Footprints.m
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
clearvars;
close all hidden;
[Name_Exceldatei,Pfad] = uigetfile('*.xl*','Zu bearbeitende Exceldatei ausw�hlen');
if Name_Exceldatei==0
clearvars
errordlg('Keine Excel-Datei ausgew�hlt, breche ab')
error('Keine Excel-Datei ausgew�hlt, breche ab')
end
[num,txt,raw] = xlsread([Pfad,Name_Exceldatei]);
is_nan_temperatur = any(isnan(num(:, 2)));
is_nan_luftfeuchtigkeit = any(isnan(num(:, 3)));
is_nan_film_number = any(isnan([raw{3:end, 10}]));
if is_nan_temperatur || is_nan_luftfeuchtigkeit || is_nan_film_number
errordlg('ERROR: Excel-Datei pr�fen, Eintrag fehlt')
error('ERROR: Excel-Datei pr�fen, Eintrag fehlt')
end
SpalteFoliennummer=10;
SpalteNeuerName=12;
SpalteFolientyp=2;
PosCrop_x=13;
PosCrop_y=14;
Width=15;
Height=16;
AuswertungWeitermachen = 1;
addpath([cd,'\','Unterfunktionen'])
for i=1:size(raw,1)
FilePath=[Pfad,'Original\',raw{i,10}];
if(exist(FilePath,'file') == 2) %
%% Horizontale Ausrichtung des Footprints festlegen, dann Footprints umdrehen
Bild1=imread(FilePath);
imshow(Bild1);
message = sprintf(['Horizontale Ausrichtung des Reifens einlesen \n\n', ...
'\t- Ersten Punkt ausw�hlen und auf AddPoint klicken\n',...
'\t- Zweiten Punkt ausw�hlen und auf AddPoint klicken\n',...
'\t- Auf Next/End klicken']);
msgbox(message,'replace')
datacursormode on
%Buttons hinzufuegen
AllPoints=[];
while (size(AllPoints,1)<2) && ishandle(1)
handles.push1=uicontrol('Style', 'pushbutton', 'String','AddPoint','Position',[10 10 60 20],'Callback','[AllPoints]=GetValue(AllPoints)');
handles.push2=uicontrol('Style', 'pushbutton', 'String','Next/End','Position',[80 10 60 20],'Callback', 'Abort');
uiwait
if size(AllPoints,1)<2
msgbox('2 Punkte f�r die horizontale Ausrichtung ben�tigt','replace')
end
end
if ishandle(1)==0
AuswertungWeitermachen = 0;
break
end
deltaX=abs(AllPoints(1,1)-AllPoints(2,1));
[minVal,IndexFirst]=min(AllPoints(:,1));
if IndexFirst==1
IndexSecond=2;
else
IndexSecond=1;
end
deltaY=AllPoints(IndexSecond,2)-AllPoints(IndexFirst,2);
Omega=atan(deltaY/deltaX)*180/pi;
Bild1=imrotate(Bild1,Omega);
imshow(Bild1)
%% Origin
message = sprintf(['- Ursprungspunkt ausw�hlen und auf AddPoint klicken\n',...
'- Auf Next/End klicken\n\n',...
'Hinweis: Bei jeder Folie muss der Ursprung konsistent sein (z.B. immer das Zentrum von dem linken Kreuz)']);
msgbox(message,'Ursprung einlesen','replace');
AllPoints=[];
while (size(AllPoints,1)<1) && ishandle(1)
handles.push1=uicontrol('Style', 'pushbutton', 'String','AddPoint','Position',[10 10 60 20],'Callback','[AllPoints]=GetValue(AllPoints)');
handles.push2=uicontrol('Style', 'pushbutton', 'String','Next/End','Position',[80 10 60 20],'Callback', 'Abort');
set(gcf,'toolbar','figure')
uiwait
if size(AllPoints,1)<1
msgbox('1 Punkt f�r den Ursprung des Footprints ben�tigt. Ursprung ausw�hlen, auf AddPoint und dann auf Next/End klicken','replace')
end
end
if ishandle(1)==0
AuswertungWeitermachen = 0;
break
end
if strcmp(raw{i,SpalteFolientyp},'LLLLW')==1
datacursormode off
handles.push2=uicontrol('Style', 'pushbutton', 'String','Next/End','Position',[80 10 60 20],'Callback', 'Abort');
h = imrect(gca,[round(size(Bild1,2)/2-size(Bild1,2)/10) round(size(Bild1,1)/2-size(Bild1,1)/10) size(Bild1,2)/5 size(Bild1,1)/5]);
message = sprintf(['Ziehbares Rechteck mit der Maus auf die Gr��e des Footprints einstellen.\n',...
'Innerhalb des Rechteckes sollte nur Rosa-Farbe sein\n',...
'Auf Next/End klicken']);
msgbox(message,'replace')
uiwait
pos = getPosition(h);
for s=1:4
raw{i+s-1,PosCrop_x}=pos(1)-AllPoints(1,1);
raw{i+s-1,PosCrop_y}=pos(2)-AllPoints(1,2);
raw{i+s-1,Width}=pos(3);
raw{i+s-1,Height}=pos(4);
end
end
%Crop Image
x_min=AllPoints(1,1)+(raw{i,PosCrop_x});
y_min=AllPoints(1,2)+(raw{i,PosCrop_y});
x_max=(raw{i,Width});
y_max=(raw{i,Height});
Bild_2= imcrop(Bild1,[x_min y_min x_max y_max]);
imshow(Bild_2)
NeuerName=[Pfad,'Cropped_',raw{i,10}];
raw{i,12}=['Cropped_',raw{i,10}];
imwrite(Bild_2,NeuerName)
close gcf
end
end
if AuswertungWeitermachen == 1
xlswrite([Pfad,Name_Exceldatei],raw);
clc
close all hidden
else
clc
close all hidden
clearvars
end