《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 設計原理:如何在小尺寸DSP上實現2D條形碼解碼
設計原理:如何在小尺寸DSP上實現2D條形碼解碼
摘要:  條形碼一般被用于將關鍵的字母數字信息轉換為數字系統能夠掃描和讀取的符號信息,而無需每次都要將信息錄入數字系統。
Abstract:
Key words :

 

  條形碼一般被用于將關鍵的字母數字信息轉換為數字系統能夠掃描和讀取的符號信息,而無需每次都要將信息錄入數字系統。

  1D(一維)條形碼只能對數字數據進行編碼,在過去二十年中主要用于產品運輸和追蹤、系統安全、超市等場合。使用 2D(二維)條形碼,數據在水平和垂直方向被編碼為 2D 符號,如下圖 1 所示。

  2D 符號所能包含的數據量遠大于 1D 符號。2D 條形碼解決方案可比傳統 1D 條形碼提供更大的信息密度,特別是對于那些需要對精密信息而不是簡單的碼信息進行編碼的應用。

  2D 條形碼技術的一些應用包括產品標簽、產品信息追蹤和檢驗、移動安全、出入境檢查服務、醫療保健和電子商務等。

  圖 1:2D 條形碼示例

  如今存在很多 2D 條形碼算法,這催生出采用不同條形碼技術的一系列應用。一般來說,有兩種類型的 2D 條形碼:1) 堆疊式 2D 條形碼,例如 PDF417 和 Code 49,2) 矩陣式條形碼,例如 QR 碼和數據矩陣。在這篇文章中,我們僅限于討論數據矩陣式條形碼技術[2]。

  2D 數據矩陣式條形碼技術

  2D 數據矩陣式條形碼包括在正方形或長方形中排列的黑色和白色模塊,如圖 1 所示。編碼數據位映射到黑色和白色模塊(或單元)組成的區域,稱為數據區域。關于 2D 數據矩陣式條形碼所支持的不同類型的編碼方案的詳細信息,請參見參考文獻[2]。

  數據區域由定位圖形包圍(定位圖形的底部和左側只包含黑色模塊,而定位圖形的上部和右側由交替的白色和黑色模塊組成)。數據矩陣 2D 條形碼支持由排位圖形分隔的多個數據區域,從而能容納更多數據信息。

  有兩種版本的數據矩陣,一種是基于循環冗余校驗(CRC)和卷積糾錯,另一種是基于里德所羅門(RS)糾錯。對于掃描、讀取和提取數據位,基于 CRC 與基于 RS 的數據矩陣解碼沒有區別。提取數據位之后,基于 CRC 的解碼與基于 RS 的解碼路徑不同,因為它們的交織和糾錯方法不同。

 

  圖 2:2D 條形碼掃描器框圖和 DSP 處理內核

  這里我們考慮在小尺寸 Blackfin 處理器上對新興的基于 RS 碼的 2D 數據矩陣式條形碼進行解碼。通過 PPI-DMA 通道連接到 DSP 處理器的 2D 條形碼掃描器的框圖如上面圖 2 所示。

  在小尺寸 DSP 上實現條形碼

  傳感器對條形碼進行掃描并將像素數據通過并行端口接口(PPI)傳輸給 DSP。之后,DSP 處理器處理圖像像素并提取數據區域中黑色和白色模塊對應的數據位,然后進行糾錯。從掃描的 2D 條形碼的特定數據區域提取數據位的過程如下面圖 3 所示的流程圖。

 

  圖 3:從 2D 數據矩陣符號提取數據位的流程圖

  我們將 2D 數據矩陣式條形碼看做大小為 M x N 的圖像(通常是 QVGA 或 VGA 圖像)并進行處理。相機的 CMOS 傳感器捕獲圖像并將圖像像素傳輸給 DSP 進行處理。

  現在的問題是,需要多大的存儲器來保存處理過程中的圖像?例如,以 VGA(即 640x480)為例,我們需要大約 300 kB 的數據存儲器來保存捕獲到的圖像。處理器內核的尺寸取決于其包含的存儲器的數量。

  特別是 L1 高速存儲器,它占用更多的硅面積,總成本也更高。因此,大多數處理器包含非常有限的 L1 存儲器。

