exponenta event banner

bwconncomp

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

Описание

пример

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

пример

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

Примеры

свернуть все

Создайте небольшой образец массива 3-D.

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 "а в слове" разные ".

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-подключенных

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

  • Одно из этих направлений: внутрь, наружу, влево, вправо, вверх и вниз

  • Комбинация двух направлений, например, вправо вниз или вверх

26-подключенных

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

  • Одно из этих направлений: внутрь, наружу, влево, вправо, вверх и вниз

  • Комбинация двух направлений, например, вправо вниз или вверх

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

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

Связность также можно определить более общим образом для любого измерения, указав 3 на 3 -... -по-3 матрицы 0s и 1с. 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
    bwlabelnN-DМатрица меток с двойной точностьюВысокоЛюбой
    bwconncompN-DCC структураНизкоЛюбой
  • Извлечение элементов из двоичного изображения с помощью regionprops с подключением по умолчанию, просто пройти BW непосредственно в regionprops с помощью команды regionprops(BW).

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

Алгоритмы

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

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

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

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

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

..

См. также

| | |

Представлен в R2009a