《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 基于DirectDraw的合成孔徑雷達(dá)圖像實(shí)時(shí)顯示

基于DirectDraw的合成孔徑雷達(dá)圖像實(shí)時(shí)顯示

2008-06-17
作者:劉佳音,, 禹衛(wèi)東

  摘 要: 介紹了合成孔徑雷達(dá)" title="合成孔徑雷達(dá)">合成孔徑雷達(dá)(SAR)圖像實(shí)時(shí)顯示" title="實(shí)時(shí)顯示">實(shí)時(shí)顯示技術(shù),。利用該技術(shù)并結(jié)合機(jī)載SAR實(shí)時(shí)成像處理器的硬件環(huán)境,實(shí)現(xiàn)了具有多種功能的滾動(dòng)顯示軟件,,軟件開(kāi)發(fā)采用了基于DirectDraw的技術(shù),。目前該軟件已成功運(yùn)行于中科院電子所研制的機(jī)載SAR實(shí)時(shí)成像處理器上。該項(xiàng)技術(shù)可方便地移植到其他類(lèi)似的雷達(dá)圖像顯示系統(tǒng)中,。
  關(guān)鍵詞: DirectDraw 實(shí)時(shí)顯示 合成孔徑雷達(dá)圖像


  合成孔徑雷達(dá)(SAR)是一種全天時(shí),、全天候的主動(dòng)式微波遙感手段,它以飛機(jī)或衛(wèi)星為載體對(duì)地進(jìn)行觀測(cè),。與光學(xué)成像不同,,把SAR回波數(shù)據(jù)轉(zhuǎn)換為SAR圖像需要一系列復(fù)雜的信號(hào)處理步驟,通常只能采取記錄回波數(shù)據(jù),、事后處理得到圖像的方法,。近年來(lái)隨著數(shù)字技術(shù)的迅速發(fā)展,,以及嵌入式DSP芯片速度的不斷提高,機(jī)上實(shí)時(shí)成像處理技術(shù)已成為現(xiàn)實(shí),。
  SAR實(shí)時(shí)成像處理器可以在載機(jī)平臺(tái)飛行的同時(shí)獲得所觀測(cè)區(qū)域的SAR圖像,,這對(duì)于實(shí)時(shí)偵察具有重要意義。圖像實(shí)時(shí)滾動(dòng)顯示是SAR實(shí)時(shí)成像處理器的一個(gè)重要功能,,它用來(lái)直觀地把處理器生成的圖像按載機(jī)飛行速度,,同步地輸出到顯示設(shè)備上。
  本文介紹的基于DirectDraw的SAR圖像實(shí)時(shí)滾動(dòng)顯示軟件已成功地運(yùn)行于中科院電子所開(kāi)發(fā)的機(jī)載SAR實(shí)時(shí)成像處理器上,,獲得了良好的應(yīng)用效果,。
