采用DSP56F826芯片的二維條碼掃描器系統(tǒng)介紹
電源控制電路本文引用地址:http://www.ex-cimer.com/article/148851.htm
輸入5V的直流電作為整個(gè)系統(tǒng)的電源。由于圖像傳感芯片OV7120使用5V電源,MAX202E用5V電源,外部SRAM用3.3V電源,DSP56F826 Core用2.5V電源,而DSP56F826 的I/O口用3.3V電源,所以電源分三路輸出。
照明控制電路
采用主動(dòng)光源,用三個(gè)發(fā)光二極管給條碼采集提供照明,便于二維條碼圖象的定標(biāo)。當(dāng)開(kāi)始采集圖象數(shù)據(jù)時(shí),DSP輸出一控制信號(hào),驅(qū)動(dòng)發(fā)光二極管工作。采集結(jié)束后,在DSP控制下停止工作。
系統(tǒng)部分電路圖示于圖3。
圖3 部分硬件電路圖
系統(tǒng)軟件設(shè)計(jì)
二維條碼掃描器開(kāi)始工作時(shí),首先采集二維條碼圖象數(shù)據(jù),由于實(shí)際工作中條碼圖象會(huì)出現(xiàn)污損等情況,對(duì)碼字的正確譯出造成影響,所以必須對(duì)采集到的圖象進(jìn)行降噪、校正等處理。條碼圖象為灰度圖象,對(duì)其進(jìn)行二值化才能進(jìn)行碼字識(shí)別。在將PDF417碼的所有碼字正確分割后,以查表方式在碼本中查找與碼字相對(duì)應(yīng)的值,將編碼數(shù)據(jù)譯出。為確認(rèn)掃描的有效性,必須進(jìn)行前向錯(cuò)誤校驗(yàn)。如出錯(cuò),則進(jìn)行糾錯(cuò)。最后,將譯碼的正確數(shù)據(jù)傳輸?shù)缴衔挥?jì)算機(jī)或直接進(jìn)行處理顯示。軟件框圖如圖4所示。
降噪處理
圖象采集芯片OV7120成像速度為30幀/秒,但是在實(shí)際操作過(guò)程中,會(huì)有人手抖動(dòng)、條碼圖象移動(dòng)等情況產(chǎn)生,采集時(shí)間過(guò)長(zhǎng),就會(huì)導(dǎo)致每幀圖象之間的差別相當(dāng)大,進(jìn)而造成很大的識(shí)別誤差,所以在每一次掃描時(shí),我們只取三幀圖象,所用時(shí)間為 :(1 / 30 ) × 3 = 0.1 s ,可以忽略人手抖動(dòng)等影響。設(shè)采集到的三幀圖象為I1 (x , y) 、I2 (x , y) 、I3 (x , y) , 每幀的噪聲方差為σ2,取平均可得到:
I (x , y) = I (x , y)的噪聲方差為σ2/3 。
可見(jiàn)此方法可以有效降噪。我們不采用常見(jiàn)的中值濾波、Butterworth濾波等方法,是因?yàn)橐粋€(gè)碼字占有3、4個(gè)像素點(diǎn),用中值或Butterworth濾波處理污損的圖象,將對(duì)圖象造成結(jié)構(gòu)性的破壞。
圖象二值化
首先統(tǒng)計(jì)出圖象的直方圖,然后用Bayesian最佳分類器,確定最佳二值化門限電平,實(shí)現(xiàn)對(duì)圖象的二值化處理。此二值化門限電平必須是動(dòng)態(tài)調(diào)整的,因?yàn)槊看蔚墓庹盏韧饨鐥l件是不同的,每掃描一次條碼,就必須確定一個(gè)新的二值化門限電平。動(dòng)態(tài)采集到的條碼圖象有300K像素點(diǎn),但只需要取圖象中間區(qū)域進(jìn)行統(tǒng)計(jì)直方圖,取中間的64×64個(gè)像素點(diǎn),平均每統(tǒng)計(jì)一個(gè)像素點(diǎn)需要2個(gè)指令周期,可算得統(tǒng)計(jì)直方圖總共需要64×64×2=8192個(gè)指令周期。確定二值化門限電平需要約2000個(gè)指令周期,由此可計(jì)算所用時(shí)間約為:(8192+2000)/ 40000000 = 0.00025 s。
碼字識(shí)別與信號(hào)糾錯(cuò)
在碼字分割完成之后,采用模板匹配方式,在固定的碼本中查找與碼字相對(duì)應(yīng)的值,將碼字譯出。這里不需要用到神經(jīng)網(wǎng)絡(luò),因?yàn)镻DF417碼字模式非常標(biāo)準(zhǔn),用簡(jiǎn)單的模板匹配即可完成,不需復(fù)雜化。對(duì)一個(gè)碼字進(jìn)行模板匹配需要8000個(gè)指令周期,平均每個(gè)二維條碼包含500個(gè)碼字,則進(jìn)行模板匹配總共需要時(shí)間為:8000×500 / 40000000 = 0.1 s 。為確保譯碼的有效性,使用R-S錯(cuò)誤控制碼對(duì)碼字進(jìn)行檢錯(cuò)和糾錯(cuò),每個(gè)碼字的檢錯(cuò)和糾錯(cuò)需要用100個(gè)指令周期,所以總共需要100×500 / 40000000 = 0.00125 s的時(shí)間來(lái)完成二維條碼數(shù)據(jù)糾錯(cuò)。
結(jié)語(yǔ)
所設(shè)計(jì)的二維條碼掃描器用DSP56F826芯片為系統(tǒng)核心,采用優(yōu)化算法,可以快速高效地對(duì)二維條碼進(jìn)行識(shí)別處理。
評(píng)論