2016-07-14 7 views
1

Мне нужно реализовать функцию сегментации изображения в MATLAB на основе принципов алгоритма связанных компонентов, но с несколькими изменениями. Это предназначено для очень простых 2D-изображений с фоновым цветом и некоторыми объектами разных цветов.Алгоритм сегментации изображений в MATLAB

Идея состоит в том, что, принимая изображение в виде матрицы, я предоставляю инструмент для выбора цвета фона (он будет меняться для каждого изображения). Затем, когда выбрано значение цвета фона изображения, я должен сегментировать все объекты на изображении, а результат должен быть помеченной матрицей того же размера изображения, с 0 для фона , и другое число для каждого объекта.

Это наглядный пример того, что я имею в виду:

enter image description here

Я понимаю, идея о том, как это сделать, но я не знаю, как реализовать это на MATLAB. Для каждого пикселя (позиция матрицы) я должен пометить его как посещенный, а затем, если значение соответствует одному из фона, назначьте 0, если нет, назначьте другое значение. Объекты могут быть образованы разными цветами, поэтому в конце мне нужно сегментировать группы смежных пикселей независимо от их цвета. Кроме того, я должен использовать 8-соединение, чтобы подсчитать зеленый объект примерного изображения как только один объект, а не 4 разных. А также объекты должны учитываться сверху донизу, а слева направо.

Есть ли простой способ сделать это в MATLAB? Я знаю функцию bwlabel, но она работает только для бинарных изображений, поэтому я хотел бы адаптировать ее к моему делу.

+0

Вы видели учебники Matlab по сегментации изображений, http://www.mathworks.com/discovery/image-segmentation.html, в частности, я думаю, что метод Otsu поможет вам более конкретно взглянуть на функцию 'bwconncomp' –

ответ

1

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

bw=img!=bg_color; 

После того как вы двоичную маску можно назвать bwlavel с аргументом 8-подключения, как вы предложил себя.

Примечание: вы можете преобразовать свое цветное изображение из представления RGB в индексированное изображение, используя rgb2ind перед обработкой.

+0

Можно ли разместить всю реализацию MATLAB? Спасибо! – xwang