使用计算机视觉进行产品检测 - 使用 opencv 进行边缘检测
Posted
技术标签:
【中文标题】使用计算机视觉进行产品检测 - 使用 opencv 进行边缘检测【英文标题】:Product inspection with Computer vision - edge detection with opencv 【发布时间】:2016-10-12 05:22:51 【问题描述】:我是opencv的新用户。我目前正在做一个用opencv进行产品检查的项目。我打算提取好产品和坏产品的边缘,然后将它们的边缘与均方差进行比较。然而,作为第一步,清晰地提取边缘已经相当困难。
好样品:好产品 [![在此处输入图像描述][1]][1] 当我使用canny边缘检测时,好产品的边缘(图中蓝色部分)只包括部分产品,如下: 好产品的优势 [![在此处输入图片描述][2]][2]
我也尝试过使用adaptiveThreshold,让灰度图片更清晰,然后使用边缘检测。但是,由于噪声较多,检测到的边缘不如预期的好。
因此,我想寻求一种提取边缘的解决方案,或者用opencv比较好产品和坏产品的更好方法。抱歉上面的英语不好。
【问题讨论】:
最好的可能是获得更合适的照明和统一的背景 谢谢!如果我能成功提取出好产品和坏产品的边缘,我应该使用什么样的比较方法来进一步测试这两个边缘?如果我逐个像素使用平方差或直接差,由于图像偏移,这似乎是一个意想不到的差异。所以想问问有没有办法用opencv对齐两张图片,这样我可以直接提取或者用平方差来计算两张图片的相似度。 样本图片丢失 通常您首先必须匹配位置,例如使用单应性提取或 IPC。之后,您可以使用形状描述符或倒角匹配。 另外请提供劣质产品图片 【参考方案1】:如果像下面这样的一些假设是有效的,这个任务可以变得简单。例如:
-
产品沿着同一条生产线移动,因此所有产品图像的照明都保持不变。
产品位于平行于相机焦平面的平面上,因此物体的旋转将仅围绕镜头的轴。
可以控制照明(这将帮助您获得更好的边缘,并且实际用于生产线图像处理)
由于我们看不到您添加的图像,因此很难了解具体情况。但如果上述假设成立,图像差分结合图像签名是一种可能的方法。
另一种可能性是使用好产品和坏产品来训练 Haar Cascade 分类器。有了这个,边缘和所有的东西都将得到处理。但是您必须收集大量数据并训练分类器。
【讨论】:
非常感谢~我打算做的如下: 1.使用OPENCV模板匹配功能,好的产品作为模板。然后它将从测试图像中提取感兴趣的区域。听起来模板匹配功能可以确保两个图像对齐(方向)。 2.使用Opencv形状距离计算模板和测试图像之间的差异。由于我还在测试期,我不确定上述方法是否有效。 我使用了opencv Shape_example作为基础。我尝试使用 shape_example 代码比较相同的图像......但是,我观察到即使对于相同的图像也会出现不同的距离数......对于相同的图像比较,我期待 0 或非常接近于 0......源代码可以是找到:github.com/Itseez/opencv/blob/master/samples/cpp/…以上是关于使用计算机视觉进行产品检测 - 使用 opencv 进行边缘检测的主要内容,如果未能解决你的问题,请参考以下文章
计算机视觉·OpenCV使用Haar+Cascade实现人脸检测
如何在 OpenCV 中使用计算机视觉检测飞镖板上的飞镖? [关闭]