机器视觉中提高解码成功率的思路分析

以Halcon为例,一般解码的步骤为:创建解码模型——设置解码参数——执行解码——清除模型回收内存。如下所示:

1 create_bar_code_model ([], [], BarCodeHandle)
2 set_bar_code_param (BarCodeHandle, 'num_scanlines', 30)
3 find_bar_code (Image, SymbolRegions1, BarCodeHandle, ['Code 128','Code 39'], BarCodeStrings)
4 clear_bar_code_model (BarCodeHandle)

我们一般会在“设置解码参数”这个步骤里面做文章。例如设置多个参数,以达到解码成功率高且解码速度快的目的。这个只是常规思路,我今天并不想讲这个,而且这种思路有局限:有时候无论你参数设置得多么合理,就是死活解不出来码。

不知大家有没有这样的体验:生活中我们经常用手机去扫二维码,有时候我们第一次扫不上,但是变动手机位置或者打开闪光灯重复扫,最终基本都能扫出来(解码成功)。

我分析的原因如下:

质量高的码Halcon解码一般仅需几毫秒,日常生活中手机解码如果需要一秒左右,那可以推测其实手机是用了多次解码的方式,一次不成功再来一次,因为手机可以多次对焦曝光拍照用于解码,并且可以变换手机的位置来解码。由于单次解码时间很短,因此就算是多次解码,手机扫码看起来也像是一次性成功的。


用Halcon解码时,对于难解的码我们可以用类似思路:一次不成,再换个参数再解一次;或者改变相机曝光重新拍一张,再解一次。(变换工业相机位置拍摄不太现实,不考虑)

猜你喜欢

转载自www.cnblogs.com/xh6300/p/9809692.html