Связанный компонент в двухуровневом изображении является набором пикселей, которые формируют связанную группу. Например, двухуровневое изображение ниже имеет три связанных компонента.
Связанная маркировка компонента является процессом идентификации связанных компонентов в изображении и присвоении каждого уникальная метка, как это:
Матрица выше называется матрицей метки.
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 | CC struct () | Низко | Любой |
Можно использовать 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
В этом примере Число Эйлера отрицательно, указывая, что количество отверстий больше количества объектов.