【问题标题】:Water Edge Detection水边检测
【发布时间】:2019-09-12 23:11:13
【问题描述】:

在 OpenCV 中是否有一种可靠的方法来检测水线,例如这张图片中的河流边缘?


(来源:pequannockriver.org

【问题讨论】:

  • 河的左岸可能更容易区分。与左侧光滑的水面相比,左岸灌木的存在增加了很多高频变化。即使对于人类艺术家来说,右岸似乎也具有挑战性。无论如何,对于这种类型的任务,在一个图像上运行良好的算法可能在许多其他图像上运行不佳。
  • 为改进问题,请描述寻找水位线的动机或目的。例如,您是否在某种比较中使用水线位置?如果是这样,您是否打算比较在不同时间拍摄的多张图像的结果?这些意图将更具挑战性。通过描述您的目的,我们可以提出建议,同时避免困难或不可能的方法。
  • 我知道很难想出一种在各种场景中都具有鲁棒性的算法,但总的来说,您会在图像上使用什么样的属性/过滤器来检测水?跨度>
  • 我需要对海岸线附近的材质进行一些处理,所以我想检测图像中的水线,以便找到灌木等元素。

标签: opencv edge-detection


【解决方案1】:

这项任务具有挑战性,因为必须使用多种技术组合。此外,对于每种技术,数值参数可能只能在非常窄的范围内正确工作。这意味着人类专家必须对每张图像进行反复试验来调整它们,或者必须使用许多不同的参数多次执行该技术,以便选择正确的结果。

以下大纲高度特定于此示例图像。它可能不适用于任何其他图像。

一点建议: 像往常一样,任何多步骤图像分析都应始终从最可靠的步骤开始,然后继续直到不太可靠的步骤。只要有可能,不太可靠的步骤应该利用更可靠的步骤的结果来提高其自身的准确性。

天空检测

将图像转换为 HSV 颜色空间,并找到位于图像上半部分的青色。

保留此 HSV 图像,因为它对接下来的几个步骤也很方便。

灌木检测

Run Canny edge detection on the grayscale version of image, with suitably chosen sigma and thresholds.这将拾起灌木上的树枝,看起来像一堆噪音。同时,水面会比较光滑。

在此技术中使用灰度以减少反射对水面的影响(灌木的绿色和黄色反射)。可能还有其他色彩空间(或预处理技术)更能够消除这种反射。

从低仰角角度检测水波纹

首先,标记所有已归类为灌木或天空的图像部分。由于灌木检测比水检测更可靠,因此灌木检测的结果应用于通知不太可靠的水检测。

观察

由于低仰角视点,水波纹显得水平拉长。事实上,每个图像特征看起来都是水平拉伸的。这称为Anisotropy。我们可以利用这种趋势来检测它们。

注意:我在各向异性检测方面没有经验。也许你可以从其他人那里得到更好的想法。

想法 1:

使用maximally-stable extremal regions (MSER) 作为斑点检测器。

维基百科的介绍看起来很吓人,但它确实与连通分量算法有关。类似于Dijkstra's algorithm 的简单实现可以完成。

想法 2:

请注意,图像特征是水平拉伸的,更简单的方法是将水平梯度的绝对值相加,并将其与垂直梯度的绝对值之和进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 2023-03-27
    • 1970-01-01
    • 2016-09-12
    • 2013-05-25
    相关资源
    最近更新 更多