connected component в бинарном изображении является набором пикселей, которые образуют связную группу. Для примера, бинарное изображение ниже имеет три связанных компонента.
Вычислите связанные компоненты при помощи bwconncomp
. В этом примере кода, BW
- двоичная матрица, показанная на приведенном выше изображении. Задайте связность 4 так, чтобы два смежных пикселя были частью одного и того же объекта, если они оба включены и соединены в горизонтальном или вертикальном направлении. The 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