bwconncomp

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

Синтаксис

CC = bwconncomp(BW)
CC = bwconncomp(BW,conn)

Описание

пример

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 = 2x1 struct array with fields:
    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 | логический

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

Значение

Значение

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

4

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

8

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

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

6

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

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

18

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

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

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

26

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

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

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

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

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

Возможность соединения может также быть задана более общим способом к любой размерности путем определения 3-by-3-by-... Матрица-by-3 0 s и 1 s. 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-DStruct CCНизкоЛюбой
  • Чтобы извлечь функции из двухуровневого изображения с помощью regionprops с возможностью соединения по умолчанию, только передайте BW непосредственно в regionprops (т.е. regionprops(BW)).

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

Алгоритмы

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

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

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

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

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

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

| | |

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