Я пытаюсь обнаружить горизонт в изображении и вернуть маску неба (или перевернутую как основание). Хотя, похоже, для этого много пользы, я борюсь за то, чтобы найти хорошее решение. Хуже всего то, что это кажется такой простой проблемой, и у большинства людей нет проблемы при обнаружении горизонта.
Следующее делает сложнее:
- Горизонт редко является прямой линией в используемых изображениях (горные ландшафты), поэтому обнаружение края и преобразование линии Хау не будут работать.
- Он должен работать во всех условиях освещения. Порог (например, порог Otsu) работает, но не работает хорошо в условиях низкой контрастности, таких как до восхода солнца. Порог фиксированного значения не работает, поскольку свет меняется слишком сильно в течение дня.
То, что я пробовал на данный момент, - использовать цветовой фильтр, ограничивающий его низкими насыщениями, затем находить контуры и обнаруживать и заполнять самый большой контур. После этого я заливаю область над контуром. Это действительно работает, но я до сих пор не могу представить, чтобы эта проблема была настолько сложной.
Я пишу код в Delphi XE8, используя оболочку OpenCV, но ответы или идеи на любом другом языке приветствуются!