999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于圖像處理的飛行器航跡顯示方法

2013-07-25 02:28:34輝,劉
計算機工程與設計 2013年2期
關鍵詞:方法模型

魏 輝,劉 春

(沈陽航空航天大學航空航天工程學部,遼寧沈陽110136)

0 引言

飛行器航跡在數(shù)字地圖上的顯示可以讓用戶了解較大范圍內(nèi)的飛行環(huán)境,目前常見的航跡顯示方法或組件大多借助一些第三方工具開發(fā)。本文給出一種借助于圖像處理和可視化開發(fā)技術實現(xiàn)的航跡顯示方法。主要實現(xiàn)的功能包括對二維電子地圖的平移縮放操作及飛行器航跡的實時顯示。鑒于實時仿真對時間效率要求較高,航跡顯示部分采用了高效的算法及一些時間控制策略保證航跡顯示與飛行器實際飛行軌跡的同步性。電子地圖采用最常見的JPG格式文件,不僅可以借助于圖像處理技術方便的進行操作,而且地圖資源的獲取非常容易。本文給出的實現(xiàn)方法完全可以借助計算機編程語言自主開發(fā)實現(xiàn),有效的解決了開頭提出的問題。

1 總體結(jié)構

該方法主要包括兩大功能:地圖操作和航跡顯示,如圖1所示。

圖1 航跡顯示系統(tǒng)組成

地圖操作通過鼠標的移動和點擊實現(xiàn)。在地圖界面內(nèi)按下鼠標并移動,地圖會跟隨鼠標進行相應的移動。選擇好放大或縮小狀態(tài),然后在模塊界面內(nèi)雙擊鼠標,就可以實現(xiàn)地圖的放大或縮小。地圖采用的是普通的JPG格式文件。

航跡顯示部分通過動力學模型提供的接口接收飛行器的位置信息,然后把動力學模型實時解算的飛行器位置變換為電子地圖上相應的位置并顯示。隨著飛行器位置的不斷變化,航跡也進行同步的刷新。

整個顯示界面如圖2所示。在圖形框內(nèi)按下鼠標左鍵并移動,地圖會跟隨鼠標相應移動;選擇放大或縮小按鈕,然后在圖形框內(nèi)雙擊鼠標,地圖就會按一定比例放大或縮小,航跡也會跟隨地圖等比例放縮。

圖2 航跡顯示界面

2 地圖操作

地圖及航跡的顯示在一個圖形框中實現(xiàn)。地圖采用的是一張JPG文件,在程序開始運行時將其局部作為背景顯示在圖形框中。當前窗口只顯示地圖文件的一個局部,可以用鼠標移動地圖以觀察不同的區(qū)域,也可放大或縮小地圖以擴大或減小當前顯示的范圍。

2.1 設立緩沖區(qū)

當移動或放縮地圖時,當前顯示的內(nèi)容就會發(fā)生變化。由于整個地圖文件較大,如果直接從整張地圖文件中讀取要顯示的部分,會大大增加程序的響應時間,甚至對整個仿真程序的正常執(zhí)行產(chǎn)生影響。因此,這里專門開辟一個緩沖區(qū),程序從該緩沖區(qū)而不是原地圖文件中讀取要顯示在窗口中的地圖數(shù)據(jù),很好的解決了以上問題。

為方便闡述,區(qū)域的表示采用式 (1)中的格式

其中,Z為區(qū)域的名稱,x,y分別為區(qū)域Z左上頂點在原地圖文件中以像素為單位的橫坐標和縱坐標,且向右表示x坐標增大方向,向下表示y坐標增大方向。width表示區(qū)域Z的以像素為單位的寬度,height表示區(qū)域Z的以像素為單位的高度。原地圖文件的表示方法與此類似,并以原地圖文件的左上頂點為坐標原點。

