2013-03-04 2 views
4

Я работаю над проектом, который требует от меня:изображения Сегментация для Color анализа в OpenCV

Посмотрите на изображения, которые содержат относительно хорошо определенные объекты, например

enter image description here

и выбрать цвет п-большинство (это родовое, может быть 1,2,3 и т.д. ...) выдающиеся объекты в некотором пространстве (будь то RGB, HSV, что угодно) и вернуть его.

Я ищу способы отделить изображения, подобные этому, от независимых объектов. Как только это будет сделано, у меня создалось впечатление, что не будет особенно сложно найти контуры сегментов и проанализировать их для среднего или центроидного цвета и т. Д.

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

Каков наилучший способ сегментирования такого изображения, и если он использует Watershed, каков наилучший способ создания соответствующего изображения маркеров целых чисел?

ответ

1

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

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

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

Как только вы идентифицировали объект (ы) через скользящее окно, вы можете попытаться определить наиболее яркий цвет, используя один из методов, о которых вы упомянули.

UPDATE

Основываясь на ваш комментарий, вот еще один потенциальный подход, который может работать для вас:

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

  1. удалить шум;
  2. карта исходное изображение к уменьшению цветового пространства (например, 256 или событие 16 цветов)
  3. обнаружить подключенные компоненты, основанные на цвете пикселей и определить, какие из них являются достаточно большими

Вы можете также извлечь выгоду от повторного отбора проб изображение, чтобы уменьшить разрешение (т. е. если изображение 1024 x 768, вы можете уменьшить его до 256 x 192), чтобы ускорить алгоритм.

Единственное, что осталось сделать, это определить, какой компонент является фоном. Это может иметь смысл также попытаться сделать удаление фона путем преобразования в черный/белый с определенным пороговым значением.

+0

Мой предполагаемого подхода, сфокусированного вокруг сегментирования объектов по цвету в некотором роде, то сегментирование их убедитесь, что какие-либо перекрытия были удалены, то есть убедитесь, что «капли» не коснулись. Наконец, пороговое изображение, чтобы отделить все объекты от фона, найти контуры, затем перебирать контуры в оригинале, чтобы найти средний цвет в некотором пространстве. Это может быть не самый лучший способ. Даже когда я пишу это, это кажется ужасно длинным! – TonyRo

+0

Я начал комментировать, но вместо этого перейду к обновлению ответа. –

+0

уменьшить цветовое пространство и выполнить поиск по регионам –

Смежные вопросы