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

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

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

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


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


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


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


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

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


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


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

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


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


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

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