資源簡介
標記連通成分,得到連通成分的區域個數,大小
代碼片段和文件信息
function?[Lnumsz]?=?label(In)
%?Check?input?arguments
error(nargchk(12nargin));
if?nargin==1?n=8;?end
assert(ndims(I)==2‘The?input?I?must?be?a?2-D?array‘)
%?-----
sizI?=?size(I);
id?=?reshape(1:prod(sizI)sizI);
sz?=?ones(sizI);
%?Indexes?of?the?adjacent?pixels
vec?=?@(x)?x(:);
if?n==4?%?4-connected?neighborhood
????idx1?=?[vec(id(:1:end-1));?vec(id(1:end-1:))];
????idx2?=?[vec(id(:2:end));?vec(id(2:end:))];
elseif?n==8?%?8-connected?neighborhood
????idx1?=?[vec(id(:1:end-1));?vec(id(1:end-1:))];
????idx2?=?[vec(id(:2:end));?vec(id(2:end:))];
????idx1?=?[idx1;?vec(id(1:end-11:end-1));?vec(id(2:end1:end-1))];
????idx2?=?[idx2;?vec(id(2:end2:end));?vec(id(1:end-12:end))];
else
????error(‘The?second?input?argument?must?be?either?4?or?8.‘)
end
%?Create?the?groups?and?merge?them?(Union/Find?Algorithm)
for?k?=?1:length(idx1)
????root1?=?idx1(k);
????root2?=?idx2(k);
????
????whil
評論
共有 條評論