Как сегментировать аномалии на глянцевой поверхности с помощью opencv (c ++)

У меня есть изображение глянцевой поверхности:
введите описание изображения здесь

Моя цель — обнаружить аномалии на этом изображении. То же изображение с отмеченными аномалиями я покажу вам здесь:
введите описание изображения здесь

Как видно из изображений выше, аномалии имеют плохую контрастность (или, по крайней мере, не самую лучшую), и они также меняются от изображения к изображению по форме, контрасту, ориентации …
Я пытался увеличить контраст аномалий, используя фильтрацию tophat. Результат здесь:
введите описание изображения здесь
Теперь мои аномалии намного более заметны на изображении, я хочу выделить их из изображения. Цель состоит в том, чтобы преобразовать изображение в двоичную форму и использовать функцию connectedComponents для вычисления областей, размеров, положений аномалий …

Какую сегментацию вы предлагаете? Что было бы лучшим способом для преобразования изображения в двоичную форму? Должен ли я даже использовать фильтрацию tophat для увеличения контраста аномалий или я должен попытаться сегментировать аномалии непосредственно из первого изображения?

0

Решение

Вы можете:

  1. Попробуйте несколько цилиндровых фильтров разных размеров и параметров, чтобы увидеть, какой из них лучше всего выделяет аномалии при подавлении отпечатков пальцев.

или же

  1. перейдите непосредственно к настройке порога и настройте параметры там, чтобы убедиться, что ни одна из аномалий не будет потеряна в процессе. Затем используйте функции подключенных компонентов для извлечения фактических аномалий.

Все более популярный подход заключается в обучении глубокой нейронной сети с использованием множества изображений аномалий и последующем использовании сети для их идентификации.

1

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

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