File Exchange

image thumbnail


version (1.64 KB) by Herbert
Apply a function to connected components in one or more images


Updated 19 Jun 2014

View License

ccfun Apply a function to connected components in one or more images

S = ccfun(fun, cc, I) applies fun to each connected component in cc and
I. I is a MxNxC matrix, typically C=1 or C=3 for RGB, and cc is a cell
where each element defines the indices of one connected component. That

S(i) = fun(I(cc_x(i), cc_y(i), :))
where [cc_x(i), cc_y(i)] = ind2sub(size(I), cc{i});

S = ccfun(fun, cc, I1, ..., In) Similar, but now

S(i) = fun(I1(cc_x(i), cc_y(i), :), ..., In(cc_x(i), cc_y(i), :))

For efficiency this function uses no for-loops.

The application of the function is done using cellfun and cell2mat, fun
must return a uniform output.

I = rand(100, 100); % Some image
cc = {randi(100*100, 20, 1)}; % A conneted component with 20 pixels,
% probably not really connected ;)
cellfun(@(x) sum(x), cc, I)

ans =



ans =


Author: Herbert Kruitbosch
Copyright: Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)

If you want to change and share something in the script, e-mail me an
updated version and I may consider it.

Cite As

Herbert (2020). ccfun.m (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (0)

MATLAB Release Compatibility
Created with R2013b
Compatible with any release
Platform Compatibility
Windows macOS Linux