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

Обнаружьте связанные компоненты

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

Вычислите соединенные компоненты при помощи bwconncomp. В этом примере кода, BW бинарная матрица, показанная в вышеупомянутом изображении. Задайте возможность соединения 4 так, чтобы два смежных пикселя были частью того же объекта, если они и включены и соединяются вдоль горизонтального или вертикального направления. PixelIdxList поле идентифицирует список пикселей, принадлежащих каждому связанному компоненту.

BW = zeros(8,9);
BW(2:4,2:3) = 1;
BW(5:7,4:5) = 1;
BW(2,7:9) = 1;
BW(3,8:9) = 1;
BW
BW =

     0     0     0     0     0     0     0     0     0
     0     1     1     0     0     0     1     1     1
     0     1     1     0     0     0     0     1     1
     0     1     1     0     0     0     0     0     0
     0     0     0     1     1     0     0     0     0
     0     0     0     1     1     0     0     0     0
     0     0     0     1     1     0     0     0     0
     0     0     0     0     0     0     0     0     0
cc = bwconncomp(BW,4)
cc = 

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

Маркируйте Connected Components

Связанная маркировка компонента является процессом идентификации связанных компонентов в изображении и присвоении каждого уникальная метка. Получившаяся матрица называется матрицей метки.

Создайте матрицу метки при помощи labelmatrix функция. Этот пример кода продолжает связанную структуру компонента, cc, заданный в предыдущем разделе.

labeled = labelmatrix(cc)
labeled =

  8×9 uint8 matrix

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

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

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

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

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

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

BW2 = bwselect;

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

Измерьте свойства связанных компонентов

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

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

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

    0.3456

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

| | | |

Связанные примеры

Больше о