Проблемы с автоматически установленным эталонным цветом - PullRequest
0 голосов
/ 20 февраля 2019

Я пытался сегментировать синие ячейки на изображении, enter image description here

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

1 Ответ

0 голосов
/ 22 февраля 2019

Я хотел бы представить два основных подхода к обработке изображений для этой проблемы.Возможно, один из них вам пригодится.

Загрузить входное изображение:

cells = imread('cells.png');

Подход № 1

Выберите синий канал входаimage:

cellsBlue = cells(:, :, 3);
imshow(cellsBlue)

Blue channel of input image

Выполнить порог.Очень простая версия может быть:

cellsSegm = cellsBlue < 100;
imshow(cellsSegm)

Thresholding in blue channel

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

Подход № 2

Преобразование входного изображения в HSV цветовое пространство:

cellsHSV = rgb2hsv(cells);
imshow(cellsHSV)

HSV color space

Выберите канал «насыщенности» изображения HSV:

cellsSat = cellsHSV(:, :, 2);
imshow(cellsSat)

Saturation channel of HSV image

Выполните настройку порога.Очень простой вариант может быть (внимание, значения HSV - это двойные значения от 0 до 1):

cellsSegm = cellsSat > 0.5;
imshow(cellsSegm)

Thresholding in saturation channel

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

...