緩沖區(qū)的大小如圖3所示。圖中陰影部分為當前窗口顯示范圍,設為S(x,y,width,height)。B為當前緩沖區(qū)的范圍,B的長度和寬度分別為S長度和寬度的3倍,且S位于B的中央,所以B可以表示為B(x-width,y-height,3*width,3*height)。這樣,無論在顯示窗口中怎樣操作地圖,將要顯示的內(nèi)容都在緩沖區(qū)中,所以要顯示的地圖可以從緩沖區(qū)直接加載,提高了地圖操作指令的響應速度。每次地圖操作完成后,由于S發(fā)生了變化,B也要進行相應的更新。B的更新要從原地圖文件讀取數(shù)據(jù),因此需要的計算時間相對較長,同樣會造成響應速度慢的問題。為了解決這一問題,B的更新放在兩次地圖操作的中間進行。上一次操作完成時即開始更新緩沖區(qū),這時B鎖定為不可用狀態(tài),直到更新完畢恢復可用狀態(tài)。在B處于不可用狀態(tài)時,程序不響應用戶的地圖操作。這種緩沖區(qū)更新方法充分利用了用戶兩次操作之間的時間空隙,提高了計算機計算能力的利用率和地圖瀏覽的流暢程度。

圖3 緩沖區(qū)

2.2 地圖操作的實現(xiàn)原理

地圖操作分為平移和放縮兩種。首先設置一個全局的放縮系數(shù)m,用m去控制當前顯示地圖塊的寬度和高度。當執(zhí)行一次放大操作,m減小一個固定的步長d,當前顯示地圖塊的范圍變小,由于顯示窗口大小不變,就表現(xiàn)為地圖的放大,反之地圖則縮小。地圖平移的距離通過捕捉鼠標在顯示窗口內(nèi)按下左鍵時移動的距離獲取。

以圖3為例,加上放縮系數(shù),則當前顯示區(qū)域為S(x,y,width*m,height*m)。假設鼠標在顯示窗口按下左鍵并向右平移a個像素單位,向下平移b個像素單位。則平移后的窗口顯示區(qū)域為S'(x-a*m,y-b*m,width*m,height*m),緩沖區(qū)則相應更新為B'(x-width*m-a*m,y-height*m-b*m,3*width*m,3*height*m)。