1 運(yùn)行的硬件環(huán)境及功能需求
  本軟件運(yùn)行于中科院電子所研制的機(jī)載SAR實(shí)時(shí)成像處理器上,硬件環(huán)境如圖1所示,。


  機(jī)上雷達(dá)通過(guò)天線對(duì)地面測(cè)繪區(qū)域發(fā)射信號(hào),,并將接收到的地物回波經(jīng)過(guò)放大、下變頻和正交解調(diào)后,,生成視頻回波信號(hào)(分為I/Q兩路),,進(jìn)入機(jī)上的實(shí)時(shí)成像處理器中。
  在實(shí)時(shí)成像處理器中,,首先視頻信號(hào)經(jīng)A/D轉(zhuǎn)換為數(shù)字信號(hào),,再經(jīng)成像處理(包括方位預(yù)濾波、距離壓縮,、CTM,、方位壓縮、ICTM等硬件單元)生成實(shí)時(shí)連續(xù)的SAR圖像數(shù)據(jù)" title="圖像數(shù)據(jù)">圖像數(shù)據(jù),,其具體參數(shù)如表1所示,。圖像數(shù)據(jù)通過(guò)PCI接口卡(總線寬度為32位)傳入主控計(jì)算機(jī)。在主控計(jì)算機(jī)中,,SAR圖像數(shù)據(jù)經(jīng)本軟件處理后,,通過(guò)顯示器完成雷達(dá)圖像的實(shí)時(shí)滾動(dòng)顯示,其中,,圖像的顯示分辨率為1024×768,,顯示字長(zhǎng)為8bit,顯示圖像灰度級(jí)為256級(jí),。


  根據(jù)上述技術(shù)參數(shù),,本軟件設(shè)計(jì)思想及所完成的功能如下:
  (1)屏幕顯示模式為圖像自下而上進(jìn)行滾動(dòng)顯示,其中水平方向?yàn)榫嚯x向,,垂直方向?yàn)榉轿幌颉?BR>  (2)雷達(dá)數(shù)據(jù)在成像時(shí),,圖像數(shù)據(jù)持續(xù)顯示速度應(yīng)符合大于6.25Mbps(762.5×4096×2)的標(biāo)準(zhǔn),否則,會(huì)造成數(shù)據(jù)的擁塞,,導(dǎo)致顯示的圖像出錯(cuò),。
  (3)雷達(dá)成像時(shí)讀入16bit" title="16bit">16bit無(wú)符號(hào)數(shù)據(jù),而顯示字長(zhǎng)為8bit,,所以,要從16bit數(shù)據(jù)中選取連續(xù)的8bit用來(lái)成像,,而且選取的位置必須可調(diào),,即可以動(dòng)態(tài)改變圖像的亮度。
  (4)雷達(dá)圖像每行4096點(diǎn),。普通的顯示器能顯示的最大尺寸為1024×768,,所以,雷達(dá)圖像不可能一次全部顯示出來(lái),,必須動(dòng)態(tài)地分區(qū)域顯示,。這樣就產(chǎn)生了兩種圖像顯示模式:全分辨率——起始距離可選,顯示距離向0~4096點(diǎn)中的任意1024點(diǎn)(如圖2所示);低分辨率——距離向4抽1,,方位向4抽1,,從而在1024×768的顯示器上就能顯示出整體的雷達(dá)圖像(如圖3所示)。
  (5)每行圖像數(shù)據(jù)中都附加了輔助數(shù)據(jù),,它包含了雷達(dá)圖像的信息,,輸出顯示可把其疊加到圖像上。


  過(guò)去在顯示合成孔徑雷達(dá)(SAR)圖像時(shí),,一般采用圖形設(shè)備接口GDI,。利用GDI顯示雷達(dá)滾動(dòng)圖像,優(yōu)點(diǎn)是使用方法簡(jiǎn)單,,只需較少的代碼便能實(shí)現(xiàn),,但Windows的設(shè)備無(wú)關(guān)性原則使得應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序不能直接訪問(wèn)設(shè)備硬件,處理圖像必須通過(guò)GDI,,這樣就大大限制了圖形的顯示速度,,并且在縮放圖像時(shí)還容易引起失真和屏閃現(xiàn)象。
  DirectDraw是DirectX SDK的主要部分之一,。它允許直接對(duì)顯示內(nèi)存操作,,支持硬件位塊傳輸、硬件覆蓋,、表面翻轉(zhuǎn),,并且保持同目前的基于Windows的應(yīng)用程序和驅(qū)動(dòng)程序兼容。作為一種軟件接口,,使用DirectDraw可以很容易地操作顯示內(nèi)存,,充分利用不同類(lèi)型顯示設(shè)備的位塊傳輸和顏色解壓功能,而不必依賴特定的硬件??梢?jiàn),,DirectDraw技術(shù)能更好地支持雷達(dá)圖像的實(shí)時(shí)滾動(dòng)顯示功能。
