段東波,靳天玉
(蘭州大學信息科學與工程學院,甘肅蘭州,730000)
隨著信息技術的飛速發展,基于高速處理器的嵌入式系統應用越來越豐富,功能越來越齊全,其中尤其以ARM的應用發展最為迅速。ARM被廣泛應用于工業控制、通信系統、無線、網絡系統以及消費類電子產品等領域。同時,作為該芯片的主要應用的ARM的視頻采集技術,在工業檢測、工業監控、安防監控、智能交通、儀器儀表、醫學影像、機器視覺、多媒體錄播錄像、會議錄制以及虛擬演播室等多方面體現了它的優勢,有著重要的地位。
基于ARM的二維碼識別技術是以ARM視頻采集技術為基礎的拓展功能,二維碼憑借其信息儲存量大、安全保密性高、追蹤性高、抗損性強、備援性大以及成本便宜等優良特性,在表單、安全保密、追蹤、證照、存貨盤點以及資料備份等方面有著廣泛的應用。集成視頻采集、二維碼識別技術及網絡通信的嵌入式系統,不僅可以作為物聯網技術的底層基礎,而且其強大的可拓展性使得其擁有更為廣闊的發展前景。
硬件的性能和穩定性直接關系到各級設備的工作情況、工作狀態以及基于其上運行的操作系統的穩定性,甚至直接影響到產品的最終性能。所以,ARM核心板使用了各方面性能都很優越的友善之臂:Mini6410開發板。Mini6410是把ARM11(S3C6410)作為主處理器的嵌入式開發板,它的內部集成了功能完善的多媒體處理單元,能夠完成H.264/H.263、Mpeg4、Jpeg等格式視頻文件和圖像文件的硬件編解碼,并且可以同時輸出至LCD和TV兩路顯示;與此同時,還連并帶有3D圖形加速器,通過它可以實現OpenGL ES 1.1 & 2.0的加速渲染,兼具有2D圖像平滑縮放,翻轉等的功能。因此,使用此嵌入式系統開發板將是最為妥善的選擇。
由于其使用了友善之臂的mini 6410核心板,所以SDRAM、NAND 、FLASH 以及LCD等硬件設備已經鏈接完畢,并且已完成驅動,而攝像頭可以通過USB接口來實現與CPU單元的連接,并可以通過加載Linux內核中集成的驅動來完成對攝像頭的驅動。系統框圖如下圖:
軟件設計:
首先,初始化攝像頭并調整攝像頭模式使其可以采集320*240大小格式的圖像。其次,設定采集來的圖像為YUYV格式,在此階段將系統設定為只采集4幀圖像,再將采集來的圖像映射入內存中并調用預先設定的指針變量(指針變量指向存入4幀圖像開始的第一幀所存入的地址),把這4幀圖像所對應的地址傳送出來并對其進行讀取和處理,最后,循環采集4幀圖像實現圖像實時更新從而形成動態圖像。
由于采集來的是YUYV格式的圖像,所以不能直接預覽和處理。在這里,系統將設計通過一定的算法將上述圖像的每一幀都進行轉化,使其成為RGB色彩模式的圖像,然后再對其進行處理。隨后,再將處理所得的四幀RGB格式圖像的每個像素逐一注冊到QT軟件下的Qimage類中,使其形成Qimage圖像,并再次注冊到Qwidget上,此時就可以直接使用Reflesh方式進行預覽顯示了。
預覽和處理過程是在兩個線程之內完成的。程序中引入了一個互斥量,在攝像頭采集圖像回來并寫入內存時,互斥量鎖定;寫入完成后,互斥量打開。另外,兩個線程會檢查互斥量。若互斥量為鎖定狀態時,則這兩個線程掛機,若未鎖定,則用CPU時間片分配給的線程去訪問內存,并鎖定互斥量,待其完成后再打開互斥量。其中一個線程用于顯示預覽,另一個用于處理圖像。兩個線程是異步的,但其二者之間用互斥量進行同步。
圖像采集應用程序流程圖如下圖:

二維碼的功用是利用某些特定的幾何圖形按照特定規律在黑白相間的平面(二維方向上)上分布圖形來記錄數據符號信息。它能巧妙地運用構成計算機內部基礎邏輯的0和1,即利用0和1的概念來表示信息,利用0、1來構成含有信息的01串。二維碼可以通過一些輸入設備或掃描設備來實現自動識讀信息并進行自動處理。與二維碼技術相似的條碼技術與其有一些共性:每個字符占有一定的寬度;具有一定的校驗功能;每種碼制有其特定的字符集等;同時還具有對不同行的信息自動識別功能、及處理圖形旋轉變化等特點。
常用的二維碼有 Data Matrix、 Maxi Code、Aztec、QR Code、 Vericode、PDF417、 Ultracode、 Code 49 以 及 Code 16K等等,其中最常用的是QR code二維碼,現在其生成技術比較完善,并且應用較為廣泛,有許多生成軟件可以免費使用,更易于推廣,其識別技術應用在PC機上用C++、C#或java編譯的資料較多,對于在Linux內核移植有很大的幫助。
在視頻采集軟件設計中把YUYV格式的圖像轉換成RGB格式,是為了能夠在二維碼識別的設計中能夠直接利用RGB格式的圖像來進行處理,最終將二維碼的原始信息還原。二維碼的識別實際上是對目標圖像進行圖像處理的過程,其對于采集來的圖像(此時已經為RGB格式),首先將RGB格式中的三原色值轉化為大整型值(值在0-65536之間)。之后再根據事先設定的閾值(理論上是65536/2,但實際應用中引入了一個參量,此參量是根據整個圖像的平均值來定義,此時閾值由參量和65536/2共同決定),對圖像進行去顏色化,把原來的圖像轉化為只有黑白兩色的圖像。然后進行去噪濾波,進行邊緣檢測,得到一個平行四邊形,再對此圖形進行像正方形的轉化,使其成為正方形。
最后對此正方形圖像進行抽樣,對圖像進行縮放,使其轉換成為320*320的標準大小。之后對每個像素按二維碼的格式分割開,進行抽樣檢測,求取其統計平均值,判定黑白,并予以保存。最后再利用QR矩陣的算法還原原始二進制信息。
通過對Linux內核的移植、視頻采集以及二維碼識別應用程序的編寫,最終實現了基于ARM11的視頻采集,以及二維碼的識別。
對于此次設計還有許多可以擴充的東西,由于Linux系統提供了有線網卡、無線網卡以及藍牙的驅動。所以,通過有線網或無線網可以實現采集視頻的網絡傳輸,借此可實現通過網絡觀看實時視頻來進行監控,也可以通過藍牙或者網絡實現通信,從而完成對系統的控制。結合二維碼技術和網絡通信可以進行安防以及身份識別或防偽識別。這項技術在當下的“信息時代“中將起到舉足輕重的作用。
[1]tiny6410用戶手冊.廣州友善之臂計算機科技有限公司.2010,12,16
[2]李東科.基于加密和解密的二維條形碼的實現.期刊論文技傳播.2010
[3]劉芳.手機二維碼——開啟移動學習新窗口.期刊論文等科技信息.2008
[4]楊軍.關于二維碼的研究和應用.期刊論文等應用科技.2002
[5]薛蓬.二維條碼在商品防偽上的應用.期刊論文等科技信息.2009
