--- a +++ b/util/connComp2.m @@ -0,0 +1,76 @@ +function [new] = connComp2(maskR2, nCompTen, fill) +%nCompTen = numero di componenti connessi da mantenere (partendo dai pił grandi) + +[L,num] = bwlabel(maskR2, 8); + +if (nCompTen >= num) + nCompTen = num; +end + +count = zeros(num,1); +for c=1:num + count(c) = numel(find(L==c)); +end + +maxT = max(count); + +for t=1:num-nCompTen %for + %fprintf('%d\t',t); + mint = min(count); + + if (mint == maxT) + break; + end + + clear i j + + Ic = find(count == mint); + Ic = Ic(1); + + I = find(L==Ic); + maskR2(I) = 0; + + count(Ic) = maxT+1000; + +end %end for + + + +[L,num] = bwlabel(~maskR2, 8); +count = zeros(num,1); +for (c=1:num) + count(c) = numel(find(L==c)); +end + +maxT = max(count); +for (t=1:num-nCompTen-1) %for + mint = min(count); + + if (mint == maxT) + break; + end + + clear i j + + Ic = find(count == mint); + Ic = Ic(1); + + I = find(L==Ic); + maskR2(I) = 0; + + count(Ic) = maxT+1000; + + +end %end for + + +if (fill) + maskR2 = imfill(maskR2,'holes'); +end + + + +new = maskR2; + + +