最近一个折腾死人的项目,用labview做二维码识别,照理来说很简单,直接调用labview 的 DM识别模块就可以,由于识别的二维码各种各样,出现各种各样的问题,记录一下。
逻辑,先飞拍,初始设置好阈值,二维码大小,比例,border占比,其他的都auto,然后识别不到的,加阈值减阈值再算一次,加ROI不加ROI再算一次;都拍不出来,相机回去重拍一次,左移右移再拍一次,调算法。
问题,对于灰底黑码的,产品表面有毛刺和不平的地方,导致打光不均,散点多,识别率低,而且由于掉了多次算法,莫名其妙非常卡顿。
将ROI取消,直接对照片进行识别,反而成功率识别率高于有ROI的情况,不知道什么原因。有时候又是有ROI的识别率高于无ROI的。
设置扫码高级参数,hightlight filter, line detect ,refine bondary,JNC ,arregresive。最佳效果是只把line detect打开。对于模糊的打开highlight。但可能导致速度变慢。其他的感觉影响不大,refine 和JNC很影响速度。
border 设置的越低,读码速度越慢
threshold越低,读码速度越慢
size 范围越大,读码速度越慢,甚至可能读不到
ratio 可以设置为1(对于正方形条码),比ratio设置为0速度要快一些。
图像处理,将图像做个乘积,效果要好一些,分析应该是增加了对比度,亮的变亮,暗的变亮没那么多。
gamma变换不敢随便做,不知道怎么自动设置最优,设置好一个参数,换个产品换个位置可能又不行了
换成蓝光低角度环形光源,二维码照片质量直线上升,可以扫出来,一次识别成功。偶尔出现不良现象,偶尔卡顿。
换产品,卡顿变严重,11阶高斯滤波,不卡顿,可识别。
但出现误码现象,一个码扫成了另一个码,将高斯滤波11阶改为5阶。并且只在其他方式没识别的时候调用。不确定重码误码是不是识别错了?当时没有专门重扫,只是改了后看效果好没有验证之前效果差的版本。
二维码如果很虚,识别效果很差,也很慢。慢的原因暂时未知。
vision 助手里面,可以直接suggest value ,自动捕捉合适的参数,不知道怎么在程序中调用这个方法。
重扫时,暂停,并重置,由于未重置相机的飞拍属性,导致还在软触发模式,导致相机一直软触发拍照,出现重码、大面积NG现象。
目前还有一个问题:UID串码。目前看是测试机没读到我的数据,出现NG,测试机直接忽略了?也有可能是出现NG,我的某个文件写错了??合并文件的某一个。居然是因为扫码扫出来一个/n换行符,文件直接换行了。我靠。