2 DirectDraw工作原理
2.1 DirectDraw的層次結(jié)構(gòu)

  DirectDraw通過(guò)一個(gè)設(shè)備相關(guān)的抽象層直接訪問(wèn)硬件設(shè)備,。一般地,,DirectDraw通過(guò)硬件抽象層(HAL),提供設(shè)備無(wú)關(guān)操作,。HAL是由設(shè)備生產(chǎn)商提供的特定設(shè)備接口,,DirectDraw直接對(duì)顯示硬件進(jìn)行操作,為應(yīng)用程序顯示圖形提供一組統(tǒng)一的接口和方法,。HAL可以是顯示設(shè)備驅(qū)動(dòng)程序的一部分,,或是獨(dú)立的DLL,通過(guò)驅(qū)動(dòng)程序編寫(xiě)者定義的一個(gè)私有接口與顯示驅(qū)動(dòng)程序進(jìn)行通信,。
  當(dāng)硬件抽象層不支持某種特性時(shí),,DirectDraw會(huì)嘗試進(jìn)行軟件仿真,仿真的功能是由硬件仿真層(HEL)提供的,。同HAL一樣,,應(yīng)用程序也從來(lái)不直接與HEL一起工作,DirectDraw對(duì)硬件的主要特性都提供透明的支持,,不管它是由HAL支持還是由HEL仿真的,。
  從圖4中可以看出,DirectDraw既擁有底層的高性能接口,,具有設(shè)備無(wú)關(guān)的靈活性,,又將圖形功能揉和在Win32程序中,得以充分利用其中存在的硬件加速功能,。應(yīng)用程序通過(guò)API直接訪問(wèn)顯存,,大大提高了顯示速度,進(jìn)而產(chǎn)生快速,、平穩(wěn)的圖形,。


2.2 DirectDraw的工作機(jī)制
  在使用DirectDraw技術(shù)顯示圖像時(shí),一般要?jiǎng)?chuàng)建若干個(gè)圖形數(shù)據(jù)緩沖區(qū)(以下稱為“表面”),并把這些圖形數(shù)據(jù)裝入其中,,再進(jìn)行轉(zhuǎn)換,、拉伸、拷貝等操作,,并且還可以顯示這些緩沖區(qū)中的圖形數(shù)據(jù),。表面可以分為幾類(lèi),這里主要用到主表面和離屏頁(yè)面,。
  主表面是用戶在屏幕上可以看到的,,它是顯示內(nèi)存的一部分。所有DirectDraw程序都有主表面,而且只有一個(gè),,且不能改變它的尺寸,、格式和位置。主表面有一個(gè)很重要的特性——翻頁(yè),。一個(gè)可以翻頁(yè)的主表面實(shí)際上是兩個(gè)表面,,一個(gè)是可見(jiàn)的,即主表面,;一個(gè)是不可見(jiàn)的,,稱為后備緩沖區(qū)。當(dāng)翻頁(yè)后,將原后備緩沖區(qū)頁(yè)中的內(nèi)容拷貝到可見(jiàn)主表面頁(yè),而同時(shí)將原可見(jiàn)主表面頁(yè)的內(nèi)容拷貝到后備緩沖區(qū)頁(yè),。
  顯示器屏幕雖然每秒中刷新很多次,但每次都是一遍一遍地讀取可見(jiàn)主表面中存儲(chǔ)的顯示頁(yè)信息,,而對(duì)后備緩沖區(qū)的改動(dòng)則不會(huì)顯示出來(lái),,也不會(huì)影響到可見(jiàn)主表面的顯示,只有當(dāng)施行翻頁(yè)操作后,,兩頁(yè)的內(nèi)容互換,,在原后備緩沖區(qū)的改動(dòng)才會(huì)顯示在屏幕上,而這個(gè)互相拷貝的時(shí)間比起每次刷新所用的時(shí)間少了幾十萬(wàn)個(gè)數(shù)量級(jí),,人眼是根本察覺(jué)不到的,,所以用這種方法可以獲得不閃爍、平滑,、優(yōu)質(zhì)的動(dòng)畫(huà)效果,。
  還有一種表面叫離屏表面,它是不能直接看到的,。離屏表面作為存儲(chǔ)緩沖區(qū),,有助于表面之間的互相切換,它的大小是可以改變的,。
  本軟件中DirectDraw各個(gè)表面之間的交互如圖5所示,。


