我刚刚开始探索 OpenCV 和它的 EmguCV .NET 包装器,需要了解其功能大图的人的一些总体指导,也许那些已经解决了与我需要完成的任务类似的任务的人。
我将有一系列静态照片,在每张图像中都会出现一个物体或什么都没有。这些物体是金属硬件(螺栓),将侧放,长度平行于图像的顶部/底部(即,图片是从上方拍摄的)。如果有一个对象,它将是大约 100 种不同类型的螺栓中的一种,其中一些具有非常相似但不相同的特征和尺寸。例如,它们的轮廓大部分都是矩形,但长度和宽度(直径)会有所不同,并且头部可以是六边形或圆形(在轮廓中分别被视为矩形或圆形的小段) ) 或将有用于埋头孔应用的锥形头。零件类型的插图 I'
(来源:donsnotes.com)
我需要对它们进行分类,以便区分所有尺寸和类型。1-3/8" 螺栓应归类为与 1-1/2" 螺栓不同,即使它们具有相同的直径和相同的头部类型。尺寸之间的最小长度差异为 1/8 英寸,而不是标准的 1/16 英寸。
如果重要的话,我可以很好地控制以下内容:
- 照明(但背光不实用)
- 背景的外观(可能对背景减法有用?)
- 从相机到物体的距离(相同的物体在图像中总是显示为相同的大小)
- 通常,螺栓的位置 - 它将水平放置在其侧面,与图像帧的顶部/底部边缘平行。我无法控制它的头部在图像中是向左还是向右。
不幸的是,我找不到任何直接解决我需要做的事情的在线论文或文章——但有很多可以说明更简单的任务,比如寻找彩色球或寻找矩形。我找不到任何关于识别和分类大量不同但相似的形状的东西。我确实有两本推荐的 OpenCV 书籍,虽然它们很棒,但它们似乎并没有解决这个问题。
我在示例图像上发现了相当干净的 Canny 边缘,但由于照明,零件内部有很多噪点。这使得寻找干净的霍夫线段有点参差不齐。
我不确定是否应该尝试使用通过测量 Canny 边缘计算的绝对尺寸来减少可能匹配的列表 - 然后使用更强大的东西,如级联分类器......?要不然是啥。
我真的只是在寻找某人对一般策略或正确方向的看法......
谁能给我一些东西让我开始尝试?我真的很茫然。
谢谢!