執(zhí)行一次放大操作時,放縮系數(shù)m減小步長d,變?yōu)閙'=m-d。放大后顯示范圍的中心點為執(zhí)行放大操作時鼠標在顯示窗口中點擊的點。若當前顯示區(qū)域為S(x,y,width*m,height*m),鼠標雙擊點在地圖中的坐標 (需要從窗口坐標轉(zhuǎn)換成地圖中的坐標)為 (x',y'),則放大一次后顯示區(qū)域變?yōu)镾'(x'-width*m'/2,y'-height*m’/2,width*m’,height*m’)。緩沖區(qū)則相應更新為B’(x’-3*width*m’/2,y’-3*height*m’/2,width*m’*3,height*m’*3)。縮小時與此類似,只需將放縮系數(shù)增大步長d。

3 航跡顯示

飛行器的實際飛行軌跡為一條連續(xù)的曲線,但在飛行仿真中,必須先將飛行器的航跡離散化,變成一個個的航跡點,通過一系列的航跡點去描述飛行器的飛行,然后再把離散的航點還原為連續(xù)的航線顯示出來。本方法從動力學模型中實時獲取飛行器當前的航跡點后,通過一定的算法把當前航跡點和上一個航跡點之間的航線計算并顯示出來。

首先設置兩個集合A和B,A中為所有從動力學模型中獲取并轉(zhuǎn)化為用地圖文件中像素坐標表示的航跡點,B中為通過計算得到的航線上的所有航跡點 (航線在地圖文件中是通過一個個的像素點表示出來的,所以可以把航線上的所有航跡點都列舉出來)。航跡顯示一個刷新周期的流程如圖4所示。

圖4 單個刷新周期

3.1 將經(jīng)緯度坐標轉(zhuǎn)換為地圖像素坐標

動力學模型中提供的航跡點是用經(jīng)緯度坐標表示的,應用本方法時需轉(zhuǎn)換為地圖文件中的像素坐標。以圖5為例,圖5中方框表示地圖文件的邊界,地圖左上頂點的經(jīng)緯度坐標為 (lon1,lat1),像素坐標為 (0,0)。地圖右下頂點的經(jīng)緯度坐標為 (lon2,lat2),像素坐標為 (width,height),其中width為地圖的像素寬度,height為地圖的像素高度。

則對于地圖范圍內(nèi)的任意一點A,已知其經(jīng)緯度坐標為 (lon,lat),其像素坐標 (x,y)按式 (2)和式 (3)得到

3.2 計算兩航跡點間航線

圖5 坐標轉(zhuǎn)換

由于程序從動力學模型獲取航跡點的時間間隔非常小(一般在30毫秒左右),所以把這段時間內(nèi)飛行器飛過的航跡近似為一條直線段。這樣問題就轉(zhuǎn)化為已知一條直線段的兩個端點坐標,求直線段上某些點處的坐標,這可以根據(jù)直線段所在直線的方程求解。具體到本問題,還需要做一些特別的考慮。

計算兩航跡點之間的航線,如圖6所示。

圖6 計算兩航跡點之間的航線

以地圖文件的左上角為坐標原點建立坐標系,A(x1,y1),B(x2,y2)兩點為從動力學模型中獲取的相鄰兩個航跡點。則線段AB上的任一點C(x,y)有兩種求法 (此處假設x1≠x2且y1≠y2):

(1)已知x坐標,可求得y坐標

(2)已知y坐標,可求得x坐標

在x和y坐標為連續(xù)實數(shù)的情況下,上面兩種方法產(chǎn)生的結(jié)果相同。而這里的x和y表示的是在地圖文件中的像素坐標,為離散的整數(shù)值,這就會導致按照式 (4)和式(5)計算可能產(chǎn)生不同的效果。

要想把A和B之間的航線計算出來,必須計算出線段AB經(jīng)過的每個像素點的坐標。在A點和B點坐標已知的情況下,可以從x1到x2遍歷x從而按照4式求出對應的也可以從y1到y(tǒng)2遍歷y按照5式求出對應的x(當求出的值為非整數(shù)時按四舍五入取整)。設A和B兩點橫坐標的距離為△x,縱坐標的距離為△y。當△x<△y時,若按照4式遍歷x求相應的y值,就會出現(xiàn)y1和y2間有些y值沒有對應的x值,按照像素構成圖形的原理這就會使顯示出來的線段AB在這些地方出現(xiàn)間斷,不能滿足顯示連續(xù)航線的要求。此時若按照5式遍歷y求出各個x的值,則x1和x2之間的每個x都有對應的y值,y1和y2之間的每個y也都有對應的x值 (只不過有些y對應相同的x),這樣就不會出現(xiàn)上述問題。綜上,計算航跡點A,B之間航線的方法是

△y<△x時,按照4式遍歷x求相應y

若x1=x2,此時可以遍歷y坐標,令各y處對應的x值均為x1。y1=y2時類似的遍歷x即可。

3.3 航線顯示原理

航線的顯示是通過對當前緩沖區(qū)中的像素點進行處理實現(xiàn)的,也即把航線顯示在緩沖區(qū)中。這樣當顯示窗口從緩沖區(qū)加載要顯示的內(nèi)容時就同時把飛行器飛過的航線也加載并顯示給用戶。例如要把飛行器飛過的航線顯示為紅色,只要在地圖緩沖區(qū)中把航線所經(jīng)過的像素點的顏色設置為紅色即可,這可以通過圖像處理中的像素處理函數(shù)實現(xiàn)。這里選擇把整個緩沖區(qū)內(nèi)的航線表示出來而不是僅把顯示窗口中的航線表示出來主要有兩個原因:一是考慮到在顯示航線的同時用戶有可能會對地圖進行操作,這樣當前窗口顯示的內(nèi)容就會發(fā)生變化,把航線顯示在緩沖區(qū)中可以使用戶移動地圖時航線不會消失而且航線和地圖是作為一個整體移動,視覺效果更好;另外若僅在窗口顯示范圍內(nèi)把航線顯示出來,當操作地圖時需要同時繪制航線,增加了算法的計算量,使程序響應變慢。

飛行器的航線有可能會超出緩沖區(qū)的范圍,只有在當前緩沖區(qū)范圍內(nèi)的部分才需要顯示,因此在緩沖區(qū)中表示航線的時候要首先判斷航線是否在當前緩沖區(qū)范圍內(nèi)。這只需根據(jù)航線上每個點與緩沖區(qū)范圍的坐標關系進行判斷。隨著用戶對地圖的操作,緩沖區(qū)也在不斷的變化,隨之緩沖區(qū)中的航線就要重新繪制。前文中提到存放航線上所有航跡點的集合B,每次緩沖區(qū)更新時只要遍歷B中所有航跡點,將處于新緩沖區(qū)范圍內(nèi)的航跡點繪制出來即可。

飛行器當前的位置也需要顯示出來。把從動力學模型最后獲取的航跡點作為飛行器當前的位置,以該位置為中心連同周圍的點一起形成一個點集,把該點集中的點以相同的顏色顯示出來表示飛行器當前的位置,這樣顯示的效果會比較明顯,便于觀察。

3.4 航線的實時刷新

3.3 節(jié)介紹的是對于飛行器已經(jīng)飛過的固定的航線部分的顯示,在實時仿真中,飛行器的位置一直在變化之中,航線也一直在動態(tài)的更新,這就要求航線的顯示要能實時跟隨飛行器的位置。

每次從動力學模型獲取一個新的航跡點后航線就要刷新,此時若將已飛過的全部航線刷新顯然不是最佳方法。前文中給出了存放所有從動力學模型獲取的航跡點的集合A,每次從動力學模型獲取一個航跡點,首先按照3.2節(jié)中方法計算A中最后一個航跡點與最新獲取的航跡點之間的航線,并將計算出的航線位于當前緩沖區(qū)中的部分繪制到緩沖區(qū)中,同時更新飛行器當前位置,然后把計算出的航線上的所有航跡點加入到集合B中,最后將最新獲取的航跡點加入到集合A中。這樣每次只刷新飛行器最新飛過的航跡點和上一個航跡點之間的航線,減少了計算量。

將最新飛過的航線繪制到緩沖區(qū)后,還需要把當前顯示窗口顯示的內(nèi)容刷新,否則最新飛行的航線體現(xiàn)不到當前顯示窗口。

在仿真程序中,航線的刷新并不需要與主程序的刷新同步??梢愿鶕?jù)需要設置主程序刷新一定的幀數(shù)時航線刷新一次,這樣可以減少計算機的計算量。