3 DirectDraw在雷達(dá)圖像實(shí)時(shí)顯示中的應(yīng)用
3.1 軟件設(shè)計(jì)

  在本軟件中,選用Win32應(yīng)用程序開(kāi)發(fā)環(huán)境來(lái)開(kāi)發(fā)基于DirectDraw的雷達(dá)圖像實(shí)時(shí)顯示程序,。之所以選用Win32而不用MFC,,主要因?yàn)镸FC集成了大量的數(shù)據(jù)和方法,在編制基于圖形顯示和多媒體的應(yīng)用程序時(shí)會(huì)帶來(lái)極大的麻煩,。首先是無(wú)法觸及系統(tǒng)的內(nèi)核,,而且,MFC事先建好的類(lèi)的許多功能對(duì)該程序來(lái)說(shuō)是無(wú)用和低效的,,使用它們只會(huì)給程序帶來(lái)冗余和不便,。
3.1.1 整體設(shè)計(jì)
  為更好地支持實(shí)時(shí)顯示,使圖像保持平滑和連貫,筆者在軟件中引入了多線程技術(shù),。除主線程外,,另創(chuàng)建兩個(gè)線程,一個(gè)用來(lái)從外部設(shè)備中獲得實(shí)時(shí)數(shù)據(jù),,將其放到內(nèi)存中(寫(xiě)線程),;另一個(gè)用來(lái)將內(nèi)存中的數(shù)據(jù)利用DirectDraw技術(shù)進(jìn)行滾動(dòng)顯示(讀線程)。
  具體地,,在內(nèi)存中設(shè)置一個(gè)大小適宜的緩沖區(qū),,當(dāng)有外部數(shù)據(jù)傳來(lái),且緩沖區(qū)不滿時(shí),,寫(xiě)線程接收外部數(shù)據(jù),,依次填充到緩沖區(qū)內(nèi),否則寫(xiě)線程等待,;當(dāng)緩沖區(qū)中有未顯示的數(shù)據(jù)時(shí),,讀線程將其取出送去前端顯示,否則讀線程等待,。為了避免發(fā)生“死鎖”,、“不一致讀”或者“臟數(shù)據(jù)”現(xiàn)象,在讀寫(xiě)線程之間加入同步事件機(jī)制,,通過(guò)事件來(lái)對(duì)二者進(jìn)行協(xié)調(diào),。


  圖6給出了本軟件的主要流程,初始化主窗口后,,首先對(duì)PCI卡進(jìn)行初始配置,,以通過(guò)它來(lái)進(jìn)一步獲得雷達(dá)圖像的實(shí)時(shí)數(shù)據(jù),然后分別創(chuàng)建寫(xiě)線程和讀線程,,來(lái)協(xié)助實(shí)時(shí)數(shù)據(jù)的顯示,;進(jìn)入消息循環(huán)后,根據(jù)從PCI卡處獲得的數(shù)據(jù)消息,,激活讀,、寫(xiě)線程,將實(shí)時(shí)數(shù)據(jù)處理之后通過(guò)DirectDraw滾動(dòng)顯示,,當(dāng)顯示完畢時(shí),,關(guān)閉讀寫(xiě)線程,退出軟件,。
