當前位置: 妍妍網 > 碼農

魔改ZXING源碼實作商業級DM碼檢測能力

2024-05-05碼農

什麽是DM碼

dataMatrix是一種二維碼,原名datacode,由國際資料公司於1989年發明。dataMatrix二維碼是一種矩陣式二維條碼,其發明的構想是希望在較小的條碼標簽上存入更多的資料量。dataMatrix二維碼的最小尺寸是目前所有條碼中最小的,適用於小零件的標識,商品防偽,以及直接印刷在實體上。

dataMatrix碼是一種矩陣式二維碼,其最大特點就是密度高,尺寸小,儲存資訊量大,其最小尺寸是所有條碼中最小的,可在僅僅25mm²的面積上編碼30個數位,dataMatrix二維碼采用復雜的錯誤更正碼技術,所以dataMatrix碼抗汙損能強,特別適用於小零件標識,商品防偽,電路標識等

ZXING條碼庫

ZXing-CPP是一個用C++實作的開源、多格式一維與二維條形碼影像處理庫。它最初是從Java ZXing庫移植而來的,但經過進一步開發,現在在執行時和檢測效能方面有了許多改進。它可以讀取和寫入多種格式的條形碼。包括工業DM碼、RQ碼、以及其他常見的各種一維條形碼。最新的ZXING2.2版本, 支持旋轉、反色、映像、二值、多尺度解碼 。源碼地址:

https://github.com/zxing-cpp/zxing-cpp

編譯與生成支持:

cmake-S . -B build -DCMAKE_BUILD_TYPE=Release -A x64cmake--build build -j8 --config Release -A x64

深度客製

DM解碼過程主要是由定位、預處理、解碼這三個部份組成,定位的精準度直接決定了解碼難度與解碼速度,我們采用了傳統影像分析與深度學習物件檢測兩種方式實作了精準的DM定位;預處理根據我們的大量數據積累發現三種手段最為有效分別是 形態學、二值化、降噪濾波 ,所以在預處理階段我們基於OpenCV實作了這三種預處理方式,大大提升了解碼效率與精度;解碼最主要的是要考慮容錯性,很多商業級別的DM庫容錯性很強,這個方面ZXING有短板,透過我們大量數據測試與對ZXING源碼的修改實作了這個部份提升,大大提升ZXING解碼能力。

基於ZXING+OpenCV我們實作了三種不同的DM解碼策略分別是快速、平衡、最佳化,提供了一套完整的界面參數與SDK,基於QT開發的解碼套用演示如下:

對比測試

測試對比一些線上收費的商業庫的DM碼解碼能力,結果如下:

可以看到我們基於ZXING+OpenCV深度客製條碼檢測庫DM碼的能力已經完全超越了網上線上收費的商業庫解碼能力,對比Halcon、VP等主流工業級收費庫,我們也是毫不孫色,在伯仲之間。

這個解碼庫前後歷經了快三年時間打磨與測試,從2021年開始到今天2024年,在不斷打磨中解碼能力不斷提升。

系統化學習直接掃碼檢視

推薦閱讀