从图像中直线检测

时间:2014-02-20 06:48:00

标签: image-processing curve edge-detection straight-line-detection

我正在做一个在道路上进行洞探测的项目。我正在使用激光在道路上发射光束并使用相机拍摄道路图像。图像可能是这样的 enter image description here

现在我想要处理这个图像并给出一个直接与否的结果。如果曲线那么曲线有多大。 我不明白该怎么做。我经常搜索,但无法找到合适的结果。任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

这是相当复杂的,你的问题非常广泛,但我们试试看:

  1. 也许您必须识别像素图像中的点。有几个选项可以做到这一点,但我通过模糊滤镜使图像平滑,然后找到最红的像素(被认为是点的中心)。将这些坐标存储在矢量数组中(x次y的数组)。

  2. 我在点之间使用样条插值。通过这种方式,我们可以简单地获得触及每个点的 a 曲线的局部推导。

  3. 如果第一个推导的最大值很小,则点在一条直线上。如果您相信,这些点属于单个曲线,则第二个推导是您的曲率。

  4. 对于1.你也可能依赖一些专门从事图像处理的图书馆(这是你挑战的图像处理部分)。其中一个图书馆是opencv。

    对于2.我会使用一些数学工具包,八度音程或本地语言的数学库。

答案 1 :(得分:1)

有几种不同的方法可以测量直线的直线度。由于您的问题相当模糊,因此不可能说出最适合您的问题。

但这是我的建议:

使用linear regression计算通过点的最佳拟合直线,然后计算每条点的平均距离(直线会产生较小的结果)。

illustration showing distances of points from best-fit straight line

答案 2 :(得分:0)

您可能需要阅读this paper,解决问题非常有趣

答案 3 :(得分:0)

正如@urzeit建议的那样,您应该首先尽可能准确地找到这些点。如果没有看到真实的图片,就没有办法给出好的建议,除了:尝试让自己尽可能简单地完成任务。例如,如果你可以将相机设置为非常短的快门时间(微秒,如果可能的话)并同时集中激光能量,“背景”将减少图像亮度的能量,而激光点将简单在黑暗的背景上是亮点。

测量线性度应该是直截了当的:“线性度”只是“线性相关”的另一个词。因此,您只需计算X和Y值之间的correlation即可。当链接维基百科页面上的图片显示时,correlation = 1表示所有点都在一行上。

如果您想要实际行,只需使用Total Least Squares