新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 采用DSP56F826芯片的二維條碼掃描器系統介紹

        采用DSP56F826芯片的二維條碼掃描器系統介紹

        作者: 時間:2012-06-26 來源:網絡 收藏

         電源控制電路

        本文引用地址:http://www.104case.com/article/148851.htm

          輸入5V的直流電作為整個的電源。由于圖像傳感OV7120使用5V電源,MAX202E用5V電源,外部SRAM用3.3V電源, Core用2.5V電源,而 的I/O口用3.3V電源,所以電源分三路輸出。

          照明控制電路

          主動光源,用三個發光二極管給條碼采集提供照明,便于圖象的定標。當開始采集圖象數據時,DSP輸出一控制信號,驅動發光二極管工作。采集結束后,在DSP控制下停止工作。

          部分電路圖示于圖3。

          

          圖3 部分硬件電路圖

          軟件設計

          開始工作時,首先采集圖象數據,由于實際工作中條碼圖象會出現污損等情況,對碼字的正確譯出造成影響,所以必須對采集到的圖象進行降噪、校正等處理。條碼圖象為灰度圖象,對其進行二值化才能進行碼字識別。在將PDF417碼的所有碼字正確分割后,以查表方式在碼本中查找與碼字相對應的值,將編碼數據譯出。為確認掃描的有效性,必須進行前向錯誤校驗。如出錯,則進行糾錯。最后,將譯碼的正確數據傳輸到上位計算機或直接進行處理顯示。軟件框圖如圖4所示。

          降噪處理

          圖象采集OV7120成像速度為30幀/秒,但是在實際操作過程中,會有人手抖動、條碼圖象移動等情況產生,采集時間過長,就會導致每幀圖象之間的差別相當大,進而造成很大的識別誤差,所以在每一次掃描時,我們只取三幀圖象,所用時間為 :(1 / 30 ) × 3 = 0.1 s ,可以忽略人手抖動等影響。設采集到的三幀圖象為I1 (x , y) 、I2 (x , y) 、I3 (x , y) , 每幀的噪聲方差為σ2,取平均可得到:

          I (x , y) = I (x , y)的噪聲方差為σ2/3 。

          可見此方法可以有效降噪。我們不常見的中值濾波、Butterworth濾波等方法,是因為一個碼字占有3、4個像素點,用中值或Butterworth濾波處理污損的圖象,將對圖象造成結構性的破壞。

          圖象二值化

          首先統計出圖象的直方圖,然后用Bayesian最佳分類器,確定最佳二值化門限電平,實現對圖象的二值化處理。此二值化門限電平必須是動態調整的,因為每次的光照等外界條件是不同的,每掃描一次條碼,就必須確定一個新的二值化門限電平。動態采集到的條碼圖象有300K像素點,但只需要取圖象中間區域進行統計直方圖,取中間的64×64個像素點,平均每統計一個像素點需要2個指令周期,可算得統計直方圖總共需要64×64×2=8192個指令周期。確定二值化門限電平需要約2000個指令周期,由此可計算所用時間約為:(8192+2000)/ 40000000 = 0.00025 s。

          碼字識別與信號糾錯

          在碼字分割完成之后,模板匹配方式,在固定的碼本中查找與碼字相對應的值,將碼字譯出。這里不需要用到神經網絡,因為PDF417碼字模式非常標準,用簡單的模板匹配即可完成,不需復雜化。對一個碼字進行模板匹配需要8000個指令周期,平均每個二維條碼包含500個碼字,則進行模板匹配總共需要時間為:8000×500 / 40000000 = 0.1 s 。為確保譯碼的有效性,使用R-S錯誤控制碼對碼字進行檢錯和糾錯,每個碼字的檢錯和糾錯需要用100個指令周期,所以總共需要100×500 / 40000000 = 0.00125 s的時間來完成二維條碼數據糾錯。

          結語

          所設計的二維條碼為系統核心,采用優化算法,可以快速高效地對二維條碼進行識別處理。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 微山县| 广德县| 恭城| 视频| 合肥市| 澳门| 宣汉县| 应城市| 澄江县| 富平县| 仲巴县| 临湘市| 博兴县| 祁阳县| 万载县| 江都市| 武威市| 榕江县| 响水县| 库车县| 祁门县| 扶余县| 贵港市| 治多县| 奉化市| 绥宁县| 彭州市| 昔阳县| 锡林浩特市| 湛江市| 贵州省| 白沙| 环江| 肥乡县| 乌兰县| 理塘县| 万源市| 鱼台县| 滨州市| 河间市| 巫山县|