王菊花,張建華,周 詮
(中國空間技術(shù)研究院西安分院,西安 710000)
云的角色是多重的。一方面,通過能量交換過程,云能夠?qū)Φ厍虻谋睾徒禍匕l(fā)揮至關(guān)重要的作用,這使地球的溫度與人類的適宜生存環(huán)境相匹配[1-2]。另一方面,根據(jù)統(tǒng)計數(shù)據(jù),云大致上可以覆蓋全球天空的百分之六十[3]。驅(qū)使氣候變化的主要因素有多種,其中最主要的不確定性因素就是云,因此人們通常不太可能獲得一幅完全沒有云的遙感圖像。很多的衛(wèi)星遙感圖像中都包括被云層擋住的不可見區(qū)域,從而導(dǎo)致了局部地物的信息產(chǎn)生缺失現(xiàn)象。這顯然會對后續(xù)圖像的分析與理解操作產(chǎn)生影響,從而引起數(shù)據(jù)利用率的顯著下降[4]。因此,對于遙感圖像的數(shù)據(jù)處理過程而言,云檢測已經(jīng)凸顯為必須首先攻克的關(guān)鍵技術(shù)問題之一。
目前研究人員已經(jīng)提出了若干種云檢測方法。主要方法包括:利用云在可見光、熱紅外等波段具有的光譜特征、云與下面地物的紋理特征差異、云的低頻率特性[5-6],利用云的光譜、頻率、紋理等特性結(jié)合閾值法、統(tǒng)計分析法、聚類法、HIS模型法、深度學(xué)習(xí)法、神經(jīng)網(wǎng)絡(luò)法等技術(shù)進(jìn)行云檢測[7-16]。
頻率結(jié)合閾值法和光譜結(jié)合閾值法是兩種有代表性的結(jié)合閾值法。其中,頻率結(jié)合閾值法的原理主要是利用了云所具有的低頻性質(zhì)。這種方法結(jié)合傅里葉變換和小波分析等手段可以獲得圖像的低頻數(shù)據(jù),并進(jìn)一步實現(xiàn)云檢測。但是,因為一般需要采用多層小波變換來消除地面的低頻信息所產(chǎn)生的干擾,所以云檢測的效率顯著降低。光譜結(jié)合閾值法的原理主要是利用了云對可見光波段所具有的強反射性質(zhì)。這類算法的一個局限性是對閾值比較敏感。同一顆衛(wèi)星的數(shù)據(jù)隨著天氣和時間等因素的變化而變化,這將引起檢測閾值的急劇變動,因而導(dǎo)致這類算法的局限性愈加嚴(yán)重。
本文提出一種灰度閾值結(jié)合紋理特征的方法。根據(jù)衛(wèi)星軌道高度及云圖分辨率完成圖像分塊,統(tǒng)計子塊圖像的灰度閾值,產(chǎn)生灰度共生矩陣,計算二階矩,通過和參數(shù)加權(quán)處理等,完成了星載云檢測算法的實現(xiàn)。
云檢測算法流程圖如圖1所示。
首先根據(jù)衛(wèi)星軌道高度和云圖分辨率,對圖像進(jìn)行分塊,每塊大小為HEIGHT行WIDTH列;其次統(tǒng)計分塊內(nèi)圖像像素的灰度,當(dāng)灰度數(shù)值大于灰度閾值value的記為高像素灰度,若高灰度區(qū)小于圖像塊的3/4則為非云,否則繼續(xù)其它特征值的計算;分別計算圖像塊均值和方差,通過均值方差計算M1;產(chǎn)生分塊圖像的灰度共生矩陣,根據(jù)矩陣計算特征值,具體計算方法詳見文獻(xiàn)[9];通過修正系數(shù)進(jìn)行加權(quán)計算得到M2數(shù)值;最后判斷M2數(shù)值,正數(shù)則該圖像塊判決為云,否則判決為非云。
某衛(wèi)星圖像數(shù)據(jù)位寬為12比特,每行圖像數(shù)據(jù)長度為1058(32+1024+2),其中32個輔助數(shù)據(jù),1024個圖像數(shù)據(jù),兩個云判決標(biāo)識填充數(shù)據(jù)。用現(xiàn)場可編程門陣列(field programmable gate array,F(xiàn)PGA)實現(xiàn)衛(wèi)星圖像的云檢測算法,首選確定圖像分塊大小為512行512列,灰度閾值為3276,每行輸入圖像數(shù)據(jù)分成兩個圖像塊并行進(jìn)行云檢測。衛(wèi)星圖像輸入512行結(jié)束后,前兩個圖像分塊的云檢測標(biāo)識,填充在前512行圖像,每行圖像的填充云檢測標(biāo)識位置,第一個位置填充第一塊圖像云檢測標(biāo)識,第二個位置填充第二塊圖像云檢測標(biāo)識。
圖1 云檢測算法流程圖Fig.1 Flow chart of cloud detection algorithm
云檢測功能FPGA實現(xiàn)[17]的原理圖如圖2所示,主要包括6個模塊,分別是輸入(first in first out,F(xiàn)IFO)緩存模塊、時鐘處理模塊、雙倍速率同步動態(tài)隨機存儲器 (double data rate,DDR)用戶接口模塊、云檢測模塊、云判標(biāo)識模塊和輸出FIFO緩存模塊。
時鐘處理模塊,是對本地100MHz的時鐘,進(jìn)行數(shù)字時鐘管理模塊(digital clock management,DCM)倍頻,分別產(chǎn)生clk_100M的零相位時鐘,clk_120M的時鐘,clk_200M的時鐘;其中clk_100M的零相位時鐘供所有模塊使用,clk_120M的時鐘,clk_200M的時鐘提供給外掛DDR使用,clk_120M的時鐘另外還要提供給云判標(biāo)識模塊和輸出FIFO緩存模塊使用。
圖2 FPGA實現(xiàn)原理框圖Fig.2 Schematic diagram of FPGA implementation
輸入FIFO緩存模塊,功能是把數(shù)據(jù)時鐘域的數(shù)據(jù),通過FIFO緩存,轉(zhuǎn)換成本地時鐘域。FIFO的輸入時數(shù)據(jù)鐘、數(shù)據(jù)和門控,輸出則為本地鐘、數(shù)據(jù)和門控。
外掛DDR,用來緩存圖像輸入數(shù)據(jù)。DDR用戶接口模塊,是FPGA針對外掛DDR的接口模塊,功能是把云判輸出后100M數(shù)據(jù),進(jìn)行時序和位寬處理,以滿足DDR接口需求。
輸出FIFO緩存模塊,功能是把120兆的非連續(xù)DDR輸出數(shù)據(jù),緩存成100兆的按行輸出地連續(xù)數(shù)據(jù)。
云檢測模塊由5個子功能組成,灰度共生矩陣二階距功能、方差及均方根功能、灰度閾值判定功能、參數(shù)加權(quán)判定功能和接口處理功能。接口處理功能,首先把輸入的每行數(shù)據(jù)拆分為32個輔助數(shù)據(jù),1024個圖像數(shù)據(jù)和兩個填充數(shù)據(jù);然后對512行輸入數(shù)據(jù)進(jìn)行分塊;最后產(chǎn)生相對應(yīng)的門控時序信號?;叶乳撝蹬卸üδ埽且詧D像子塊為基礎(chǔ)進(jìn)行的,統(tǒng)計子塊圖像數(shù)據(jù)像素值,與子塊圖像灰度閾值進(jìn)行比較,當(dāng)超過75%的數(shù)據(jù)值大于等于灰度閾值,則繼續(xù)做紋理特征的分析,否則判為非云。方差及均方根功能,對輸入分塊內(nèi)所有圖像像素實時求取平均值,根據(jù)平均值再次計算得到方差,最后根據(jù)修正系數(shù)加權(quán)計算得到均方根?;叶裙采仃嚩A距功能,對輸入一子塊圖像,首先產(chǎn)生灰度共生矩陣,然后統(tǒng)計矩陣內(nèi)每一類圖像像素值的概率,通過運算得到該矩陣的二階距特征值;要實現(xiàn)該功能需要占用FPGA存儲資源,雙端口隨機存期存儲器(random access memory,RAM)占用4塊,F(xiàn)IFO占用兩塊, 雙端口RAM用來存儲灰度共生矩陣的初始值和更新值,F(xiàn)IFO緩存前后連續(xù)輸入的兩行圖像數(shù)據(jù),且該兩行數(shù)據(jù)隨著輸入數(shù)據(jù)的不同隨時更新。參數(shù)加權(quán)判定功能,是對分塊內(nèi)圖像灰度產(chǎn)生的均方根,及灰度共生矩陣計算得到的特征值,進(jìn)行一定參數(shù)加權(quán)計算,求得最準(zhǔn)確的云判結(jié)果。
云判標(biāo)識模塊,是把云檢測輸出標(biāo)識,按一定格式填充在每行圖像數(shù)據(jù)后面的兩個云判決標(biāo)識填充位置,其中第一個填充第一分塊云標(biāo)識,第二個填充第二分塊云標(biāo)識。
用FPGA(XC5VFX130T-3FF1738)實現(xiàn)云檢測硬件算法,其中邏輯資源使用1783個,占FPGA邏輯總資源的8%;RAM存儲器使用12塊,F(xiàn)IFO存儲器使用兩塊,占總存儲資源的4%;全局鐘使用9個,占總?cè)昼娰Y源的28%,具體如表1所列。
表1 FPGA實現(xiàn)資源消耗Tab.1 FPGA implementation resource consumption
用FPGA實現(xiàn)云檢測硬件算法,共有5個主鐘工作。其中輸入圖像數(shù)據(jù)時鐘,工作頻率為10ns,約束頻率為8.33ns,最好情況可以達(dá)到5.061ns。輸入本地晶振時鐘為10ns,因為FPGA內(nèi)部倍頻的原因,工作時鐘只能按實際頻率10ns約束;而倍頻產(chǎn)生的0相位100兆時鐘最高可以達(dá)到6.0ns,120兆時鐘最高頻率可以達(dá)到4.739ns,DDR所需的200兆時鐘,最高頻率可以達(dá)到4.739ns,具體如表2所列。從表2可以看出,F(xiàn)PGA所有時鐘均滿足時序要求。
表2 FPGA工作時序Tab.2 FPGA working timing
云檢測算法硬件實現(xiàn)時圖像分塊大小為512×512,針對每個圖像塊判別規(guī)則如下:若人工判為云而算法判為非云,則認(rèn)為該單元為漏警;若人工判為非云而算法判為云,則認(rèn)為該單元為虛警;若人工判別結(jié)果與算法計算結(jié)果一致,則認(rèn)為該單元為正確。根據(jù)上述規(guī)則,針對測試圖像,定義如下算法性能測試指標(biāo):
檢測率=硬件判決正確圖像塊數(shù)/所有圖像塊數(shù);
虛警率=硬件判決為云而實際非云圖像塊數(shù)/所有圖像塊數(shù)。
云圖選擇9幅典型圖像,具體如圖3所示。每幅圖像大小為2048行1058列(32+1024+2:其中1024為圖像數(shù)據(jù),其它為輔助數(shù)據(jù)),云圖特征包括了厚云、薄云、城市高亮地物、冰雪等。在全色可見光光譜范圍內(nèi),雪和云的反射率曲線基本重合,且云和雪均為大尺度地物覆蓋形態(tài),從紋理上也難以區(qū)分兩者的差別,因此在指標(biāo)計算中,云和雪作為同一目標(biāo)進(jìn)行指標(biāo)計算。
圖3 典型云圖Fig.3 Typical cloud images
在人工對云進(jìn)行標(biāo)記時,可考慮按照圖像可用度分級來評定云的厚薄關(guān)系和可用性,如表3所列。當(dāng)處于1級或者部分2級的圖像可被有指導(dǎo)性地人工判決為云,3~6級人工判決為非云。
云檢測指標(biāo)測試原理圖如圖4所示,圖像發(fā)送源發(fā)送云圖,數(shù)據(jù)處理器云檢測FPGA接收并進(jìn)行檢測,云圖和檢測結(jié)果送給數(shù)據(jù)采集設(shè)備,數(shù)據(jù)采集后進(jìn)行人工判決和算法判決結(jié)果分析,計算云檢測指標(biāo)。
表3 圖像可用度分級Tab.3 Image availability rating
圖4 云檢測指標(biāo)測試原理圖Fig.4 Schematic diagram of indicator test for cloud detection
通過對9幅典型云圖和兩軌實拍云圖,共約500分塊(每塊大小512×512)進(jìn)行云檢測硬件的算法判決和主觀判決,如圖5所示有兩軌圖像,每軌圖像左圖右圖分塊完全對應(yīng);左圖為云圖,可以通過主觀判斷為云或非云;右圖為客觀算法判決結(jié)果圖,若為白塊,則對應(yīng)左圖圖像分塊判決為云,若為黑塊,則對應(yīng)左圖圖像分塊判決為非云。統(tǒng)計500分塊圖像主客觀判決結(jié)果,可以計算得出,厚云檢測率大于97%。
圖5 算法判決和主觀判決結(jié)果圖Fig.5 Algorithm decision and subjective decision result
天空中云的大面積覆蓋,遮擋了地物,使得衛(wèi)星數(shù)據(jù)傳輸中,不能高效率高質(zhì)量地獲取地面圖像。為了解決該問題,本文提出一種灰度閾值結(jié)合紋理特征的云檢測算法,通過對大量典型云圖的仿真,該算法云檢測指標(biāo)性能良好。為了滿足星載應(yīng)用需求,本文利用FPGA芯片和DDR芯片,提出了該算法的硬件實現(xiàn)方案;該方案云檢測性能與軟件算法一致,硬件處理速度高、存儲量小且實時可行,目前已成功應(yīng)用于數(shù)十顆衛(wèi)星平臺。地面測試和星載在軌測試表明:該算法厚云檢測率達(dá)到97%,滿足星載要求。云檢測算法的星載應(yīng)用,大大提高了數(shù)據(jù)傳輸?shù)男屎偷匚飯D像識別的準(zhǔn)確度。