Из документации :
CC = bwconncomp (BW) возвращает подключенные компоненты CC, найденные в BW.Двоичное изображение BW может иметь любое измерение.CC - это структура с четырьмя полями ...
Последнее поле в CC: PixelIdxList
, а именно:
[a] ячейка размером 1 на NumObjectsмассив, где k-й элемент в массиве ячеек - это вектор, содержащий линейные индексы пикселей в k-м объекте.
Вы можете найти область каждой метки, посмотрев на длину соответствующей записив массиве ячеек.Примерно так:
areas_in_pixels = cellfun(@length, CC.PixelIdxList);
PixelIdxList - это массив ячеек, каждый элемент которого содержит линейные индексы пикселей, присутствующих в этом подключенном компоненте.Строка кода выше определяет длину каждой ячейки в массиве ячеек, то есть количество пикселей в каждом подключенном компоненте.
Я использовал cellfun
, чтобы сделать код коротким и эффективным.Другой способ написания одной и той же вещи будет выглядеть примерно так:
areas_in_pixels = nan(1, length(CC.PixelIdxList);
for i = 1:length(CC.PixelIdxList)
areas_in_pixels(i) = length(CC.PixelIdxList{i});
end
Для каждого подключенного компонента вы можете найти размер этого компонента в пикселях, обратившись к элементу Area_in_pixels:
areas_in_pixels(34) %# area of connected component number 34