资源简介

标记连通成分,得到连通成分的区域个数,大小

资源截图

代码片段和文件信息

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

评论

共有 条评论