Я хочу использовать цвет для обнаружения белого корабля. Когда скорость корабля низкая, я могу получить хороший результат. Но когда скорость высокая, я не могу. Потому что след корабля тоже белый. Я пытаюсь использовать Метод эрозии и расширения для удаления следа от корабля, но результат не очень хороший. Как я могу удалить след от корабля.
Как удалить пробуждение корабля на изображении с помощью opencv?
Ответы (2)
Я бы больше стремился использовать тот факт, что следы гораздо более линейны, чем корабль. Или даже то, что корабль находится «на другом конце кильватерного следа».
Первый грубый проход порога HSV, чтобы получить всю «белую область», включая корабль и след, затем попробовать что-то для идентификации, а затем отбросить линии.
Линейное преобразование Хафа может помочь, при условии, что вы можете преобразовать изображение с пороговым значением в правдоподобные края, которые потребуют некоторой морфологической настройки.
Оттуда вы можете фактически провести линию следа, и половина вашей работы сделана. Конкретная граница пробуждения к кораблю будет более сложной проблемой, связанной с обнаружением границ, но если вы заботитесь только об этом, я думаю, что ваша проблема в основном решена! :п
Интересно, что это довольно распространенная проблема со спутниковыми радиолокационными изображениями посмотрите мой быстрый поиск в Google. Конечно, эти изображения не обязательно должны учитывать сам корабль большую часть времени и иметь различные ограничения шума и изображения, но вы можете просто почерпнуть пару крутых идей из их решений.
Например: Эльдхусет, Кнут. «Автоматическая система обнаружения кораблей и кораблей по радиолокационным изображениям в прибрежных районах.
Я думаю, что вы задавали аналогичный вопрос об обнаружении мяча в такой ситуации. Ответ на этот вопрос также будет аналогичен ответу на этот вопрос.
Обнаружьте пиксели, содержащие белый цвет, используя ваш метод HSV.
рассчитать оптический поток для этих белых пикселей.
Белые пиксели, соответствующие Кораблю, будут иметь более высокую скорость, чем белые пиксели, принадлежащие водным волнам.
вы получите набор пикселей с наибольшей скоростью (все они принадлежат кораблю). Затем попытайтесь найти пиксель на крайнем краю (угловой пиксель корабля) в направлении движения, используя координату пикселя. Вам просто нужно найти
min(y)
илиmax(y)
, если направление находится в направлении Y.нарисуйте круг вокруг этого пикселя... это будет обнаружение вашего корабля.