|
a |
|
b/functions/find_th_focus.m |
|
|
1 |
function thFocusFinal = find_th_focus(imagesCellTrain, TrnLabels, imageSize, dirUtilities, fidLogs) |
|
|
2 |
|
|
|
3 |
|
|
|
4 |
%read |
|
|
5 |
focusAll_Trn = -1 .* ones(numel(imagesCellTrain), 1); |
|
|
6 |
%loop read |
|
|
7 |
parfor f = 1 : numel(imagesCellTrain) |
|
|
8 |
% for f = 1 : numel(imagesCellTrain) |
|
|
9 |
|
|
|
10 |
%im |
|
|
11 |
im = imagesCellTrain{f}; |
|
|
12 |
|
|
|
13 |
%resize |
|
|
14 |
im = imresize(im, imageSize); |
|
|
15 |
|
|
|
16 |
%focus |
|
|
17 |
[scoreFocus] = assessFocusFQPath(im, [], dirUtilities, 0); |
|
|
18 |
|
|
|
19 |
%assign |
|
|
20 |
focusAll_Trn(f) = scoreFocus; |
|
|
21 |
|
|
|
22 |
end %for f |
|
|
23 |
|
|
|
24 |
|
|
|
25 |
%correlation initial |
|
|
26 |
correlationVanilla = computeCorrelation(focusAll_Trn', TrnLabels); |
|
|
27 |
%display |
|
|
28 |
%fprintf_pers(fidLogs, ['\tCorrelation initial: ' num2str(correlationVanilla) '\n']); |
|
|
29 |
|
|
|
30 |
|
|
|
31 |
%-------------------------------------- |
|
|
32 |
%minimize correlation between focus and labels |
|
|
33 |
%display |
|
|
34 |
%fprintf_pers(fidLogs, '\tMinimize correlation\n'); |
|
|
35 |
%init |
|
|
36 |
thFocus = 9; |
|
|
37 |
focusProc = -1 .* ones(numel(imagesCellTrain), 1); |
|
|
38 |
correlationProc = abs(correlationVanilla * 2); |
|
|
39 |
correlationProcPrev = correlationProc * 2; |
|
|
40 |
thFocusFinal = 1000; |
|
|
41 |
correlationProcMin = 1000; |
|
|
42 |
|
|
|
43 |
%loop on decreasing values of thFocus |
|
|
44 |
%while abs(correlationProc) < abs(correlationProcPrev) |
|
|
45 |
for ww = 1 : 30 |
|
|
46 |
%%%%%%%%%%%%%%%%% |
|
|
47 |
% for ww = 1 : 5 |
|
|
48 |
%%%%%%%%%%%%%%%%% |
|
|
49 |
|
|
|
50 |
%display |
|
|
51 |
%fprintf_pers(fidLogs, ['\t\tthFocus: ' num2str(thFocus) '\n']); |
|
|
52 |
|
|
|
53 |
%loop |
|
|
54 |
parfor f = 1 : numel(imagesCellTrain) |
|
|
55 |
%for f = 1 : numel(imagesCellTrain) |
|
|
56 |
|
|
|
57 |
im = imagesCellTrain{f}; |
|
|
58 |
|
|
|
59 |
%resize |
|
|
60 |
im = imresize(im, imageSize); |
|
|
61 |
|
|
|
62 |
%display |
|
|
63 |
%if mod(f, stepPrint) == 0 |
|
|
64 |
%fprintf_pers(fidLogs, ['\t\t\t' filenameTrn{f} '\n']); |
|
|
65 |
%end %if mod |
|
|
66 |
|
|
|
67 |
%process |
|
|
68 |
radius = 1; |
|
|
69 |
iterF = 1; |
|
|
70 |
im_temp = im; |
|
|
71 |
[scoreFocus] = assessFocusFQPath(im, [], dirUtilities, 0); |
|
|
72 |
while scoreFocus > thFocus && iterF < 10 |
|
|
73 |
im_temp = imsharpen(im, 'Radius', radius); |
|
|
74 |
[scoreFocus] = assessFocusFQPath(im_temp, [], dirUtilities, 0); |
|
|
75 |
radius = radius + 2; |
|
|
76 |
iterF = iterF + 1; |
|
|
77 |
end %for f |
|
|
78 |
im = im_temp; |
|
|
79 |
|
|
|
80 |
focusProc(f) = scoreFocus; |
|
|
81 |
|
|
|
82 |
end %for g |
|
|
83 |
|
|
|
84 |
%update correlation values |
|
|
85 |
correlationProcPrev = correlationProc; |
|
|
86 |
correlationProc = computeCorrelation(focusProc', TrnLabels); |
|
|
87 |
|
|
|
88 |
% |
|
|
89 |
if abs(correlationProc) < correlationProcMin |
|
|
90 |
correlationProcMin = abs(correlationProc); |
|
|
91 |
thFocusFinal = thFocus; |
|
|
92 |
end %if correlation |
|
|
93 |
|
|
|
94 |
%display |
|
|
95 |
%fprintf_pers(fidLogs, ['\t\t\tCorrelation: ' num2str(correlationProc) '\n']); |
|
|
96 |
|
|
|
97 |
%decrease thFocus |
|
|
98 |
thFocus = thFocus - 0.1; |
|
|
99 |
|
|
|
100 |
end %while correlationProc |
|
|
101 |
|
|
|
102 |
|
|
|
103 |
%display |
|
|
104 |
fprintf_pers(fidLogs, ['\t\tth_focus: ' num2str(thFocusFinal) '\n']); |
|
|
105 |
|
|
|
106 |
|
|
|
107 |
|