4 線程模型

作為實時仿真程序,單線程模型很難滿足需要,本方法的實現(xiàn)采用了多線程模型。

程序中開辟了兩個線程。由于緩沖區(qū)加載需要較多的計算時間,因此單獨用一個線程進行處理,除此之外的功能實現(xiàn)則放在另一個線程中處理。這樣,當用戶執(zhí)行地圖操作觸發(fā)緩沖區(qū)加載的執(zhí)行時,程序還能繼續(xù)響應用戶的其它操作,否則就要等到緩沖區(qū)加載完畢用戶才能執(zhí)行其它操作。這里把加載緩沖區(qū)的線程稱為加載線程,另一個線程稱為主線程。線程工作的流程如圖7所示。

圖7 線程模型

程序開始執(zhí)行時主線程處于工作狀態(tài),加載線程處于休眠狀態(tài)。當主線程中觸發(fā)了緩沖區(qū)的加載操作時,加載線程被喚醒。此時加載線程鎖定緩沖區(qū),開始緩沖區(qū)的加載更新。在加載線程鎖定緩沖區(qū)時,主線程不響應用戶的與緩沖區(qū)有關的操作。緩沖區(qū)加載完畢時,加載線程釋放緩沖區(qū)鎖,繼續(xù)進入休眠狀態(tài)。此時主線程重新開始響應用戶與緩沖區(qū)有關的操作。

