Связанный компонент в двухуровневом изображении является набором пикселей, которые формируют связанную группу. Например, двухуровневое изображение ниже имеет три связанных компонента.
Связанная маркировка компонента является процессом идентификации связанных компонентов в изображении и присвоении каждого уникальная метка, как это:
Матрица выше называется матрицей метки.
bwconncomp
вычисляет соединенные компоненты, как показано в примере:
cc = bwconncomp(BW) cc = Connectivity: 8 ImageSize: [8 9] NumObjects: 3 PixelIdxList: {[6x1 double] [6x1 double] [5x1 double]}
PixelIdxList
идентифицирует список пикселей, принадлежащих каждому связанному компоненту.
Для визуализации связанных компонентов полезно создать матрицу метки. Используйте функцию labelmatrix
. Чтобы осмотреть результаты, отобразите матрицу метки как псевдоцветное изображение с помощью label2rgb
.
Создайте матрицу метки:
labeled = labelmatrix(cc);
Создайте псевдоцветное изображение, где метка, идентифицирующая каждый объект в матрице метки, сопоставляет с различным цветом в связанной матрице colormap
. Используйте label2rgb
, чтобы выбрать палитру, цвет фона, и как объекты в матрице метки сопоставляют с, раскрашивает палитру:
RGB_label = label2rgb(labeled, @copper, 'c', 'shuffle'); imshow(RGB_label,'InitialMagnification','fit')
Функции bwlabel
, bwlabeln
и bwconncomp
все вычисляют соединенные компоненты для двухуровневых изображений. bwconncomp
заменяет использование bwlabel
и bwlabeln
. Это использует значительно меньше памяти и иногда быстрее, чем более старые функции.
Функция | Введите размерность | 'OutputForm' | Использование памяти | Возможность соединения |
---|---|---|---|---|
bwlabel | 2D | Матрица метки с двойной точностью | Высоко | 4 или 8 |
bwlabeln | N-D | Матрица метки с двойной точностью | Высоко | Любой |
bwconncomp | N-D | Struct CC | Низко | Любой |
Можно использовать функцию bwselect
, чтобы выбрать отдельные объекты в двухуровневом изображении. Вы задаете пиксели во входном изображении, и bwselect
возвращает двухуровневое изображение, которое включает только те объекты от входного изображения, которые содержат один из заданных пикселей.
Можно задать пиксели или нев интерактивном режиме или с мышью. Например, предположите, что вы хотите выбрать объекты в изображении, отображенном в текущей системе координат. Вы вводите
BW2 = bwselect;
Курсор изменяется на крест нитей, когда это по изображению. Кликните по объектам, которые вы хотите выбрать; bwselect
отображает маленькую звезду по каждому пикселю, по которому вы кликаете. Когда вы будете сделаны, нажмите Return. bwselect
возвращает двухуровневое изображение, состоящее из объектов, которые вы выбрали и удаляете звезды.
Смотрите страницу с описанием для bwselect
для получения дополнительной информации.
Функция bwarea
возвращает область двухуровневого изображения. Областью является мера размера переднего плана изображения. Примерно говоря, областью является количество пикселей on
в изображении.
bwarea
просто не рассчитывает, количество пикселей установило на on
, как бы то ни было. Скорее веса bwarea
различные узоры заливки неравноценно при вычислении области. Это взвешивание компенсирует искажение, которое свойственно от представления непрерывного изображения с дискретными пикселями. Например, диагональная строка 50 пикселей более длинна, чем горизонтальная строка 50 пикселей. В результате взвешивания использование bwarea
горизонтальная строка имеет область 50, но диагональная строка имеет область 62,5.
Этот пример использует bwarea
, чтобы определить увеличение области процента circbw.tif
, который следует из операции расширения.
BW = imread('circbw.tif'); SE = ones(5); BW2 = imdilate(BW,SE); increase = (bwarea(BW2) - bwarea(BW))/bwarea(BW) increase = 0.3456
Смотрите страницу с описанием для bwarea
для получения дополнительной информации о шаблоне взвешивания.
Функция bweuler
возвращает Число Эйлера для двухуровневого изображения. Число Эйлера является мерой топологии изображения. Это задано как общее количество объектов в изображении минус количество дыр в тех объектах. Можно использовать или 4-или связанные с 8 окружения.
Этот пример вычисляет Число Эйлера для изображения схемы, с помощью связанных с 8 окружений.
BW1 = imread('circbw.tif'); eul = bweuler(BW1,8) eul = -85
В этом примере Число Эйлера отрицательно, указывая, что количество дыр больше, чем количество объектов.