內(nèi)容提要:論文實現(xiàn)了一種基于Visual C++及GDI+技術(shù)的電子海圖與雷達(dá)圖像實時疊加的軟件設(shè)計。闡述了電子海圖和雷達(dá)圖像單獨顯示時的關(guān)鍵技術(shù)及操作流程,針對兩者的疊加顯示問題,提出了解決方案。該設(shè)計滿足了實時性的要求,做到雷達(dá)靜態(tài)目標(biāo)與海圖中的相應(yīng)目標(biāo)相互吻合,雷達(dá)動態(tài)目標(biāo)在海圖上實時、準(zhǔn)確地定位顯示。
關(guān)鍵詞:電子海圖 雷達(dá)圖像 疊加顯示 GDI+
0 引言
電子海圖顯示與信息系統(tǒng)(Electronic Chart Display Information System——ECDIS)集導(dǎo)航技術(shù)、計算機(jī)技術(shù)、計算機(jī)圖形顯示技術(shù)及軟件技術(shù)于一體,在海圖信息的基礎(chǔ)上完成各種有關(guān)船舶航行安全的綜合顯示,已成為現(xiàn)代船舶導(dǎo)航系統(tǒng)的核心設(shè)備。而用于航行和避碰的雷達(dá)又是狹水道、沿岸及霧中等復(fù)雜條件下航行所不可缺少的設(shè)備。若單獨使用電子海圖或雷達(dá),雖然在一定程度上滿足了船舶安全航行的需求,但它們都存在各自的缺陷(電子海圖無法顯示動態(tài)目標(biāo),雷達(dá)則不能識別周圍目標(biāo)的屬性)。如果將電子海圖與雷達(dá)圖像疊加顯示,則可實現(xiàn)兩者的優(yōu)勢互補,并彌補了它們單獨使用時存在的缺陷。
近年來,隨著信息技術(shù)和導(dǎo)航技術(shù)的不斷發(fā)展,海圖和雷達(dá)信息數(shù)字化之后,兩者間實現(xiàn)了數(shù)據(jù)傳輸,使電子海圖與雷達(dá)圖像數(shù)據(jù)信息的疊加顯示成為可能,任何一方的“圖像”可以被疊加到另一方的圖像上。在電子海圖上疊加顯示雷達(dá)圖像數(shù)據(jù)信息,可在原航行水域海圖信息的基礎(chǔ)上提供本船、本船周圍的靜態(tài)目標(biāo)與動態(tài)目標(biāo)三者之間的位置關(guān)系。使本船對周圍的態(tài)勢和會遇到的局面一目了然,便于盡快作出判斷,避開航行危險和障礙物,及時采取避碰措施,并在電子海圖上跟蹤避碰決策的可行性。
1 總體實現(xiàn)思路
本設(shè)計主要在Visual C++6.0環(huán)境下采用GDI+技術(shù),實現(xiàn)以電子海圖為顯示底層,以雷達(dá)圖像為動態(tài)層的雷達(dá)視頻信息的實時疊加顯示。
電子海圖的顯示主要按照讀取海圖數(shù)據(jù)、轉(zhuǎn)換海圖數(shù)據(jù)及顯示海圖的順序完成。為了保證S—52標(biāo)準(zhǔn)要求的顯示速度及內(nèi)容,顯示海圖時采用雙緩存機(jī)制、內(nèi)存拷貝方式和GDI+技術(shù),來提高海圖顯示的速度,使海圖在漫游時能快速、平滑地移動;而繪制雷達(dá)圖像則運用快速坐標(biāo)變換滿足實時性的要求。電子海圖與雷達(dá)圖象的疊加必須準(zhǔn)確定位雷達(dá)中心在海圖上的位置,并且隨著海圖顯示比例尺和雷達(dá)量程的變化,兩者都將作出相應(yīng)的變化。
2 電子海圖的顯示
2.1 S—57標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)
符合S—57標(biāo)準(zhǔn)的電子海圖文件中的數(shù)據(jù)結(jié)構(gòu)由一些記錄和字段組成,而這些記錄和字段都由現(xiàn)實模型轉(zhuǎn)換而來,它們主要包括:特征記錄、空間記錄、矢量記錄、地理特征記錄、指針字段等。在S—57文件中,DDR包含了S—57數(shù)據(jù)結(jié)構(gòu)中各個字段的描述:DR則包含了實際的海圖數(shù)據(jù),主要由特征記錄和矢量記錄組成。
2.2 海圖顯示的方法
由于S—57海圖數(shù)據(jù)文件將ISO/IEC8211:1994作為其數(shù)據(jù)封裝的標(biāo)準(zhǔn),而這個標(biāo)準(zhǔn)并不適合顯示時使用,所以需要定義自己的數(shù)據(jù)結(jié)構(gòu),以滿足IMO S—52標(biāo)準(zhǔn)要求的顯示速度及內(nèi)容。海圖的顯示主要由三部分來完成,流程圖如圖1:
(1)讀取海圖數(shù)據(jù):讀取按照ISO/IEC8211:1994標(biāo)準(zhǔn)封裝的海圖數(shù)據(jù)文件,并保存為S—57數(shù)據(jù)結(jié)構(gòu)。此處主要有數(shù)據(jù)集DSPM字段、向量記錄VRID、特征信息記錄FRID以及海圖信息記錄MAPINFO等。通過自定義多個結(jié)構(gòu)體,先存儲讀取的基本海圖信息,如海圖比例尺、海圖左上角及有下角經(jīng)緯度和海圖中心等,然后將海圖數(shù)據(jù)進(jìn)行分類、排序并分別讀人到對應(yīng)的點、線、面鏈表中,以供下一步使用。
(2)轉(zhuǎn)換海圖數(shù)據(jù):將前一部分輸出的鏈表記錄轉(zhuǎn)換成可顯示的數(shù)據(jù)格式。分別對點、線、面進(jìn)行操作,將點劃分成孤立點和水深點,建立鏈表保存點信息及其對應(yīng)的索引值;對于線和面則首先讀取顯示屬性數(shù)據(jù)文件,保存它們的屬性值到定義的鏈表中,然后根據(jù)其特征信息FRID來讀取空間信息VRID。此外,還要確定面物標(biāo)的邊界及顏色值,水深線作為線物標(biāo)的一部分單獨存儲并設(shè)置水深線間對應(yīng)面物標(biāo)的顏色值,最后將海圖信息按照顯示級別進(jìn)行排序。以上保存的鏈表數(shù)據(jù)作為本部分的輸出供顯示時使用。
(3)顯示海圖:將第二部分得到的鏈表數(shù)據(jù)繪制到屏幕上完成海圖的顯示。由于海圖數(shù)據(jù)中的坐標(biāo)是實際地理坐標(biāo),不能直接在屏幕上顯示,所以在顯示海圖之前,必須進(jìn)行坐標(biāo)變換。該變換主要有三步:
實際地理坐標(biāo)®墨卡托投影坐標(biāo)®屏幕坐標(biāo)。
另外,還設(shè)置了屏幕顯示區(qū)域,根據(jù)Sutherland_Hodgeman原理將多邊形裁剪成匹配屏幕顯示區(qū)域的大小,這樣,隨著顯示比例尺的變化,可動態(tài)的顯示用戶所需要的那部分海圖。
為了保證S—52標(biāo)準(zhǔn)要求的顯示速度及內(nèi)容,在顯示海圖時采用了雙緩存機(jī)制及內(nèi)存拷貝方式。首先在內(nèi)存中開辟一塊與當(dāng)前DC(pDC)大小一樣的內(nèi)存DC(pMemoryDC),然后分別利用GDI+技術(shù)繪制各個圖層,最后再在OnDraw()中使用雙緩存機(jī)制,做一個屏幕拷貝,將內(nèi)存設(shè)備上的內(nèi)容一次性顯示在屏幕上,完成顯示工作。因為各圖層的繪圖操作是不可見的,所以避免了窗口重繪時的閃爍現(xiàn)象。而雙緩存機(jī)制及內(nèi)存拷貝方式的使用,不僅提高了顯示速度,同時也使海圖在漫游時能平滑移動而不產(chǎn)生滯留的感覺。
繪制電子海圖時使用的GDI+,是一種應(yīng)用程序編程接口(API),在GDI的基礎(chǔ)上發(fā)展而來,是對原有GDI在功能上的升級。兩者在編程應(yīng)用上的本質(zhì)區(qū)別是GDI+用一個無狀態(tài)的模型取代了GDI中把選中項目放到設(shè)備環(huán)境(DC)對象上的主要狀態(tài)模型,每個繪圖操作都是相互獨立的。利用它的這個特點,可將電子海圖上相同圖層,不同顏色的點、線、面物標(biāo)同時繪制而成,從而提高繪圖的速度。另外,應(yīng)用程序開發(fā)人員在輸出屏幕信息的時候無須考慮具體顯示設(shè)備的細(xì)節(jié),只需引入Graphics類即可,真正實現(xiàn)了圖形硬件和應(yīng)用程序的相互隔離,使開發(fā)人員編寫設(shè)備無關(guān)的應(yīng)用程序變得非常容易。
3 雷達(dá)顯示
3.1 快速坐標(biāo)變換
高分辨率雷達(dá)掃描變換的關(guān)鍵技術(shù)是將天線掃描時的極坐標(biāo)轉(zhuǎn)換為顯示時的直角坐標(biāo)。雷達(dá)信號處理的實時性同樣也要求高速、高效的地址變換。所以,在雷達(dá)顯示中,采取一種快速的坐標(biāo)變換算法尤為重要。本文主要采用進(jìn)位值法來實現(xiàn)快速坐標(biāo)變換。
當(dāng)雷達(dá)觸發(fā)到來時,鎖定一個天線方位角度q,然后距離r由零計數(shù)依次增加,物理意義上表明該方位由雷達(dá)天線中心逐步顯示到量程的邊緣。由于雷達(dá)回波信號的數(shù)據(jù)是徑向分布的,其對應(yīng)的直角坐標(biāo)可表示為式(1):
由于︱cos(q)︳≤1,︱sin(q)︳≤1,所以每執(zhí)行一次加法,結(jié)果的變化量都不會超過1??紤]到屏幕坐標(biāo)的值為整數(shù),故將X、Y的值分別取整賦予屏幕坐標(biāo)。
從以上分析不難看出,執(zhí)行加法操作后真正用到的數(shù)據(jù)只有進(jìn)位信息,而這個值對于線性單調(diào)變化的r和q每次都是個定值并且非0即1,所以在具體實現(xiàn)時,可事先建立一個坐標(biāo)查詢表,表中對應(yīng)位存放每次加法操作執(zhí)行后的進(jìn)位信息,以便計算坐標(biāo)時調(diào)用。
3.2 雷達(dá)顯示
由于雷達(dá)實時更新數(shù)據(jù),所以采用描點的方式繪制,以反映船舶周圍目標(biāo)的運動態(tài)勢。首先,通過CDC::SetMapMode(MM_ISOTROPIC)使x、y軸的邏輯坐標(biāo)相同,來保證繪制的雷達(dá)圖像是圓形,接著利用CDC::SetWindowExt()和CDC::SetViewportExt()分別設(shè)置窗口和視口的范圍,然后通過CDC::SetViewportOrg()設(shè)置視口原點,最后在量化的方位上調(diào)用坐標(biāo)變換子程序完成雷達(dá)圖像的繪制。
其中,坐標(biāo)變換子程序負(fù)責(zé)計算并存儲量化方位上各點的直角坐標(biāo)值及該點對應(yīng)的顏色值,而在計算坐標(biāo)值的時候又調(diào)用了由快速坐標(biāo)變換得到的坐標(biāo)查詢表。
為了實時的繪制雷達(dá)圖像,在OnDraw()中設(shè)定一個時間間隔為2.5 s(雷達(dá)轉(zhuǎn)動一周時間約為2.5~3 s)的定時器,通過調(diào)用SetTimer(1,2500,NULL)來實現(xiàn),并且添加WM_TIMER的消息響應(yīng)函數(shù)OnTimer(),在響應(yīng)函數(shù)中實現(xiàn)雷達(dá)圖像的實時繪制。
4 電子海圖與雷達(dá)圖像的實時疊加
要將雷達(dá)圖像實時疊加在電子海圖上,選擇合理、精度高的坐標(biāo)變化方式,才能使靜態(tài)目標(biāo)完全吻合,動態(tài)目標(biāo)實時準(zhǔn)確定位。在這里,電子海圖和雷達(dá)圖像的繪制都采用了Visual C++的GDI或GDI+函數(shù),無論是畫圖時的邏輯坐標(biāo)還是顯示時的設(shè)備坐標(biāo),均具有相同的單位,保證了繪圖時各點對應(yīng)位置的一致性;而兩者分別使用的坐標(biāo)變換則提高了坐標(biāo)變換的精度及繪圖的速度。
雷達(dá)圖像疊加于電子海圖,首先應(yīng)準(zhǔn)確定位雷達(dá)中心在海圖上的位置,將雷達(dá)實時位置信息通過顯示海圖時的坐標(biāo)變換(即實際地理坐標(biāo)®墨卡托投影坐標(biāo)®屏幕坐標(biāo)),轉(zhuǎn)換為屏幕坐標(biāo),從而實現(xiàn)船舶雷達(dá)實時動態(tài)的顯示船舶航行時周圍的所有動態(tài)和靜態(tài)目標(biāo)。
電子海圖采用矢量圖的方式加以顯示,可以實現(xiàn)無極縮放、局部放大、漫游等功能,而雷達(dá)則采用描點方式顯示,可根據(jù)用戶需要選擇不同量程,還能動態(tài)地標(biāo)出目標(biāo)的距離及方位。一方面,雷達(dá)圖像能隨著電子海圖顯示比例尺的變化而放大、縮??;另一方面,電子海圖也能跟著雷達(dá)量程的變化而作出相應(yīng)的改變。
對于用戶關(guān)心的動態(tài)目標(biāo),可根據(jù)用戶的選擇來進(jìn)行動態(tài)的平滑跟蹤。同一海區(qū)的目標(biāo)還可進(jìn)行多目標(biāo)的疊加顯示,并通過不同的顏色來標(biāo)識目標(biāo)的狀態(tài)。目標(biāo)的動態(tài)數(shù)據(jù)信息,不僅可以實時地在海圖上進(jìn)行疊加顯示,而且還可以在視窗中進(jìn)行文本的對照顯示,使用戶直觀地了解目標(biāo)的航行信息。
圖2是電子海圖與雷達(dá)圖像疊加顯示的效果圖(由于實驗條件的限制,兩者顯示的是不同地區(qū),但在適當(dāng)?shù)睦走_(dá)量程和海圖比例尺下,對應(yīng)點坐標(biāo)是相同的,符合疊加顯示的要求)。
5 結(jié)束語
本系統(tǒng)在Visual C++6.0下利用GDI+技術(shù)實現(xiàn)了電子海圖與雷達(dá)圖像的實時疊加顯示,較好地解決了電子海圖、雷達(dá)圖像單獨顯示和疊加顯示的問題,達(dá)到了實時性的要求。與單一的電子海圖相比,兩者的疊加,不僅突出了電子海圖系統(tǒng)的信息顯示能力,而且提高了使用雷達(dá)的避碰能力。同時,使調(diào)度人員能夠方便地了解到作業(yè)船舶在海上的準(zhǔn)確位置,及時、直觀地了解船舶動態(tài),便于準(zhǔn)確下達(dá)調(diào)度命令,減少了調(diào)度失誤,從而在一定程度上減少了由調(diào)度人員的失誤而引起的時間延誤和作業(yè)難度的增加。
參考文獻(xiàn)
1 周永余,陳永冰等.艦船電子海圖顯示與信息系統(tǒng)發(fā)展評述.船舶工程,2005.4.
2 許開宇.符合國際標(biāo)準(zhǔn)的電子海圖顯示和信息系統(tǒng)(ECDIS).船舶工程,1999.
3 石京東.雷達(dá)圖像和電子海圖系統(tǒng)的疊加應(yīng)用.航海技術(shù),2007.1.
4 畢紅葵,王紅等.光柵掃描雷達(dá)顯示系統(tǒng)關(guān)鍵技術(shù)問題解決方案.2002.5.
5 夏志忠,馬紅,王淑靜.船舶動態(tài)監(jiān)測系統(tǒng)的實現(xiàn).微計算機(jī)信息,1999.2.
6 [美]David J.Kruglinski.Inside Visual C++,4th Edition[M].清華大學(xué)出版社,1999.
作者:劉毅 索繼東 曹蘭蘭 來源:航海技術(shù)