【发布时间】:2015-08-04 04:15:57
【问题描述】:
我正在尝试检测图像中的地平线,并返回天空的蒙版(或反转为地面)。虽然它似乎有很多用途,但我正在努力寻找一个好的解决方案。更糟糕的是,这似乎是一个如此简单的问题,大多数人在检测地平线方面都没有问题。
以下内容更难:
- 在所使用的图像(山地景观)中,地平线很少是一条直线,因此边缘检测和霍夫线变换将不起作用。
- 它需要在所有光照条件下工作。阈值处理(如 Otsu 阈值处理)有效,但在日出前等低对比度条件下效果不佳。固定值阈值不起作用,因为全天光线变化太大。
我现在尝试的是使用滤色器将其限制为低饱和度,然后找到轮廓并检测并填充最大的轮廓。在此之后,我用洪水填充轮廓上方的区域。这确实有效,但我仍然无法想象这个问题会如此困难。
我正在使用 OpenCV 包装器在 Delphi XE8 中编写代码,但欢迎使用任何其他语言的答案或想法!
【问题讨论】:
-
“我正在使用 OpenCV 包装器在 Delphi XE8 中编写代码” - 哦,这听起来很糟糕,因为您可能无法使用更高级的 c++ 功能,例如 CLAHE 或 bioinspired::retina用于照明归一化
-
most humans have NO issue in detecting the horizon- 大多数人在模式识别和场景理解方面都有一些自然或学习的经验。 -
你可能已经用过谷歌了?给我一些链接和stackoverflow.com/questions/4705837/horizon-detection-algorithm(其中再次包含了一些谷歌链接)
-
您能否提供一些提示,说明必须检测到 hoizons 的范围?例如展示一些您希望算法正确检测地平线的示例图像、一些边界情况和一些不需要检测地平线的图像。
-
哇,这绝对不是我在谈论“地平线检测”时所期望的(它实际上只是天空检测,根本不是地平线)......你能假设图像总是对齐,所以天空在图像的顶部,地面在底部?