• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于VxWorks操作系統(tǒng)的雷達顯示軟件屏幕截圖技術(shù)研究

      2010-06-28 03:04:20鄭元珠
      艦船電子對抗 2010年2期
      關(guān)鍵詞:圖像文件航跡像素

      鄭元珠

      (南京電子技術(shù)研究所,南京210013)

      0 引 言

      基于光柵掃描雷達顯示器的優(yōu)越性,現(xiàn)代雷達的終端一般采用光柵掃描雷達顯示器。目前雷達的終端顯示技術(shù)向小型化方向發(fā)展,并且集雷達分系統(tǒng)多種功能于一體。用戶對雷達終端顯示軟件的功能需求越來越復(fù)雜。

      現(xiàn)代戰(zhàn)爭中,空情目標復(fù)雜多變,雷達目標常常是多方向、多批次和高速度的。操作員人工錄取目標已經(jīng)不適合戰(zhàn)場需求,一般雷達系統(tǒng)已經(jīng)實現(xiàn)對目標半自動錄取和自動錄取。同時希望對當(dāng)前的一些特殊空情態(tài)勢以靜態(tài)數(shù)字化圖片的形式真實保存下來供事后分析。終端畫面不僅具有實時顯示雷達信息功能,而且要求對畫面二次航跡圖形信息進行保存,即雷達終端的顯控軟件必須具有“抓屏”功能。在系統(tǒng)運行過程中,當(dāng)用戶按下鍵盤上某個功能按鍵或者鼠標選擇某個菜單項時,顯控軟件能夠?qū)?dāng)前屏幕的航跡信息以某種圖像文件的格式保存到計算機硬盤上,該圖像文件供事后情報分析處理使用。

      雷達終端操作系統(tǒng)選擇必須充分考慮實時性、穩(wěn)定性、可靠性、安全性及多任務(wù)處理的需求。雷達小型化終端集數(shù)據(jù)處理、設(shè)備操作控制、顯示及情報上報等多功能于一體。該終端承擔(dān)與上級指揮所之間數(shù)據(jù)交換的功能,因此要求該終端系統(tǒng)必須具有很強的實時性。由于終端系統(tǒng)各個功能模塊間有一定的離散性和耦合性,因此要求系統(tǒng)中實現(xiàn)各個功能模塊的任務(wù)之間具有相對的獨立性和“并發(fā)性”,且各個任務(wù)根據(jù)不同“緊迫感”應(yīng)具有不同的優(yōu)先級。綜上所述,雷達系統(tǒng)要求終端系統(tǒng)具有實時處理多任務(wù)的能力。

      根據(jù)以上多方面的要求和特點,基于優(yōu)先級搶占式的多任務(wù)實時操作系統(tǒng)VxWorks便成為小型化雷達終端首選操作系統(tǒng)。它很好地解決了以往單任務(wù)模式的操作系統(tǒng)和以時間片為調(diào)度基礎(chǔ)的多任務(wù)操作系統(tǒng)在多任務(wù)處理和實時性之間的矛盾。與VxWorks實時操作系統(tǒng)配套的Tornado集成開發(fā)環(huán)境在軟件開發(fā)和調(diào)試方面所具有的靈活性,使得軟件開發(fā)周期大大縮短。

      VxWorks操作系統(tǒng)是當(dāng)前應(yīng)用比較廣泛的嵌入式操作系統(tǒng)之一,其圖形環(huán)境接口支持OpenGL規(guī)范。目前嵌入式操作系統(tǒng)對圖形界面接口功能支持較弱,效率不高,這是目前業(yè)界研究的一個熱點。在Windows操作系統(tǒng)下,操作系統(tǒng)直接支持屏幕截圖功能,用戶只需按下鍵盤“Print Screen”按鍵,操作系統(tǒng)便能夠自動將當(dāng)前屏幕信息拷貝到系統(tǒng)的剪貼板中,用戶再從剪貼板將該數(shù)據(jù)拷貝到相關(guān)應(yīng)用程序(如畫圖軟件或其它圖形軟件),再以指定的文件格式保存所截取的圖形數(shù)據(jù)??上xWorks操作系統(tǒng)不提供該方面的接口功能,一切需要應(yīng)用程序自己實現(xiàn)。

      對于雷達光柵顯示系統(tǒng),若想獲得屏幕的所有顯示信息,最直接的方法是獲得顯卡中顯存的像素數(shù)據(jù),依據(jù)該數(shù)據(jù)的格式進行解包,然后再編碼以某種圖像文件格式保存到計算機硬盤。這需要顯卡的底層驅(qū)動支持,而且開發(fā)人員必須熟悉顯示芯片的寄存器結(jié)構(gòu)及使用方法,同時廠家必須提供這方面的技術(shù)資料,實際上顯示芯片的一些關(guān)鍵資料常常是很難得到的。

      針對上述情況,只有另僻蹊徑,嘗試從其它途徑尋找解決問題的方法。經(jīng)過努力,發(fā)現(xiàn)使用Open-GL的幀緩存技術(shù)可以獲得雷達終端顯示畫面目標二次航跡信息,從而使該問題得到較完美的解決。

      1 解決方案

      1.1 OpenGL基本原理

      OpenGL是圖形硬件的一個軟件接口,目前有多種操作系統(tǒng)支持該規(guī)范,VxWorks操作系統(tǒng)提供對該規(guī)范的接口功能。它的主要作用是將二維或三維的對象繪入一個幀緩沖區(qū)中。對象被描述為一系列的頂點(用來定義幾何對象)或像素(用來定義圖像)。OpenGL對數(shù)據(jù)進行幾個步驟的處理從而將其轉(zhuǎn)換成像素,這些像素在幀緩沖區(qū)中形成最終需要的圖形。

      在OpenGL中,圖形操作的基本對象(實體)為圖元,圖元分為幾何圖元和非幾何圖元。OpenGL基于所謂的“管道模型”(pipleline model)。圖形圖元在應(yīng)用程序內(nèi)部生成,并經(jīng)由管道傳送。管道中包含一系列模塊,每個模塊都對經(jīng)過的圖元采取一項或多項操作。有些模塊提供轉(zhuǎn)換功能,能旋轉(zhuǎn)、轉(zhuǎn)換或縮放對象,有些模塊負責(zé)對于OpenGL的照相機來定位對象;另一些模塊則判斷對象是否在照相機的視界內(nèi)。在管道的末尾,那些可見的圖元會被轉(zhuǎn)換成屏幕上的彩色像素。圖1表示了一種管道模型。

      圖1 OpenGL管道模型

      1.2 OpenGL幀緩存

      在OpenGL中,每個圖像系統(tǒng)的背后都有一個用于生成圖像的幀緩存。幀緩存實際上是一個緩存集合。對于屏幕空間上的每個x,y值,都有與之相對應(yīng)的位組,該位組可以看作是通用圖片圖元或像素。這些像素可以由32位前臺緩存RGBA值、32位后臺緩存RGBA值和32位深度緩存值各位的合成。位組的大小通常是字節(jié)的整數(shù)倍。可以根據(jù)幀緩存中寫操作執(zhí)行的位置寫入深度像素或 RGBA像素。OpenGL允許使用一次函數(shù)調(diào)用來讀取或者寫入該類像素的矩形塊。該操作被稱為位塊傳輸操作。

      讀取像素操作包括定位到幀緩存的正確位置并從該位置提取數(shù)據(jù)。然而實際情況并不是如此簡單,必須考慮像素格式在應(yīng)用程序、文件及幀緩存內(nèi)部的差別,還必須考慮不同體系存儲離散數(shù)據(jù)方式的差異給處理帶來的復(fù)雜性。

      像素管道處理過程如圖2所示。

      圖2 OpenGL像素管道模型

      OpenGL提供了3個處理圖像數(shù)據(jù)的基本函數(shù):

      (1)glReadPixel():從幀緩存中讀取一個矩形像素陣列,并將其存儲到處理器內(nèi)存中。

      (2)glDrawPixel():從處理器內(nèi)存中讀取一個矩形像素陣列,并根據(jù)glRasterPos*()指定的當(dāng)前光柵位置,將其寫入到幀緩存中去。

      (3)glCopyPixel():將一個矩形像素陣列從幀緩存的一個地方復(fù)制到另一個地方;其功能類似于調(diào)用glReadPixel()和glDrawPixel(),但不將數(shù)據(jù)寫入到處理器內(nèi)存。

      在應(yīng)用程序中,主要用到glReadPixel()函數(shù),將像素從幀緩存轉(zhuǎn)移到系統(tǒng)內(nèi)存。該函數(shù)的原型為:

      Void glReadPixels(Glint x,Glinty,GLsizei w,GLsizei h,GLenum format,Glenum type,GLvoid*array)。

      該函數(shù)功能是從幀緩存的(x,y)開始,讀取w×h個像素矩形,放入計算機緩存array。像素格式由format指定,寫入數(shù)據(jù)類型是type。

      雷達終端顯示軟件使用該函數(shù)獲取當(dāng)前幀緩存中顏色緩存數(shù)據(jù),然后進行解包、編碼,保存圖像文件,實現(xiàn)屏幕“抓屏”功能。

      1.3 BMP圖像文件格式

      BMP圖像文件最早應(yīng)用于Microsoft Windows系統(tǒng),由于桌面操作系統(tǒng)的普及,對BMP圖像文件系統(tǒng)支持越來越多。BMP文件格式有以下特點:

      (1)設(shè)備獨立性,它以一種獨立于設(shè)備的方法描述位圖;

      (2)可用非壓縮格式存儲圖像數(shù)據(jù),保證解碼速度快;

      (3)支持多種圖像的存儲。

      BMP圖像文件由以下幾部份組成:位圖文件頭(BITMAPHEADER)數(shù)據(jù)結(jié)構(gòu);位圖信息(BITMAPINFO)數(shù)據(jù)結(jié)構(gòu);位圖陣列。

      各數(shù)據(jù)結(jié)構(gòu)的詳細格式及含義參見相關(guān)資料。由于BMP文件格式對圖像數(shù)據(jù)沒有壓縮,多操作系統(tǒng)支持,從OpenGL幀緩存所得到的數(shù)據(jù)不需要特殊處里,可以直接保存為bmp格式文件,所以選用該格式保存圖像數(shù)據(jù)。

      1.4 部分程序代碼示例

      程序部分代碼如下所示:

      2 注意事項

      2.1 像素分辨率

      像素讀取的返回值受幀緩存分辨率限制。讀取像素值時,首先應(yīng)該檢查當(dāng)前像素顏色分辨率位數(shù),可以使用類似下面查詢函數(shù)來確定位數(shù):glGetIntegerv(GL_RED_BITS,&nbits)。

      2.2 選擇緩存

      讀寫RGBA值時,在幀緩存中處理顏色緩存。當(dāng)應(yīng)用程序在單緩存模式時,默認情形下,在Open-GL前臺顏色緩存(GL_FRONT)執(zhí)行讀和寫操作。在雙緩存模式中,默認情形是在后臺(GL_BACK)繪制對象。

      大多數(shù)OpenGL還支持其它顏色緩存。所以在程序中必須指定所操作的緩存對象,使用函數(shù)gl-ReadBuffer()為讀操作選擇一個緩存。

      使用函數(shù)glReadPixels()來讀取RGBA或顏色索引時,必須指出要從哪個緩存中讀取。例如,如果使用了雙緩存,必須指出要從前緩存還是后緩存讀取數(shù)據(jù)。為此,可使用函數(shù)glReadBuffer()選擇要讀取的緩存類型。

      2.3 BMP文件大小計算

      在本應(yīng)用程序中,每屏抓取后保存的BMP格式圖像文件大小計算如下:

      假設(shè)雷達終端屏幕顯示分辨率為1600×1 200,每像素顏色采用24位表示,以非壓縮格式保存。位圖文件頭為14字節(jié),位圖信息結(jié)構(gòu)體長度為40字節(jié),則保存后文件大小為:1 600×1 200×3+14+54=5 760 054字節(jié)。

      上述文件占用空間較多,在任務(wù)執(zhí)行完畢,可以將上述文件拷貝到Windows操作系統(tǒng)下,運行其它圖像處理軟件(如PhtoShop,ACDsee等軟件),將上述BMP文件進行壓縮或者轉(zhuǎn)換為其它格式圖形文件(如JPEG格式)。

      之所以沒有進行實時壓縮,主要考慮到圖像壓縮處理運算需要消耗較多的計算機資源,對顯示軟件的其它任務(wù)運行會產(chǎn)生一定的影響,所以留到任務(wù)結(jié)束后再處理。因為只要獲得了顯卡的原始顯示數(shù)據(jù),圖像數(shù)據(jù)的后續(xù)處理技術(shù)途徑較多,不再贅述。

      3 結(jié)束語

      采用OpenGL幀緩存操作技術(shù)和BMP圖像文件技術(shù)解決了VxWorks操作系統(tǒng)下雷達終端顯示軟件對目標航跡圖像獲取及保存問題。實踐證明在目前應(yīng)用條件下,該項技術(shù)的應(yīng)用滿足用戶對雷達系統(tǒng)的功能需求。圖3所示為VxWorks操作系統(tǒng)下所獲得的雷達屏幕二次航跡圖像信息文件在Microsoft Window s操作系統(tǒng)下的顯示。圖像文件格式為BMP,用普通的圖像文件瀏覽器就能查看。該二次航跡信息與屏幕航跡信息一致,無信息丟失。目前在顯示軟件中僅用到OpenGL幀緩存中的顏色緩存,沒有使用到深度緩存、累積緩存等其它緩存。幀緩存中其它緩存對屏幕“截圖”結(jié)果的影響及處理有待后續(xù)工作中進一步探索。

      圖3 雷達二次航跡圖像文件在Microsoft Windows下恢復(fù)顯示(部分畫面)

      [1]丁鷺飛.雷達原理[M].第3版.西安:西安電子科技大學(xué)出版社,2002.

      [2]Edward Angel(美).OpenGL程序設(shè)計指南[M].第2版.李桂瓊譯.北京:清華大學(xué)出版社,2005.

      [3]董士海.圖像格式編程指南[M].北京:清華大學(xué)出版社,1995.

      猜你喜歡
      圖像文件航跡像素
      趙運哲作品
      藝術(shù)家(2023年8期)2023-11-02 02:05:28
      像素前線之“幻影”2000
      夢的航跡
      青年歌聲(2019年12期)2019-12-17 06:32:32
      “像素”仙人掌
      自適應(yīng)引導(dǎo)長度的無人機航跡跟蹤方法
      圖像電子文件的歸檔格式及其轉(zhuǎn)換研究
      檔案管理(2017年1期)2017-01-17 19:15:57
      視覺導(dǎo)航下基于H2/H∞的航跡跟蹤
      高像素不是全部
      CHIP新電腦(2016年3期)2016-03-10 14:22:03
      基于航跡差和航向差的航跡自動控制算法
      在TC界面以縮略圖查看圖像文件
      電腦迷(2012年22期)2012-04-29 20:30:54
      鱼台县| 犍为县| 大邑县| 原阳县| 商城县| 珠海市| 衡南县| 石阡县| 新建县| 惠州市| 江北区| 新宁县| 铜山县| 新沂市| 九台市| 邵阳市| 久治县| 溧水县| 烟台市| 盐亭县| 白玉县| 呈贡县| 博乐市| 绥化市| 莆田市| 武穴市| 东源县| 开平市| 宣恩县| 桐柏县| 涡阳县| 淮北市| 庐江县| 中阳县| 榆社县| 高陵县| 梧州市| 泗洪县| 贺兰县| 株洲县| 镶黄旗|