Обнаружение областей объекта в изображении opencv
В настоящее время мы пытаемся обнаружить области объекта на изображениях медицинских инструментов, используя методы, доступные в OpenCV, версия C ++. Пример изображения показан ниже:
Вот шаги, которые мы выполняем:
Преобразование изображения в оттенки серогоПрименение медианного фильтраНайти края с помощью фильтра sobelПреобразовать результат в двоичное изображение, используя порог 25Скелетонизируйте изображение, чтобы у нас были аккуратные краяНахождение X крупнейших подключенных компонентовЭтот подход отлично работает для изображения1
и вот результат:
Пока что все было хорошо, но другой пример изображения усложнил нашу работу, показанную ниже.
Небольшое светло-зеленое полотенце под объектами приводит к следующему изображению:
После фильтрации регионов, как мы делали ранее, мы получили это:
Очевидно, это не то, что нам нужно ... мы исключаем что-то вроде этого:
Я думаю о кластеризации ближайших найденных компонентов (как-то !!), чтобы мы могли минимизировать влияние наличия полотенца, но пока не знаем, выполнимо ли это или кто-то пробовал что-то подобное раньше? Кроме того, есть ли у кого-нибудь лучшая идея для преодоления такого рода проблем?
Заранее спасибо.