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

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

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

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

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

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-DCC struct ()НизкоЛюбой

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

Можно использовать 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

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

Для просмотра документации необходимо авторизоваться на сайте