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