Я хочу удалить волосы из дерматоскопических изображений в OpenCV для C ++ с двумя — не обязательно комбинированными — желаемыми результатами:
Подход должен быть полностью автоматическим и должен — как всегда — работать как можно быстрее, хотя я делаю не нужны вычисления в реальном времени. Вот пример изображения того, о чем я говорю:
Первый шаг для этого — найти пиксели волос и замаскировать их. После некоторой базовой предварительной обработки я успешно (неправильно) использую хорошо известную Фильтр Франги и создал бинарную маску для волос:
Теперь самое главное. Во-первых, следуя идее какой-то предметной статьи, я попробовал сам, используя банк морфологических операций — с едва убедительными результатами:
Помимо этого, очевидной попыткой является использование OpenCV inpaint()
функция. Результаты лучше, но все же не идеальны, а расчет занимает много времени:
Есть большая статья о Пуассон Редактирование изображений, который недавно был реализован в OpenCV как seamlessClone()
, В статье этот подход смешанного клонирования также используется для сокрытия ошибок с многообещающими результатами.
Они используют ручной выбор исходной области для сокрытия, которая в моем случае была бы неискаженной кожей. Однако предполагается, что это полностью автоматическое решение, и я знаю только, какая часть изображения — волосы, а какая — нет.
Как я могу использовать эту простую маску для выполнения автоматического рисования с помощью бесшовного клонирования? Я не смог найти какой-либо прямой реализации этого для OpenCV, и в настоящее время у меня нет идей, как решить эту проблему. Кто-нибудь?
Второе изображение выглядит довольно хорошо, в этом случае я бы предложил поработать с ним, применив фильтр верхних частот. Это очень похоже на медианные фильтры, которые используются для сглаживания изображений. Но в вашем случае вам нужно удалить несколько темных пикселей в определенных окрестностях. Я бы использовал маску для волос, чтобы применить фильтр высоких частот в этих пикселях.
Вы можете найти информацию о медианном фильтре Вот.
Других решений пока нет …