bwlabel

Пометьте соединенные компоненты в 2D двухуровневом изображении

Описание

пример

L = bwlabel(BW) возвращает матрицу метки L это содержит метки для 8 подключенных объектов, найденных в BW.

Опционально можно пометить соединенные компоненты в 2D двухуровневом изображении с помощью графического процессора (требует Parallel Computing Toolbox™).

L = bwlabel(BW,conn) возвращает матрицу метки, где conn задает возможность соединения.

[L,n] = bwlabel(___) также возвращает n, количество подключенных объектов найдено в BW.

Примеры

свернуть все

Создайте маленькое двухуровневое изображение.

BW = logical ([1     1     1     0     0     0     0     0
               1     1     1     0     1     1     0     0
               1     1     1     0     1     1     0     0
               1     1     1     0     0     0     1     0
               1     1     1     0     0     0     1     0
               1     1     1     0     0     0     1     0
               1     1     1     0     0     1     1     0
               1     1     1     0     0     0     0     0]);

Создайте матрицу метки использование 4 подключенных объектов.

L = bwlabel(BW,4)
L = 8×8

     1     1     1     0     0     0     0     0
     1     1     1     0     2     2     0     0
     1     1     1     0     2     2     0     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     0     3     0
     1     1     1     0     0     3     3     0
     1     1     1     0     0     0     0     0

Используйте find команда, чтобы получить координаты строки и столбца объекта пометила "2".

[r, c] = find(L==2);
rc = [r c]
rc = 4×2

     2     5
     3     5
     2     6
     3     6

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

свернуть все

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

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

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

Пиксельная возможность соединения в виде одного из этих значений.

Значение

Значение

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

4

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

8

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

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

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

свернуть все

Матрица метки непрерывных областей, возвращенных как матрица неотрицательных целых чисел с тем же размером как BW. Пиксели пометили 0 фон. Пиксели пометили 1 составьте один объект; пиксели пометили 2 составьте второй объект; и так далее.

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

Количество подключенных объектов в BW, возвращенный как неотрицательное целое число.

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

Советы

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

     Введите размерность'OutputForm' Использование памятиВозможность соединения
    bwlabel2DМатрица метки с двойной точностьюВысоко4 или 8
    bwlabelnN-DМатрица метки с двойной точностьюВысокоЛюбой
    bwconncompN-DStruct CCНизкоЛюбой
  • Можно использовать MATLAB® find функция в сочетании с bwlabel возвратить векторы индексов для пикселей, которые составляют конкретный объект. Например, чтобы возвратить координаты для пикселей в объекте 2, введите following:.

    [r,c] = find(bwlabel(BW)==2)

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

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

  • Извлекать функции из двухуровневого изображения с помощью regionprops с возможностью соединения по умолчанию только передайте BW непосредственно в regionprops при помощи команды regionprops(BW).

  • bwlabel функция может использовать в своих интересах аппаратную оптимизацию для типов данных logicaluint8, и single запускаться быстрее. Аппаратная оптимизация требует marker и mask быть 2D изображениями и conn быть или 4 или 8.

Алгоритмы

bwlabel использует общую процедуру, обрисованную в общих чертах в ссылке [1], стр 40-48:

  1. Длина запуска кодирует входное изображение.

  2. Отсканируйте запуски, присвоив предварительные метки и записав эквивалентности метки в локальной эквивалентной таблице.

  3. Разрешите классы эквивалентности.

  4. Повторно пометьте запуски на основе разрешенных классов эквивалентности.

Ссылки

[1] Haralick, Роберт М., и Линда Г. Шапиро, Компьютер и Видение Робота, Объем I, Аддисон-Уэсли, 1992, стр 28-48.

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

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

| | | | |

Представлено до R2006a