C#AForge没有检测到彩色圆圈

时间:2014-11-16 16:50:42

标签: c# image-processing aforge

我试图以MCQ形式检测彩色圆圈,只要颜色适合圆圈内部,就会检测到空白圆圈和彩色圆圈,一旦颜色在外面,它就不会检测到圈子了! Plz帮助。! 我正在应用这些过滤器:

        FiltersSequence seq = new FiltersSequence();
        seq.Add(Grayscale.CommonAlgorithms.BT709);  //First add  grayScaling filter
        seq.Add(new OtsuThreshold()); //Then add binarization(thresholding) filter
        temp = seq.Apply(source); // Apply filters on source image

然后通过Blob检测和isCircle函数,如图所示,只要颜色适合圆圈内部,它就会检测所有圆圈(空白或彩色),如何修复它以使其检测每个圆圈?

http://i.stack.imgur.com/Te8mZ.png

1 个答案:

答案 0 :(得分:0)

在你的朋友圈子中,所有时间圈子都取决于人们的写作方式,搜索圈子并不是一个好主意。

我的想法是使用颜色过滤来丢弃红色(空心圆圈)和其他过滤以消除线条和数字,也许使用OtsuThreshold你可以获得它,一个黑色背景图像,只有彩色圆圈。

我用您的图片进行测试,

1)hslfilter hue min 222 max 277,sat 0.204,0.675; lum 0.000,0.706

2)灰度

3)阈值12

4)bolbs过滤小到5

5)使用颜色构建组件以显示每个blob(仅用于查看如何检测blob)。

Voila:

Example detection blobs

在结果图像中,所有blob都是正响应

用于测试过滤器序列使用aforge http://www.aforgenet.com/projects/iplab/downloads.html

中的图像处理实验室

如果你需要知道答案是b c还是d,那么这个过程就是 重新调整图像以获得每张图片的尺寸标准。并读取每个blob的位置属性(X,Y)以获得if是1D还是64C。

可能更容易阅读

列出aswers =使用矩形并剪切每一列(a,b,c,d)。

此列表中的

检测斑点的x属性以检测具有正响应的数字