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
    Centroid

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

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

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

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)

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

свернуть все

Введите двухуровневое изображение, заданное как числовой или логический массив любой размерности. Для числового входа любые ненулевые пиксели считаются 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-th.

Советы

  • Функции 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