Как добиться чрезмерной сегментации с помощью Watershed Transform от OpenCV?
Я пытаюсь разделить изображение на части, используя основанную на маркерах реализацию OpenCV в Java.
Моя идея состояла в том, чтобы найти все локальные минимумы и использовать их в качестве маркеров. К сожалению, для входа в систему водораздела требуется матрица типа CV_8U, и поэтому я не могу получить более 255 маркеров.
У кого-нибудь есть обходной путь для этой проблемы или другое решение для достижения чрезмерной сегментации с использованием OpenCV?
1 ответ
Стохастический водораздел может помочь вам в этой проблеме. Принцип заключается в применении нескольких водосборов.
В вашем случае вы можете сделать:
- Найти все локальные минимумы
- Выберите N локальных минимумов
- Применить водораздел
- Сохраните результаты / границы в накопителе
- Повторите шаги 2, 3 и 4 М раз
- Сохраняйте границы в аккумуляторе, которые имеют не менее Х% от числа М голосов.
Другим решением будет использование библиотеки SMIL. Вы можете вызвать его из Java, и вы уверены, что реализованный алгоритм быстр и не смещен.