【问题标题】:Curvature estimation from image从图像中估计曲率
【发布时间】:2012-09-04 08:12:16
【问题描述】:

我有这样的图片:

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

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

我曾尝试使用最小二乘法 (LSM) 来解决这个问题,但这种方法存在两个问题:

  1. 这个方法在PC上也太慢了,因为点数很高。

  2. 道路太宽的情况如下:

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

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

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

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

【问题讨论】:

  • 你试过thinning 吗?至少作为第一步。其次可能是细线上的 LSM(或者如果采样点太多,则在采样点上)。或者您可以尝试使用Hough transform 检测arcs 和/或parabolas

标签: algorithm computer-vision estimation least-squares


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 谢谢。它的工作速度非常快,除了有时它会产生错误的线条,具体取决于道路朝向相机的方式。这是因为计算总是水平逐行进行。如果线条不是从图像底部开始,而是部分从图像的一侧开始,则会出现错误的计算。
  • @maximus 好吧,这是一个 hack。您可以通过对用于拟合的点更具选择性来改善问题 - 例如,排除两侧没有边界的行 - 但除此之外(或作为它的附属物)我怀疑你需要采取更多基于模型的方法,引入了一些关于图像所代表内容的先验知识。
猜你喜欢
  • 2017-04-10
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2018-09-01
  • 2018-03-10
  • 2014-08-11
  • 2021-03-14
  • 1970-01-01
相关资源
最近更新 更多