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

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

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

魏 輝,劉 春

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

0 引言

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

1 總體結構

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

圖1 航跡顯示系統組成

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

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

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

圖2 航跡顯示界面

2 地圖操作

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

2.1 設立緩沖區

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

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

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

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

圖3 緩沖區

2.2 地圖操作的實現原理

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

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

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

3 航跡顯示

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

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

圖4 單個刷新周期

3.1 將經緯度坐標轉換為地圖像素坐標

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

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

3.2 計算兩航跡點間航線

圖5 坐標轉換

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

計算兩航跡點之間的航線,如圖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和y表示的是在地圖文件中的像素坐標,為離散的整數值,這就會導致按照式 (4)和式(5)計算可能產生不同的效果。

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

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

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

3.3 航線顯示原理

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

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

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

3.4 航線的實時刷新

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

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

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

在仿真程序中,航線的刷新并不需要與主程序的刷新同步。可以根據需要設置主程序刷新一定的幀數時航線刷新一次,這樣可以減少計算機的計算量。

4 線程模型

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

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

圖7 線程模型

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

5 結束語

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

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

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

[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).[劉軒明,林達雷,姜守達.一種數字地圖圖片加載方法[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).[李洋,孫永維,胥義豐,等.臺式飛行仿真模擬器的設計與實現 [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).[寧濤,王錚,龍川.面向一般應用的動態加載機制 [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).[賈奮勵,游雄,宋國民,等.電子地圖多尺度顯示中放大鏡效果的實現 [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系統地圖快速顯示模型設計與實現[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的協同設計中數據交換方法的研究 [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).[劉巧紅.計算機虛擬校園的建造與人機交互的實現[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).[袁滿,張樂英.動態按需加載算法在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的三維航跡監視及六自由度飛行仿真 [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
捕魚
主站蜘蛛池模板: 国产乱子伦手机在线| 午夜毛片免费观看视频 | 四虎国产在线观看| 国产本道久久一区二区三区| 久996视频精品免费观看| 欧美精品v| A级毛片高清免费视频就| 国产网友愉拍精品| 91精品情国产情侣高潮对白蜜| 午夜福利在线观看入口| 国产v精品成人免费视频71pao| 国产精品主播| 国产免费一级精品视频| 国产黑丝一区| 国产亚洲精品va在线| 尤物特级无码毛片免费| 亚洲天堂免费| 91福利片| 久久综合一个色综合网| 国产成+人+综合+亚洲欧美| 午夜啪啪福利| 日韩A级毛片一区二区三区| 国产91麻豆免费观看| 国产成人综合亚洲欧美在| 国产91九色在线播放| 一本一道波多野结衣av黑人在线| 91啦中文字幕| 久久久久人妻一区精品| 中文字幕在线播放不卡| 亚洲精品无码AV电影在线播放| 国产欧美日韩视频怡春院| 欧美成人午夜在线全部免费| 另类欧美日韩| 中文字幕第4页| 国产精品女主播| 超清无码一区二区三区| 操美女免费网站| 777国产精品永久免费观看| 91在线一9|永久视频在线| 国产日韩欧美在线视频免费观看| 91精品国产福利| 亚洲人成网站色7777| 精品国产美女福到在线直播| 片在线无码观看| 国产地址二永久伊甸园| 成年人国产网站| 动漫精品中文字幕无码| 国产日韩精品一区在线不卡| 国产剧情国内精品原创| 国产成人精品一区二区三在线观看| 国产农村妇女精品一二区| 久久久久亚洲Av片无码观看| 国产成人艳妇AA视频在线| 国产69精品久久| 国产在线自揄拍揄视频网站| a亚洲视频| 亚洲av无码片一区二区三区| 中文字幕色在线| 97国产成人无码精品久久久| 亚洲伊人久久精品影院| aaa国产一级毛片| 内射人妻无码色AV天堂| 亚洲二区视频| 日韩国产一区二区三区无码| 欧美在线伊人| 精品中文字幕一区在线| 亚洲婷婷六月| 日本成人一区| 久久精品嫩草研究院| 国产成人综合久久精品下载| 色悠久久久| 日韩一级二级三级| 亚洲欧美在线看片AI| 欧洲亚洲欧美国产日本高清| 黄色国产在线| 国产天天色| 黄色福利在线| 99久久精品免费看国产电影| 97青青青国产在线播放| 国产无码精品在线播放 | 免费啪啪网址| 97国产在线播放|