另一方面,L2 或 L3 存儲器通常有較大的容量,占用較小的面積,成本也較低。然而,它們速度較慢,需要通過 DMA 與處理器的工作存儲器(L1)進行數據傳輸。

  接下來我們將討論用 Blackfin 系列的兩款不同處理器實現數據矩陣 2D 條形碼在,其中一款具有 16 kB 的 L1 和較大 L2/L3 存儲器,另一款只有 16 kB 的 L1 存儲器。

  對于帶有 L2 和 L3 存儲器的處理器,捕獲的圖像通過 DMA 和 PPI 接口傳輸到 L2 存儲器。然后通過將少量圖像像素同時從 L2 移動到 L1 存儲器,來對 2D 條形碼中提取的數據位進行處理。在這種情況下,我們使用另一個 DMA 進行 L1 和 L2 之間的數據傳輸,整體解碼很簡單也不復雜。

  在另一方面,如果僅有少量的 L1 存儲器,并且沒有 L2/L3 存儲器,那么問題就相當棘手。在這種情況下,我們對同樣的條形碼要進行更多的掃描,并將目標區域(ROI)通過適當設置的 PPI-DMA 通道傳輸到 L1 存儲器進行處理。

  雖然這個系統設置起來很復雜,但其成本和尺寸與前一個例子相比要小。接下來,我們將討論使用上面提到的兩個處理器實例對 2D 數據矩陣式條形碼進行解碼的技術。

  用 L2 存儲器實施

  在這種情況下,經掃描的所有圖像通過 PPI-DMA 通道被讀入 L2 存儲器,采用另一個存儲器 DMA 通過訪問 L2 中的部分圖像對其進行處理。如下圖 4(a)所示。

  圖 4:用小尺寸 Blackfin 處理器進行 2D 條形碼解碼,

  (a)具有 L2/L3 和 L1 存儲器,(b)僅有 L1 存儲器。

  采用 OmniVision CMOS VGA 傳感器[3],我們逐行獲得像素數據和控制信號、HREF(水平基準輸出)、VSYNC(垂直同步輸出)和 PCLK(像素時鐘輸出)。PPI-DMA 通道以 27 MHz 時鐘速率將像素讀入 L2 存儲器。在這種情況下,DMA 設置很簡單,因為我們在單次掃描中讀取整個圖像。

  我們基本上遵循上面圖 3 所示的流程圖來從數據矩陣式條形碼模塊中提取數據位。如果在掃描的圖像中存在任何方向,我們能夠糾正方向和偏差,因為我們在 L2 存儲器中有全部圖像。

  現在,我們假設圖像被正確掃描,沒有任何方向和偏差。首先,我們將數據矩陣式條形碼定位圖形的頂部幾行和右邊幾列從 L2 移入 L1 存儲器。在測量定位圖形中模塊的平均高度和寬度后,我們為定位圖形所有頂部和右邊模塊的中點做標記,將中點像素位置的 x 和 y 坐標值存入存儲器,留作以后使用。無 L2 或 L3 存儲器無 L2/L3 存儲器時,我們直接將圖像讀入 L1 存儲器。由于 L1 存儲器空間有限,我們一次

  直接讀取整個圖像到 L1 存儲器中。如上圖 4(b)所示。

  在這種情況下,進行條形碼解碼時我們要多次掃描圖像。使用 PPI 延遲和 PPI 計數寄存器,定位圖形模塊像素的頂部幾行和右邊幾列在一次掃描中被讀入 L1 存儲器。在這種情況下需要更多地 DMA 編程,因為我們需要從掃描器輸出將所選的圖像像素通過PPI-DMA 通道讀入 L1 存儲器。我們找到定位圖形模塊的大小及其中點位置坐標,并將其存儲起來為將來使用。

  在圖像有細微方向或偏離時,我們讀取多行像素來糾正方向或偏差。這里,我們逐行進行圖像處理,因為我們沒有完整的圖像。從數據矩陣式條形碼中提取數據位我們遵循下半部分流程圖(如之前圖 3 所示),從數據矩陣式條形碼黑色和白色模塊中提取位信息。

  這里,我們假設數據矩陣包含有黑色和白色模塊組成的單一數據區域。我們知道,有了定位圖形模塊的中點位置坐標,我們能很容易地獲得所有模塊中心點作為相交叉的水平線(與左側定位圖形垂直)。

  它也通過定位圖形右側模塊的中點位置和垂直線(與定位圖形下邊垂直并通過定位圖形的上邊模塊的中點位置)。我們不能畫出所有這些線來標識交叉點,因為我們在 L1 存儲器中沒有完整的圖像。

  然而,我們可以通過一次掃描一行的方式來獲得交叉點(使用定位圖形右側模塊中點的 y坐標作為行索引),將當前行列索引與定位圖形上邊模塊中點 x 坐標進行比較。

  如果兩者相同,那么就是交叉點,否則我們繼續掃描這一行。采用這一過程,我們掃描模塊的交叉點,并找到該位置像素的值。

  如果像素值大于 128(即淺色),我們將該位解碼為 0,或者如果像素值小于 128,我們將該位解碼為 1。采用同樣的方式,我們能提取數據矩陣式條形碼數據區域的所有位。

  對于具有 L2 存儲器的處理器,我們將與定位圖形右側模塊中點 y 坐標對應的像素行從 L2移入 L1 存儲器。當我們正在處理當前像素行時,使用 DMA 來移動下一像素行。但是,在使用無 L2 存儲器的處理器時,我們必須進行實時數據提取。此時,PPI-DMA 將下一行數據填入 L1 存儲器,我們必須完成對當前行的處理(進行基本的數據位提取)。

  2D 解交織

  據矩陣式條形碼使用 2D 交織的數據位。從數據區域模塊中提取數據位后,我們執行解交織來獲得糾錯碼字的數據位。關于 2D 數據位交織的詳細信息,請參見參考文獻[2]。

  我們用預計算查找表來進行解交織。由于數據矩陣式條形碼支持不同尺寸的數據區域,因此解交錯查找表的大小和表單元也不同。不可能在小尺寸處理器中保存所有尺寸的查找表。然而,如果在預先給定的應用中數據矩陣大小是已知的,我們只需要存儲特定解交織查找表。解交織后,數據位按字節格式形成碼字,輸入 RS 解碼器。

  條形碼糾錯

  新興的 ECC-200 型數據矩陣式條形碼使用 RS (N, K)碼來糾正解交織位的錯誤和遺漏。RS (N, K)碼可以糾正最多(N-K)/2 個錯誤或者最多(N-K)個遺漏(如果不存在錯誤)。在這個應用中使用的 Galois 域是 GF(28)。對于不同數據區域大小,數據矩陣式條形碼使用不同的 RS 碼字長度。例如,14x14 大小的數據區域條形碼使用 RS(24, 12)碼來糾錯,16x16 大小的數據區域條形碼使用 RS(32, 18)碼。RS 解碼器的復雜度取決于數據區域的大小。隨著 RS 碼字長度的增加,存儲器需要存儲的所有 RS 解碼工作緩沖區也要增加。

  為了高效地實施 RS 解碼器,我們使用查找表來進行 Galois 域計算。對所有 RS 碼字長度進行解碼時使用相同的 Galois 域對數和反對數查找表,因此域單元也屬于 GF(28)。我們需要大約 2 kB 的 L1 存儲器來存儲對數和反對數查找表。

  數據矩陣式條形碼解碼復雜度

  2D 條形碼解碼有兩個部分:1) 圖像處理,2)條形碼解碼。如果捕捉的圖像與解碼區域沒有適當對齊,我們可能需要進行圖像旋轉、偏差糾正等,來使圖像與解碼區域對齊。

  在這種情況下,圖像處理階段的復雜度比實際條形碼解碼要大。在這篇文章中,我們假設圖像與解碼區域是對齊的。數據矩陣式條形碼的解碼復雜度(在周期和存儲器方面)取決于數據符號的大小。如果數據符號尺寸較大,每個符號中包含多個較大的數據區域,那么我們需要更多的存儲器來保存圖像的行像素和 RS 工作緩沖。每單位時間需要處理的數據量也隨著數據區域的尺寸而增加。以每個數據矩陣式條形碼符號具有 16x16 數據區域的 VGA 圖像為例,我們需要大約 6kB數據存儲器和 4kB 的 Blackfin 程序存儲器。BF53x 內核上運行單個模塊的近似周期數如下:

  模塊尺寸和數量:7,200

  數據位提取: 2,000 個周期

  解交織和封包:600

  RS 解碼:7,000 個周期

  本文小結

  本文討論了在小尺寸 Blackfin 處理器上進行數據矩陣 2D 條形碼解碼。同時解釋了使用或不使用高延遲 L2 存儲器對 2D 條形碼進行解碼的不同方法。分析了基于 RS 的數據矩陣 2D條形碼解碼的復雜度,并估算了使用 BF53x 處理器對 VGA 圖像中單個 16x16 數據符號進行解碼所需的存儲器和周期數。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲午夜未删减在线观看| 欧美一区日本一区韩国一区| 国产精品护士白丝一区av| 久久永久免费| 欧美一区二区日韩一区二区| 一本色道久久综合| 亚洲国产成人久久综合一区| 国产婷婷色一区二区三区| 欧美日韩一级大片网址| 欧美国产欧美综合 | 一本综合久久| 亚洲黄色精品| 亚洲欧洲99久久| 亚洲无限av看| 99成人精品| 亚洲高清网站| 亚洲成色777777在线观看影院| 国产欧美亚洲精品| 国产精品久久中文| 欧美性视频网站| 欧美精品一区二区高清在线观看| 麻豆精品视频| 久久综合久久综合这里只有精品| 羞羞视频在线观看欧美| 亚洲在线国产日韩欧美| 亚洲视频在线免费观看| 亚洲国产一区二区三区a毛片| 欧美一区二区视频观看视频| 亚洲欧美日韩国产一区二区| 亚洲欧美大片| 亚洲一区影音先锋| 亚洲影视在线| 亚洲你懂的在线视频| 亚洲新中文字幕| 亚洲一区二区久久| 亚洲精品麻豆| 日韩亚洲欧美一区| 99综合视频| 亚洲图片欧洲图片av| 中文一区字幕| 依依成人综合视频| 亚洲高清av| 在线成人av| 欧美国产一区二区| 久久嫩草精品久久久久| 久久麻豆一区二区| 久久久综合精品| 久久日韩精品| 欧美va天堂va视频va在线| 久久久国产精彩视频美女艺术照福利| 久久se精品一区二区| 久久五月天婷婷| 免费欧美电影| 久久婷婷综合激情| 欧美不卡高清| 欧美日韩高清一区| 欧美性猛交一区二区三区精品| 国产精品成人免费| 国产欧美在线看| 一区二区三区在线高清| 1204国产成人精品视频| 亚洲精品小视频在线观看| 99国产精品国产精品久久| 亚洲一二三区视频在线观看| 亚洲一区二区三区精品视频| 亚洲一区二区动漫| 久久av老司机精品网站导航| 日韩视频免费| 亚洲欧美一级二级三级| 久久青青草原一区二区| 欧美精品一区二区三区四区| 国产精品毛片a∨一区二区三区|国| 国产欧美日韩麻豆91| 黄色日韩在线| 99精品视频免费全部在线| 午夜日韩电影| 久久国产精彩视频| 在线视频你懂得一区二区三区| 亚洲欧美日韩国产| 午夜精品免费视频| 最新日韩欧美| 久久久高清一区二区三区| 欧美视频一区二| 亚洲激情一区二区| 久久精品国产免费观看| 午夜一级久久| 欧美日韩一区二区三区| 亚洲国产精品久久91精品| 欧美在线播放高清精品| 亚洲欧美日韩国产成人| 欧美日韩一区二区欧美激情| 亚洲第一偷拍| 亚洲二区在线观看| 久久er99精品| 国产精品综合| 亚洲一区制服诱惑| 一区二区三区四区国产| 欧美国产第一页| 在线观看欧美精品| 亚洲电影免费观看高清| 久久久久综合一区二区三区| 国产女人精品视频| 亚洲视频狠狠| 亚洲一区二区三区午夜| 欧美日韩www| 亚洲欧洲精品一区二区三区不卡 | 性色av一区二区三区| 国产精品高潮视频| av不卡在线观看| 一本一本久久a久久精品综合麻豆| 免费成人毛片| 亚洲第一精品电影| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲美女中文字幕| 免费在线看成人av| 亚洲盗摄视频| 最近看过的日韩成人| 久久亚洲欧美国产精品乐播| 国产亚洲在线观看| 久久国产精品一区二区三区| 久久久99精品免费观看不卡| 国产在线高清精品| 久久精品国产精品| 久久先锋资源| 亚洲大胆女人| aaa亚洲精品一二三区| 欧美日韩理论| 一二三区精品福利视频| 亚洲综合色视频| 欧美午夜一区二区三区免费大片| 中文精品视频| 欧美一区=区| 黄色成人av网| 亚洲韩国青草视频| 欧美激情一区二区三区不卡| 亚洲开发第一视频在线播放| 亚洲视频一区二区免费在线观看| 国产精品久久久999| 亚洲欧美伊人| 快播亚洲色图| 亚洲国产三级网| 在线一区二区三区四区| 国产精品美女久久久久久免费| 先锋影院在线亚洲| 蜜臀a∨国产成人精品| 亚洲黄网站在线观看| 亚洲小说春色综合另类电影| 欧美性大战xxxxx久久久| 亚洲欧美日韩精品久久亚洲区 | 亚洲级视频在线观看免费1级| 夜夜精品视频一区二区| 欧美偷拍一区二区| 亚洲欧美日韩在线高清直播| 久久先锋影音| 日韩视频在线免费| 欧美亚洲一区在线| 激情成人综合网| 亚洲毛片在线| 国产精品一区二区女厕厕| 久久精品国产一区二区电影| 欧美国产亚洲另类动漫| 亚洲视频一区二区在线观看| 久久久久久久成人| 亚洲国产精彩中文乱码av在线播放| 亚洲一区欧美激情| 国产一区欧美| a4yy欧美一区二区三区| 国产欧美一区二区三区久久 | 亚洲国产精品一区| 亚洲一区在线观看免费观看电影高清 | 国产主播一区二区三区| 99精品国产99久久久久久福利| 国产精品自在线| 亚洲理论在线| 国产欧美日本在线| 亚洲毛片在线观看.| 国产欧美一区二区三区久久人妖 | 亚洲精选久久| 久久精品国产亚洲一区二区三区| 亚洲激情视频网站| 欧美主播一区二区三区| 亚洲欧洲日产国产综合网| 性欧美大战久久久久久久久| 亚洲欧洲精品一区| 久久久国产精品一区| 99精品免费网| 欧美va亚洲va香蕉在线| 亚洲欧美日韩综合一区| 欧美日韩国产电影| 亚洲夫妻自拍| 国产精品亚洲片夜色在线| 亚洲精品资源| 国模精品娜娜一二三区| 亚洲制服av| 91久久中文| 久热精品视频在线免费观看| 亚洲自拍另类| 欧美私人网站| 亚洲免费av网站| 一区二区视频在线观看|