5 結(jié)束語

介紹了一種采用圖像處理技術實現(xiàn)的飛行器航跡顯示方法,該方法可以作為一個組成部分應用在飛行仿真中

。本方法已經(jīng)成功應用到實際飛行仿真系統(tǒng)中。在Intel酷睿2雙核E4500、2GB內(nèi)存的普通PC機上運行整個仿真程序的同時執(zhí)行一次航線刷新需要的時間為15ms左右,再加上航線的刷新頻率遠低于仿真主程序的刷新頻率,所以完全能夠滿足實時仿真需要。

該方法的特點主要在于解決了實際仿真應用中航跡顯示的開發(fā)多通過第三方軟件實現(xiàn),而且需要用到較多地圖繪制和處理專業(yè)技術的問題,同時地圖資源的獲取也更為方便。

[1]LIU Xuanming,LIN Lianlei,JIANG Shouda.Loading of the geographic pictures for digital map [J].Computer Applications,2009,28(10):34-41(in Chinese).[劉軒明,林達雷,姜守達.一種數(shù)字地圖圖片加載方法[J].自動化技術與應用,2009,28(10):34-41.]

[2]LI Yang,SUN Yongwei,XU Yifeng,et al.Design and implementation of platform-type flight simulator[J].Joumalo of Jilin University(Information Science Edition),2009,27(5):550-556(in Chinese).[李洋,孫永維,胥義豐,等.臺式飛行仿真模擬器的設計與實現(xiàn) [J].吉林大學學報 (信息科學版),2009,27(5):550-556.]

[3]NING Tao,WANG Zheng,LONG Chuan.Gen,et al.Application oriented dynamic lo-ading mechanism [J].Computer Engineering,2008,34(17):79-81(in Chinese).[寧濤,王錚,龍川.面向一般應用的動態(tài)加載機制 [J].計算機工程,2008,34(17):79-81.]

[4]JIA Fenli,YOU Xiong,SONG Guomin,et al.Implementation of“Magnifier”effect in multi-scale display of electronic map [J].Journal of Geomatics Science and Tech-nology,2009,26(1):29-32(in Chinese).[賈奮勵,游雄,宋國民,等.電子地圖多尺度顯示中放大鏡效果的實現(xiàn) [J].測繪科學技術學報,2009,26(1):29-32.]

[5]WANG Jingcun,CHEN Bin,CHEN Heping.Design and realization of fast map display model for GISsystem [J].Computer Engineering and Design,2007,28(5):1179-1222(in Chinese).[王景存,陳彬,陳和平.GIS系統(tǒng)地圖快速顯示模型設計與實現(xiàn)[J].計算機工程與設計,2007,28(5):1179-1222.]

[6]HUANG Guoyan,GUO Hui.Study on dataexchange method of CSCD based on XML [J].Computer Engineering and Design,2007,28(24):6000-6047(in Chinese).[黃國言,郭徽.基于XML的協(xié)同設計中數(shù)據(jù)交換方法的研究 [J].計算機工程與設計,2007,28(24):6000-6047.]

[7]MENG Xiaoxuan,LI Yiming,BU Qingzhong,et al.Storage service-oriented BufferManagement model[J].Computer Engineering,2009,35(1):30-32(in Chinese).[孟曉烜,李一鳴,卜慶忠,等.一種面向存儲服務的緩存管理模型[J].計算機工程,2009,35(1):30-32.]

