2015-07-08 3 views
0

Я новичок в отношении opencv, и я хотел бы получить некоторые советы о том, как следует снимать изображение и разделять изображение.Разделение изображения с «маской»

В настоящее время я работаю над распознаванием объектов с помощью kinect-like. В конце процесса, я получаю этот тип изображения:

enter image description here

розовый цвет совершенно произвольно, кстати я могу использовать другой, если это рекомендуется)

В этом случае я бы как:

  1. Де-шумит изображение.

  2. Разделить различные объекты на картинке на несколько изображений, по одному изображению для каждого объекта.

О 1: Я знаю несколько фильтрации шума, которые в основном фильтр на основе частоты и структуры, можно фильтровать объекты, которые не являются «большой» достаточно?

+0

Как насчет использования выделения контуров? Вы можете исследовать возвращаемые контурные наборы и отбросить все, что слишком «мало» (с использованием числа возвращенных контуров, вычисленной области и т. Д.). Остальные контурные наборы будут контурами ваших объектов. – user3510227

ответ

1

Вы можете попробовать это:

  1. Установите все розовые цветы на черном фоне() и все остальные на белый (на первом плане).
  2. Используйте findContours(), чтобы найти все контуры каждого объекта, т. Е. 3 в вашем случае.
  3. Основываясь на информации о контуре каждого объекта, вы можете выбрать любой объект, который вы хотите. Вы также можете отфильтровывать небольшие объекты, проверяя их область контура.
1

Схема, предложенная @herohuyongtao, является разумной. Если вы можете использовать OpenCV 3.0, я бы рекомендовал connectedComponents() вместо findControus(). Площадь объекта возвращается по статистике CC_STAT_AREA. В вашем случае у вас на самом деле имеется около 7 подключенных компонентов для этого шума в верхнем левом углу. Настройте некоторый разумный порог на минимально возможной площади, этого будет достаточно для простых случаев.

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