connected component в бинарном изображении является набором пикселей, которые формируют связанную группу. Например, бинарное изображение ниже имеет три связанных компонента.
Вычислите соединенные компоненты при помощи bwconncomp
. В этом примере кода, BW
бинарная матрица, показанная в вышеупомянутом изображении. Задайте возможность соединения 4 так, чтобы два смежных пикселя были частью того же объекта, если они и включены и соединяются вдоль горизонтального или вертикального направления. PixelIdxList
поле идентифицирует список пикселей, принадлежащих каждому связанному компоненту.
BW = zeros(8,9); BW(2:4,2:3) = 1; BW(5:7,4:5) = 1; BW(2,7:9) = 1; BW(3,8:9) = 1; BW
BW = 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
cc = bwconncomp(BW,4)
cc = Connectivity: 8 ImageSize: [8 9] NumObjects: 3 PixelIdxList: {[6x1 double] [6x1 double] [5x1 double]}
Связанная маркировка компонента является процессом идентификации связанных компонентов в изображении и присвоении каждого уникальная метка. Получившаяся матрица называется матрицей метки.
Создайте матрицу метки при помощи labelmatrix
функция. Этот пример кода продолжает связанную структуру компонента, cc
, заданный в предыдущем разделе.
labeled = labelmatrix(cc)
labeled = 8×9 uint8 matrix 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 3 3 3 0 1 1 0 0 0 0 3 3 0 1 1 0 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0
Чтобы визуализировать соединенные компоненты, отобразите матрицу метки как псевдоцветное изображение при помощи label2rgb
функция. Метка, идентифицирующая каждый объект в матрице метки, сопоставляет с различным цветом в связанной палитре. Можно задать палитру, цвет фона, и как объекты в матрице метки сопоставляют с, раскрашивает палитру.
RGB_label = label2rgb(labeled,@copper,'c','shuffle'); imshow(RGB_label)
Можно использовать bwselect
функционируйте, чтобы выбрать отдельные объекты в бинарном изображении. Задайте пиксели во входном изображении программно или в интерактивном режиме с мышью. bwselect
возвращает бинарное изображение, которое включает только те объекты от входного изображения, которые содержат один из заданных пикселей.
Например, используйте эту команду, чтобы выбрать объекты в изображении, отображенном в текущей системе координат.
BW2 = bwselect;
Курсор превращается в крест нитей, когда это по изображению. Кликните по объектам, которые вы хотите выбрать; bwselect
отображает маленькую звезду по каждому пикселю, по которому вы кликаете. Когда вы закончите нажмите Return. bwselect
возвращает бинарное изображение, состоящее из объектов, которые вы выбрали и удаляете звезды.
regionprops
функция может возвратить измерения для нескольких свойств связанных компонентов. Другие функции измеряют одно свойство. Например, bwarea
функция возвращает область бинарного изображения.
Этот пример использует bwarea
чтобы определить область процента увеличиваются в circbw.tif
это следует из операции расширения. Область является мерой размера переднего плана изображения и примерно равна количеству on
пиксели в изображении. Однако bwarea
просто не рассчитывает количество пикселей установило на on
. Скорее bwarea
веса различные узоры заливки неравноценно при вычислении области. Это взвешивание компенсирует искажение, которое свойственно от представления непрерывного изображения с дискретными пикселями. Например, диагональная линия 50 пикселей более длинна, чем горизонтальная линия 50 пикселей. В результате взвешивания bwarea
использование, горизонтальная линия имеет область 50, но диагональная линия имеет область 62,5.
BW = imread('circbw.tif');
SE = ones(5);
BW2 = imdilate(BW,SE);
increase = (bwarea(BW2) - bwarea(BW))/bwarea(BW)
increase = 0.3456
bwconncomp
| bwselect
| label2rgb
| labelmatrix
| regionprops