Mat*_*ond 6 opencv image-processing computer-vision emgucv
我才刚刚开始探索OpenCV和EmguCV .NET包装,并且需要了解其功能全局的人们,或者可能是那些完成与我需要完成的任务相似的人们的一般指导。
我将拥有一系列的静止照片,并且在每个图像中都将出现一个物体或什么也没有。这些物体是金属硬件(螺栓),它们的侧面将平行于图像的顶部/底部放置(即,图片是从上方拍摄的)。如果有物体,它将是大约100种离散类型的螺栓之一,其中一些具有非常相似的特征和尺寸,但不完全相同。例如,它们的轮廓大部分都是矩形的,但长度和宽度(直径)会有所变化,并且头的形状可以是六边形或圆形(在轮廓上分别显示为矩形或圆形的较小部分) ),或具有用于埋头孔应用的锥形头。我的零件类型说明
(来源:donsnotes.com)
我需要对它们进行分类,以便区分所有大小和类型。1-3 / 8“螺栓应分类为与1-1 / 2”螺栓不同,即使它们具有相同的直径和相同的头部类型。尺寸之间的最小长度差为1/8“,而不是标准的1/16”。
如果有问题,我可以很好地控制以下各项:
不幸的是,我找不到直接解决我需要做的任何在线论文或文章-但是很多文章都说明了一些简单的任务,例如找到彩色的球或找到矩形。在识别和分类大量(但)相似但形状各异的东西时,我找不到任何东西。我确实有两本建议的OpenCV书籍,尽管它们很棒,但它们似乎并没有解决这个问题。
我在示例图像上发现了非常干净的Canny边缘,但是由于光照,零件内部有很多噪点。这使得找到干净的Hough线段有点斑点。
我不确定是否应该尝试使用通过测量Canny边缘而计算出的绝对尺寸来缩减可能匹配的列表-然后使用更强大的功能(例如级联分类器)?或者是什么。
我真的只是在寻找某人对总体战略或正确方向观点的看法...
谁能给我一些开始尝试的东西?我真的很茫然。
谢谢!
根据我的经验,我会向您提出以下建议。您比我们大多数人都更了解如何手动分类,对吗?所以想一想当你分类时你的大脑会发生什么。假设,您从俯视图中看到一个圆形形状,那么现在您的问题变成了如何识别该形状?将此类问题发布在这里,对其他人来说会更容易。特征提取只不过是当你看到那个物体时大脑的想法。
对于这个问题,我建议您首先保留深色背景,以便有必要对该图像进行二值化。然后,如果它是俯视图,您可以看到圆形、六边形等。然后仅获取边缘。然后得到一个最小外接圆并得到它的直径。找到最小边界圆的算法和代码可以在这里获得。
就形状而言,我建议您采用该二值图像的梯度,然后仅在边缘点(您在顶视图中获得)计算该梯度的角度。该梯度的直方图将是您的特征向量。查看不同形状的条形图。如果你的大脑能够区分,那么你就可以考虑使用哪个分类器。我现在不想对此发表评论,因为它取决于很多事情,例如功能的分布、它们的可分离性以及最重要的速度要求。但现在不用担心分类器。
现在,让我们尝试解决高度问题。我假设您可以获得前视图,然后只需计算边界框(您可以从regionprops
MATLAB 中的函数获得)。
请注意,我只是想象和谈论所有这些事情。你必须首先按照我在第一段中所说的去做,然后看看答案的其他部分对你来说是否有意义。我假设您有一定的数学背景来理解这个答案中的某些术语。如果没有,请随时询问。
PS+1 这是一个好问题。
归档时间: |
|
查看次数: |
4181 次 |
最近记录: |