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's в отличающемся слове.

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 для 2D изображений и 26 для 3-D изображений.

Значение

Значение

Двумерные возможности соединения

4

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

8

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

3D возможности соединения

6

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

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

18

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

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

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

26

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

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

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

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

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

Возможность соединения может также быть задана более общим способом к любой размерности путем определения 3-by-3-by-... Матрица-by-3 0s и 1s. 1- ценные элементы задают местоположения окружения относительно центрального элемента conn. Обратите внимание на то, что conn должно быть симметричным о его центральном элементе. Смотрите Задающие Пользовательские Возможности соединения для получения дополнительной информации.

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

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

свернуть все

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

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

Советы

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

    ФункцияВведите размерность'OutputForm' Использование памятиВозможность соединения
    bwlabel2DМатрица метки с с двойной точностьюВысоко4 или 8
    bwlabelnN-DМатрица метки с двойной точностьюВысокоЛюбой
    bwconncompN-DCC struct ()НизкоЛюбой
  • Извлекать функции из использования бинарного изображения regionprops с возможностью соединения по умолчанию только передайте BW непосредственно в regionprops использование команды regionprops(BW).

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

Алгоритмы

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

  1. Ищите следующий непомеченный пиксель, p.

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

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

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

Смотрите также

| | |

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