3.1.2 圖像顯示設(shè)計(jì)
  在進(jìn)入消息循環(huán)后,,讀寫(xiě)線程就會(huì)將外部的實(shí)時(shí)圖像數(shù)據(jù)依次送到前端顯示。這里的圖像顯示主要是基于DirectDraw的圖像顯示技術(shù)來(lái)實(shí)現(xiàn)的,。創(chuàng)建一個(gè)主頁(yè)面,、一個(gè)后臺(tái)緩沖頁(yè)面和一個(gè)離屏頁(yè)面,,刷新圖像時(shí),直接訪問(wèn)離屏頁(yè)面, 從外部獲得數(shù)據(jù)賦值給離屏頁(yè)面,;然后從離屏頁(yè)面中復(fù)制1024×768的塊到后臺(tái)緩沖頁(yè)面中,,最后,調(diào)用換頁(yè)函數(shù),,實(shí)現(xiàn)主頁(yè)面和后臺(tái)緩沖頁(yè)面的交換,,即實(shí)現(xiàn)主頁(yè)面的刷新。頁(yè)面刷新的頻率主要靠PCI的實(shí)時(shí)消息來(lái)確定,,在每次消息到來(lái)時(shí),,調(diào)用更新頁(yè)面函數(shù),實(shí)現(xiàn)頁(yè)面的動(dòng)態(tài)刷新,。
  此外,,根據(jù)雷達(dá)圖像的要求,為了使顯示范圍和區(qū)域可以動(dòng)態(tài)改變,,筆者把顯示模式分為全屏顯示和區(qū)域顯示兩種,。全屏顯示模式下,距離向和方位向均4抽1顯示,,整個(gè)雷達(dá)圖像在方位向就可以全部顯示出來(lái),但如果僅僅是4抽1的話,,顯示的圖像一定很不平滑,。所以,在抽點(diǎn)顯示的同時(shí),,對(duì)圖像做平滑處理,,即將選中點(diǎn)的周?chē)?6個(gè)點(diǎn)取平均值作為此點(diǎn)的灰度值。在區(qū)域顯示模式下,,將方位向分成4個(gè)區(qū)域,,每個(gè)區(qū)域大小為1024,顯示時(shí),,只顯示其中一個(gè)區(qū)域,,所以,屏幕上顯示出來(lái)的圖像的分辨率為原始分辨率,。在這種顯示模式下,,雖然圖像的每個(gè)像素點(diǎn)都可以看到,但在各區(qū)域的交界處不能看到其周?chē)袼攸c(diǎn),,不能很好地理解圖像,。所以,在區(qū)域顯示時(shí),,設(shè)計(jì)使其在水平方向能夠小幅度移動(dòng),。具體處理流程如圖7所示,。
  同時(shí)為了使得圖像亮度可以動(dòng)態(tài)改變,選擇16bit數(shù)據(jù)中不同位置的連續(xù)8bit數(shù)據(jù),,并在讀取8bit數(shù)據(jù)時(shí),,做飽和處理,即如果所選擇的8bit數(shù)據(jù)的高位有任意一位為1,,則此8bit數(shù)據(jù)定為255,。
3.2 軟件運(yùn)行的實(shí)際效果
  經(jīng)測(cè)試,此軟件已達(dá)到設(shè)計(jì)要求,,完成所要求的全部功能,,即:
  (1)可以在圖像下方實(shí)時(shí)顯示正在顯示的圖像區(qū)域范圍、亮度信息,、滾動(dòng)速度及圖像的距離向位置等各種參數(shù),;
  (2)具備切換是否顯示幫助菜單,以及是否顯示各種飛行參數(shù)的功能,;
  (3)實(shí)現(xiàn)了圖像滾動(dòng)速度可以調(diào)節(jié)的功能,;
  (4)支持兩種顯示模式,即全屏顯示模式和區(qū)域顯示模式,;
  (5)在區(qū)域顯示時(shí),,可以選擇4個(gè)不同區(qū)域,通過(guò)操作4個(gè)鍵進(jìn)行快速切換,,也可以操作左右方向鍵,,實(shí)現(xiàn)圖像的左右小幅度移動(dòng);
  (6)可以通過(guò)按鍵控制選取不同位置的8bit數(shù)據(jù),,實(shí)現(xiàn)圖像亮度的控制,;
  (7)為了方便使用者更準(zhǔn)確地知道每個(gè)點(diǎn)的具體位置,可以選擇在圖像上打上網(wǎng)格,。


  目前,,基于DirectDraw的雷達(dá)圖像實(shí)時(shí)顯示技術(shù)已應(yīng)用在中科院電子所研發(fā)的機(jī)載SAR實(shí)時(shí)成像處理器項(xiàng)目的實(shí)踐中,現(xiàn)已通過(guò)測(cè)試,,投入實(shí)際運(yùn)行,,性能良好。由于本軟件設(shè)計(jì)中所采用技術(shù)的通用性和靈活性,,使其可應(yīng)用于其它相似的雷達(dá)圖像實(shí)時(shí)顯示系統(tǒng)中,,因此具有廣泛的應(yīng)用前景。
參考文獻(xiàn)
1 武永康.DirectDraw原理與API參考.北京:清華大學(xué)出版社,,2000
2 劉永坦.雷達(dá)成像技術(shù).哈爾濱:哈爾濱工業(yè)大學(xué)出版社,,1999
3 王險(xiǎn)峰, 劉寶宏.Windows環(huán)境下的多線程編程原理與應(yīng)用.北京:清華大學(xué)出版社,2002

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]