通過前兩期對掃碼設備及掃碼引擎的介紹,相信大家對掃碼硬件的組成有了較為深入了解。然而完整的掃碼識讀過程除了需要掃碼硬件作為載體,還需要軟件算法支撐才能發揮其功能和作用。本期我們以常見的二維碼:QR碼為例,對掃碼識讀過程中的軟件處理環節進行簡要介紹。
一、圖像處理和解碼是掃碼識讀的核心
掃碼設備工作時,通過圖像傳感器(攝像頭模塊)掃描采集圖像,并通過光電、模數等電路的轉換,將采集的圖像信息傳送到處理器進行圖像處理、解碼,最終輸出到顯示設備。
▲掃碼設備的工作原理
在整個掃碼識讀過程中,圖像處理和解碼是核心。以碼靈半導體CFW32C7UL系列應用掃碼設備為例,主控處理器CFW32C7UL芯片通過DVP或MIPI接口從圖像傳感器接收到采集的圖像信息后,經過軟件算法的圖像預處理和解碼過程實現圖
像識別。
▲7UL系列作為高端掃碼設備的主控處理器芯片
二、圖像預處理必要性及過程
由于采集圖像時的外部環境限制(如光線明暗、圖像遠近、圖像角度、圖像平整度不同、圖像潔凈度、圖像完整度、圖像扭曲度等,圖像傳感器分辨率不同,光電轉換電路不同等),導致采集到的圖像往往并非解碼所需的理想圖像。要使采集到的圖像可被解碼模塊所識別,需對采集的原始圖像進行必要的處理,這部分工作我們稱之為圖像預處理。解碼前的圖像預處理過程,是掃碼設備軟件處理中必不可少的環節。
常見的解碼圖像預處理流程包括圖像灰度化、降噪濾波、二值化、圖像定位、圖像剪切、圖像旋轉、幾何校正、網格建立等內容,這些過程均通過軟件算法來實現,且算法的優劣決定著處理速度的快慢。通常在完成圖像網格建立后,便可進行圖像的識別與解碼。
▲圖像預處理流程圖
1、灰度化
圖像傳感器采集到的圖像多是彩色的,而在掃碼設備的解碼應用中,實際只需亮度信息即可。對圖像進行灰度化處理,將彩色圖像變為灰度圖像,不僅可節省存儲空間也可提高后期的圖像處理速度。
彩色轉亮度的計算方式常用 Y = 0.30R+ 0.59G+0.11B來實現,對于使用碼靈半導體7UL系列處理器而言,其ISP模塊在接收到圖像數據后可通過硬件方式直接輸出Y圖格式,方便后續處理。
▲圖像灰度化
2、降噪濾波
在用圖像傳感器和中間電路獲取圖像信息的過程中不可避免的會引入噪聲,噪聲種類很多,如高斯噪聲、脈沖噪聲,均勻分布噪聲等,針對不同噪聲需做不同的去噪處理,常涉及空域濾波、頻域濾波等。空載濾波常用中值濾波、頻域濾波常用高斯濾波,其中中值濾波的算法復雜度低,而且具有良好的去噪和邊緣保持效果。
3、二值化
圖像進行二值化時,充分考慮了圖像中可能存在光照不均的情況,如采用大津算法完成圖像分割中閾值選取,達到不受圖像亮度和對比度影響的效果,解決光照不均對圖像的影響。
▲二值化前后對比
4、定位剪切
通過使用索貝爾竺算法進行邊緣檢測,對二維條碼區域進行初步定位,確定圖碼坐標位置,并對該區進行剪切,去除大部分無關背景信息,提高后續流程中的處理速度和識別率。
▲像定位剪切
5、圖像旋轉與幾何校正
若采集到的圖像存在變形和角度不符合處理預期的情況,在程序中可根據尋像定位點之間距離和角度,通過計算獲得圖像位置,之后對圖像進行必要的角度旋轉,再通過檢測判斷畸變情況,選擇適當算法進行幾何校正即可得到規整的符合預處理的圖樣。
▲位置探測圖形的結構
上圖所示為位置探測圖形結構,通過QR碼的右上、左上、左下三個角的位置,可以計算出該QR碼的位置坐標。
▲圖像翻轉校正
6、建立網格
在獲取規整圖像區域后,參考尋像圖中的寬度信息可對圖像進行網格劃分。網格建立后,便可對圖形中包含的位信息進行獲取,為后續根據編碼協議提取有效信息和解碼做好準備。
▲對圖像進行網格化
三、圖像解碼過程
掃碼得到的圖像經過預處理的網格化后,便可對圖像中的內容進行位信息的提取,我們仍以QR碼為例進行說明。
▲QR碼符號的結構
上圖所示為QR符號的圖形結構(摘自國標GBT-18284 20000)。從圖中可以看出QR碼信息所包含的內容塊,通過對不同塊的解析即可獲取各部分的詳細信息。
下圖所示為QR碼的基本譯碼步驟:
▲QR碼譯碼步驟
以上所述的圖像預處理與譯碼過程是掃碼設備實現識讀的共有流程,有較強的代表性。不同的設備廠商由于其技術水平不同,特別是在預處理環節,優秀的處理算法在同樣硬件和外部環境條件下,其掃碼解碼過程所用時間可能僅為普通算法的幾十分之一,可見軟件處理算法對解碼速度具有明顯的影響。
文中主要以QR碼識讀過程為例進行介紹,其它碼制的處理過程與其基本一致,并有相應的標準文件可進行參考。
四、開源解碼軟件
為方便業余愛好者學習解碼方面軟件,目前網上也有不少相關的開源算法,這里給大家推薦的一款是zbar開源解碼算法。zbar算法是現在網上針對條形碼,二維碼檢測的開源算法,可識別大部分種類的一維碼(條形碼)和二維碼,比如I25,CODE39,CODE128,QR等,可從http://zbar.sourceforge.net/獲取相關源碼包,并可方便的移植到嵌入系統設備上。
通過本期和前兩期的介紹,相信大家對碼靈半導體CFW32C7UL系列在高端掃碼設備中的應用有了較為全面的了解,后續我們將結合更多的應用場景與大家進行交流,我們下期見!
本期作者:陳紹景、梁夢雷、謝耀華、劉悅臻、謝劍杰
-
芯片
+關注
關注
454文章
50460瀏覽量
421971 -
mcu
+關注
關注
146文章
17019瀏覽量
350373 -
MPU
+關注
關注
0文章
348瀏覽量
48738
發布評論請先 登錄
相關推薦
評論