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