binaimei2007 发表于 2016-3-10 17:16:22

关于opencv检测丝印缺陷的方法求助

本帖最后由 binaimei2007 于 2016-3-10 19:10 编辑

        小弟最近遇到一个活,是要求检测丝印后的外壳上丝印是否有缺损等瑕疵,是利用工业CCD相机拍摄,本想根据每次
   拍摄图片的位置不变来与标准模板做像素间的比对,但是最后发现这种方法不切实际,因为每次拍摄的位置都会有或多或少的
差别。最后又想用opencv来做轮廓的匹配检测,但是发现效果也不好,在此求教各位,有没有什么好的方法或思路,谢谢。
丝印图片如下:


------------------------------------------------------------------------------------------
以下添加于2016年3月10日19:11:20

谢谢各位的回复,从各位的回复中我暂时想到了以下方法:

1.对分割后的图像做闭操作(应为有的丝印不是整体连在一块的,做闭操作有利于后面最小矩形的获取)
2.对闭操作后的图像获取外接矩形
3.以外接矩形的中心旋转图片()
4.以外接矩形的中心截取和标准模板一样大小的图片
5.将截取后的图片与模板进行像素比对
6.如果差值太大,则改变旋转角度,重复3,4,5步,如果在正负5°内,像素比对差值太大就认为有缺损


以上算法都建立在拍摄的图片只有少许的旋转和位置偏移,没有大小的变化。
数学学的差,根本不知道怎么用数学知识解决此问题。用以上的土方法,还请大家指教一下,谢谢

rainbow 发表于 2016-3-10 17:27:34

参考一下别人的AOI吧。

huangguimina4 发表于 2016-3-10 17:28:00

我的思路是旋转图片不断跟跟标准版做像素减法,最后统计相减后的剩余像素。最少的就是最标准的

binaimei2007 发表于 2016-3-10 17:35:56

rainbow 发表于 2016-3-10 17:27
参考一下别人的AOI吧。

谢谢老陈,我也在网上找了相关算法,找到的都是论文,太高深了。。。

binaimei2007 发表于 2016-3-10 17:37:52

huangguimina4 发表于 2016-3-10 17:28
我的思路是旋转图片不断跟跟标准版做像素减法,最后统计相减后的剩余像素。最少的就是最标准的 ...

谢谢你的回复,你这个方法也不错,我得找到丝印的中心,然后才好旋转,但是怕旋转也会丢失数据

yj_yulin 发表于 2016-3-10 17:43:20

抓特征值,数学建模后才好处理, 把问题放进数学,问题可能会比较直观点

huangguimina4 发表于 2016-3-10 18:00:40

binaimei2007 发表于 2016-3-10 17:37
谢谢你的回复,你这个方法也不错,我得找到丝印的中心,然后才好旋转,但是怕旋转也会丢失数据 ...

这个好做,找到最小外接矩形,然后就可以得到旋转中心啦

ffbiao 发表于 2016-3-10 18:14:23

使用Halcon做,稳定

475627406 发表于 2016-3-10 21:25:33

你上个标准图和缺陷图片看看
如果是halcon,find_shape自带score参数
先把相机标定了,左边那个,直接用外接矩形定位,然后转换到参考图像的同一位置,二值,再处理下做减运算?
如果只是多印和少印,直接开闭运算

codefish 发表于 2016-3-10 21:29:56

学习一下,我对视觉也有兴趣

hmd420304805 发表于 2016-3-11 08:33:36

先用halcon做出来,在吧主要思想用OPENCV来实现。
这样速度快很多,HALCON的可视化视觉开发环境非常直观高效!
页: [1]
查看完整版本: 关于opencv检测丝印缺陷的方法求助