Inpaint со смешанным бесшовным клонированием для сокрытия ошибок в OpenCV

Фон

Я хочу удалить волосы из дерматоскопических изображений в OpenCV для C ++ с двумя — не обязательно комбинированными — желаемыми результатами:

  • предварительная обработка для дальнейшего анализа с использованием компьютерного зрения
  • улучшение оптического восприятия (то есть отсутствие отвлечения на кожное поражение)

Подход должен быть полностью автоматическим и должен — как всегда — работать как можно быстрее, хотя я делаю не нужны вычисления в реальном времени. Вот пример изображения того, о чем я говорю:

Пример входного изображения

Первый шаг для этого — найти пиксели волос и замаскировать их. После некоторой базовой предварительной обработки я успешно (неправильно) использую хорошо известную Фильтр Франги и создал бинарную маску для волос:

Маска для волос

Начальные подходы

Теперь самое главное. Во-первых, следуя идее какой-то предметной статьи, я попробовал сам, используя банк морфологических операций — с едва убедительными результатами:

Удаление волос с морфологическими операциями

Помимо этого, очевидной попыткой является использование OpenCV inpaint() функция. Результаты лучше, но все же не идеальны, а расчет занимает много времени:

Удаление волос с помощью Навье-Стокса

ВОПРОС

Есть большая статья о Пуассон Редактирование изображений, который недавно был реализован в OpenCV как seamlessClone(), В статье этот подход смешанного клонирования также используется для сокрытия ошибок с многообещающими результатами.

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

Как я могу использовать эту простую маску для выполнения автоматического рисования с помощью бесшовного клонирования? Я не смог найти какой-либо прямой реализации этого для OpenCV, и в настоящее время у меня нет идей, как решить эту проблему. Кто-нибудь?

2

Решение

Второе изображение выглядит довольно хорошо, в этом случае я бы предложил поработать с ним, применив фильтр верхних частот. Это очень похоже на медианные фильтры, которые используются для сглаживания изображений. Но в вашем случае вам нужно удалить несколько темных пикселей в определенных окрестностях. Я бы использовал маску для волос, чтобы применить фильтр высоких частот в этих пикселях.

Вы можете найти информацию о медианном фильтре Вот.

0

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

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

По вопросам рекламы [email protected]