亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于DSP的無人機(jī)遙感影像SIFT算法設(shè)計與實(shí)現(xiàn)

        2020-06-01 10:58:36趙海盟趙紅穎
        計算機(jī)應(yīng)用 2020年4期
        關(guān)鍵詞:浮點(diǎn)存儲空間指令

        孫 鵬,肖 經(jīng),趙海盟,劉 帆,晏 磊,3,趙紅穎

        (1. 桂林電子科技大學(xué)機(jī)電工程學(xué)院,廣西桂林541004;2. 空間信息集成與3S工程應(yīng)用北京市重點(diǎn)實(shí)驗(yàn)室(北京大學(xué)),北京100871;3. 廣西高校無人機(jī)遙測重點(diǎn)實(shí)驗(yàn)室(桂林航天工業(yè)學(xué)院),廣西桂林541004)

        (?通信作者電子郵箱zhaohaimeng@guat.edu.cn)

        0 引言

        尺度不變特征變換(Scale-Invariant Feature Transform,SIFT)算法[1]在無人機(jī)(Unmanned Aerial Vehicle,UAV)遙感影像特征點(diǎn)提取和匹配領(lǐng)域內(nèi)扮演著重要角色,隨著時間推移得到不斷的發(fā)展和完善。

        數(shù)字信號處理器(Digital Signal Processor,DSP)是一種適用于密集型數(shù)據(jù)運(yùn)算與實(shí)時信號處理的微處理器[2]?,F(xiàn)階段,在高性能DSP 平臺上實(shí)現(xiàn)部分復(fù)雜圖像處理算法成為了DSP 應(yīng)用研究的一個熱點(diǎn)。在高性能DSP 平臺上實(shí)現(xiàn)完整的SIFT 算法,可以減輕對主計算機(jī)中央處理器(Central Processing Unit,CPU)、圖形處理器(Graphics Processing Unit,GPU)和高速緩存等資源的占用,特別是對圖像算法處理過程中的定點(diǎn)、浮點(diǎn)迭代運(yùn)算相比計算機(jī)平臺處理速度更快。同時,DSP 平臺具有體積小、功耗低和便于集成等優(yōu)點(diǎn)[3],采用DSP 實(shí)現(xiàn)無人機(jī)遙感影像臨場數(shù)據(jù)快速處理具有很大的優(yōu)勢。

        前期,已經(jīng)有一些人在DSP 上進(jìn)行了SIFT 算法的部分研究。許飛等[4]在EVM6670L 平臺上運(yùn)行SIFT 算法時,基于進(jìn)程間通信(Inter-Process Communication,IPC)模塊實(shí)現(xiàn)4 核處理器協(xié)同處理;劉顏開等[5]在TMS320C6678 平臺上實(shí)現(xiàn)8 核協(xié)同處理SIFT 算法。以上研究,既沒有使用本文采用的DSP內(nèi)核的硬件計算單元直接處理單精度浮點(diǎn)型像素數(shù)據(jù)的乘法計算,也沒有充分發(fā)揮DSP的軟件流水特長,對計算過程并未進(jìn)行高質(zhì)量的重新編排;此外,研究中處理的圖像尺寸太小,遠(yuǎn)遠(yuǎn)小于本文實(shí)驗(yàn)采用的大尺寸無人機(jī)遙感圖像,因此無法適應(yīng)于無人機(jī)組網(wǎng)遙感影像的臨場快速處理。

        1 Rob-hess SIFT算法

        SIFT算法是第一個通過穩(wěn)健的描述子將一定程度的不變量與尺度、旋轉(zhuǎn)、放射變換和光照聯(lián)系起來描述局部特征的方法[6]。它被認(rèn)為是計算機(jī)視覺研究的一個熱點(diǎn)[7-8],也具有計算密集的特征[9-10]。

        本文的參考對象為Rob-hess 基于OpenCV(Open source Computer Vision library)和C語言編譯環(huán)境編寫的通用SIFT算法程序。Rob-hess SIFT 算法實(shí)現(xiàn)特征點(diǎn)提取的主要過程如圖1所示。

        圖1 Rob-hess SIFT算法的特征點(diǎn)提取流程Fig. 1 Feature point extraction flowchart by Rob-hess SIFT algorithm

        2 SIFT算法在DSP平臺上的實(shí)現(xiàn)

        2.1 方案設(shè)計

        德州儀器C66x系列DSP內(nèi)核硬件的組成如圖2所示。

        圖2 C66x DSP內(nèi)核Fig. 2 C66x DSP kernel

        主要數(shù)據(jù)計算模塊包括支持單精度浮點(diǎn)型數(shù)據(jù)運(yùn)算的硬件乘法器(Hardware Multiplier,MPY)、累加器和雙數(shù)據(jù)通道[11]。

        為了充分發(fā)揮DSP 內(nèi)核計算性能,本文重新設(shè)計了SIFT算法的圖像數(shù)據(jù)結(jié)構(gòu)、軟件流水和動態(tài)數(shù)據(jù)存儲。首先,重構(gòu)圖像數(shù)據(jù)結(jié)構(gòu)和圖像函數(shù)使得硬件乘法器可以直接參與單精度浮點(diǎn)型像素數(shù)據(jù)的乘法計算;其次,采用軟件流水技術(shù)重新編排算法的循環(huán)計算,以增強(qiáng)算法計算的并行能力;最后,遷移算法產(chǎn)生的動態(tài)數(shù)據(jù)至片外第三代雙倍速率同步動態(tài)隨機(jī)存儲器(Double Data Rate 3 synchronous dynamic random access memory,DDR3),以提升動態(tài)數(shù)據(jù)的存儲空間。具體實(shí)現(xiàn)流程如圖3所示。

        圖3 DSP平臺上SIFT算法的總體設(shè)計Fig. 3 Overall design of SIFT algorithm on DSP platform

        2.2 圖像數(shù)據(jù)類型轉(zhuǎn)換

        硬件計算單元直接參與數(shù)學(xué)計算可以提升計算的速度。但是,原始SIFT 算法使用char 型地址空間存儲圖像像素數(shù)據(jù),使得DSP 內(nèi)核的單精度浮點(diǎn)型硬件乘法器不能夠直接計算算法單精度浮點(diǎn)型像素數(shù)據(jù)的乘法。

        為了使DSP內(nèi)核的硬件乘法器能夠直接參與單精度浮點(diǎn)型像素數(shù)據(jù)的乘法計算,需要根據(jù)硬件乘法器的輸入、輸出特性對圖像數(shù)據(jù)結(jié)構(gòu)和圖像函數(shù)進(jìn)行重構(gòu),具體實(shí)現(xiàn)流程如圖4所示。

        1)IplImage圖像數(shù)據(jù)結(jié)構(gòu)的重構(gòu)。

        在SIFT 算法原始IplImage 圖像數(shù)據(jù)結(jié)構(gòu)中,char 型、float型像素數(shù)據(jù)都存儲于char*型指針imageData 指定的地址空間。一個char 型圖像像素數(shù)據(jù)存儲于一個char 型存儲空間內(nèi),一個float 型像素數(shù)據(jù)需要存儲于4 個char 型存儲空間內(nèi)。由于,DSP 內(nèi)核單精度浮點(diǎn)型硬件乘法器不能夠參與char 型存儲空間內(nèi)數(shù)據(jù)的計算,無法發(fā)揮DSP 優(yōu)良的單精度浮點(diǎn)型數(shù)據(jù)計算能力。

        為了使單精度浮點(diǎn)型硬件乘法器可以直接計算SIFT 算法float 型像素數(shù)據(jù)的乘法,本文對算法的IplImage 圖像數(shù)據(jù)結(jié)構(gòu)進(jìn)行重構(gòu)。

        首先,在IplImage結(jié)構(gòu)中新增float*型指針imageData1,并使用該指針為float型像素數(shù)據(jù)分配存儲空間;其次,在算法浮點(diǎn)運(yùn)算段啟用imageData1指針直接存儲像素點(diǎn)的float型像素數(shù)據(jù),實(shí)現(xiàn)float 型像素數(shù)據(jù)的存儲空間類型由char 型轉(zhuǎn)變?yōu)閒loat 型;最后,對圖像浮點(diǎn)型像素數(shù)據(jù)的計算過程進(jìn)行調(diào)整,并在編譯軟件中啟用硬件乘法器處理該型像素數(shù)據(jù)的乘法計算。新IplImage 結(jié)構(gòu)中圖像單精度浮點(diǎn)型像素數(shù)據(jù)訪問形式如下。

        新IplImage 結(jié)構(gòu)中圖像gray32 第row 行、第col 列像素點(diǎn)的浮點(diǎn)型像素數(shù)據(jù)訪問形式如式(1)所示:

        float_val=*(gray32->imageData1+

        gray32->widthstep?row+col) (1)

        新IplImage 結(jié)構(gòu)中圖像gray32 第n 個浮點(diǎn)型像素數(shù)據(jù)的訪問形式如式(2)所示:

        float_val=*(gray32->imageData1+n) (2)其中:gray32 為一個IplImage 型結(jié)構(gòu)體圖像的起始地址;row、col 和n 為被定義的int 型變量;gray32->widthstep 為gray32 圖像中每一行像素數(shù)據(jù)存儲時占用的存儲空間;gray32->imageData1為新數(shù)據(jù)結(jié)構(gòu)中圖像單精度浮點(diǎn)型像素數(shù)據(jù)的起始地址。

        2)圖像函數(shù)的重構(gòu)。

        原始SIFT 算法程序調(diào)用cvCreateImage 函數(shù)創(chuàng)建圖像結(jié)構(gòu)的首地址并根據(jù)圖像頭信息為結(jié)構(gòu)體的像素數(shù)據(jù)分配適當(dāng)存儲空間。在圖像創(chuàng)建過程中,調(diào)用的子函數(shù)主要包括創(chuàng)建圖像頭信息的函數(shù)cvCreateImageHeader 和為像素數(shù)據(jù)分配存儲空間的函數(shù)cvCreateData。

        原始圖像像素數(shù)據(jù)存儲空間的首地址由像素數(shù)據(jù)空間分配函數(shù)cvCreateData 提供。為了使新增加的imageData1 指針能夠指向合法的存儲空間,需要對函數(shù)cvCreateData 進(jìn)行重構(gòu)。當(dāng)輸入的圖像像素數(shù)據(jù)類型為32 位float 型時,函數(shù)cvCreateData 的子函數(shù)ialloc 開始分配存儲空間并將返回的地址強(qiáng)制轉(zhuǎn)換為float*型;然后,將得到的float*型地址傳遞到指針imageData1。具體實(shí)現(xiàn)方式如式(3)所示:

        img->imageData1=(float*)ialloc

        ((size_t)img->imageSize) (3)

        其中:img->imageSize 為圖像像素數(shù)據(jù)需要占據(jù)空間的大?。▎挝?字節(jié)),由圖像的行、列和像素點(diǎn)數(shù)據(jù)類型決定;img->imageData1 為圖像img 的單精度浮點(diǎn)型像素數(shù)據(jù)在新IplImage 結(jié)構(gòu)中存儲后返回的起始地址;iallco 為空間分配函數(shù),在完成空間分配后會返回void*型起始地址(該地址可以被強(qiáng)制轉(zhuǎn)換為其他類型)。

        2.3 軟件流水編排

        2.3.1 編排設(shè)計

        德州儀器C66x DSP 內(nèi)核具有8 路超長指令字(Very Long Instruction Word,VLIW)、浮點(diǎn)數(shù)據(jù)路徑[12]和8 組單精度浮點(diǎn)型硬件乘法器,內(nèi)核主頻高達(dá)1.25 GHz(Giga Hertz),浮點(diǎn)性能高達(dá)20 GFLOP(Giga Floating-point Operations per Second)。由于,其指令集架構(gòu)(Instruction Set Architecture,ISA)是基于VLIW 架構(gòu),每個指令加載包的長度為256 位[13]。因此,在C66x 內(nèi)核DSP 平臺上使用的單指令多數(shù)據(jù)流(Single Instruction Multiple Data,SIMD)指令可以同時執(zhí)行最多8 條32位指令。

        使用軟件流水技術(shù)對算法程序重新進(jìn)行編排,使得編譯器可以更加均衡地使用芯片內(nèi)核的硬件資源;同時,部分無關(guān)聯(lián)性指令的不同執(zhí)行階段可以被同時執(zhí)行,縮短各指令執(zhí)行時的等待間隔,可以更充分地發(fā)揮系統(tǒng)的并行計算能力。

        軟件流水編排的實(shí)質(zhì)是:降低函數(shù)指針之間的關(guān)聯(lián)性以增強(qiáng)計算的并行性能;將算法的子函數(shù)內(nèi)嵌入主程序;對多層循環(huán)體進(jìn)行簡化與展開;使用軟件流水技術(shù)將數(shù)據(jù)計算段編排到預(yù)設(shè)的pipeline 中;同時,結(jié)合CCS(Code Composer Studio)5.5 集成開發(fā)環(huán)境的DSP 軟件流水優(yōu)化功能,優(yōu)化流水編排的層級,最大化使用硬件資源。采用四級流水編排前后的指令執(zhí)行情況如圖5所示。

        圖5 指令執(zhí)行對比Fig. 5 Comparison of instruction execution

        在圖5 中,指令甲、乙與指令1、2、3、4、5 為處理器的相同執(zhí)行指令。沒有進(jìn)行軟件流水編排時,指令乙只能在指令甲完成寫回操作后才可以得到執(zhí)行。對算法程序運(yùn)行重新編排后,程序中指令1 的寫回、指令2 的執(zhí)行、指令3 的譯碼和指令4 的預(yù)取操作可以被同時執(zhí)行,縮短了指令的執(zhí)行間隔。該處為流水編排后循環(huán)核的開始;指令2的寫回、指令3的執(zhí)行、指令4 的譯碼、指令5 的預(yù)取也會同時執(zhí)行,為循環(huán)核的一部分;循環(huán)核左側(cè)部分為流水循環(huán)填充(pipeline loop prolog);循環(huán)核右側(cè)部分為流水循環(huán)排空(pipeline loop epilog)。圖5中,同樣的時鐘周期內(nèi),原始程序僅可以執(zhí)行甲、乙兩條完整指令,而流水編排后的程序可以執(zhí)行5 條完整指令,算法程序的計算速度得以提升。

        流水編排的具體實(shí)現(xiàn)流程如圖6所示。

        圖6 軟件流水編排流程Fig. 6 Flowchart of software pipeline arrangement

        2.3.2 具體實(shí)現(xiàn)

        為了減少計算過程中輸入、輸出數(shù)據(jù)指針的關(guān)聯(lián)性,在函數(shù)中使用restrict 和const 關(guān)鍵字以聲明函數(shù)非關(guān)聯(lián)性指針指向不同內(nèi)存塊。當(dāng)函數(shù)輸入、輸出指針存在關(guān)聯(lián)性且在計算獨(dú)立時,需要對程序的輸出指針進(jìn)行調(diào)整;建立過渡內(nèi)存塊,并將輸出指針指向過渡區(qū)塊;完成計算后,再將過渡區(qū)塊的內(nèi)容拷貝到原始程序指定的內(nèi)存塊中。鄰近插值函數(shù)變化如下。

        原始源代碼:

        void resizeImg(IplImage*gray,IplImage*Big)

        插入關(guān)鍵字后源代碼:

        void resizeImg(const IplImage*gray,IplImage*Big)

        以上源代碼中,gray 為輸入指針,Big 為輸出指針。在源代碼中使用const關(guān)鍵字以聲明輸入、輸出指針為非關(guān)聯(lián)性指針且指向不同的內(nèi)存塊。

        由于含有子函數(shù)的循環(huán)體無法通過優(yōu)化器編排為一個pipeline。因此,需要將迭代計算調(diào)用的子函數(shù)內(nèi)嵌入主程序循環(huán)體內(nèi)。

        此外,DSP 集成開發(fā)環(huán)境的編譯器優(yōu)化循環(huán)計算時,只在循環(huán)計算的內(nèi)層中形成一個pipeline。因此,需要對多重循環(huán)計算進(jìn)行簡化和展開,使得計算可以更加充分地被編排入預(yù)設(shè)的pipeline。圖像歸一化的計算變化如下。

        原始源代碼:

        以上源代碼中,row3 和col3 是被定義的int 型變量;height1 和width1 為圖像的每列、行像素點(diǎn)數(shù)目;alpha 為一浮點(diǎn)數(shù);gray8->imageData 為歸一化前圖像像素數(shù)據(jù)起始地址;gray->imageData1 為歸一化后圖像像素數(shù)據(jù)起始地址。原始的算法計算程序只能將圖像每一行像素數(shù)據(jù)的計算納入pipeline,而簡化后的計算程序可以將圖像所有像素數(shù)據(jù)的計算都納入pipeline,從而縮短了指令間等待時間。

        軟件編譯器優(yōu)化設(shè)置可以改善軟件流水性能[14]。編譯器優(yōu)化選項使用如下:

        1)啟用Assume no irregular alias or loop be-havior,以聲明程序中沒有使用alasing技術(shù)。

        2)設(shè)置Optimization level 為3,即選擇-o3以進(jìn)行文件級別的優(yōu)化。

        3)啟用Program mode compilation,即使能-pm 以配合-o3使算法實(shí)現(xiàn)程序級別優(yōu)化。

        4)設(shè)置Specify call assumptions when opti-mizing 為3,選擇-op3以控制程序的優(yōu)化級。

        5)設(shè)置Optimize for code size 為2,選擇-ms2 以縮小代碼的部分尺寸。

        6)設(shè)置Generate optimizer information file at level 為2,選擇-on2以生成優(yōu)化信息文件。

        2.4 數(shù)據(jù)存儲遷移

        SIFT 算法具有占用存儲空間大的特征,處理1 000×750彩色正射影像時,主要內(nèi)存占用情況如圖7所示。分析圖7可知:SIFT 算法處理1000 × 750 彩色影像時,構(gòu)建高斯差分金字塔過程中需要的存儲空間最大,約為168 MB;考慮到SIFT算法計算過程中的其他變量和特征點(diǎn)情況,處理1000 × 750彩色影像所需要的實(shí)際存儲空間應(yīng)大于168 MB。芯片內(nèi)部的SHRAM(shared memory)存儲空間為64 MB,不能夠滿足算法運(yùn)行過程中的存儲需求。

        圖7 主要內(nèi)存分布Fig. 7 Main memory distribution

        為了使DSP 平臺SIFT 算法可以處理1 000×750 彩色正射影像,需要將算法的動態(tài)數(shù)據(jù)從芯片內(nèi)部的SHRAM 轉(zhuǎn)移至片外DDR3存儲器。由于原始DDR3存儲器內(nèi)各子存儲空間,也無法支持SIFT 算法的數(shù)據(jù)存儲,因此需要將DDR3 存儲器中不連續(xù)的原始子存儲空間進(jìn)行合并,以拓展存儲器中的連續(xù)存儲空間。

        為了完成上述的存儲遷移,需要調(diào)整存放鏈接器的配置信息CMD(算法工程中后綴為.cmd)文件。具體調(diào)整細(xì)節(jié)為:根據(jù)平臺板載存儲空間重新編寫CMD 文件中的SECTIONS(目標(biāo)存儲器模型段)和MEMORY(硬件資源描述段)。

        1)CMD文件的SECTIONS編寫。

        德州儀器C66x DSP 內(nèi)核的片內(nèi)內(nèi)存與CPU 保持相同的時鐘頻率。但是,片內(nèi)存儲空間過小,不適應(yīng)大量數(shù)據(jù)的存放。在本文研究的過程中,使用DSP 平臺搭載的DDR3 存儲器存儲SIFT 算法計算產(chǎn)生的動態(tài)數(shù)據(jù),改變動態(tài)數(shù)據(jù)存儲空間的具體方式如下。

        在新創(chuàng)建圖像結(jié)構(gòu)體分配內(nèi)存時,直接采用了ialloc 函數(shù),同時,需要調(diào)整CMD 文件中SECTIONS(目標(biāo)存儲器模型段)的描述代碼,詳細(xì)源代碼變化如下。

        原始CMD文件中動態(tài)內(nèi)存的存儲器模型描述源代碼:

        .sysmem >SHRAM

        重新編寫CMD 文件中動態(tài)內(nèi)存的存儲器模型描述源代碼:

        .sysmem >DDR3

        2)CMD文件的MEMORY編寫。

        CMD 文件的MEMORY 代碼段用于描述系統(tǒng)實(shí)際硬件資源配置。為了充分使用DDR3 存儲器的存儲空間,需要將存儲器內(nèi)不連續(xù)的硬件描述區(qū)域合并為一個以DDR3 為名稱的連續(xù)存儲空間,具體的硬件描述源代碼變換如下。

        原始DDR3存儲器地址空間的硬件描述源代碼:

        DDR3:origin=0x80000000 length=0x10000000

        DDR3A:origin=0x90000000 length=0x10000000

        DDR3B:origin=0xA0000000 length=0x10000000

        合并后DDR3存儲器地址空間的硬件描述源代碼:

        DDR3:origin=0x80000000 length=0x7FFFFFFF

        在以上代碼中,DDR3、DDR3A、DDR3B 分別為DDR3 存儲器內(nèi)子存儲空間的名稱;origin 表示該子存儲空間的起始地址;length 表示該子存儲空間的有效長度;DSP 平臺實(shí)際搭載的DDR3 存儲器起始地址為0x80000000,有效長度為0x7FFFFFFF(容量為2 GB),該容量遠(yuǎn)大于SHRAM 內(nèi)64 MB存儲空間。

        通過重新編寫CMD 文件SECTIONS 和MEMORY,將DSP硬件平臺DDR3 存儲器內(nèi)不連續(xù)的存儲空間轉(zhuǎn)變?yōu)檫B續(xù)的存儲空間,并將SIFT 算法的動態(tài)數(shù)據(jù)遷移至該段連續(xù)的存儲空間內(nèi),為算法處理較大尺寸的圖像打下了基礎(chǔ)。

        3 實(shí)驗(yàn)與結(jié)果分析

        3.1 硬件平臺設(shè)計

        根據(jù)上述方案,選擇德州儀器66AKH12 處理器作為DSP硬件平臺主處理器,平臺如圖8 所示。66AKH12 是基于KeyStone Ⅱ架構(gòu)的高性能處理器,主處理器內(nèi)部集成了8 核的C66x 內(nèi)核組和4 核的ARM(Advanced RISC Machine)A15內(nèi)核組[15]。XDS(Extended Debugging Simulator)200mini 模塊為仿真器;MiniUSB(Universal Serial Bus)接口固定在仿真器上,用于與外部連接。

        圖8 DSP測試平臺Fig. 8 DSP test platform

        在實(shí)驗(yàn)中,設(shè)置C66x 內(nèi)核組的0 核作為處理器核,配置DSP 的時鐘頻率為1.2 GHz。測試平臺通過硬件Board to Board 連接器連接至XDS200mini 模塊,并使用MiniUSB 電纜將XDS200mini 連接至PC。PC 平臺的CCS 5.5 軟件集成開發(fā)環(huán)境用于程序的調(diào)試、加載和中斷等。運(yùn)行設(shè)計如圖9 所示。測試圖像為一無人機(jī)遙感任務(wù)采集的正射彩色影像,原始影像尺寸為1 000 × 750,如圖10所示。

        圖9 硬件運(yùn)行設(shè)計Fig. 9 Hardware running design

        圖10 測試圖像Fig. 10 Test image

        3.2 結(jié)果分析

        1)算法精度分析。

        DSP為32位處理器,原始SIFT算法程序的處理平臺為64位處理器。由于,32位處理器與64位處理器數(shù)據(jù)總線位數(shù)的不同,在數(shù)據(jù)長度為64 位double 型數(shù)據(jù)的計算過程中會產(chǎn)生相應(yīng)的計算誤差;而且,在不修改計算數(shù)據(jù)的數(shù)據(jù)類型時,該部分的計算誤差會一直存在。由于在構(gòu)建高斯尺度空間的計算過程中進(jìn)行了大量的double 型數(shù)據(jù)的乘法、加法和減法迭代計算,因此DSP 平臺SIFT 算法程序與原始SIFT 程序所提取特征點(diǎn)坐標(biāo)、尺度、方向的小數(shù)部分和128 維特征描述子也會存在相應(yīng)的差異。不同平臺SIFT 算法的實(shí)際處理情況如圖11所示。

        圖11 不同平臺的特征點(diǎn)處理結(jié)果Fig. 11 Processing results of feature points on different platforms

        圖11 中A、B 列分別為DSP 平臺SIFT 算法程序和原始SIFT 算法程序提取的特征點(diǎn)信息,C 列為DSP 平臺SIFT 算法程序提取的特征點(diǎn)數(shù)據(jù)與原始算法提取數(shù)據(jù)之差。在A、B列中feat1 為1 000×750 測試圖像(如圖10 所示)的名字。x、y 為提取特征點(diǎn)的坐標(biāo)信息,scl 為特征點(diǎn)的尺度,ori 為特征點(diǎn)的方向角,ii 為特征點(diǎn)的編號;從第8 行到第135 行數(shù)據(jù)為特征點(diǎn)0 的128 維特征描述子;分析C 列可以發(fā)現(xiàn),算法在不同平臺上提取特征點(diǎn)0 的描述子信息誤差為0,特征點(diǎn)0 坐標(biāo)、尺度的小數(shù)部分存在細(xì)小的誤差(此誤差由處理器之間硬件差異造成)。由于EXCLE 表格中第2 行到第7 行的特征信息數(shù)據(jù)不是單一數(shù)值,因此,在進(jìn)行不同平臺特征點(diǎn)信息逐差計算的過程中,此處系統(tǒng)自動使用“#VALUE!”以表示“引用單元格錯誤”。由于圖11 無法展示全體特征點(diǎn)的特征信息,因此使用表1對該信息進(jìn)行統(tǒng)計。

        表1 特征點(diǎn)信息(1000 × 750)Tab. 1 Information of feature points(1000 × 750)

        分析表1 可以發(fā)現(xiàn),處理測試的1000 × 750 圖像時,本研究的DSP 平臺SIFT 算法程序與原始算法程序的處理結(jié)果保持高度一致:兩個平臺提取的特征點(diǎn)數(shù)量和特征點(diǎn)坐標(biāo)信息保持一致,在3 324 個相同坐標(biāo)特征點(diǎn)所對應(yīng)的特征描述子中,相同描述子比例的高達(dá)99.97%;可見DSP 平臺SIFT 算法程序?qū)D像特征點(diǎn)的識別、描述能力與原始算法程序基本保持一致。由于使用特征點(diǎn)信息進(jìn)行圖像匹配時,處理過程對圖像特征點(diǎn)的坐標(biāo)、尺度、方向角和128 維特征描述子的誤差要求遠(yuǎn)大于本研究算法程序的提取誤差,因此,該算法程序完全滿足臨場實(shí)時快速處理無人機(jī)組網(wǎng)遙感影像的精度需求。

        2)耗時分析。

        DSP 平臺SIFT 算法的運(yùn)行時間由CCS 5.5 軟件自帶Count Event模塊統(tǒng)計。詳細(xì)實(shí)驗(yàn)結(jié)果如圖12所示。

        圖12 DSP平臺運(yùn)行的SIFT算法Fig. 12 SIFT algorithm running on DSP platform

        實(shí)驗(yàn)中,處理器為C66x 內(nèi)核組的0 核,主頻為1.2 GHz。當(dāng)程序運(yùn)行至圖12 第42 行時,受到間斷點(diǎn)的限制,板載仿真在此處暫停;此時,Count Event模塊統(tǒng)計的時鐘顯示圖像預(yù)處理耗時,此處耗時不計入SIFT 算法的總耗時。點(diǎn)擊繼續(xù)運(yùn)行后,Count Event 模塊自動清零并開始重新統(tǒng)計CPU 運(yùn)行時鐘數(shù)據(jù),SIFT 算法程序開始被執(zhí)行;當(dāng)程序運(yùn)行至第46行時,板載仿真進(jìn)入暫停,此時Count Event 模塊統(tǒng)計的時鐘顯示SIFT算法處理1000 × 750 影像所消耗的CPU 時鐘數(shù)據(jù)。由圖12分析可得,在特征點(diǎn)提取過程中,DSP平臺SIFT算法程序共消耗2 525 842 766 個CPU 時鐘周期,約為2.53 GHz。結(jié)合DSP主頻配置和表1 分析可得:在確保提取到高質(zhì)量特征點(diǎn)坐標(biāo)、尺度、方向和特征描述子前提下,DSP 平臺的0 核運(yùn)行本文的SIFT 算法程序處理測試的1000 × 750圖像需要運(yùn)行2.108 s,滿足在單核處理器平臺上臨場實(shí)時快速處理無人機(jī)組網(wǎng)遙感影像的時間要求。

        4 結(jié)語

        本文基于DSP平臺的軟硬件資源實(shí)現(xiàn)了具有完整功能的Rob-hess SIFT算法。通過對圖像數(shù)據(jù)結(jié)構(gòu)、圖像函數(shù)的重構(gòu)、軟件流水的重新編排和動態(tài)數(shù)據(jù)存儲空間的遷移,實(shí)現(xiàn)了對大尺寸無人機(jī)遙感圖像的高精度快速處理。實(shí)驗(yàn)結(jié)果表明,本文算法的精度、運(yùn)行耗時和處理圖像的尺寸滿足臨場處理需求。

        下一步,可以對數(shù)據(jù)的輸入輸出接口進(jìn)行深入設(shè)計,實(shí)現(xiàn)無人機(jī)遙感影像數(shù)據(jù)在PC 和DSP 間的快速交互。同時,在DSP 開發(fā)的過程中,進(jìn)行多任務(wù)調(diào)度實(shí)現(xiàn)可以進(jìn)一步提升處理速度。

        猜你喜歡
        浮點(diǎn)存儲空間指令
        聽我指令:大催眠術(shù)
        LEO星座增強(qiáng)GNSS PPP模糊度浮點(diǎn)解與固定解性能評估
        基于多種群協(xié)同進(jìn)化算法的數(shù)據(jù)并行聚類算法
        蘋果訂閱捆綁服務(wù)Apple One正式上線
        綜藝報(2020年21期)2020-11-30 08:36:49
        用好Windows 10保留的存儲空間
        基于浮點(diǎn)DSP的鐵路FSK信號檢測
        ARINC661顯控指令快速驗(yàn)證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        基于FPGA的浮點(diǎn)FIR濾波器設(shè)計
        改進(jìn)的Goldschmidt雙精度浮點(diǎn)除法器
        亚洲一区av无码少妇电影| 开心久久综合婷婷九月| 天天做天天添av国产亚洲| 97se亚洲精品一区| 狠狠丁香激情久久综合| 亚洲情精品中文字幕99在线| 又黄又刺激的网站久久| 蜜臀av性久久久久蜜臀aⅴ| 国产自产精品露脸刺激91在线| 国产三级av在线播放| 免费在线观看播放黄片视频| 国产三区在线成人av| 久久久精品3d动漫一区二区三区| 一本久久综合亚洲鲁鲁五月夫| 日韩精品一区二区三区在线视频| 亚洲成av人片在线观看麦芽| 五月中文字幕| 国内精品久久人妻互换| 久久久久99精品成人片欧美| 伊人狠狠色丁香婷婷综合| 加勒比黑人在线| 经典黄色一区二区三区| 免费国产a国产片高清网站| 97久久久久人妻精品专区| 亚洲精品一品二品av| 久久精品国产亚洲av四叶草| 西西大胆午夜人体视频| 久久亚洲高清观看| 中国黄色偷拍视频二区| 男人的天堂av网站| 国产午夜无码视频免费网站| 亚洲国产日韩综一区二区在性色| 中文字幕精品一区久久| 国产真实夫妇视频| 阿v视频在线| 一本色道久久亚洲精品| 天堂√在线中文官网在线| 久久久久久久98亚洲精品| 99亚洲女人私处高清视频| 激情综合色五月丁香六月欧美| 久久精品国产99国产精2020丨|