Обнаружение цветных объектов на изображении, которое содержит темный фон

В настоящее время я использую OpenCV, чтобы попытаться обнаружить объекты на столе, покрытом черной тканью. Камера не всегда будет смотреть в одном направлении (это голова робота), но будет обрабатываться только одно изображение, поэтому скорость не является обязательной. Я использовал cv::Canny а также cv::findContours с наиболее подходящими параметрами, которые я мог найти, прежде чем удалять контуры, которые имеют слишком маленькую площадь. Это приближает меня к желаемому результату, но некоторые контуры, которые не находятся в области таблицы, явно обнаруживаются.
Что было бы хорошим способом отфильтровать их?
Я думал о трех решениях (которые могли бы быть объединены для лучших результатов):

  • Обрезка изображения, чтобы просто сохранить область стола, но я не могу придумать хорошие критерии (cv::HoughLines ?).
  • Удаление не замкнутых контуров. Это не ограничивается выпуклыми контурами (например, оранжевый дельфин справа не является). Будет ли проверка расстояния между первым cv::Point и последнее cv::Point в контуре (который является vector<cv::Point>) Работа ?
  • Изучите круг в нескольких пикселях от каждого контура и проверьте каналы HSV, чтобы выяснить, все ли пиксели круга достаточно темные, чтобы их можно было рассматривать как часть таблицы.

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

Изображение с камеры для обработки

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector