專(zhuān)利名稱(chēng):一種基于fpga的高光譜圖像異常檢測(cè)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于FPGA的高光譜圖像異常檢測(cè)系統(tǒng)。
背景技術(shù):
雖然高光譜遙感圖像在波段數(shù)和分辨率方面表現(xiàn)出色,但是其巨大的數(shù)據(jù)量和極高的數(shù)據(jù)率對(duì)于要求時(shí)效性的數(shù)據(jù)處理造成很大的障礙,為解決這一難題科研人員提出許多新的高效數(shù)據(jù)處理方法對(duì)高光譜圖像進(jìn)行處理。高光譜遙感技術(shù)的快速發(fā)展使得遙感圖像數(shù)據(jù)海量增長(zhǎng),設(shè)在地球地面的數(shù)據(jù)處理中心站不能對(duì)爆炸性增長(zhǎng)的遙感圖像數(shù)據(jù)進(jìn)行及時(shí)處理,嚴(yán)重阻礙了海量有價(jià)值數(shù)據(jù)的有效和充分利用。并且,由于受到傳輸鏈路帶寬的限制,高光譜遙感圖像傳送到地面之前需進(jìn)行大比率的有損壓縮,以至于地面對(duì)傳回圖像進(jìn)行恢復(fù)時(shí)會(huì)丟失圖像的大量細(xì)節(jié)信息,造成嚴(yán)重的圖像質(zhì)量損失。因此高光譜高速處理技術(shù)是解決這一問(wèn)題的一種必要方法,尤其在衛(wèi)星上便可以對(duì)遙感圖像數(shù)據(jù)進(jìn)行實(shí)時(shí)預(yù)處理,大幅度提高數(shù)據(jù)的利用率。經(jīng)過(guò)處理的圖像數(shù)據(jù)可以在盡量減少失真的情況下進(jìn)行大比例壓縮,減輕數(shù)據(jù)傳輸鏈路帶寬要求較高的壓力。隨著電子設(shè)計(jì)自動(dòng)化技術(shù)的高速發(fā)展,半導(dǎo)體工藝的顯著提高使得FPGA規(guī)模越來(lái)越大,計(jì)算性能越來(lái)越強(qiáng),許多傳統(tǒng)軟件方法實(shí)現(xiàn)的高光譜圖像處理算法得以變?yōu)橛布娐仿勊賹?shí)現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的目的是為了解決在對(duì)高光譜圖像進(jìn)行異常檢測(cè)處理時(shí)PC機(jī)的計(jì)算效率不能滿足實(shí)時(shí)性要求的問(wèn)題,提出一種基于FPGA的高光譜圖像處理實(shí)現(xiàn)裝置??梢詫?shí)現(xiàn)高光譜圖像數(shù)據(jù)的高速實(shí)時(shí)處理,并可以根據(jù)需要對(duì)硬件進(jìn)行升級(jí),以實(shí)現(xiàn)更高性能要求。本發(fā)明解決技術(shù)問(wèn)題所采取的技術(shù)方案:
一種基于FPGA的高光譜圖像異常檢測(cè)系統(tǒng)包括數(shù)據(jù)輸入模塊、協(xié)方差矩陣求解模塊、廣義逆求解模塊和結(jié)果求解模塊,數(shù)據(jù)輸入模塊負(fù)責(zé)窗口矩陣數(shù)據(jù)的均值化處理,它的輸出端連接協(xié)方差矩陣求解模塊的輸入端,協(xié)方差矩陣求解模塊的輸出端連接廣義逆求解模塊的輸入端,廣義逆求解模塊用來(lái)求解協(xié)方差矩陣的廣義逆,它的輸出端連接結(jié)果計(jì)算模塊的輸入端。所述的數(shù)據(jù)輸入模塊主要包括窗口矩陣模塊、均值計(jì)算模塊、矩陣減法模塊和矩陣轉(zhuǎn)置模塊。窗口矩陣模塊產(chǎn)生窗口矩陣數(shù)據(jù),均值計(jì)算模塊產(chǎn)生的均值數(shù)據(jù)輸入到矩陣減法模塊,矩陣減法模塊數(shù)據(jù)結(jié)果輸入到矩陣轉(zhuǎn)置模塊求解矩陣的轉(zhuǎn)置。所述的協(xié)方差矩陣求解模塊主要包括矩陣乘法模塊和定點(diǎn)轉(zhuǎn)浮點(diǎn)數(shù)據(jù)模塊。矩陣乘法計(jì)算結(jié)果輸入到定點(diǎn)轉(zhuǎn)浮點(diǎn)模塊進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換。所述的廣義逆求解模塊是整個(gè)系統(tǒng)的核心模塊,主要包括廣義逆求解控制器、矩陣求秩模塊、矩陣乘法模塊、廣義逆計(jì)算模塊和數(shù)據(jù)存儲(chǔ)組成。數(shù)據(jù)存儲(chǔ)模塊用來(lái)暫時(shí)存儲(chǔ)輸入矩陣數(shù)據(jù),矩陣求秩模塊和矩陣乘法模塊讀取數(shù)據(jù)存儲(chǔ)中的矩陣數(shù)據(jù)進(jìn)行并行計(jì)算,兩者結(jié)果輸入到廣義逆計(jì)算模塊進(jìn)行廣義逆求解,廣義逆求解控制器主要負(fù)責(zé)調(diào)度數(shù)據(jù)流動(dòng)和控制其它模塊的動(dòng)作。
所述的結(jié)果計(jì)算模塊主要包括均值向量計(jì)算模塊,向量矩陣點(diǎn)乘模塊和向量點(diǎn)乘模塊,主要涉及向量點(diǎn)乘運(yùn)算。
本發(fā)明的有益效果: (I)系統(tǒng)采用了具有并行計(jì)算性能優(yōu)勢(shì)的FPGA作為平臺(tái),并且充分挖掘了計(jì)算過(guò)程的并行性,最終映射為具體的硬件電路結(jié)構(gòu)來(lái)實(shí)現(xiàn)運(yùn)算過(guò)程,提高了系統(tǒng)運(yùn)算性能,相比傳統(tǒng)軟件方法大大提高了數(shù)據(jù)處理速度。
(2)核心計(jì)算模塊采用了單精度數(shù)據(jù)類(lèi)型充分保證了計(jì)算結(jié)果的精確性。
(3) FPGA同時(shí)具有高度的靈活性,F(xiàn)PGA具有重配置能力只需要修改配置文件既可以實(shí)現(xiàn)對(duì)內(nèi)部電路的修改和維護(hù)。基于FPGA開(kāi)發(fā)的系統(tǒng)可以進(jìn)行快速升級(jí)和方便維護(hù),可以節(jié)約研發(fā)成本降低研發(fā)風(fēng)險(xiǎn)。
圖1 RX算法流程圖; 圖2為本發(fā)明的系統(tǒng)結(jié)構(gòu)示意圖; 圖3為數(shù)據(jù)輸入模塊設(shè)計(jì)框架圖; 圖4為協(xié)方差矩陣求解模塊設(shè)計(jì)框架圖; 圖5為廣義逆求解模塊設(shè)計(jì)框架圖; 圖6為矩陣求秩模塊設(shè)計(jì)框架圖; 圖1為結(jié)果計(jì)算模塊設(shè)計(jì)框架圖。
具體實(shí)施方式
結(jié)合附圖,對(duì)本發(fā)明作進(jìn)一步描述。
如圖1所示為RX算法流程圖,從單窗口 RX算法原理可以看出該算法是通過(guò)計(jì)算局部檢測(cè)窗口內(nèi)數(shù)據(jù)的RX算子值來(lái)尋找異常目標(biāo)的。移動(dòng)檢測(cè)窗口對(duì)整幅高光譜圖像進(jìn)行檢測(cè)就可以找到圖像內(nèi)的所有異常目標(biāo)。因此,我們可以認(rèn)為整個(gè)算法是以局部檢測(cè)窗口內(nèi)的數(shù)據(jù)所組成的窗口矩陣為單位進(jìn)行計(jì)算的。
根據(jù)圖像的空間大小和分辨率,將RX算法檢測(cè)窗口設(shè)置為Ilxll像素大小,檢測(cè)窗可以包含121個(gè)像素點(diǎn),根據(jù)高光譜數(shù)據(jù)特點(diǎn)可知窗口內(nèi)為IlxllxNband (Nband為所選波段數(shù))的三維矩陣數(shù)據(jù)。根據(jù)計(jì)算需要須將三維矩陣轉(zhuǎn)化為二維矩陣來(lái)進(jìn)行計(jì)算,即將原矩陣化為維數(shù)為Nbandxl21的二維數(shù)據(jù)矩陣。然后,計(jì)算窗口矩陣的均值矩陣,用數(shù)據(jù)矩陣減去均值矩陣得到的結(jié)果矩陣去求得背景協(xié)方差矩陣的估計(jì)值。計(jì)算協(xié)方差矩陣的廣義逆矩陣,然后將所得結(jié)果矩陣帶入異常檢測(cè)算子進(jìn)行計(jì)算。求得的異常檢測(cè)算子與閾值進(jìn)行比較判斷待檢測(cè)點(diǎn)是否為異常目標(biāo),然后通過(guò)滑動(dòng)窗口對(duì)整幅高光譜圖像進(jìn)行異常檢測(cè)算子計(jì)算找出圖像中的異常點(diǎn)。
如圖2所示,本實(shí)施方案包括數(shù)據(jù)輸入模塊、協(xié)方差矩陣求解模塊、廣義逆求解模塊和結(jié)果求解模塊,數(shù)據(jù)輸入模塊的輸出端連接協(xié)方差矩陣求解模塊的輸入端,協(xié)方差矩陣求解模塊的輸出端連接廣義逆求解模塊的輸入端,廣義逆求解模塊的輸出端連接結(jié)果計(jì)算模塊的輸入端。下面結(jié)合各圖說(shuō)明各個(gè)模塊的實(shí)現(xiàn): (I)數(shù)據(jù)輸入模塊設(shè)計(jì)。
圖3給出了數(shù)據(jù)輸入模塊的框架圖,窗口矩陣產(chǎn)生模塊實(shí)現(xiàn)對(duì)圖像原始數(shù)據(jù)進(jìn)行窗口化處理,即生成窗口數(shù)據(jù)矩陣。通過(guò)地址產(chǎn)生器產(chǎn)生數(shù)據(jù)讀寫(xiě)使能信號(hào)和讀寫(xiě)地址信號(hào),讀出高光譜圖像數(shù)據(jù)存儲(chǔ)中的像元數(shù)據(jù),存儲(chǔ)到窗口矩陣RAM中。在窗口數(shù)據(jù)矩陣中每一列代表一個(gè)像元,接下來(lái)通過(guò)均值矩陣模塊計(jì)算窗口所包括的所有像元向量的均值向量,并產(chǎn)生相應(yīng)的均值矩陣。再通過(guò)矩陣減法模塊實(shí)現(xiàn)窗口內(nèi)數(shù)據(jù)的局部中心化處理,產(chǎn)生新的數(shù)據(jù)矩陣。通過(guò)矩陣轉(zhuǎn)置處理產(chǎn)生其轉(zhuǎn)置矩陣,輸出到計(jì)算協(xié)方差矩陣模塊??刂颇K則可以實(shí)現(xiàn)局部滑動(dòng)窗口在整個(gè)圖像場(chǎng)景陣列中滑動(dòng),從而實(shí)現(xiàn)對(duì)除邊界以外的所有圖像數(shù)據(jù)進(jìn)行異常檢測(cè)處理。
1-1地址產(chǎn)生器模塊 地址產(chǎn)生器模塊的作用是用來(lái)產(chǎn)生窗口矩陣數(shù)據(jù),圖像數(shù)據(jù)在存儲(chǔ)器中是順序存儲(chǔ)的,即每個(gè)像元向量數(shù)據(jù)地址是連續(xù)的。由于窗口矩陣大小為11 11,所以窗口矩陣數(shù)據(jù)為N 121(Ν為所選波段數(shù),即每個(gè)像元向量元素個(gè)數(shù)),地址產(chǎn)生器模塊產(chǎn)生讀、寫(xiě)數(shù)據(jù)使能和讀、寫(xiě)地址信號(hào),將窗口內(nèi)像元向量數(shù)據(jù)取出并送入數(shù)據(jù)處理模塊進(jìn)行運(yùn)算處理。窗口矩陣生成的關(guān)鍵在于產(chǎn)生相應(yīng)的讀寫(xiě)使能信號(hào)和讀寫(xiě)地址信號(hào)。順序從圖像數(shù)據(jù)存儲(chǔ)器中取出每一個(gè)像元向量的第一個(gè)元素all,al2,…,aln組成窗口矩陣的第一行,同理取出每一個(gè)像元向量的第二個(gè)元素a21,a22,…,a2n組成窗口矩陣的第二行,如此直到取出所有窗口矩陣內(nèi)的數(shù)據(jù)暫存在窗口矩陣window_ram中。
設(shè)計(jì)水平和豎直兩個(gè)計(jì)數(shù)器x_cnt, y_cnt。x_cnt為水平方向計(jì)數(shù)產(chǎn)生使窗口水平移動(dòng)的控制信號(hào),y_cnt為豎直方向計(jì)數(shù)產(chǎn)生使窗口豎直方向移動(dòng)的控制信號(hào),x_cnt與y_cnt 一起來(lái)提供窗口移動(dòng)的控制信號(hào)。窗口矩陣從左邊界開(kāi)始,先做水平移動(dòng)對(duì)窗口矩陣中心像元進(jìn)行一次檢測(cè)算子的計(jì)算,然后當(dāng)其移動(dòng)到右邊界時(shí),返回到左邊界向下移動(dòng)一行然后重復(fù)水平移動(dòng),直到窗口滑過(guò)整個(gè)圖像區(qū)域。
用IP核定制一個(gè)ROM存儲(chǔ)模塊,初始化為一個(gè)模120計(jì)數(shù)器iOn^cnt,可以用來(lái)遍歷窗口矩陣內(nèi)的每一個(gè)像元向量數(shù)據(jù),因此每一個(gè)窗口內(nèi)的像元序列值為n_cnt = x_cnt+y_cnt+rom_cnt (對(duì)一個(gè)確定的窗口矩陣其x_cnt與y_cnt的值是確定的,rom_cnt的變化可以訪問(wèn)到窗口矩陣中的每一個(gè)像元的值),比如讀取窗口矩陣數(shù)據(jù)的第一行元素地址為 N*n_cnt_N, N*n_cnt_ (N-1),...,N*n_cnt-l (此時(shí),n_cnt=l )。同理可以讀取窗口矩陣數(shù)據(jù)所有行并存儲(chǔ)到窗口矩陣存儲(chǔ)器Window_Ram中,后續(xù)運(yùn)算模塊可以從存儲(chǔ)中讀取數(shù)據(jù)進(jìn)行進(jìn)一步運(yùn)算處理。
1-2均值計(jì)算模塊 均值計(jì)算模塊用來(lái)產(chǎn)生窗口矩陣內(nèi)向量數(shù)據(jù)的均值的估計(jì)值,并進(jìn)一步產(chǎn)生均值矩陣。為加快運(yùn)算速度,設(shè)置N個(gè)并行處理單元(PE)分別來(lái)進(jìn)行窗口矩陣每一行元素的累力口,按照列的順序讀出窗口矩陣數(shù)據(jù)送入到并行的PE計(jì)算模塊進(jìn)行累加操作,得到每一行元素的和值。計(jì)算所得結(jié)果,通過(guò)數(shù) 據(jù)選通開(kāi)關(guān)順序存入結(jié)果存儲(chǔ)器中。將每一行的和值除以窗口矩陣大小即可得到均值向量,再將均值向量進(jìn)行擴(kuò)展將均值向量的每一個(gè)元素?cái)U(kuò)展成與窗口矩陣規(guī)模一樣大小的一行元素就構(gòu)成了均值矩陣數(shù)據(jù)。
1-3矩陣減法模塊 矩陣減法模塊主要來(lái)實(shí)現(xiàn)窗口矩陣與均值矩陣的減法運(yùn)算,產(chǎn)生的差值矩陣用來(lái)計(jì)算協(xié)方差矩陣的值。矩陣減法模塊實(shí)現(xiàn)是比較簡(jiǎn)單的,設(shè)計(jì)一個(gè)控制模塊用來(lái)產(chǎn)生讀、寫(xiě)使能信號(hào)和讀、寫(xiě)地址信號(hào)。當(dāng)外部信號(hào)輸入使能矩陣減法模塊,控制模塊啟動(dòng)并產(chǎn)生相應(yīng)的讀使能信號(hào)和讀地址信號(hào),從窗口矩陣和均值矩陣存儲(chǔ)模塊中讀取數(shù)據(jù)送入運(yùn)算模塊進(jìn)行運(yùn)算。在控制模塊中設(shè)置一個(gè)計(jì)數(shù)器對(duì)數(shù)據(jù)運(yùn)算過(guò)程進(jìn)行計(jì)數(shù)操作從而產(chǎn)生運(yùn)算結(jié)束信號(hào),作為下一模塊的使能信號(hào)。
(2)協(xié)方差矩陣模塊 由于在進(jìn)行矩陣廣義逆求解時(shí),其數(shù)據(jù)都是小數(shù)而且內(nèi)部計(jì)算模塊含有大量乘累加操作,定點(diǎn)數(shù)據(jù)由于受其精度和動(dòng)態(tài)范圍的限制不能勝任。浮點(diǎn)數(shù)據(jù)可以在更大的動(dòng)態(tài)范圍內(nèi)提供更高的分辨率,可以保證系統(tǒng)有更高的精度。圖4給出了協(xié)方差矩陣求解模塊的框架圖,協(xié)方差矩陣由于計(jì)算比較大因此單獨(dú)用一個(gè)模塊來(lái)實(shí)現(xiàn),主要運(yùn)算是矩陣乘法運(yùn)算,調(diào)用乘累加器并行運(yùn)算實(shí)現(xiàn)矩陣乘法,在輸出之前加一定點(diǎn)數(shù)據(jù)類(lèi)型轉(zhuǎn)單精度浮點(diǎn)數(shù)據(jù)類(lèi)型模塊實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換以提供后續(xù)模塊進(jìn)行運(yùn)算。
(3)廣義逆 求解模塊 圖5給出了矩陣廣義逆求解模塊的框架圖。主要由廣義逆求解控制器、矩陣求秩模塊、矩陣乘法模塊、廣義逆計(jì)算模塊和數(shù)據(jù)存儲(chǔ)等組成。廣義逆求解控制器負(fù)責(zé)控制數(shù)據(jù)流動(dòng)和協(xié)調(diào)各子功能模塊的運(yùn)行,其中矩陣乘法計(jì)算和矩陣秩計(jì)算并行進(jìn)行,可以有效提高計(jì)算速度。當(dāng)兩個(gè)模塊都計(jì)算完成后啟動(dòng)廣義逆計(jì)算模塊,此模塊主要完成基于跡方法求解矩陣廣義逆的迭代運(yùn)算過(guò)程直到求出矩陣廣義逆。
3-1求解廣義逆的跡方法 矩陣求廣義逆模塊是整個(gè)算法模塊最復(fù)雜的部分,設(shè)已知矩陣Aape的秩為r,矩陣求廣義逆的算法如下: 步驟(I)計(jì)算B = AtA ; 步驟(2)令C1 = I,初始化矩陣; 步驟(3)計(jì)算 步驟⑷計(jì)算A =兩兩C A ;注意,(!』=_卿)#0。
求矩陣廣義逆的跡方法需要已知矩陣的秩,矩陣的初等行變換可以確定矩陣的秩。矩陣的初等行變換有三種: (a)對(duì)調(diào)兩行; (b)以數(shù)O)乘某一行的所有元素; (C)把某一行所有元素的k倍加到另一行對(duì)應(yīng)的元素上去。
三種初等行變換結(jié)合使用,可以將任意非零矩陣化為Hermite標(biāo)準(zhǔn)型,其中第(I)和(2)種變換很容易實(shí)現(xiàn),但第(3)種變換比較繁瑣,目的是將矩陣中某元素所在列的其余元素全化為O。針對(duì)第(3)種變換,采用了一種矩形對(duì)角線計(jì)算法。通過(guò)分析,可以發(fā)現(xiàn)該算法具有很強(qiáng)的并行性,非常適合用FPGA實(shí)現(xiàn)。
3-2矩陣廣義逆求解模塊設(shè)計(jì)
3-2-1矩陣求秩模塊設(shè)計(jì)
圖6所示,其頂層模塊主要包括矩陣求秩控制器、數(shù)據(jù)輸入、數(shù)據(jù)存儲(chǔ)、接口模塊、選主元模塊、主元化為I (行倍乘運(yùn)算)、行交換和數(shù)據(jù)輸出8個(gè)子功能模塊。矩陣求秩模塊是廣義逆求解中的核心模塊,計(jì)算出的秩r是廣義逆求解模塊的重要參數(shù),控制廣義逆計(jì)算子模塊的迭代計(jì)算次數(shù)。具體實(shí)現(xiàn)方式如下:
步驟(I)將待求解矩陣的數(shù)據(jù)按照列順序輸入選主元子模塊,然后由第一列開(kāi)始選取主元素(某一列中第一個(gè)非零元素),如果主元素不在行數(shù)等于循環(huán)計(jì)算次數(shù)的行時(shí)則需要進(jìn)行交換,將主元素所在行的所有元素交換到行數(shù)為計(jì)算次數(shù)的行(此時(shí)計(jì)算次數(shù)計(jì)數(shù)器保持不變);
步驟(2)計(jì)算過(guò)程開(kāi)始,首先將主元素所在行數(shù)據(jù)依次通過(guò)除法器運(yùn)算除以主元素的值,主元素變?yōu)?,其它元素更新為主元素的倍數(shù),相當(dāng)于對(duì)矩陣一行元素進(jìn)行倍乘操作,每一元素乘以系數(shù)I/主元素的值。步驟(3)令主元素所在列的其它元素直接為0,主元素所在行外的其它行元素的變換值則通過(guò)3-1節(jié)所述的矩形對(duì)角線計(jì)算法進(jìn)行更新,當(dāng)更新完成時(shí)進(jìn)行計(jì)算次數(shù)計(jì)數(shù)器加I ;
步驟(4)重復(fù)(I)、(2)和(3)運(yùn)算過(guò)程直到進(jìn)行到最后一列,最后一次計(jì)算過(guò)程不需要通過(guò)(I)、(2)和(3)步驟,可以通過(guò)直接判斷得出結(jié)果。具體過(guò)程是首先判斷矩陣最后一列的最后一個(gè)元素是否為零,若為零則矩陣的秩等于計(jì)算次數(shù),若不為零矩陣的秩等于計(jì)算次數(shù)加一,然后輸出計(jì)算完成信號(hào)和模塊運(yùn)算后的結(jié)果以輸入后續(xù)模塊進(jìn)行進(jìn)一步的計(jì)算。整個(gè)模塊的運(yùn)行是在狀態(tài)機(jī)控制下有序進(jìn)行的,把整個(gè)運(yùn)算過(guò)程分解為幾個(gè)按一定順序進(jìn)行的子過(guò)程來(lái)進(jìn)行運(yùn)算實(shí)現(xiàn),而子過(guò)程剛好可以用對(duì)應(yīng)狀態(tài)來(lái)表示,子過(guò)程進(jìn)行順序計(jì)算的過(guò)程剛好對(duì)應(yīng)狀態(tài)轉(zhuǎn)換的過(guò)程。因此可以用狀態(tài)機(jī)的思想來(lái)實(shí)現(xiàn)整個(gè)運(yùn)算工程。首先在復(fù)位信號(hào)rst_n控制下,狀態(tài)機(jī)進(jìn)行復(fù)位動(dòng)作初始化狀態(tài)為IDLE狀態(tài),然后在輸入控制信號(hào)作用下?tīng)顟B(tài)機(jī)啟動(dòng)進(jìn)入狀態(tài)SI,此時(shí)相對(duì)應(yīng)于選主元模塊進(jìn)行工作,選出輸入某列數(shù)據(jù)中的主元素(主元素不等于O)。當(dāng)選主元模塊完成選主元操作時(shí),狀態(tài)機(jī)進(jìn)入下一狀態(tài)S2進(jìn)行將主元素變?yōu)镮的操作(初等行變換中的倍乘操作),將主元素的倒數(shù)倍乘以主元所在行的所有元素。完成倍乘操作后,然后進(jìn)行換判斷,判斷是否需要進(jìn)行行交換操作,當(dāng)需要交換行時(shí),狀態(tài)機(jī)進(jìn)入狀態(tài)S3進(jìn)行行交換操作:當(dāng)不需要行交換時(shí),狀態(tài)機(jī)直接進(jìn)入狀態(tài)S4對(duì)除主元素所在行以外的其它元素進(jìn)行更新操作(數(shù)據(jù)處理)。狀態(tài)S3行交換完成時(shí)同樣進(jìn)入狀態(tài)S4進(jìn)行數(shù)據(jù)處理操作。當(dāng)上一輪數(shù)據(jù)更新結(jié)束后,計(jì)算輪次計(jì)數(shù)器加一,當(dāng)S4狀態(tài)完成后,判斷計(jì)算次數(shù)是否與所需計(jì)算總次數(shù)相等,當(dāng)計(jì)算次數(shù)小于總次數(shù)時(shí)狀態(tài)機(jī)從S4狀態(tài)轉(zhuǎn)入SI狀態(tài)重新開(kāi)始下一輪數(shù)據(jù)更新操作,直到最后將所求矩陣化為Hermite標(biāo)準(zhǔn)型矩陣,然后狀態(tài)機(jī)進(jìn)入狀態(tài)IDLE等待下一個(gè)矩陣計(jì)算開(kāi)始。3-2-2循環(huán)計(jì)算模塊設(shè)計(jì)
在求出矩陣秩f(wàn)后循環(huán)計(jì)算模塊開(kāi)始工作,此模塊包括矩陣求跡,矩陣減法,矩陣乘法運(yùn)算。求矩陣跡可以通過(guò)對(duì)對(duì)角線元素進(jìn)行累加實(shí)現(xiàn),矩陣乘法可以調(diào)用前邊所用的矩陣乘法模塊,矩陣減法實(shí)現(xiàn)比較簡(jiǎn)單,只需要讀取存儲(chǔ)在RAM中的矩陣數(shù)據(jù)輸入減法器按順序計(jì)算。正如前文所述矩陣的秩是一個(gè)關(guān)鍵參數(shù)就體現(xiàn)在這一模塊中,更新矩陣G1的循環(huán)計(jì)算過(guò)程中矩陣的秩f(wàn)直接控制著循環(huán)計(jì)算的次數(shù)。
首先在復(fù)位信號(hào)rst_n控制下,狀態(tài)機(jī)進(jìn)行復(fù)位動(dòng)作初始化狀態(tài)為IDLE狀態(tài),然后在輸入控制信號(hào)作用下?tīng)顟B(tài)機(jī)啟動(dòng)進(jìn)入狀態(tài)SI,此時(shí)相對(duì)應(yīng)于求矩陣乘法模塊進(jìn)行工作,求輸入矩陣Gfpg的乘積矩陣GjB。當(dāng)矩陣乘法模塊完成乘法操作時(shí),狀態(tài)機(jī)進(jìn)入下一狀態(tài)S2進(jìn)行將求矩陣跡的運(yùn)算(同將矩陣對(duì)角線元素取出然后進(jìn)行累加操作),并將將循環(huán)計(jì)算次數(shù)的倒數(shù)倍乘以GiB矩陣的所有元素。當(dāng)完成求矩陣跡操作后,然后進(jìn)狀態(tài)機(jī)進(jìn)入狀態(tài)S3進(jìn)行矩陣減法操作。
當(dāng)一輪循環(huán)計(jì)算結(jié)束后,計(jì)算輪次計(jì)數(shù)器加1,當(dāng)S3狀態(tài)操作完成后判斷計(jì)算次數(shù)是否與所需計(jì)算總次數(shù)(矩陣秩Γ)相等,當(dāng)計(jì)算次數(shù)小于總次數(shù)時(shí)狀態(tài)機(jī)從S3狀態(tài)轉(zhuǎn)入Si狀態(tài)重新開(kāi)始新一輪循環(huán)計(jì)算操作,直到最后求得矩陣Gir。再將矩陣(^送入結(jié)果計(jì)算模塊進(jìn)行下一步計(jì)算,然后狀態(tài)機(jī)進(jìn)入狀態(tài)IDLE等待下一個(gè)矩陣計(jì)算開(kāi)始。
(4)結(jié)果計(jì)算模塊設(shè)計(jì)。
圖7給出了結(jié)果計(jì)算模塊的設(shè)計(jì)框架圖,結(jié)果計(jì)算模塊控制器負(fù)責(zé)將協(xié)方差矩陣的廣義逆矩陣輸入到計(jì)算模塊,并且讀取窗口矩陣中心像元的數(shù)據(jù)向量。計(jì)算均值向量子模塊計(jì)算出窗口矩陣每一行的均值以產(chǎn)生均值向量。計(jì)算窗口矩陣中心像元數(shù)據(jù)向量與均值向量的差,然后與協(xié)方差矩陣的廣義逆矩陣進(jìn)行點(diǎn)乘運(yùn)算,結(jié)果向量再與窗口矩陣中心像元數(shù)據(jù)向量與均值向量的差值向量進(jìn)行向量點(diǎn)乘運(yùn)算即可得到最終結(jié)果。向量點(diǎn)乘運(yùn)算調(diào)用單精度浮點(diǎn)乘法器和減 法器組成浮點(diǎn)乘累加單元來(lái)實(shí)現(xiàn)。
權(quán)利要求
1.一種基于FPGA的高光譜圖像異常檢測(cè)系統(tǒng),包括數(shù)據(jù)輸入模塊、協(xié)方差矩陣求解模塊、廣義逆求解模塊和結(jié)果求解模塊,其特征在于:數(shù)據(jù)輸入模塊負(fù)責(zé)窗口矩陣數(shù)據(jù)的均值化處理,它的輸出端連接協(xié)方差矩陣求解模塊的輸入端,協(xié)方差矩陣求解模塊的輸出端連接廣義逆求解模塊的輸入端,廣義逆求解模塊用來(lái)求解協(xié)方差矩陣的廣義逆,它的輸出端連接結(jié)果計(jì)算模塊的輸入端; 所述的數(shù)據(jù)輸入模塊包括窗口矩陣模塊、均值計(jì)算模塊、矩陣減法模塊和矩陣轉(zhuǎn)置模塊;窗口矩陣模塊產(chǎn)生窗口矩陣數(shù)據(jù),均值計(jì)算模塊產(chǎn)生的均值數(shù)據(jù)輸入到矩陣減法模塊,矩陣減法模塊數(shù)據(jù)結(jié)果輸入到矩陣轉(zhuǎn)置模塊求解矩陣的轉(zhuǎn)置; 所述的協(xié)方差矩陣求解模塊包括矩陣乘法模塊和定點(diǎn)轉(zhuǎn)浮點(diǎn)數(shù)據(jù)模塊;矩陣乘法計(jì)算結(jié)果輸入到定點(diǎn)轉(zhuǎn)浮點(diǎn)模塊進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換; 所述的廣義逆求解模塊是整個(gè)系統(tǒng)的核心模塊,包括廣義逆求解控制器、矩陣求秩模塊、矩陣乘法模塊、廣義逆計(jì)算模塊和數(shù)據(jù)存儲(chǔ)組成;數(shù)據(jù)存儲(chǔ)模塊用來(lái)暫時(shí)存儲(chǔ)輸入矩陣數(shù)據(jù),矩陣求秩模塊和矩陣乘法模塊讀取數(shù)據(jù)存儲(chǔ)中的矩陣數(shù)據(jù)進(jìn)行并行計(jì)算,兩者結(jié)果輸入到廣義逆計(jì)算模塊進(jìn)行廣義逆求解,廣義逆求解控制器主要負(fù)責(zé)調(diào)度數(shù)據(jù)流動(dòng)和控制其它模塊的動(dòng)作; 所述的結(jié)果計(jì)算模塊包括均值向量計(jì)算模塊,向量矩陣點(diǎn)乘模塊和向量點(diǎn)乘模塊,主要涉及向量點(diǎn)乘運(yùn)算。
全文摘要
本發(fā)明涉及一種基于FPGA的高光譜圖像異常檢測(cè)系統(tǒng)。本發(fā)明包括數(shù)據(jù)輸入模塊、協(xié)方差矩陣求解模塊、廣義逆求解模塊和結(jié)果求解模塊,數(shù)據(jù)輸入模塊負(fù)責(zé)窗口矩陣數(shù)據(jù)的均值化處理,它的輸出端連接協(xié)方差矩陣求解模塊的輸入端,協(xié)方差矩陣求解模塊的輸出端連接廣義逆求解模塊的輸入端,廣義逆求解模塊用來(lái)求解協(xié)方差矩陣的廣義逆,它的輸出端連接結(jié)果計(jì)算模塊的輸入端。本發(fā)明可以實(shí)現(xiàn)高光譜圖像數(shù)據(jù)的高速實(shí)時(shí)處理,并可以根據(jù)需要對(duì)硬件進(jìn)行升級(jí),以實(shí)現(xiàn)更高性能要求。
文檔編號(hào)G06T1/00GK103177447SQ20131009170
公開(kāi)日2013年6月26日 申請(qǐng)日期2013年3月21日 優(yōu)先權(quán)日2013年3月21日
發(fā)明者趙遼英, 鄭俊鵬, 趙兵 申請(qǐng)人:杭州電子科技大學(xué)