Мне нужно реализовать функцию сегментации изображения в MATLAB на основе принципов алгоритма связанных компонентов, но с несколькими изменениями. Это предназначено для очень простых 2D-изображений с фоновым цветом и некоторыми объектами разных цветов.Алгоритм сегментации изображений в MATLAB
Идея состоит в том, что, принимая изображение в виде матрицы, я предоставляю инструмент для выбора цвета фона (он будет меняться для каждого изображения). Затем, когда выбрано значение цвета фона изображения, я должен сегментировать все объекты на изображении, а результат должен быть помеченной матрицей того же размера изображения, с 0 для фона , и другое число для каждого объекта.
Это наглядный пример того, что я имею в виду:
Я понимаю, идея о том, как это сделать, но я не знаю, как реализовать это на MATLAB. Для каждого пикселя (позиция матрицы) я должен пометить его как посещенный, а затем, если значение соответствует одному из фона, назначьте 0, если нет, назначьте другое значение. Объекты могут быть образованы разными цветами, поэтому в конце мне нужно сегментировать группы смежных пикселей независимо от их цвета. Кроме того, я должен использовать 8-соединение, чтобы подсчитать зеленый объект примерного изображения как только один объект, а не 4 разных. А также объекты должны учитываться сверху донизу, а слева направо.
Есть ли простой способ сделать это в MATLAB? Я знаю функцию bwlabel
, но она работает только для бинарных изображений, поэтому я хотел бы адаптировать ее к моему делу.
Вы видели учебники Matlab по сегментации изображений, http://www.mathworks.com/discovery/image-segmentation.html, в частности, я думаю, что метод Otsu поможет вам более конкретно взглянуть на функцию 'bwconncomp' –