Маркируйте и измерьте объекты в двухуровневом изображении

Понимание маркировки связанной компонента

Связанный компонент в двухуровневом изображении является набором пикселей, которые формируют связанную группу. Например, двухуровневое изображение ниже имеет три связанных компонента.

Связанная маркировка компонента является процессом идентификации связанных компонентов в изображении и присвоении каждого уникальная метка, как это:

Матрица выше называется матрицей метки.

bwconncomp вычисляет соединенные компоненты, как показано в примере:

cc = bwconncomp(BW)
cc = 

    Connectivity: 8
       ImageSize: [8 9]
      NumObjects: 3
    PixelIdxList: {[6x1 double]  [6x1 double]  [5x1 double]}

PixelIdxList идентифицирует список пикселей, принадлежащих каждому связанному компоненту.

Для визуализации связанных компонентов полезно создать матрицу метки. Используйте функцию labelmatrix. Чтобы осмотреть результаты, отобразите матрицу метки как псевдоцветное изображение с помощью label2rgb.

Создайте матрицу метки:

labeled = labelmatrix(cc);

Создайте псевдоцветное изображение, где метка, идентифицирующая каждый объект в матрице метки, сопоставляет с различным цветом в связанной матрице colormap. Используйте label2rgb, чтобы выбрать палитру, цвет фона, и как объекты в матрице метки сопоставляют с, раскрашивает палитру:

RGB_label = label2rgb(labeled, @copper, 'c', 'shuffle');
imshow(RGB_label,'InitialMagnification','fit')

Комментарии

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

ФункцияВведите размерность'OutputForm' Использование памятиВозможность соединения
bwlabel2DМатрица метки с двойной точностьюВысоко4 или 8
bwlabelnN-DМатрица метки с двойной точностьюВысокоЛюбой
bwconncompN-DStruct CCНизкоЛюбой

Выбор объектов в двухуровневом изображении

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

Можно задать пиксели или нев интерактивном режиме или с мышью. Например, предположите, что вы хотите выбрать объекты в изображении, отображенном в текущей системе координат. Вы вводите

BW2 = bwselect;

Курсор изменяется на крест нитей, когда это по изображению. Кликните по объектам, которые вы хотите выбрать; bwselect отображает маленькую звезду по каждому пикселю, по которому вы кликаете. Когда вы будете сделаны, нажмите Return. bwselect возвращает двухуровневое изображение, состоящее из объектов, которые вы выбрали и удаляете звезды.

Смотрите страницу с описанием для bwselect для получения дополнительной информации.

Нахождение области переднего плана двухуровневого изображения

Функция bwarea возвращает область двухуровневого изображения. Областью является мера размера переднего плана изображения. Примерно говоря, областью является количество пикселей on в изображении.

bwarea просто не рассчитывает, количество пикселей установило на on, как бы то ни было. Скорее веса bwarea различные узоры заливки неравноценно при вычислении области. Это взвешивание компенсирует искажение, которое свойственно от представления непрерывного изображения с дискретными пикселями. Например, диагональная строка 50 пикселей более длинна, чем горизонтальная строка 50 пикселей. В результате взвешивания использование bwarea горизонтальная строка имеет область 50, но диагональная строка имеет область 62,5.

Этот пример использует bwarea, чтобы определить увеличение области процента circbw.tif, который следует из операции расширения.

BW = imread('circbw.tif'); 
SE = ones(5);
BW2 = imdilate(BW,SE);
increase = (bwarea(BW2) - bwarea(BW))/bwarea(BW)
increase =

    0.3456

Смотрите страницу с описанием для bwarea для получения дополнительной информации о шаблоне взвешивания.

Нахождение числа Эйлера двухуровневого изображения

Функция bweuler возвращает Число Эйлера для двухуровневого изображения. Число Эйлера является мерой топологии изображения. Это задано как общее количество объектов в изображении минус количество дыр в тех объектах. Можно использовать или 4-или связанные с 8 окружения.

Этот пример вычисляет Число Эйлера для изображения схемы, с помощью связанных с 8 окружений.

BW1 = imread('circbw.tif'); 
eul = bweuler(BW1,8)

eul =

   -85

В этом примере Число Эйлера отрицательно, указывая, что количество дыр больше, чем количество объектов.