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