可以處理模糊條碼的一維barcode解碼算法(blur barcode decoding)part 1


 

新人報道。。。

開個玩笑。瓜農叔叔帶你們收割,請大家准備好裝備,大炮一定要記得帶着。。。

  之前看過很多關於一維條碼的算法,但效果都不行,也下過很多開源庫,比如ZXing和Zbar,但這兩個對於模糊條碼的處理基本沒作用。因為大部分的時候一維條碼的算法用於移動終端較多,基於圖像的這種處理方式,會有個比較明顯的缺點,就是一般的算法只能在攝像機聚焦后才能解碼,也即只有在獲取清晰地圖像之后才能解碼。但攝像機的聚焦需要時間,快則1-2秒,慢則3-4秒,再加上解碼以及鏡頭調整的時間,會導致這款應用的用戶體驗很差。

  之所以在這里說這么多廢話,是給那些新同學看的,老同學就算了。你們可以忽略上述廢話。

這里提到的模糊條碼是指攝像機沒有聚焦的情況下,導致攝像機拍出的圖片或者視頻流中的條碼部分不清晰。如下圖所示:

                                        

                                                                                                   圖 1

 

 

  ZXing和ZBar是無法解碼上述圖像的,因為仔細看了他們的代碼就可以知曉一二了,他們的處理就是從圖像中找出一條穿越整個條碼的線(或者幾條取平均值)。這樣的處理就等於默認圖像是清晰的。但圖像如上圖一所示時,這兩個算法就顯得無能為力了。在做這個算法之前,我也對此很是苦惱。(這就等於說你需要半年或許更久去研究新的算法並自己實現)。目前市場上比較流行的有我查查、redlaser(已經被ebay收購),這兩個應用是可以掃描模糊的條碼的。有興趣的同學可以去下載玩玩看。但這兩個應用對他們的算法細節只字未提,redlaser對開發者而言是可以購買的,具體的金額不太記得了,貌似挺貴的,是按照你的應用被多少終端使用來計算的,貌似需要0.06美元一個,也就是用戶每次下載一個你的應用,你就需要向redlaser支付0.36RMB,其實這還是挺貴的。如果你的應用下載次數為一百萬,那么就需要向他支付36萬RMB,當然,作為一款這樣的應用,如果只被下載一百萬次,那么你的盈利肯定是不多的。據說我查查已經有一千兩百萬用戶了,而redlaser在全球有2億設備在使用。

  扯遠了,回歸主題。看了很多論文,但是真正有用的卻屈指可數,於是找了一篇實現了下,感覺效果還不錯,大體上已經脫離opencv了,但是條碼定位部分還沒將opencv的源碼摳出來,現在也懶得做,因為手機端只要一個窗口對准條碼部分就行了,這部分做只是浪費時間而已。文章名為"Reading 1-D Barcodes with Mobile Phones Using Deformable Templates",大致意思就是使用可變模型在手機上面進行以為條形碼的解碼,翻譯的不太好,望見諒。

  文章的大體就是介紹一維條碼的解碼算法。重點就是算法使用的是full gray-level information,也就是說並不進行二值化(binarize)。將穿越條碼的一條或者幾條線拿出來做分析,並進行模板匹配,當然還有一些如何使得接觸的碼是正確的條碼數字的算法。

  可恨的是文章給出的算法還是有很多缺陷的,比如對於光照比較強烈的時候導致的大光斑,如圖2所示:

                           

                                                                                                  圖 2

  圖2所示的這些圖片使用正常的算法是很難解碼的, 使用上述文章的算法也比較困難。因此本人在實現算法的基礎上加了一些其他的東西,比如如何將這些光斑去除,以及球面圖像的校正算法。當然對於整個的框架作用並不是那么巨大。只是錦上添花的作用而已(這部分的功能暫不完整,還在處於調試的階段)。

  很晚了,叔叔要睡覺了。明天繼續part2。將會講解一下關於算法的知識。

  轉載請注明出處,否則追究版權責任!

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM