【问题标题】:Coloured Line Detection Using AForge使用 AForge 进行彩色线条检测
【发布时间】:2018-10-01 23:53:18
【问题描述】:

我需要扫描各种图像中的彩色线条,其结果决定了我们如何处理图像,无线条 = 删除,线条 = 保存。

通过简单地将每个像素的颜色与我们正在寻找的已知颜色列表进行比较,我已经充分满足了这一要求,如果我们发现高于某个像素阈值,那么我们很高兴图像上有一些东西我们感兴趣的。

我最近不得不重新处理这个,因为我们开始获得高度压缩的 Jpeg,并且(例如)红线最终由数百种红色阴影组成 - 我让这个工作可靠,但这个过程让我思考肯定有更好的方法,所以我开始研究 AForge 以确定它是否可用于检测不同颜色的线条。

我花了一天时间研究它,认为它会起作用,但需要一些关于最佳方法/方法的指导,因为 CV 是一个非常大的领域,我只需要学习暂时只占很小的一部分。

这是其中一张图片的示例

在这种情况下,我想了解红线和蓝线。 我会忽略黑色的。

我一直在阅读和测试一些关于霍夫线检测的内容,并且在检测黑白图像上的直线时取得了一些非常有限的成功,但找不到很多检测彩色曲线的示例。

我正在寻找的只是关于 AForge 是否是最好的前进方式(如果它甚至可以做我想做的事)的一点指导,以及对流程是什么样子的想法,以便我可以去调查正确的事情!

【问题讨论】:

    标签: c# image-processing computer-vision image-recognition aforge


    【解决方案1】:

    万一这对将来的其他人有用,我找到了一种方法来做到这一点,它仍然不完美,但提高了我们流程的可靠性。

    第一步 -> 删除除我们感兴趣的颜色以外的所有颜色:

    var c = Color.Red;
    EuclideanColorFiltering filter = new EuclideanColorFiltering();
    filter.CenterColor = new RGB(color.R, color.G, color.B);
    filter.Radius = (short)radius;
    filter.ApplyInPlace(input);
    

    第 2 步 -> 转换为灰度

    Grayscale.CommonAlgorithms.BT709.Apply(image);
    

    第 3 步 -> 通过 Hough 运行结果

    var lineTransform = new HoughLineTransformation();
    lineTransform.ProcessImage(input);
    HoughLine[] lines = 
    lineTransform.GetLinesByRelativeIntensity(_intensity);
    

    第一步产生的结果与我过去通过扫描图像以查找特定颜色的像素获得的结果几乎相同,但 HoughLineTransform 具有识别哪些像素形成一条线的效果 - 消除了我们拥有的大量噪声在高度压缩的 JPEGS 上。

    还有一点问题是,我们过滤掉所有颜色的方式,除了我们感兴趣的颜色之外,不适用于所有颜色,我们有很多灰色阴影需要通过它来识别拾取道路轮廓等,因此仍有工作要做 - 但我上面描述的内容让我们更接近解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多