bwconncomp

Найдите подключенные компоненты в бинарном изображении

Описание

пример

CC = bwconncomp(BW) возвращает подключенные компоненты CC найдено в бинарном изображении BW. bwconncomp использует связность по умолчанию 8 для двух размерностей, 26 для трёх размерностей и conndef(ndims(BW),'maximal') для более высоких размерностей.

пример

CC = bwconncomp(BW,conn) возвращает подключенные компоненты, где conn задает необходимую связь для связанных компонентов.

Примеры

свернуть все

Создайте небольшой пример трехмерного массива.

BW = cat(3, [1 1 0; 0 0 0; 1 0 0],...
            [0 1 0; 0 0 0; 0 1 0],...
            [0 1 1; 0 0 0; 0 0 1]);

Найдите подключенные компоненты в массиве.

CC = bwconncomp(BW)
CC = struct with fields:
    Connectivity: 26
       ImageSize: [3 3 3]
      NumObjects: 2
    PixelIdxList: {[5x1 double]  [3x1 double]}

Вычислите центроиды объектов массива.

S = regionprops(CC,'Centroid')
S=2×1 struct array with fields:
    Centroid

Прочтите изображение в рабочую область и отобразите его.

BW = imread('text.png');
imshow(BW)

Figure contains an axes. The axes contains an object of type image.

Найдите количество подключенных компонентов в изображении.

CC = bwconncomp(BW)
CC = struct with fields:
    Connectivity: 8
       ImageSize: [256 256]
      NumObjects: 88
    PixelIdxList: {1x88 cell}

Определите, какой из них является самым большим компонентом в изображении, и удалите его (установите все пиксели равными 0).

numPixels = cellfun(@numel,CC.PixelIdxList);
[biggest,idx] = max(numPixels);
BW(CC.PixelIdxList{idx}) = 0;

Отобразите изображение, отметив, что самым большим компонентом являются два последовательных f в слове different.

figure
imshow(BW)

Figure contains an axes. The axes contains an object of type image.

Входные параметры

свернуть все

Входное бинарное изображение, заданное как числовой или логический массив любой размерности. Для числового входа любые ненулевые пиксели рассматриваются как on.

Пример: BW = imread('text.png');

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Пиксельная связность, заданная как одно из значений в этой таблице. Связность по умолчанию 8 для 2-D изображений и 26 для 3-D изображений.

Значение

Значение

Двумерные связи

4-соединенный

Пиксели соединяются, если их ребра касаются. Два смежных пикселя являются частью одного и того же объекта, если они оба включены и соединены в горизонтальном или вертикальном направлении.

8-соединенный

Пиксели соединяются, если их ребра или углы касаются. Два смежных пикселя являются частью одного и того же объекта, если они оба включены и соединены в горизонтальном, вертикальном или диагональном направлении.

Трехмерные связи

6-соединенный

Пиксели соединяются, если их лица касаются. Два смежных пикселя являются частью одного и того же объекта, если они оба включены и соединены в:

  • Одно из следующих направлений: в, вне, слева, справа, вверх и вниз

18-соединенный

Пиксели соединяются, если их грани или ребра касаются. Два смежных пикселя являются частью одного и того же объекта, если они оба включены и соединены в

  • Одно из следующих направлений: в, вне, слева, справа, вверх и вниз

  • Комбинация двух направлений, таких как right-down или in-up

26-соединенный

Пиксели соединяются, если их грани, ребра или углы касаются. Два смежных пикселя являются частью одного и того же объекта, если они оба включены и соединены в

  • Одно из следующих направлений: в, вне, слева, справа, вверх и вниз

  • Комбинация двух направлений, таких как right-down или in-up

  • Комбинация трех направлений, таких как справа вверх или слева вниз

Для более высоких размерностей, bwconncomp использует значение по умолчанию conndef(ndims (BW), 'maximal').

Связь также может быть определена более общим образом для любой размерности путем определения 3х3-бай-... -by-3 матрица 0s и 1с. The 1-значенные элементы определяют местоположения окрестностей относительно центрального элемента conn. Обратите внимание, что conn должно быть симметричным относительно его центрального элемента. Дополнительные сведения см. в разделе «Определение пользовательских соединений».

Типы данных: double | logical

Выходные аргументы

свернуть все

Подключенные компоненты, возвращенные как структура с четырьмя полями.

ОбластьОписание
ConnectivityСвязь связанных компонентов (объектов)
ImageSizeРазмер BW
NumObjectsКоличество связанных компонентов (объектов) в BW
PixelIdxList1-by- NumObjects массив ячеек, где k-й элемент в массиве ячеек является вектором, содержащим линейные индексы пикселей в k-ом объекте.

Совет

  • Функции bwlabel, bwlabeln, и bwconncomp все вычисляют подключенные компоненты для бинарных изображений. bwconncomp заменяет использование bwlabel и bwlabeln. Он использует значительно меньше памяти и иногда быстрее, чем другие функции.

    ФункцияВходная размерностьВыходИспользование памятиВозможность соединения
    bwlabel2-DМаркируйте матрицу с двойной точностьюВысоко4 или 8
    bwlabelnН-ДМатрица меток двойной точностиВысокоЛюбой
    bwconncompН-ДCC structНизкоЛюбой
  • Чтобы извлечь функции из бинарного изображения, используя regionprops с связностью по умолчанию, просто пройдите BW непосредственно в regionprops использование команды regionprops(BW).

  • Чтобы вычислить матрицу меток, имеющую более эффективный для памяти тип данных (для образца uint8, от double), использовать labelmatrix функцию на выходе из bwconncomp. Для получения дополнительной информации см. документацию по каждой функции.

Алгоритмы

Основные шаги в поиске связанных компонентов:

  1. Поиск следующего немаркированного пикселя, p.

  2. Используйте алгоритм заливки, чтобы пометить все пиксели в связанном компоненте, содержащем p.

  3. Повторяйте шаги 1 и 2 до тех пор, пока все пиксели не будут помечены.

Расширенные возможности

..

См. также

| | |

Введенный в R2009a