《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 設計原理:如何在小尺寸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亚洲国产精品_日韩亚洲一区二区
免费中文日韩| 欧美三级午夜理伦三级中视频| 亚洲精品永久免费精品| 欧美在线综合| 午夜免费日韩视频| 亚洲欧美激情四射在线日| 亚洲视频电影图片偷拍一区| 一本色道久久综合一区| 一二三区精品福利视频| 9l视频自拍蝌蚪9l视频成人| 日韩香蕉视频| 欧美sm视频| 夜夜精品视频| 一区二区精品在线观看| 99精品国产高清一区二区| 亚洲精品免费在线播放| 日韩视频一区二区三区在线播放免费观看 | 亚洲美女视频在线观看| 亚洲人成毛片在线播放女女| 亚洲精品美女在线观看| 亚洲免费高清| 亚洲一级特黄| 欧美伊人久久久久久午夜久久久久| 午夜宅男久久久| 欧美一级视频免费在线观看| 久久国产欧美| 久久亚洲综合色| 免费日韩av电影| 欧美激情日韩| 欧美日韩中字| 国产模特精品视频久久久久| 国产一区视频观看| 亚洲第一黄色网| 亚洲精品一二三| 亚洲午夜精品一区二区| 久久电影一区| 99视频在线精品国自产拍免费观看| 亚洲一区二区三区精品在线观看| 欧美一区亚洲二区| 久久久青草青青国产亚洲免观| 蜜乳av另类精品一区二区| 欧美日韩播放| 国产精品久久久久婷婷| 精品91在线| 日韩亚洲欧美一区二区三区| 亚洲欧美日韩精品久久奇米色影视 | 亚洲一区二区成人在线观看| 欧美在线观看视频| 你懂的一区二区| 欧美性猛交xxxx乱大交蜜桃| 国产日韩欧美在线| 午夜久久99| 亚洲精品中文字幕在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久国产一区| 欧美日本精品一区二区三区| 国产精品羞羞答答| 亚洲国产99精品国自产| 亚洲性图久久| 亚洲国产精品一区在线观看不卡| 亚洲视频第一页| 久久九九全国免费精品观看| 欧美激情欧美狂野欧美精品 | 国产精品一区二区在线观看网站| 精品动漫3d一区二区三区免费 | 亚洲人www| 欧美一级专区免费大片| 欧美激情第10页| 国产欧美一区二区三区沐欲| 亚洲国产高清一区| 午夜亚洲精品| 一二三四社区欧美黄| 久久久久免费观看| 国产精品a级| 亚洲国产cao| 欧美亚洲综合网| 一区二区久久久久| 美女爽到呻吟久久久久| 国产精品女人久久久久久| 亚洲黄色在线观看| 久久精彩免费视频| 亚洲伊人久久综合| 欧美寡妇偷汉性猛交| 国产在线日韩| 亚洲午夜激情| 亚洲毛片一区| 老司机免费视频一区二区| 欧美日产国产成人免费图片| 国产一区二区在线观看免费播放| 国产精品美女视频网站| 国产日韩欧美另类| 亚洲精品一区二区网址| 欧美在线观看网站| 亚洲在线成人精品| 欧美激情一区二区久久久| 国产综合色在线视频区| 亚洲一区二区免费在线| 欧美—级a级欧美特级ar全黄| 西西裸体人体做爰大胆久久久| 你懂的视频欧美| 国产日韩在线看片| 亚洲视频一区二区免费在线观看| 亚洲精品一区在线| 久久欧美肥婆一二区| 国产精品伦一区| 91久久夜色精品国产九色| 久久国产精品99精品国产| 羞羞色国产精品| 欧美体内谢she精2性欧美| 亚洲精品1区| 亚洲精品乱码| 欧美成熟视频| 在线看片第一页欧美| 久久福利一区| 久久噜噜亚洲综合| 国产一区二区三区视频在线观看 | 亚洲第一页在线| 欧美中文字幕视频在线观看| 欧美在线日韩| 国产视频久久网| 午夜精品在线看| 久久成人免费网| 国产欧美日韩亚洲| 新67194成人永久网站| 欧美一区午夜精品| 国产日韩欧美精品在线| 羞羞答答国产精品www一本| 欧美伊久线香蕉线新在线| 国产精品综合网站| 午夜欧美电影在线观看| 久久精品国产2020观看福利| 国产婷婷精品| 久久精品视频一| 免费久久精品视频| 亚洲人成亚洲人成在线观看| 在线亚洲观看| 国产精品毛片在线| 性刺激综合网| 久久亚洲高清| 亚洲国产成人av| 亚洲精品在线视频观看| 欧美日韩精品高清| 亚洲一二区在线| 久久精品水蜜桃av综合天堂| 国内在线观看一区二区三区| 91久久精品视频| 欧美日韩二区三区| 亚洲网站视频| 久久精品一区二区| 在线观看一区二区精品视频| 99国产精品国产精品毛片| 欧美午夜女人视频在线| 亚洲欧美日韩国产中文在线| 久久综合久久综合久久综合| 亚洲国产一区二区三区高清 | 亚洲一级在线观看| 亚洲毛片一区二区| 在线观看一区| 日韩亚洲视频| 国产精品日产欧美久久久久| 欧美自拍丝袜亚洲| 欧美激情亚洲国产| 亚洲一区二区在线播放| 久久婷婷激情| 亚洲人成网站999久久久综合| 午夜精品久久久久久久99水蜜桃| 国产一区二区三区网站| 亚洲美女淫视频| 国产精品亚洲不卡a| 亚洲黄网站在线观看| 欧美三区不卡| 久久精品国产91精品亚洲| 欧美理论在线| 午夜精品视频在线观看一区二区| 欧美成人精品激情在线观看| 亚洲午夜一二三区视频| 久久久综合网| 在线一区二区三区做爰视频网站| 久久久久国产精品厨房| 日韩亚洲精品电影| 久久综合五月| 亚洲网在线观看| 欧美大尺度在线观看| 亚洲一级免费视频| 欧美不卡视频一区| 亚洲欧美欧美一区二区三区| 欧美激情五月| 性色av一区二区三区在线观看 | 国产精品自拍小视频| 99国内精品久久久久久久软件| 国产亚洲福利| 中日韩高清电影网| 国内精品久久久久伊人av| 亚洲午夜一区二区三区| 伊人一区二区三区久久精品| 欧美一级大片在线观看| 亚洲精品视频在线看| 老牛影视一区二区三区| 亚洲欧美久久久| 欧美午夜在线观看|