我需要扫描各种图像的彩色线条,其结果决定了我们对图像的处理方式,没有line = delete,lines = save。
我已经通过简单地将每个像素的颜色与我们正在寻找的已知颜色列表进行比较来充分满足这一要求,如果我们发现超过某个像素阈值,那么我们很高兴图像上有某些东西我们感兴趣的。
我最近不得不重新开始工作,因为我们开始获得高度压缩的Jpegs和(例如)红线最终由数百种红色组成 - 我让这个工作可靠但这个过程让我思考那是一种更好的方式,所以我开始关注AForge以确定它是否可用于检测不同颜色的线条。
我花了一天时间研究它并认为它会起作用,但需要一些关于最佳方法/方法的指导,因为简历是一个非常大的领域,我只需要学习暂时只占很小的一部分。
这是其中一个图像的示例
在这种情况下,我想了解红线和蓝线。 我不理会那些黑人。
我一直在阅读和测试一些使用hough line检测的东西,并且在黑白图像上检测到STRAIGHT线时取得了一些非常有限的成功,但是找不到很多检测弯曲彩色线的例子。
所有我正在寻找的是关于AForge是否是最好的前进方式(如果它甚至可以做我想要的)的一点指导,并了解过程会是什么样的,以便我可以去调查正确的事情!
答案 0 :(得分:0)
如果这对未来的任何人都有用,我找到了一种方法,它仍然不完美,但提高了我们过程的可靠性。
第一步 - >除去我们感兴趣的颜色以外的所有颜色:
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上。
还有一个问题是,我们过滤除了我们感兴趣的颜色以外的所有颜色并不适用于所有颜色的方式,我们需要通过它来识别相当多的灰色阴影拿起道路的轮廓等,所以还有工作要做 - 但我上面所描述的让我们更接近解决方案。