6

我有这样的图像:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

在这张图片中,红线是我想从图片中得到的。原始图像没有那条红线,只有那条绿线。

我想要的是以方程的系数形式从图像中估计曲线:A x ^ 2 + B x + C = 0。在图像中可能存在噪声(如您在上面看到的边缘上的黑洞)。

我试图通过使用最小二乘法(LSM)来解决这个问题,但是这种方法有两个问题:

  1. 该方法即使在PC上也太慢,因为点数很高。

  2. 在以下情况下道路太宽:

左侧图像上的曲线被正确识别,但右侧的曲线被错误识别。原因是路太宽太短,我想。 输入图片

作为这两种情况的解决方案,我想让道路变窄。在理想情况下,它是上图中的一条红线。或者我想使用 LSM 进行线检测 (A x + B = 0) 以优化处理时间。

我试过侵蚀图像 - 这是错误的方法。骷髅也不是正确的解决方案。

关于如何达到预期结果(使道路变窄)的任何想法?或者对解决这个问题的另一种方法有什么想法?

4

1 回答 1

1

如果您可以依靠始终将一个轴作为适合您的因变量(看起来它应该是x上述“正确”示例中的轴,尽管您的右下角故障似乎正在使用y),那么您可以执行类似的操作:

  • 对于每条扫描线y,选择x非黑色像素的中值
  • 如果没有非黑色像素(或小于某个选定的噪声阈值),则跳过该行

您现在有一个(x,y)对列表,最多与扫描线一样多。这些代表对每一层道路中点的猜测。x=f(y) 通过最小二乘法拟合这些点的低阶多项式(我会选择线性或三次,但如果你愿意,你可以做二次)。

对于您展示的各种图像,细节非常粗糙,因此您可能只需要一部分点即可进行管理。但即使没有,除非您使用非常受限的硬件,否则处理成本应该是合理的。

如果左右路径经常出现,那么您可以同时拟合两种方式,然后应用某种拟合优度标准。如果路径经常在自己身上循环,那么这种中点方法不会给你一个好的答案,但无论如何你都会成为一个失败者。

于 2012-09-04T09:41:11.197 回答