Opencv 用插入板识别孔

Opencv 用插入板识别孔,opencv,computer-vision,detection,image-recognition,haar-classifier,Opencv,Computer Vision,Detection,Image Recognition,Haar Classifier,我有很多坦克的照片。每个油箱都有应插入金属板的孔 我需要找到所有没有盘子的洞 我尝试通过HoughCircles搜索圆,使用训练haar分类器,但没有得到可接受的结果 孔很小(约30x30px),照明不是永久性的 如果有任何想法,我将不胜感激 谢谢 如果闪电是问题所在,您可以尝试执行以下操作: (结果取决于这些阴影的问题程度) 1) 最大化对比度(很好地描述) 2) canny边缘检测器。调整参数以正确检测边缘,通过检测器处理图像,并在输出上执行操作(检测圆、生成ROI、检测其中的线) 3)

我有很多坦克的照片。每个油箱都有应插入金属板的孔

我需要找到所有没有盘子的洞

我尝试通过HoughCircles搜索圆,使用训练haar分类器,但没有得到可接受的结果

孔很小(约30x30px),照明不是永久性的

如果有任何想法,我将不胜感激


谢谢

如果闪电是问题所在,您可以尝试执行以下操作: (结果取决于这些阴影的问题程度)

1) 最大化对比度(很好地描述)

2) canny边缘检测器。调整参数以正确检测边缘,通过检测器处理图像,并在输出上执行操作(检测圆、生成ROI、检测其中的线)

3) 如果可能的话,一个“硬件”解决方案将带来很大的不同——尝试通过向相机添加一些光线来平衡光线条件。我可以想象,这是最困难的部分,但不幸的是,并不是所有的问题都可以通过软件解决

您可能需要组合这些步骤,以获得可靠的结果


顺便说一句:哈尔分类器不是最好的解决方案,但它也可以工作。这取决于您提供了多少样品,也取决于光照条件,如上所述,我将尝试使用不同的步骤:

  • 对整个图像进行Hough圆检测,以便仅检测油箱边界的明亮圆。它将为您提供感兴趣的区域
  • Hough圆只进入ROI,在梯度/边缘图像上检测所有小孔。您已经知道孔的尺寸/半径,因此可以过滤结果
  • 对于检测到的每个小孔,进行边缘检测,以检查是否存在板

  • 您可以共享原始图像(没有红色指示)吗?我可能会抽出一些时间做一个测试。

    最好将问题分为两部分: 1.感兴趣区域检测。 这一部分可以通过使用图像处理技术来完成。 A.rgb到灰度转换。 B白色的圆圈应该很清楚。它可以被任何形状检测器检测到

  • 下一步是确定是否存在任何孔。 A.基于颜色,你可以检测出你想要测试的这些圆圈的颜色。 B我建议使用3种不同的功能。HOG、GM和SSIM。 根据我的经验,我认为这些功能将带来良好的效果。 您可以使用可视文字包或稀疏编码来组合每个圆的特征。 C使用viola-jones数据分类器。 这是一个adaboost分类器,可以使用多种功能
  • 非常感谢所有的建议! 结果我做出了一个复杂的决定:

  • haar分类器发现了所有的漏洞
  • 下一步,我使用HoughCircles并抛出错误的孔
  • 我将每个孔转换为二进制格式,并计算中心周围的黑白像素
  • 这对我来说很有用


    你得到了什么结果?由于这些板的边缘与曲面的其他部分形成高度对比,如果您能够检测到圆,那么您可以在每个圆周围制作一个ROI,并使用hough线检测来确定是否有一条线穿过圆的区域。谢谢!我要数一数所有的空洞。在我目前的版本中,我使用了haar分类器(它被训练在有板的孔上,但不知怎么的,它也发现了空孔),在这个孔中,我尝试使用线条检测,它有时会起作用,但一些照片在坦克和线条处有阴影,对比度不够。FiReTiTi,,1_09-03-16_9-34-16。jpg有一个空孔。我目前的步骤是:我找到了所有的孔,每个孔我都转换成二进制格式,然后计算中心周围的白点。这种方法效果很好,但一些顶部孔有透视图,并且板不在中心。谢谢白色圆圈并非出现在每幅图像上,这使得ROI难以确定。我得修改一下我说的话。谢谢你,j·卡斯帕!对于haar分类器,我准备了大约600个阳性样本(),但它也发现了空的洞。也许我使用了不正确的负片样本-我收集了很多工厂背景和有空洞的坦克()。