bwlabel

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

Синтаксис

L = bwlabel(BW)
L = bwlabel(BW,conn)
[L,n] = bwlabel(___)

Описание

пример

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

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

BW = gpuArray(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)

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

[r,c] = find(L == 2)

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

свернуть все

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

Чтобы маркировать соединенные компоненты с помощью графического процессора, задайте BW как gpuArray, который содержит 2D числовую или логическую матрицу.

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

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

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

Значение

Значение

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

4

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

8

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

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

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

свернуть все

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

Если связанные компоненты маркированы с помощью графического процессора, то L возвращен как gpuArray, содержащий матрицу неотрицательных целых чисел.

Типы данных: 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 может использовать в своих интересах аппаратную оптимизацию для типов данных logical, uint8 и single, чтобы запуститься быстрее. Аппаратная оптимизация требует, чтобы marker и mask были 2D изображениями и conn, чтобы быть или 4 или 8.

Алгоритмы

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

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

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

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

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

Ссылки

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

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

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

| | | | |

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