鳳 雷,付洪碩,吳瑞東,陳浩林,劉 冰
(哈爾濱工業(yè)大學(xué) 電子與信息工程學(xué)院,哈爾濱 150001)
無人機具有無人員傷亡、成本低、尺寸小、機動性高等優(yōu)點[1-2],現(xiàn)如今在地理測繪[3]、災(zāi)害救援[4]、遙感監(jiān)測[5]、農(nóng)業(yè)輔助[6]等多方面有著廣泛應(yīng)用,而無人機的小型化是近年來重要的發(fā)展方向之一[7-10]。納型無人機是一種10厘米尺寸級別的無人機[11],其具有尺寸更小、功耗更低的特點。納型無人機可以到達(dá)管道內(nèi)部、狹小室內(nèi)、建筑縫隙等人類或標(biāo)準(zhǔn)尺寸的無人機難以到達(dá)的地方,具有更高的隱蔽性。多個無人機之間可以組合成為無人機集群使用[12],與人工智能算法相結(jié)合可以增強其自主能力[13],在物聯(lián)網(wǎng)等領(lǐng)域有廣泛應(yīng)用。
對于具有自主能力的納型無人機而言,在全板載行人跟蹤或目標(biāo)檢測的應(yīng)用場景下,由于納型無人機對功耗重量的嚴(yán)格限制,一般需要采用輕量化的深度學(xué)習(xí)算法,該類算法的性能常常依賴訓(xùn)練數(shù)據(jù)集與應(yīng)用場景的匹配度。但對于目標(biāo)檢測領(lǐng)域常用的諸如VOC和COCO等數(shù)據(jù)集而言,雖然這些數(shù)據(jù)集的目標(biāo)類型較多、場景豐富、圖像質(zhì)量高[14-16],但是這些數(shù)據(jù)集中的圖像與納型無人機視覺系統(tǒng)感知到的應(yīng)用場景圖像并不匹配。由于受到功耗約束,納型無人機上的視覺傳感系統(tǒng)采集到的應(yīng)用場景圖像數(shù)據(jù)類型通常為低分辨率的灰度圖像數(shù)據(jù)(例如Crazyfile 2.0上的視覺傳感系統(tǒng)采集的圖像是320*320分辨率灰度圖像[9]),相比于VOC和COCO等數(shù)據(jù)集中的圖像數(shù)據(jù),這些灰度圖像能夠提供的信息較少,同時還會受到應(yīng)用場景的光照等條件影響。因此,納型無人機處理的圖像與現(xiàn)有目標(biāo)檢測數(shù)據(jù)中的圖像并不匹配,不能使用常見的目標(biāo)檢測數(shù)據(jù)集進(jìn)行機載目標(biāo)檢測算法的訓(xùn)練。所以,構(gòu)建一個與納型無人機視覺系統(tǒng)相匹配,圖像內(nèi)容和圖像參數(shù)可以適用于納型無人機視覺場景的數(shù)據(jù)集是有必要的。在上述需求下,本文目的是設(shè)計一個基于嵌入式處理器的,能夠應(yīng)用于納型無人機視覺場景數(shù)據(jù)集構(gòu)建的圖像采集系統(tǒng)。
當(dāng)前對于基于嵌入式處理器的圖像采集系統(tǒng)的研究主要聚焦于低功耗和通用性上,例如付東等人基于stm32設(shè)計了低功耗圖像采集系統(tǒng)[17],系統(tǒng)主要注重于低功耗的無線傳輸,單次采集只能傳輸一幀圖片;甄國涌等人基于國產(chǎn)Hi3516D芯片設(shè)計了低功耗采集系統(tǒng),系統(tǒng)功耗為2.1~2.3 W,但系統(tǒng)幀率固定為25幀[18]。這些研究工作中圖像采集的幀率較低,不適用于在行人跟蹤等對圖像幀率需求較高的任務(wù)中使用。陳銳弦基于FPGA實現(xiàn)了MIPI接口的高幀率圖像數(shù)據(jù)采集[19]。唐宇楓等使用ZYNQ UltraScale+完成了LVDS接口的80幀/s的圖像數(shù)據(jù)傳輸[20]。上述研究主要適配高速視頻傳輸接口的圖像傳感器,這類圖像傳感器功耗較高,無法應(yīng)用在納型無人機視覺場景的圖像采集中。綜上所述,這些研究工作與納型無人機應(yīng)用場景不匹配,不適用于納型無人機應(yīng)用場景數(shù)據(jù)集的構(gòu)建。而納型無人機自身攜帶的視覺系統(tǒng)由于其設(shè)備的功耗限制以及使用場景,只能通過無線的方式傳輸幀率有限且經(jīng)過壓縮的圖像,不滿足構(gòu)建數(shù)據(jù)集的要求。因此本文針對沒有適配于納型無人機視覺場景下的高幀率圖像數(shù)據(jù)采集系統(tǒng)的問題,設(shè)計了一個能夠應(yīng)用于構(gòu)建納型無人機視覺場景數(shù)據(jù)集的高幀率圖像數(shù)據(jù)集采集系統(tǒng)。系統(tǒng)采用ZYNQ作為主控芯片,將ARM的控制功能與FPGA的并行處理的優(yōu)勢相結(jié)合[21],實現(xiàn)圖像的采集、存儲、實時顯示以及圖像傳感器的控制功能。文章從系統(tǒng)的硬件設(shè)計和軟件設(shè)計兩方面進(jìn)行介紹,最后對系統(tǒng)的幀率和功耗等各項指標(biāo)進(jìn)行測試,驗證了方案的有效性。
圖像采集系統(tǒng)的設(shè)計需要滿足以下幾個要求:1)以QVGA分辨率下最高60幀的幀率及320*320分辨率下最高45幀的幀率取圖像數(shù)據(jù);2)單次連續(xù)存儲超過20 S以上的圖像數(shù)據(jù);3)具有圖像實時顯示功能,用于調(diào)整采集系統(tǒng)的拍攝角度、拍攝內(nèi)容和圖像傳感器的曝光度等參數(shù);4)攝像頭參數(shù)可調(diào)(如曝光度,分辨率,輸出幀率等)。
系統(tǒng)設(shè)計如圖1所示,其中圓角矩形代表ZYNQ的PL端使用的模塊。系統(tǒng)以ZYNQ為主控芯片,通過Himax HM01B0攝像頭模組完成圖像獲取,DDR完成圖像緩存;通過VGA接口在屏幕上完成實時顯示;通過按鍵來調(diào)整攝像頭參數(shù);通過理論傳輸速度98 MB/S的高速SD卡實現(xiàn)高速圖像存儲。
圖1 系統(tǒng)設(shè)計框圖
1.2.1 圖像傳感器
圖像傳感器作為圖像獲取的重要一環(huán),決定了采集到的圖像的分辨率、傳輸格式等重要參數(shù)。為了保證機載目標(biāo)檢測、目標(biāo)追蹤等算法的效果,在圖像傳感器感器選取上要求采集到的圖像數(shù)據(jù)與納型無人機平臺上獲取到的實際圖像一致,因此我們選取了Himax公司的HM01B0作為圖像傳感器獲取圖像數(shù)據(jù)。
HM01B0支持RGB和灰度格式的45幀320*320分辨率的圖像以及60幀QVGA分辨率圖像輸出,其圖像輸出接口采用常見的DVP(digital video port)接口。HM01B0的主要特點在于其重量輕、功耗低,正常工作時的平均功率為2 mW,與常見的功率為數(shù)十至數(shù)百毫瓦的攝像頭如OV7670、OV5640等相比功率降低了數(shù)十倍。
1.2.2 攝像頭模組設(shè)計
圖像傳感器在工作時一般需要提供多個不同的電壓以及一個穩(wěn)定的時鐘源,因此在將圖像傳感器接入ZYNQ最小系統(tǒng)板或開發(fā)板之前,需要完成電壓轉(zhuǎn)換和時鐘源的供給工作。例如HM01B0在工作時需要為其提供2.8 V,1.5 V電壓以及一個3~36 MHz的時鐘。
為了提高系統(tǒng)的通用性,本文設(shè)計了一個HM01B0圖像傳感器模組,引出必要的數(shù)據(jù)和同步信號,并使其無需額外的外圍電路和時鐘配置,僅提供3.3 V供電即可使HM01B0正常工作。該模組內(nèi)部主要包括供電電壓轉(zhuǎn)換、數(shù)據(jù)線引出以及向圖像傳感器提供獨立穩(wěn)定時鐘的功能。模組如圖2所示,圖像傳感器引腳通過柔性PCB接入模組,模組供電腳及數(shù)據(jù)引腳通過間距為2.54 mm的連接器引出。
圖2 HM01B0模組
1.2.3 初始化及參數(shù)配置
在開始傳輸圖像數(shù)據(jù)之前,需要對圖像傳感器進(jìn)行初始化和參數(shù)配置,具體過程如下。
使用xlinx提供的AXI-IIC模塊,通過IIC接口向模塊發(fā)送要寫入的寄存器值,完成對圖像傳感器的初始化以及對分辨率、曝光度等內(nèi)部參數(shù)的配置。HM01B0關(guān)鍵寄存器配置如表1所示。表中為圖像傳感器以320*320分辨率輸出最高速率45幀的灰度圖數(shù)據(jù)的關(guān)鍵寄存器配置值。
表1 HM01B0關(guān)鍵寄存器配置
根據(jù)1.1節(jié)中的系統(tǒng)設(shè)計框圖可知,系統(tǒng)在邏輯功能上需要完成格式轉(zhuǎn)換和HM01B0模組配置兩個任務(wù)。格式轉(zhuǎn)換任務(wù)的目的是將圖像數(shù)據(jù)分別轉(zhuǎn)換成為DDR緩存和屏幕顯示相匹配的數(shù)據(jù)格式。HM01B0模組配置任務(wù)則是通過IIC來完成HM01B0初始化并改變其配置參數(shù)。因此下面主要從圖像緩存和屏幕實時顯示兩部分闡述系統(tǒng)固件設(shè)計。
由于圖像數(shù)據(jù)的采集速度與圖像處理和儲存速度不一致,無法直接將采集到的數(shù)據(jù)直接存儲到SD卡中,因此圖像緩存機制是十分重要的。圖像緩存通過開辟一塊緩沖區(qū)的方式將圖像采集和圖像數(shù)據(jù)使用分離開來,從而解決存取數(shù)據(jù)的同步問題。下面將具體闡述圖像緩存的相關(guān)設(shè)計。
2.1.1 VDMA緩存
圖像數(shù)據(jù)在存儲進(jìn)入SD卡之前,通過其外置的DDR進(jìn)行緩存,PL端不經(jīng)過ARM,直接通過VDMA(video direct memory access)對圖像數(shù)據(jù)進(jìn)行存取。
VDMA是專用于圖像數(shù)據(jù)存取的DMA模塊,DMA可以實現(xiàn)不經(jīng)過CPU的直接訪問存儲,從而達(dá)到加快存取速度和節(jié)約CPU計算資源的目的。系統(tǒng)中獲取到的圖像數(shù)據(jù)通過VDMA緩存進(jìn)DDR中,供后續(xù)圖像顯示和存儲使用。
VDMA的輸入為AXI總線形式。AXI總線是一種通用的串行總線協(xié)議,在ZYNQ中被廣泛用于模塊間的數(shù)據(jù)傳輸以及PL端和PS端之間的數(shù)據(jù)傳輸。因此DVP數(shù)據(jù)在輸入VDMA之前,需要通過DVP轉(zhuǎn)AXI stream模塊將其轉(zhuǎn)換為AXI stream格式。
2.1.2 多幀緩沖機制
由于SD卡存儲的速度與圖像獲取的速度不一致,為了避免在單個存儲空間中,圖像數(shù)據(jù)的存入與讀出同時進(jìn)行而導(dǎo)致的圖像撕裂問題,不能同時進(jìn)行讀取和寫入操作。因此將VDMA設(shè)置為多個幀緩沖模式,只要保證寫入?yún)^(qū)域與讀出區(qū)域不一致,讀寫操作就可以同時進(jìn)行,這保證了圖像數(shù)據(jù)獲取的實時性。
如圖3所示。在存儲空間內(nèi)開辟3個幀緩沖區(qū)域,配置VDMA循環(huán)存入3個存儲空間。每次VDMA完成存入后會輸出當(dāng)前存入的存儲空間位置信號,供數(shù)據(jù)讀取使用。圖中實線表示為當(dāng)前時刻的圖像數(shù)據(jù)的流向,虛線表示上一次向緩沖區(qū)寫入和讀出數(shù)據(jù)時圖像數(shù)據(jù)的流向。
圖3 多幀緩沖機制示意圖
若當(dāng)前存入和讀取的緩沖區(qū)號相同,則仍然會產(chǎn)生圖像撕裂問題,因此在每次循環(huán)存入前,會首先獲取VDMA當(dāng)前正在讀取的緩沖區(qū)號,若即將存入的區(qū)號與其相同,則跳過當(dāng)前區(qū)域,避免同讀同寫的問題產(chǎn)生。如圖4所示,某時刻寫入圖像數(shù)據(jù)的區(qū)號為1,讀出圖像數(shù)據(jù)的區(qū)號為2,若寫入圖像數(shù)據(jù)操作完成后,讀出操作仍未結(jié)束,則下一幀圖像寫入將跳過2號緩沖區(qū),向3號緩沖區(qū)寫入數(shù)據(jù)。
圖4 動態(tài)緩沖機制示意圖
為了保證實際采集和存儲到的圖像內(nèi)容,位置、角度、曝光度等參數(shù)符合預(yù)期,便于使用者實時觀察到采集到的圖像的效果和當(dāng)前系統(tǒng)運行的狀態(tài),系統(tǒng)增加了屏幕實時顯示功能。
在VDMA存儲到完整一幀圖像后,仍通過VDMA讀取該幀的圖像數(shù)據(jù)。VDMA的輸出也為AXI-stream格式,通過xilinx官方提供的AXI stream轉(zhuǎn)DVP模塊,將AXI stream轉(zhuǎn)換為DVP格式圖像數(shù)據(jù)。圖像顯示部分通過VGA接口輸出,在圖像數(shù)據(jù)輸出到屏幕顯示前,需要進(jìn)行如下改動。
首先,VGA接口輸出的圖像數(shù)據(jù)應(yīng)為一組RGB值。但是實際圖像獲取和存儲過程均以灰度值的形式進(jìn)行,因此在輸出為VGA之前需要將灰度值轉(zhuǎn)換為RGB。因此定義一個模塊將灰度值的高五位作為R和B兩個通道的值,高六位作為G通道的值完成圖像數(shù)據(jù)轉(zhuǎn)換。
其次,由于320*320分辨率不是常見的屏幕分辨率,輸出圖像的分辨率大小應(yīng)與實際屏幕的分辨率相適應(yīng)。因此設(shè)置VDMA讀取的存儲空間大小為實際屏幕分辨率大小,實際畫面大小以外的存儲空間的數(shù)據(jù)應(yīng)在初始化時清空,這部分多余空間可以將其加以利用于圖像獲取的狀態(tài)顯示功能。
根據(jù)上文對硬件系統(tǒng)設(shè)計的介紹可知,采集系統(tǒng)需要實現(xiàn)的軟件功能包括VDMA模塊初始化配置數(shù)據(jù)傳入、IIC傳輸給攝像頭模塊的數(shù)據(jù)傳入、SD卡的數(shù)據(jù)寫入以及按鍵檢測和對應(yīng)功能的執(zhí)行。因此系統(tǒng)軟件設(shè)計的主要目的是控制ARM與硬件進(jìn)行交互和信息傳遞,共同完成系統(tǒng)的功能。
軟件系統(tǒng)設(shè)計流程如圖5所示,系統(tǒng)中的軟件設(shè)計部分主要闡述在PS端即ARMcortex-A9中運行的軟件程序,包含有外設(shè)及模塊初始化、按鍵檢測和按鍵后對應(yīng)功能處理3個部分。外設(shè)及模塊初始化主要包含有HM01B0的初始化操作以及VDMA的初始化操作,在HM01B0初始化完成后再初始化VDMA以獲得穩(wěn)定的圖像。按鍵檢測方面,為了便于按鍵后的事件處理以及按鍵功能的修改,本系統(tǒng)采用了freeRTOS操作系統(tǒng)實現(xiàn)。對于按鍵后的功能處理部分,系統(tǒng)將按鍵功能分為了錄像功能和更改圖像傳感器參數(shù)的其他功能。
圖5 系統(tǒng)軟件流程圖
ARM Cortex-A9是單核處理器,其內(nèi)部程序執(zhí)行為串行方式,為了充分利用計算資源,使得多個任務(wù)之間協(xié)同工作,本文采用了RTOS(real time operating system)實時操作系統(tǒng)作完成任務(wù)和任務(wù)之間的調(diào)度。
我們根據(jù)實際功能需求分析,將軟件劃分為以下幾類任務(wù):初始化、按鍵檢測和功能執(zhí)行任務(wù)。將這三類任務(wù)分別賦予不同的任務(wù)優(yōu)先級:初始化任務(wù)為最高優(yōu)先級,在任務(wù)創(chuàng)建結(jié)束后即開始執(zhí)行初始化任務(wù),且令該任務(wù)僅執(zhí)行一次。按鍵檢測為第二優(yōu)先,單次按鍵檢測完成后任務(wù)即掛起一段時間供其他任務(wù)執(zhí)行。按鍵各類功能的執(zhí)行設(shè)為第三優(yōu)先,各按鍵功能之間的任務(wù)優(yōu)先級一致。在按鍵檢測的空閑時間完成功能執(zhí)行任務(wù),若按鍵未被按下則將任務(wù)掛起直至有按鍵按下。
為完成按鍵檢測和功能執(zhí)行兩個任務(wù)之間的調(diào)度,系統(tǒng)設(shè)置了多個信號量,每個信號量對應(yīng)一個任務(wù),并將信號量獲取失敗后的等待時間設(shè)為無限。此時初始化后由于沒有按鍵按下,功能執(zhí)行任務(wù)無法獲取信號量全部掛起,直至按鍵檢測任務(wù)檢測到按鍵后,釋放對應(yīng)信號量,此時相應(yīng)的功能執(zhí)行任務(wù)開始執(zhí)行。任務(wù)優(yōu)先級設(shè)置如圖6所示。
圖6 任務(wù)優(yōu)先級設(shè)置
下面根據(jù)圖6中的任務(wù)劃分分別介紹每個任務(wù)的具體實現(xiàn)內(nèi)容。
系統(tǒng)初始化任務(wù)主要可以分為系統(tǒng)外設(shè)初始化和PL端的模塊初始化兩個方面。外設(shè)初始化完成對圖像傳感器HM01B0的配置,模塊初始化完成對VDMA的配置工作。
在系統(tǒng)外設(shè)初始化上,我們建立了一個圖像傳感器初始化數(shù)組,存放初始化的寄存器地址和寄存器值。遍歷初始化數(shù)組,向AXI IIC模塊寄存器寫入發(fā)送數(shù)據(jù)和發(fā)送命令控制其通過IIC與圖像傳感器通信,啟動圖像傳輸。在PL端模塊初始化上,我們首先開辟好VDMA所需的幀緩沖空間,之后通過修改VDMA寄存器來完成寫入緩沖空間地址、讀寫數(shù)據(jù)尺寸以及VDMA的工作模式的工作。
按鍵檢測任務(wù)主要完成按鍵的檢測以及按鍵按下后的任務(wù)調(diào)度功能。該任務(wù)的主要流程如圖7所示。
圖7 按鍵檢測任務(wù)流程圖
由于系統(tǒng)通過機械按鈕進(jìn)行輸入,在按鍵檢測任務(wù)探測到按鍵按下后需要進(jìn)行消抖操作,即在按下延遲一段時間后再次探測按鍵是否被按下。在完成消抖仍探測到按鍵被按下后,開始信號量指示當(dāng)前按下的是哪個按鍵,引導(dǎo)系統(tǒng)進(jìn)入正確的任務(wù)中。
為了方便使用者操作并直觀地觀察到當(dāng)前圖像數(shù)據(jù)獲取狀態(tài),系統(tǒng)添加了狀態(tài)顯示功能。由于顯示圖像的分辨率為320*320,而顯示器支持的最相近的分辨率為480*640,即顯示屏上存在一片空白區(qū)域,我們利用了這部分空白區(qū)域?qū)D像采集狀態(tài)進(jìn)行顯示。圖像采集狀態(tài)顯示流程如圖8所示。
圖8 圖像采集狀態(tài)顯示流程圖
首先,為了顯示當(dāng)前圖像是否正常顯示,在320*320分辨率的畫面顯示部分以外的存儲區(qū)域里選取一小塊區(qū)域,給3個不同的緩沖區(qū)賦予不同的值,用于區(qū)分當(dāng)前緩沖區(qū)號。此時若觀察到屏幕在該區(qū)域的值循環(huán)變化,說明VDMA在循環(huán)地將圖像數(shù)據(jù)寫入存儲空間中,且能夠正確地按照順序?qū)⑵渥x出,以此判斷圖像獲取功能正常運行。
其次,在使用者按下錄像鍵后,在3個緩沖區(qū)賦予相同的“REC”字樣,表明當(dāng)前正在記錄連續(xù)圖像數(shù)據(jù),錄像結(jié)束后將該處的“REC”清空,以此來標(biāo)識當(dāng)前是否在進(jìn)行連續(xù)圖像采集。同時,對于其他按鍵我們采用同樣的方法來標(biāo)識當(dāng)前按下的按鍵要執(zhí)行的功能。
系統(tǒng)的圖像存儲任務(wù)通過FatFs文件系統(tǒng)完成,F(xiàn)atFs是為嵌入式系統(tǒng)設(shè)計的獨立于硬件架構(gòu)的通用FAT(file allocation table)文件系統(tǒng)模塊,其具有占用資源少、支持RTOS和可以不做任何修改直接應(yīng)用于PS端的ARM中的優(yōu)點。
以一次視頻數(shù)據(jù)存儲過程為例,其主要流程如下,首先創(chuàng)建一個FIL文件對象,用于后續(xù)操作使用,新建文件類型為.bin文件,假設(shè)第N次進(jìn)入視頻存儲功能,則將該次視頻文件命名為“Nvideo.bin”。之后以幀為單位向該FIL對象寫入圖像數(shù)據(jù),寫入來源為最近一次完成存儲的圖像緩沖區(qū)位置的數(shù)據(jù)。在寫入之前要校驗當(dāng)前寫入數(shù)據(jù)的緩沖區(qū)位置與上一次寫入數(shù)據(jù)的緩沖區(qū)位置是否一致,若一致則認(rèn)為當(dāng)前幀圖像數(shù)據(jù)未寫入完成,待其位置變化后再進(jìn)行寫入。
由于存儲格式為.bin文件,因此實際使用時在PC端用python語言設(shè)計了一個文件轉(zhuǎn)換工具,通過該工具將.bin文件根據(jù)圖像分辨率以幀為單位拆分并轉(zhuǎn)換為jpg格式的圖像,再以特定幀率將圖像拼接成為最終的視頻數(shù)據(jù)輸出到指定位置。
系統(tǒng)設(shè)計的主要目標(biāo)是完成一個能夠應(yīng)用于構(gòu)建納型無人機視覺場景數(shù)據(jù)集的高幀率圖像數(shù)據(jù)集采集系統(tǒng),因此本文的實驗主要從系統(tǒng)的幀率、圖像質(zhì)量、功耗3個方面進(jìn)行評價。
本文設(shè)計的圖像采集系統(tǒng)實物如圖9所示。在該系統(tǒng)中,使用ZYNQ XC7Z020與HM01B0模組相連接,獲取圖像數(shù)據(jù),VGA接口連接顯示屏作為實時圖像輸出,使用SanDisk ultra 32 GB的SD卡進(jìn)行圖像存儲。
圖9 圖像采集系統(tǒng)實物圖
實驗主要分為以下幾個部分:
1)測試獲取到的圖像數(shù)據(jù)的幀率。令系統(tǒng)采集并存儲200幀圖像,計算讀取全局計時計數(shù)器對應(yīng)的寄存器值的差值,將差值換算得出存儲完成這些幀圖像時所需的時間,進(jìn)而換算得出其平均幀率。全局計時計數(shù)器轉(zhuǎn)換為時間間隔的公式如式(1)所示:
(1)
其中:t的單位為μs,nend和nstart分別為結(jié)束和起始時間的全局計時計數(shù)器值;N為每秒計數(shù)的數(shù)量,對于給定型號芯片N為定值。
測量傳感器硬件可以輸出的最大幀率下系統(tǒng)存儲的圖像幀率,根據(jù)納型無人機視覺場景的應(yīng)用要求,系統(tǒng)的幀率應(yīng)達(dá)到圖像傳感器硬件所能夠傳輸?shù)淖畲髱省?/p>
2)在納型無人機視覺場景下無法獲得理想的標(biāo)準(zhǔn)圖像作為圖像質(zhì)量評價的參考,因此該圖像質(zhì)量評價屬于無參考圖像質(zhì)量評價問題,常用方法為主觀評價或?qū)D像的統(tǒng)計特性進(jìn)行分析的方法間接評價圖像質(zhì)量。
在采集到的圖像數(shù)據(jù)集中任選其中一幀圖片,對圖片進(jìn)行主觀評價,再計算該圖片的均值、標(biāo)準(zhǔn)差和梯度來評價圖像的平均亮度、灰度值分散程度和細(xì)節(jié)紋理。其中圖像亮度應(yīng)處于像素值范圍的中間位置、標(biāo)準(zhǔn)差應(yīng)盡可能大、梯度圖應(yīng)能夠較為清晰地分辨每個物體的輪廓信息。實驗以320*320分辨率配置下獲取到的某一幀圖像為例評價圖像質(zhì)量。
3)通過vivado進(jìn)行功耗評估,并根據(jù)供電電源提供的電壓和電流值得出實際運行時系統(tǒng)的功耗。
4)以調(diào)整圖像傳感器的曝光參數(shù)為例,測試圖像傳感器參數(shù)調(diào)整的功能是否能夠正常運行。
1)依據(jù)上文的實驗方法,將圖像傳感器初始化配置為320*320和QVGA分辨率下的最高輸出幀率,記錄某一時刻起20 s內(nèi)的圖像數(shù)據(jù)。通過串口打印出每存儲完成200幀圖像后全局計時計數(shù)器增加的數(shù)量,根據(jù)式(1)換算得出系統(tǒng)運行的幀率。
幀率測試得到的結(jié)果如表2所示??梢妼M01B0設(shè)置為320*320分辨率最大輸出幀率的情況下,獲取到的圖像幀率可達(dá)45幀以上,QVGA分辨率最大輸出幀率時圖像幀率可達(dá)60幀以上,達(dá)到了圖像傳感器硬件所能夠傳輸?shù)淖畲髱省?/p>
表2 系統(tǒng)連續(xù)采集幀率測試結(jié)果 幀/秒
2)分別選取人、水杯和盒子作為畫面主要內(nèi)容,根據(jù)上文的實驗方法,記錄圖像采集系統(tǒng)獲取到的圖像數(shù)據(jù)。任選其中的某一幀圖片對圖像質(zhì)量進(jìn)行主觀評價,并計算圖像的均值、標(biāo)準(zhǔn)差和梯度。
圖像采集系統(tǒng)獲取到的圖像及計算后的梯度如圖10所示。在圖像數(shù)據(jù)集中分別選取第244、10、10幀作為評價對象,對圖像的統(tǒng)計數(shù)據(jù)進(jìn)行計算。由梯度圖可見圖片的邊緣部分輪廓較為清晰。圖像的像素均值和標(biāo)準(zhǔn)差的計算結(jié)果如表3所示。
圖10 圖像采集系統(tǒng)獲取的圖像及計算后的梯度圖
表3 圖像采集系統(tǒng)獲取圖像的均值、標(biāo)準(zhǔn)差
由計算結(jié)果可得,a圖片均值位于灰度圖取值0~255范圍的較中間位置,圖片的亮度適中,b、c兩張圖片像素均值處于中上位置,主要原因在于其背景顏色較淺;三張圖片的標(biāo)準(zhǔn)差較大,表明其灰度值較為分散,綜合來看,系統(tǒng)采集到的圖像質(zhì)量較好。
3)將系統(tǒng)接入電源,觀察電源供給的電壓和電流值,并計算得出系統(tǒng)實際運行功耗。
將圖像傳感器設(shè)置為45幀320*320分辨率時,系統(tǒng)實際運行的功耗測量結(jié)果如圖11所示。此時系統(tǒng)運行的供電電壓為5.00 V,電流為0.48 A,系統(tǒng)整體的功耗為2.40 W。
圖11 系統(tǒng)實際運行功耗測試結(jié)果
4)在圖像采集系統(tǒng)運行過程中按下曝光度修改按鍵,觀察屏幕顯示的圖像前后區(qū)別來驗證按鍵功能運行情況。
按鍵后的結(jié)果如圖12所示,可見按下按鍵后不同曝光度下對燈光的拍攝效果有明顯差別。
圖12 圖像傳感器曝光度修改前后對比
綜上所述,圖像采集系統(tǒng)的幀率滿足設(shè)計要求,采集到的圖像質(zhì)量較好,圖像傳感器參數(shù)調(diào)整功能可以正常運行。
本文針對納型無人機視覺場景下的獲取的圖像與常用圖像數(shù)據(jù)集不匹配的問題,設(shè)計了一個應(yīng)用于構(gòu)建納型無人機視覺場景數(shù)據(jù)集的圖像采集系統(tǒng)。系統(tǒng)采用了HM01B0模組作為圖像獲取、異構(gòu)芯片ZYNQ作為主控芯片、SD卡作為存儲介質(zhì),軟件上通過FreeRTOS實現(xiàn)任務(wù)控制。經(jīng)測試,系統(tǒng)可以完成45幀320*320分辨率和60幀QVGA分辨率的連續(xù)圖像數(shù)據(jù)采集存儲,且獲取到的圖像質(zhì)量較好,通過顯示屏可以進(jìn)行實時圖像和系統(tǒng)狀態(tài)顯示,通過按鍵完成圖像傳感器的參數(shù)調(diào)整。系統(tǒng)采用DVP接口作為圖像傳輸接口,具備一定的通用性,可以廣泛應(yīng)用于小型機器人等其他場景下的高幀率灰度圖像數(shù)據(jù)的采集當(dāng)中。