Нахождение кромки воды с использованием OpenCV и Python точно
Я работал над попыткой обнаружить край воды с помощью OpenCV/Python, и результаты, которые я получаю, довольно неточны, и нет никакой надежности. Это то, чего я добился до сих пор: исходное изображение, выходное изображение
В настоящее время я занимаюсь настройкой некоторых переменных (уровень размытия по Гауссу, сигма, используемая для обнаружения края Канни, и максимального отклонения, которое измеряемый уровень может изменять между каждой точкой), выполняя "автоматическое" обнаружение края Канни (где средняя интенсивность пикселей измеряется и используется для формирования нижней и верхней границ), затем перемещается от нижнего левого угла вверх, чтобы найти первый "белый" пиксель. Это делается с интервалами по пять по всей длине кадра.
Среднее значение y баллов является расчетным. Затем каждая точка проверяется на предмет отклонения слишком далеко от среднего пикселя, причем предел отклонения устанавливается ранее. Остальные точки затем отображаются на изображении в виде синей линии. Среднее значение нарисованных пикселей записывается в каждом кадре.
После 30 кадров среднее из средних значений рассчитывается и рисуется в виде красной линии, которая затем считается "реальной" высотой воды.
У кого-нибудь есть идеи по поводу лучшего способа сделать это? Что сделает кромку воды более заметной? Этот метод работает с большинством отснятых материалов, но с плохими результатами.
Заранее спасибо.
1 ответ
Я работал над аналогичной проблемой, и я надеюсь, что эти советы могут помочь вам в некотором роде:
- Попробуйте ограничить область поиска: можете ли вы предположить, где должен быть уровень воды? Учитывайте также, что правильно определил уровень воды. Можно ли предположить, что в следующих кадрах уровень воды будет постоянно уменьшаться / увеличиваться? Будет ли он меняться медленно? Обрежьте свое изображение, чтобы принять во внимание только область, в которой можно предположить, что уровень воды присутствует.
- Изменить цветовое пространство: вы можете попробовать работать в других цветовых пространствах, таких как HSV, чтобы отделить яркость от цветности
- Обнаружение линий преобразования Хафа: попробуйте использовать этот алгоритм для поиска определенных горизонтальных линий на изображении или других фигур.
- Неискаженное изображение: при необходимости попытайтесь исправить изображение, чтобы исправить изогнутые линии, или отмените перспективу с помощью Inverse Perspective Mapping (IPM).
Вы также можете рассмотреть возможность изменения алгоритма обнаружения ребер.