Как раскрасить объекты на изображении с помощью MATLAB? - PullRequest
1 голос
/ 26 марта 2020

У меня есть изображение: image, для которого я выполнил сегментацию для получения двоичного изображения. Я хотел бы пометить каждый из объектов на изображении разными цветами. Пока у меня есть следующий код:

img = imread('lab5a.tif');
BW = imbinarize(img,graythresh(img));
figure; imshowpair(img,BW,'montage')
title ('Opening Operation on Image');
se = strel ('disk', 3);
rem = imclose(BW,se);
figure; imshow (rem, []);
title ('Removed Undesired Features');
CC = bwconncomp(rem);
L = labelmatrix(CC);
RGB = label2rgb(L, spring, 'c', 'shuffle');
figure; imshow(RGB, []);

На выходе получается следующее изображение: Output, что не то, что я хочу. Он окрашивает фон, а объекты белые. Я просто хотел бы, чтобы объекты были разных цветов.

Любая форма помощи будет принята с благодарностью!

1 Ответ

1 голос
/ 26 марта 2020

В вашем примере фон и передний план изображения перевернуты по сравнению с тем, что, по вашему мнению, должно быть. По умолчанию для команд matlab предполагается, что пиксели с более высоким значением (белый) являются передним планом или интересующими элементами, а пиксели с более низким значением (черный) - это фон. Поэтому, когда вы запускаете свой пример кода, объект CC содержит только 1 объект («фон», который синего цвета на вашем изображении):

CC = 

  struct with fields:

    Connectivity: 8
       ImageSize: [256 256]
      NumObjects: 1
    PixelIdxList: {[43341×1 double]}

Любой простой способ исправить это - просто инвертировать ваш очистил изображение командой imcomplement. Добавьте эту строку в ваш код:

% invert the image so that the background is black
rem = imcomplement(rem);

Теперь структура CC содержит 62 идентифицированных объекта:

CC = 

  struct with fields:

    Connectivity: 8
       ImageSize: [256 256]
      NumObjects: 62
    PixelIdxList: {1×62 cell}

И вы получите это изображение:

Colored Items

Если вы хотите изменить цвета, используемые для элементов, посмотрите на свойство colormap команды label2rgb.

...