1. 程式人生 > >機器視覺中提高解碼成功率的思路分析

機器視覺中提高解碼成功率的思路分析

以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解碼時,對於難解的碼我們可以用類似思路:一次不成,再換個引數再解一次;或者改變相機曝光重新拍一張,再解一次。(變換工業相機位置拍攝不太現實,不考慮)