Diff of /util/connComp2.m [000000] .. [1422d3]

Switch to unified view

a b/util/connComp2.m
1
function [new] = connComp2(maskR2, nCompTen, fill)
2
%nCompTen = numero di componenti connessi da mantenere (partendo dai pił grandi)
3
4
[L,num] = bwlabel(maskR2, 8);
5
6
if (nCompTen >= num)
7
    nCompTen = num;
8
end
9
10
count = zeros(num,1);
11
for c=1:num
12
    count(c) = numel(find(L==c));
13
end
14
15
maxT = max(count);
16
17
for t=1:num-nCompTen   %for
18
    %fprintf('%d\t',t);
19
    mint = min(count);
20
    
21
    if (mint == maxT)
22
        break;
23
    end
24
    
25
    clear i j
26
    
27
    Ic = find(count == mint);
28
    Ic = Ic(1);
29
    
30
    I = find(L==Ic);
31
    maskR2(I) = 0;
32
    
33
    count(Ic) = maxT+1000;
34
      
35
end %end for
36
37
38
39
[L,num] = bwlabel(~maskR2, 8);
40
count = zeros(num,1);
41
for (c=1:num)
42
    count(c) = numel(find(L==c));
43
end
44
45
maxT = max(count);
46
for (t=1:num-nCompTen-1)   %for
47
    mint = min(count);
48
    
49
    if (mint == maxT)
50
        break;
51
    end
52
    
53
    clear i j
54
    
55
    Ic = find(count == mint);
56
    Ic = Ic(1);
57
    
58
    I = find(L==Ic);
59
    maskR2(I) = 0;
60
    
61
    count(Ic) = maxT+1000;
62
    
63
     
64
end %end for
65
66
67
if (fill)
68
    maskR2 = imfill(maskR2,'holes');
69
end
70
71
72
73
new = maskR2;
74
75
76