[8]LIU Qiaohong.Construction of computer virtual campus and humancomputer interaction technology[J].Computer Engineering and Design,2010,31(19):4332-4335(in Chinese).[劉巧紅.計算機虛擬校園的建造與人機交互的實現(xiàn)[J].計算機工程與設計,2010,31(19):4332-4335.]

[9]YUAN Man,ZHANG Leying.Application of dynamic on-demand loading algorithm in GISmap [J].Computer Enginee-ring,2010,36(15):245-247(in Chinese).[袁滿,張樂英.動態(tài)按需加載算法在GIS地圖中的應用 [J].計算機工程,2010,36(15):245-247.]

[10]TANG Yong,LIU Changzhong,WU Honggang.3D flight track and 6-DOF flight simulation based on Google Eatrh[J].Journal of Computer Applications,2009,29(12):3385-3387(in Chinese).[唐勇,劉昌忠,吳宏剛.基于Google Eatrh的三維航跡監(jiān)視及六自由度飛行仿真 [J].計算機應用,2009,29(12):3385-3387.]

猜你喜歡
方法模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
主站蜘蛛池模板: 国产在线精彩视频二区| 国产97视频在线观看| 成·人免费午夜无码视频在线观看| 亚洲国产看片基地久久1024| 欧美在线视频不卡| 久久综合五月婷婷| 国产三级国产精品国产普男人| a级毛片在线免费观看| 国产后式a一视频| 欧洲亚洲一区| 欧美三级不卡在线观看视频| 91福利在线看| 四虎AV麻豆| 99成人在线观看| 97狠狠操| 人妻少妇久久久久久97人妻| 超清无码一区二区三区| 18禁色诱爆乳网站| 欧美激情视频二区三区| 中文字幕在线日本| 四虎影视永久在线精品| 狠狠v日韩v欧美v| 99在线视频免费观看| 国产国拍精品视频免费看| 精品成人一区二区三区电影| 亚洲手机在线| 四虎国产精品永久在线网址| 国产男女免费视频| 亚洲精品少妇熟女| 久久亚洲综合伊人| 日本精品视频一区二区| 毛片久久网站小视频| 欧美成人怡春院在线激情| 亚洲精品国产精品乱码不卞| 亚洲综合色婷婷中文字幕| 在线免费亚洲无码视频| 97色伦色在线综合视频| 色久综合在线| 欲色天天综合网| 国产成人综合久久精品尤物| 97精品伊人久久大香线蕉| 亚洲成人在线网| 亚洲国产综合自在线另类| 国产又粗又猛又爽视频| 欧美人与牲动交a欧美精品| 亚洲日本一本dvd高清| 国产情精品嫩草影院88av| 青青草a国产免费观看| 99伊人精品| 亚洲自偷自拍另类小说| 日韩国产无码一区| 亚洲精品手机在线| 亚洲爱婷婷色69堂| 久久久久免费看成人影片| 日韩av资源在线| 真实国产乱子伦视频| 不卡视频国产| 免费毛片在线| 亚洲综合激情另类专区| 有专无码视频| 国产91视频观看| 亚洲天堂福利视频| 精品成人一区二区三区电影 | 国产成人精品男人的天堂| 国产高清国内精品福利| a亚洲天堂| 无码不卡的中文字幕视频| 成人精品午夜福利在线播放 | 蜜桃视频一区| 在线观看网站国产| 97人妻精品专区久久久久| 亚洲 欧美 偷自乱 图片 | 99视频在线观看免费| 国产精品夜夜嗨视频免费视频| 国产成人高清精品免费5388| 欧美三级视频网站| 国产自在线拍| 亚洲娇小与黑人巨大交| 99热这里只有精品久久免费| 一级毛片免费播放视频| 久久精品这里只有精99品| 久久久受www免费人成|