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

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

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

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

 

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

 

我分析的原因如下:

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


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

 

按此思路,Halcon编写的解码示例代码如下:(只贴出了关键部分)

Length := 0
DecodedDataStrings := []
for min_gray := 0 to 30 by 3
    for max_gray := 255 to 180 by -7
        *色阶映射,增强图像对比度
        scale_gray_map (Image, Image2, min_gray, max_gray) 
        find_data_code_2d (Image2, SymbolXLDs, hv_DataCodeHandleQR, [], [], ResultHandles, DecodedDataStrings)
        tuple_strlen (DecodedDataStrings, Length)
        *字符串大于5应该就是解出来了,当然这里只是简单判断
        if (Length > 5)
            break
        endif       
    endfor
    
    if (Length > 5)
        break
    endif
endfor

disp_message (3600, '解码结果:' + DecodedDataStrings  , 'image', 100, 12, 'black', 'true')

我设计了两层for循环,逐渐提高图片Image的对比度,然后在新图Image2上解码。

注意:两层for循环的步长不宜过小(我设计的步长分别是3和-7),不然循环的次数太多,速度太慢。

 

至于函数scale_gray_map (Image, Image2, min_gray, max_gray) 是一个根据色阶映射增强图像对比度的函数,实现方式参考:https://www.cnblogs.com/xh6300/p/7512532.html

 

示例代码中是通过模拟不同曝光的思路提高解码成功率,当然也可以选择在解不出来时通过set_data_code_2d_param重新设置新的解码参数的思路来提高解码成功率。


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864