周曉華,吳帥,王霽云,郭海艮
(1.火箭軍指揮學(xué)院,武漢 430012;2.北京四中,北京 100000)
在遙感衛(wèi)星實(shí)時仿真中,常常需要仿真輸出含有動態(tài)仿真實(shí)體的可見光衛(wèi)星圖像,并在此基礎(chǔ)上快速識別衛(wèi)星圖像。由于在仿真系統(tǒng)中,衛(wèi)星和各仿真實(shí)體狀態(tài)隨仿真時間不斷變化,不能直接使用現(xiàn)有的歷史衛(wèi)星圖像數(shù)據(jù),而是需要根據(jù)衛(wèi)星和仿真實(shí)體的動態(tài),實(shí)時生成仿真衛(wèi)星圖像。另外,在檢驗(yàn)圖像識別算法時,也需要有大量不同的衛(wèi)星圖像做支撐。因此,研究衛(wèi)星圖像仿真生成技術(shù)是個很重要的課題。目前國內(nèi)做這方面研究的人不多。王更科[1]主要研究了地表反射率、大氣輻射傳輸模型、典型植被光譜數(shù)據(jù),并在此基礎(chǔ)上仿真生成衛(wèi)星圖像,方法比較復(fù)雜,沒有考慮不同的氣象和觀測對象。
本文根據(jù)仿真系統(tǒng)中衛(wèi)星的實(shí)時位置、運(yùn)動方向,并根據(jù)各仿真實(shí)體的狀態(tài)以及周邊的地理、氣象環(huán)境,采 用 GDAL(Geospatial Data Abstraction Library)和VC++編程,快速生成一景標(biāo)準(zhǔn)格式的可見光衛(wèi)星圖像。主要涉及到衛(wèi)星軌道及實(shí)時狀態(tài)獲取、衛(wèi)星圖像格式分析、衛(wèi)星圖像的平移和旋轉(zhuǎn)、陸地島嶼的疊加、仿真實(shí)體和環(huán)境信息的疊加、衛(wèi)星圖像顯示等。其中衛(wèi)星軌道及實(shí)時狀態(tài)的獲取采用基于SGP4/SDP4的衛(wèi)星軌道攝動模型,和真實(shí)衛(wèi)星軌道誤差每天小于500米,本文不作討論;衛(wèi)星圖像格式分析參考了劉修國[2]等人的論文;衛(wèi)星圖像的平移和旋轉(zhuǎn)、陸地島嶼的疊加、仿真實(shí)體和環(huán)境信息的疊加等采用GDAL和VC++編程來實(shí)現(xiàn);衛(wèi)星圖像的顯示采用基于ArcGIS平臺開發(fā)的三維仿真系統(tǒng)實(shí)現(xiàn)。
可見光衛(wèi)星過境拍照時,會按照其相機(jī)幅寬,形成一軌衛(wèi)星條帶數(shù)據(jù)。每軌條帶數(shù)據(jù),通過幾何校正、輻射校正后,再將其切割成一塊一塊的圖像,每塊圖像稱為一景。
衛(wèi)星圖像通常是采用GeoTIFF格式存儲的。TIFF是柵格文件格式的通用格式之一,由許多標(biāo)簽(Tag)組成,各個標(biāo)簽的實(shí)際入口稱為域(Field)[3]。GeoTIFF是TIFF格式的擴(kuò)展,它的結(jié)構(gòu)繼承了TIFF6.0標(biāo)準(zhǔn)。在GeoTIFF中需要描述圖像的各種地理信息,這涉及到多種投影類型。若將這些投影類型和投影參數(shù)都作為單獨(dú)的TIFF標(biāo)簽,將可能需要成百上千的標(biāo)簽。為避免這些問題,GeoTIFF把投影參數(shù)存儲在一系列與標(biāo)簽功能相同,但更抽象的6個元標(biāo)簽(Meta-Tag)中,也稱為GeoTag[4]。其中GeoDirectoryTag(地理信息目錄表)存儲了所有的GeoKey,我們生成衛(wèi)星圖像時也需要從中讀取和寫入地圖的相關(guān)信息,這個過程通過調(diào)用GDAL的相關(guān)類和函數(shù)來實(shí)現(xiàn)。
GDAL是一款功能強(qiáng)大的開源柵格數(shù)據(jù)處理類庫,它提供了抽象數(shù)據(jù)類型來表達(dá)它支持的所有數(shù)據(jù)格式[5],可以提供對多種矢量和柵格文件的支持。很多GIS系統(tǒng)都使用了GDAL庫,包括著名的ArcGIS、Google Earth等。
一景長寬均為80000像素(對應(yīng)地面面積約500×500km2)的衛(wèi)星圖像,數(shù)據(jù)量大約7.2GB,為了處理方便,我們一般使用將1景衛(wèi)星圖像均分成4×4共16幅圖的二級產(chǎn)品。
由于衛(wèi)星圖像數(shù)據(jù)量很大,完全重新生成一景圖像耗時較長。本文采用的方法是預(yù)先準(zhǔn)備一景共16幅用Photoshop圖像處理軟件處理好的全水域的衛(wèi)星圖像,然后對圖像進(jìn)行平移、旋轉(zhuǎn)、圖層疊加,主要采用GDAL和VC++編程來實(shí)現(xiàn)。
使用GDAL庫前首先要進(jìn)行注冊和初始化設(shè)置,代碼如下:
圖像平移目的是將一景衛(wèi)星圖像的中心點(diǎn)平移到衛(wèi)星臨空時的星下點(diǎn)坐標(biāo)(Lon1,Lat1)。首先讀取第三行第三列圖像的坐標(biāo)系(UTM投影坐標(biāo)系)和左上角UTM坐標(biāo)(X0,Y0),即本景圖像的中心點(diǎn)坐標(biāo),然后構(gòu)建從WGS坐標(biāo)系到UTM投影坐標(biāo)系的坐標(biāo)轉(zhuǎn)換體系,將坐標(biāo)(Lon1,Lat1)轉(zhuǎn)換成 UTM 坐標(biāo)(X1,Y1),從而計(jì)算出圖像偏移量(ΔX,ΔY)。再依次更新16幅圖的左上角坐標(biāo)平移圖像。部分核心代碼如下:
除了地球同步衛(wèi)星外,大部分衛(wèi)星都是以一定的傾角繞地球飛行,典型的衛(wèi)星軌道和軌道在地面投影示意圖如圖1所示。
圖1 衛(wèi)星飛行軌道示意圖
衛(wèi)星處于不同位置時,其速度方向與赤道面的夾角也是不同的,這就導(dǎo)致了不同緯度的衛(wèi)星圖像朝向不一致。因此需要根據(jù)衛(wèi)星軌道攝動模型求出衛(wèi)星的瞬時速度方向,再將衛(wèi)星圖像旋轉(zhuǎn)。部分核心代碼如下:
經(jīng)過平移和旋轉(zhuǎn)的衛(wèi)星圖像還是全水域的,需要根據(jù)其坐標(biāo)依次疊加對應(yīng)區(qū)域的陸地、島嶼、仿真實(shí)體和仿真氣象等圖層。
預(yù)先準(zhǔn)備好帶Alpha通道的全球大部分陸地、島嶼的PNG圖像,水域部分設(shè)置成透明,圖像采用UTM投影(Universal Transverse Mercator Projection)。這種投影是將北緯84°至南緯80°之間的全球區(qū)域按照經(jīng)度分為60個帶,每帶經(jīng)度跨度6°,該投影在兩條相割的經(jīng)線上沒有變形,角度也沒有變形,通常用于世界軍用地圖和地球衛(wèi)星圖像。
然后根據(jù)衛(wèi)星圖像中心點(diǎn)坐標(biāo),截取對應(yīng)區(qū)域的PNG圖像疊加到衛(wèi)星圖像上。
圖層疊加用到的核心函數(shù)是:
CPLErr RasterIO(GDALRWFlag,int,int,int,int,void*,int,int,GDALDataType,int,int*,int,int,int);
預(yù)先準(zhǔn)備多種類型仿真實(shí)體的衛(wèi)星照片,轉(zhuǎn)換成PNG格式,背景部分設(shè)置成透明,朝向統(tǒng)一朝正北。然后根據(jù)仿真實(shí)體的類型、朝向、狀態(tài)來選擇圖像,并旋轉(zhuǎn)角度,疊加到衛(wèi)星圖像上。
仿真實(shí)體的圖像旋轉(zhuǎn)可以用VC實(shí)現(xiàn),圖層疊加方法類似4.1。
氣象主要考慮云層的影響。預(yù)先準(zhǔn)備好少云、薄云、厚云等類型的PNG云圖,背景部分設(shè)置成透明。然后根據(jù)氣象仿真模型的仿真數(shù)據(jù),選擇對應(yīng)的云圖疊加到衛(wèi)星圖像上。
圖層疊加方法類似4.1。
生成的衛(wèi)星圖像可以在任何支持GeoTIFF格式圖像的軟件平臺上顯示,圖2、圖3、圖4是我們基于Arc-GIS平臺開發(fā)的三維仿真系統(tǒng)的顯示效果。
采用以上方法設(shè)計(jì)了可見光衛(wèi)星圖像動態(tài)生成軟件,運(yùn)行結(jié)果表明,該軟件能迅速生成仿真衛(wèi)星圖像,位置誤差小于4km,生成的圖像經(jīng)與真實(shí)的可見光衛(wèi)星圖像相比較,主觀目測上差異很小,完全能夠滿足仿真和檢驗(yàn)圖像識別算法的需要。
圖2 一景衛(wèi)星圖像三維效果圖
圖3 疊加陸地島嶼后的衛(wèi)星圖像局部放大圖
圖4 疊加氣象和仿真實(shí)體的 衛(wèi)星圖像局部放大圖