本文首先介紹系統的組成和功能要求,重點論述了系統總體思路和硬件平臺的搭建。其次闡述了系統軟件平臺程序的設計,在 Linux 系統下 V4L2 技術圖像采集和程序分析。然后敘述了圖像壓縮與 Linux 下的數據壓縮算法,并對比壓縮前后圖像,運用無線數據和圖像傳輸方式及 Linux 下的網絡編程,并完成無線傳輸的程序,最終在不同條件下的試驗數據得到相應的結論。
一個完整的嵌入式無線圖像傳輸系統包括發射與接收兩部分。在發射部分,用圖像采集模塊作為信號輸入端,把采集到的圖像數據保存到嵌入式處理單元存儲,并通過壓縮模塊進行壓縮,然后經過壓縮的圖像作為輸出信號,通過無線發射模塊和網絡傳輸協議,將信息發送到接收部分。接收部分首先將發送來的信息保存到控制中心,經過圖像解壓縮模塊,將接收的圖像進行解壓處理,并通過數據處理模塊對圖像進行處理,實現系統的整體功能。
1. 嵌入式處理模塊是整個系統的關鍵和核心,它接收攝像模塊傳來的圖像信息,經過不同的接口函數與控制指令協同各個外設,完成對硬件設備的控制與數據傳輸;2. 攝像模塊主要完成圖像采集工作;3. 無線收發模塊完成網絡傳輸協議,它承載了傳輸信道的建立與數據通信;4. PC 機作為控制中心,它主要將接收的信息進行處理,實現實時監控和完成系統功能。
研究中采用的是基于通用性免費開源的 Linux 系統,在起始階段,需要進行交叉編譯,以生成系統需要的Bootloader 以及內核,我們用的開發板是 MINI2440.系統的總體設計流程:
1. 完成攝像設備的接口驅動工作和圖像采集應用程序;2. 采集圖像信息與編寫圖像壓縮應用程序;3. 完成網絡傳輸設備的驅動接口工作,編寫傳輸應用程序;4. 圖像接收成功后編寫圖像解壓縮應用程序。本系統所用的是 USB 接口的數字攝像頭,Linux 中描述USB 設備的結構體為 usb_driver,成員變量是 id_table,這個變量指向 structusb_device_id,主要描述了 USB 產品設備的版本、ID、產品接口類、設備類等信息。在設計中,需要重新配置 USB 驅動,編譯內核,重新加載才能使用。在 Linux進行視頻圖像采集的接口函數是 V4L2,它提供數據結構和編程接口,是 Linux 中采集設備的內核驅動。本系統編寫的是通過編程接口來控制采集設備完成相應的操作和圖像采集功能應用程序。
通過前面的應用程序設計,采集到圖像并保存到指定文件中,但是采集來的是信息量較大的初始圖像,為了更好的傳輸,而質量又不至于下降,就需要圖像數據的壓縮。我們用最少的數碼來表示信號,數據壓縮技術包括無損和有損壓縮格式,比較兩種壓縮方式和系統所采用的 ARM9 內核的CPU,本系統用軟件方法實現數據的壓縮,主要的工作是對靜態圖像的數據壓縮,即空間信息進行壓縮,目的是滿足一定圖像質量的條件下,縮小圖像所占用的存儲空間,以減小存儲和占用盡量小的網絡帶寬。
在系統中,采用IJG JPEG Library來進行JPEG圖像壓縮,重點是 Linux 系統中設置壓縮參數,然后在壓縮過程中,通過掃描的方式一行行的進行壓縮,最后通過采集到的圖像壓縮前后對比與解壓縮之后的對比,并根據圖像大小的變化得出結論。
無線傳輸是整個系統中重要的另一部分,它的傳輸性能直接影響傳輸的質量,本系統選擇的是基于 IEEE802.11b 無線局域網方式,選擇的無線是 WIFI 通信,所使用的網卡是TP-LINKWN 422G+.WN 422G+ 配置了快速 USB2.0 接口,數據通信速度很快,它還支持 WIFI 保護訪問機制,為重要信息的保密提供了方便。
無線網卡要在 Linux 系統里需要特定的驅動包,把 WN422G+ 連接到 ARM 開發板上,執行命令,可以掃描到當前可以用的無線網絡。在 Linux 中,使用的網絡編程接口是 API 套接字,網絡傳輸方式是具有傳輸可靠遠程連接的 TCP 無線傳輸,進行網絡文件的傳輸(服務器端和客戶端),這樣就完成了從客戶端發送圖像到服務器端的全過程,到此,已經基本上完成了整個系統所要求的功能。
本文選擇的無線設備是無線網卡,通過測試,在圖像傳輸過程中要考慮圖像格式大小距離等因素,得到結論:
在靜止或者固定低速的情況下,隨著圖像大小的逐漸增加,傳輸時延逐漸增大,在低速情況下,單位時間內的傳輸速率基本恒定,但在高速情況下,隨著圖像大小的逐漸增加,傳輸速率呈降低的趨勢;2 在圖像大小固定的情況下,隨著移動速率的逐漸增加,傳輸時延和掉包率逐漸增大;3 通常圖像大小與傳輸時延是一對矛盾,圖像越大,占用的帶寬也就越寬,在傳輸過程中的傳輸時延也就越長。
因此需要根據不同的應用場景,選擇不同的優先策略。