金紹勛,黃繼小,趙志剛,呂德遠,黃浩文,付 存,劉文擎,屈軍樂
(1.深圳大學物理與光電工程學院,廣東深圳 518060;2.深圳技術(shù)大學新材料與新能源學院,廣東深圳 518118)
高光譜儀作為一種物質(zhì)結(jié)構(gòu)和成份分析的測量儀器,在食品安全檢測、醫(yī)學診斷、農(nóng)產(chǎn)品分類、材料分析以及遙感成像等方面得到了廣泛的應(yīng)用[1-4]。隨著高精度加工技術(shù)、傳感器技術(shù)及微電子技術(shù)等技術(shù)的發(fā)展,高光譜儀逐漸克服體積大、對環(huán)境檢測要求度高等缺點,向微型化、智能化、多用途等方向發(fā)展[2-4]。
微型高光譜儀大多通過USB接口與PC機終端進行有線數(shù)據(jù)傳輸,需要在PC機上使用專門軟件對所獲取的高光譜數(shù)據(jù)進行處理,不能實現(xiàn)遠程的數(shù)據(jù)采集,顯著限制其便攜性[3-5]。隨著移動智能化技術(shù)的迅速發(fā)展,通過WIFI無線傳輸高光譜數(shù)據(jù),并利用移動終端進行控制信號發(fā)送與結(jié)果顯示,可顯著增強微型高光譜儀的便攜性,擴展其應(yīng)用范圍。高光譜數(shù)據(jù)量龐大,會對無線傳輸造成很大的壓力[6-7],如何在調(diào)焦和目標捕獲等階段進行實時的高光譜圖像視頻預(yù)覽,是目前需要解決的問題。
針對以上問題,本文設(shè)計基于Zynq平臺的微型高光譜儀,搭建Socket服務(wù)器建立微型高光譜儀與移動終端之間的通信連接,采用H.264的編碼方式對視頻數(shù)據(jù)進行編碼,并利用RTSP協(xié)議與TCP協(xié)議將高光譜數(shù)據(jù)實時傳輸至移動終端。用戶可在移動終端實時地預(yù)覽被測樣本的高光譜視頻和原始高光譜圖像。
設(shè)計的微型高光譜儀實時視頻預(yù)覽系統(tǒng)由微型高光譜儀和移動終端兩部分組成。微型高光譜儀實物如圖1所示,包括高光譜圖像傳感器、Zynq處理平臺、無線傳輸模塊等。
圖1 微型高光譜儀實物圖
微型高光譜儀外殼采用鋁合金材質(zhì),體積為144 mm×57 mm×63 mm,總體質(zhì)量為229 g。硬件電路采用12層高器件密度PCB設(shè)計,包含Zynq-7020芯片、JTAG接口、高光譜傳感器、DDR3 SDRAM等。硬件電路PCB實物如圖2所示。
圖2 微型高光譜儀硬件電路圖
高光譜圖像傳感器為比利時微電子研究中心(IMEC)的新型馬賽克面陣高光譜傳感器。該傳感器通過在標準CMOS圖像傳感器感光面中鍍可濾過不同波段光的周期性排布濾光膜,來獲取不同波段的高光譜數(shù)據(jù)。光譜分辨率為12 nm,成像速度可達340幀/s,滿足高速實時高光譜數(shù)據(jù)采集的要求。馬賽克高光譜傳感器芯片如圖3所示。
圖3 IMEC馬賽克高光譜傳感器芯片及周期排布濾光膜示意圖
Zynq處理平臺的主控芯片使用Zynq-7020芯片,分為PL(programmable logic)和PS(processing system)兩部分。PL部分即FPGA,主要負責驅(qū)動高光譜傳感器采集待測物的高光譜數(shù)據(jù),并將采集到的原始數(shù)據(jù)放置DDR3 SDRAM中儲存;PS部分為2個ARM Cortex-A9核,主要負責控制放置在DDR3 SDRAM中的高光譜數(shù)據(jù)的傳輸與處理。
設(shè)計的微型高光譜儀在Zynq處理器的PS部分搭載了嵌入式Linux操作系統(tǒng)平臺,為后續(xù)高光譜數(shù)據(jù)傳輸與處理提供了開發(fā)環(huán)境。嵌入式Linux平臺搭建主要包括以下工作:搭建Linux開發(fā)環(huán)境、BOOT.bin的制作以及映像文件系統(tǒng)移植。
搭建Linux開發(fā)環(huán)境需要在PC機上構(gòu)建虛擬機環(huán)境,在虛擬機中安裝Linux操作系統(tǒng)。由于微型高光譜儀中的Linux操作系統(tǒng)與Windows虛擬機中的Linux操作系統(tǒng)是基于2個不同的平臺,為了能夠讓微型高光譜儀正常運行應(yīng)用程序,需要安裝交叉編譯環(huán)境,這是生成不同平臺上的可執(zhí)行代碼的工具。交叉編譯環(huán)境安裝與配置步驟如下。
運用tar命令將下載好的交叉工具鏈解壓到設(shè)定好的目錄下;運用nano命令編輯.profile文件,為其配置環(huán)境變量。修改交叉工具鏈路徑,并在終端輸入命令:arm-linux-gnueabihf-gcc-v,以檢查是否配置成功。配置成功,則會顯示如下信息:
Using built-i n specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/opt/gcc-arm-linux-gnueabi/bin/…/libexec/gcc/arm-linux-gnueabihf/6.2.1/lto-wrapper
Target:arm-linux-gnueabihf
…
Thread model:posix
gcc version 6.2.1 20161114 (Linaro GCC Snapshot 6.2-2016.11)
BOOT.bin是系統(tǒng)上電后第一個要運行的程序,Linux操作系統(tǒng)需要通過BOOT.bin引導(dǎo)啟動。BOOT.bin的制作需要在PL部分運用Vivado軟件建立工程生成比特流文件、FSBL文件、u-boot文件。比特流文件是工程編譯實現(xiàn)成功后生成的二進制文件。FSBL文件為Linux第一階段的啟動加載器,可以通過Xilinx提供SDK軟件生成FSBL文件。u-boot文件引導(dǎo)Linux內(nèi)核和文件啟動,可以通過Xilinx官方網(wǎng)站下載。由SDK軟件將上述3個文件打包生成BOOT.bin文件,通過微型高光譜儀上的JTAG接口下載到QFLASH中。
為了在Zynq上運行Linux系統(tǒng),需要將對應(yīng)的Linux內(nèi)核和文件系統(tǒng)移植至微型高光譜儀的Zynq中。映像文件系統(tǒng)移植步驟為:從Xilinx官網(wǎng)下載與微型高光譜儀的Zynq對應(yīng)的Linux內(nèi)核;用已經(jīng)搭建好的交叉編譯環(huán)境對內(nèi)核重新編譯,生成能夠在Zynq上運行的Linux系統(tǒng);將構(gòu)建好的文件系統(tǒng)中的所有文件,利用交叉編譯環(huán)境對文件系統(tǒng)進行編譯;利用交叉編譯工具將Linux內(nèi)核文件與文件系統(tǒng)打包成映像文件(uImage)文件,燒錄到FLASH中指定地址。
為實現(xiàn)移動終端遠程實時訪問微型高光譜儀,在Zynq中的ARM上搭建Socket服務(wù)器。Socket最初由加利福尼亞的伯克利大學開發(fā),用作Unix系統(tǒng)環(huán)境下的一個編程接口[8-9],是維持Internet的基本技術(shù)之一[8-11]。應(yīng)用程序可以通過它發(fā)送或接收數(shù)據(jù),進行類似于文件系統(tǒng)的打開、讀寫和關(guān)閉等操作。
圖4為設(shè)計的微型高光譜儀視頻流實時預(yù)覽系統(tǒng)框圖。微型高光譜儀首先與移動終端通過Socket服務(wù)器的無線通信方式進行連接,建立連接后移動終端通過Socket服務(wù)器對微型高光譜儀發(fā)送采集控制指令,將已經(jīng)采集到的數(shù)據(jù)從DDR3 SDRAM取出;高光譜處理模塊處理得到高光譜數(shù)據(jù),并將視頻數(shù)據(jù)發(fā)送至視頻編碼模塊,或?qū)⒏吖庾V圖像數(shù)據(jù)發(fā)送至Socket服務(wù)器無線傳輸移動終端;視頻編碼模塊對高光譜數(shù)據(jù)進行視頻編碼,將處理后的視頻數(shù)據(jù)推送至Socket服務(wù)器的移動終端;移動終端接收視頻數(shù)據(jù)和高光譜圖像數(shù)據(jù)的顯示參數(shù),并在顯示屏上顯示預(yù)覽視頻或高光譜圖像。
圖4 微型高光譜儀視頻流實時預(yù)覽系統(tǒng)框圖
高光譜數(shù)據(jù)的無線傳輸流程如圖5所示。移動終端在與Socket服務(wù)器建立連接后發(fā)送指令,Socket服務(wù)器接收并解析移動終端的指令,微型高光譜儀將根據(jù)指令執(zhí)行數(shù)據(jù)采集、數(shù)據(jù)處理類調(diào)用等操作,然后返回移動終端請求的數(shù)據(jù)。移動終端的請求分為視頻流請求和高光譜圖像數(shù)據(jù)請求兩類。視頻流請求時,得到的視頻數(shù)據(jù)僅提供預(yù)覽功能;高光譜圖像數(shù)據(jù)請求時,返回的數(shù)據(jù)包括圖片(tif,jpeg,bmp)和圖片各點的像素值。圖片各點的像素值保存在一個csv文件里。最終微型高光譜儀將處理完成的高光譜數(shù)據(jù)由Socket服務(wù)器發(fā)送至移動終端,至此完成一次高光譜數(shù)據(jù)的無線傳輸。
圖5 高光譜數(shù)據(jù)的無線傳輸流程圖
Socket服務(wù)器傳輸?shù)囊曨l流使用H.264編碼方式,根據(jù)RTSP協(xié)議推送視頻流至無線網(wǎng)絡(luò),移動端的應(yīng)用輸入服務(wù)器的地址就可獲取微型高光譜儀的視頻流。H.264編碼出來的視頻流解碼兼容性好,數(shù)據(jù)量也顯著減少,非常適用在Socket服務(wù)器無線網(wǎng)絡(luò)上傳輸。
Socket服務(wù)器系統(tǒng)的建立,實現(xiàn)了微型高光譜儀與移動終端高光譜數(shù)據(jù)的無線傳輸。同時,H.264編碼方式對該服務(wù)器設(shè)備要求較低。設(shè)計的Socket服務(wù)器系統(tǒng)滿足高光譜數(shù)據(jù)實時視頻無線傳輸條件。
測試系統(tǒng)實物如圖6所示。移動終端為Android手機平臺,通過APP實現(xiàn)了移動客戶端與微型光譜儀Socket服務(wù)器的交互,完成實時視頻預(yù)覽。
圖6 測試系統(tǒng)實物圖
圖7 視頻預(yù)覽APP界面
視頻預(yù)覽APP界面如圖7所示。點擊左下角的“播放”按鈕可預(yù)覽微型高光譜儀所拍攝的視頻,調(diào)節(jié)微型高光譜儀鏡頭的光圈和焦距進行對焦。最終得到視頻預(yù)覽信息如圖8所示。
圖8 視頻預(yù)覽
根據(jù)視頻預(yù)覽信息可以看出微型高光譜儀獲取的視頻幀率28 fps,滿足視頻的實時預(yù)覽。
如圖9所示,在APP中調(diào)節(jié)圖像的尺寸與類型,可獲取原始高光譜圖像或25波段的單通道高光譜圖像。
若需要讀取原始高光譜圖像,可將“尺寸”選項選擇為2048×1088,“類型”選項選擇tif,點擊“拍照”按鈕后等待“1”出現(xiàn)在視頻預(yù)覽窗口的底部。即可獲取原始高光譜圖像。同理,將“尺寸”選項選擇為408×217,“類型”選項選擇需要保存的文件類型(這里選擇bmp),點擊拍照后等待“25”出現(xiàn)在視頻預(yù)覽窗口的底部即可獲取25波段高光譜圖像。
獲取到的圖像存放在文件管理中,如圖10所示。
本文在研制的微型高光譜儀中搭建了Socket服務(wù)器,控制微型高光譜儀與移動終端進行交互,完成了高光譜數(shù)據(jù)的無線傳輸,并在移動終端APP上實現(xiàn)了實時的視頻預(yù)覽。設(shè)計的基于Socket服務(wù)器的Zynq平臺微型高光譜儀實時視頻預(yù)覽系統(tǒng),既可在移動終端實時預(yù)覽視頻,也可獲取原始高光譜圖像數(shù)據(jù)。
(a)原始高光譜圖像
(b)25波段高光譜圖像圖9 原始高光譜圖像與25波段高光譜圖像的獲取
圖10 文件管理中查看25波段圖像