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