基于DirectDraw的雷达显示终端的实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于DirectDraw的雷达显示终端的实现

于川,索继东,孟凡志

大连海事大学信息工程学院(116026)

E-mail:yuwan1123@

摘要:雷达显示终端作为对雷达数据的直观表述,是各种雷达系统中重要组成部分。本文讨论了PPI雷达显示器的长余辉仿真的关键技术后,提出了一种新的基于DirectDraw的设计方法,使雷达显示终端可以实时显示视频数据。方法简单灵活、易于掌握,模块通用性和可扩展性强,可移植性高,为各种其它类型的雷达显示器及杂波现象仿真的研究打下了良好的基础。

关键词:DirectDraw,雷达显示终端,雷达长余辉仿真,光栅扫描显示

1.引言

在各种雷达数据处理系统中,雷达显示终端是雷达与操作员之间直接进行交互操作的界面,是整个系统的最重要组成部分之一。在建立雷达数据处理或虚拟操作系统时,雷达显示器的仿真水平将直接影响到整个系统的效果。随着计算机、图形处理及其网络通信技术的飞速发展,各种雷达的仿真软件脱颖而出,其中传统雷达PPI雷达显示器的计算机仿真,是雷达显示逼真与否的关键技术,其数据显示的实时性又是仿真软件的主要性能指标。

传统的PPI(Plan Position Indicator)雷达靠荧光物质的余辉效应将原始回波信号显示在雷达屏幕上供人们观察。未经处理的信号质量往往很差, 主要靠专业人员的经验来辨认目标及形状。而借助于计算机进行的PPI雷达信号处理、显示、存储及模式识别等,不但可以高分辨率显示原始信号, 还可以对其进行加工处理。最基本的处理如对回波信号的恒虚警处理;对目标的跟踪,以便对于感兴趣的目标进行观察;对图形进行去噪声、锐化等, 以改善图像质量, 利于人工辨别;更高级的处理如用不同的色彩表示目标的敌我性质、目标是否活动,用图示矢量表示活动目标的速度与方向等,对重点目标还可以开窗显示。

画线方法是一种十分简单而且容易实现的长余辉仿真方法,即在屏幕上以画直线的方式画出每一角度的扫描线。当程序运行时,扫描线轨迹不断地在屏幕上转动,该方法不能无缝覆盖整个扇扫区域,产生一个辐射状的固定花纹,难以进行真实的仿真。固定扇扫点方法是在画线方法基础上改进的一种仿真方法,它虽然消除了辐射状花纹,但这种方法也存在一些问题:对于没有回波与有回波信号显示时,由于数据量的增加,造成扫描线的转速不同;数据计算和显示过程所消耗的时间降低了实时性。

在追求实时性能和逼真的显示效果同时,可以将系统内存、显示内存结合起来,利用Windows多线程、DirectDraw的多层显示技术可以实现快速的雷达全屏显示仿真。2.DirectDraw显示雷达终端的机理

DirectDraw是一种Microsoft DirectX API,它可以提供对显示处理、位图数据和非屏幕内存(off-screen memory)控制以及对其它硬件功能的快速访问[1]。

在光栅扫描显示系统中,显示屏上的每一个象素就对应显存中的一个位置。在显示器加

- 1 -

电时,计算机依次扫描显存的内容,转换成亮度信号控制电子束的强弱,按照从左至右,从上到下的次序进行光栅扫描,在屏幕上显示图形。

光栅扫描显示器是以直角坐标系显示数据,而PPI 雷达显示器采用的是极坐标体制,所以为了能仿真PPI 雷达显示器长余辉显示,必须要进行坐标变换。坐标变换的过程可以在DSP 等器件中实现。坐标变换在DSP 中实现的好处是:①充分体现DSP 对实时信号高速处理的能力,②可以减轻PC 机资源开销,以便更好地进行视频显示。

根据DirectDraw 的特性和PPI 显示的特点,通过支持访问屏外显示内存中位图的软硬件资源,利用硬件的位块传输和缓冲区翻转功能,允许直接对显存操作,能满足图像处理和显示的实时性要求。

3.DirectDraw 实现雷达长余辉的方法[4]

利用DirectDraw 中alpha 混合的技术,将屏幕坐标点中的颜色元素随着扫描线的旋转进进行动态的非线性衰减,模拟出PPI 显示器的长余辉现象。

扫描线数据损耗是为了能够模拟电子扫描线的消隐,调整余辉长度。这一过程是长余辉消隐机制的精髓,它是通过直接修改颜色值完成的。直接修改颜色值是DirectDraw 中alpha 混合的一种,alpha 混合公式如下:

/256alpha ×目标颜色值=源色

Alpha 取值范围为0~255

假设扫描线转动的时刻的辉度值为,由于余辉特性是随时间非线性变化的(指数或对数曲线),那么,扫描线转过之后的时刻的辉度值则为:

0t 0a 1t 1a 100011(1a a a a m m

=−×=− (1) 综合(1)式,则扫描线转过之后的任意时刻的辉度值为:

n a 01(1n n a a m =−

(2) 为了避免乘除法,我们可能用移位运算符“<<”来进行,以获得在程序实现时最快的运算,在此,m 可以取2u (u =1,2,3…)便于移位运算,m 的大小决定了余辉的长短。

4.实现PPI 雷达原始视频显示

4.1实时显示数据的获取

用于实时显示的视频数据是PC 主机通过PCI 总线采用DMA 方式直接从DSP 的存储区中获得。数据格式已经协调定义好,同时数据已经在DSP 中得到了处理,取过之后即可用于实时显示。

4.1 DirectDraw 对实时数据的显示

对主页面进行锁定。将使用DirectDraw 中的Lock 函数进行锁定,该函数调用成功后返回的指针将指向主页面的内存区域,便可以操纵该内存区域,进行视频的显示。

- 2 -

由于使用锁定去操控主页面的象素,一旦锁定了表面,需要查看一下DDSURFACEDESC2结构来获取一些表面信息,这里针对课题,只需要它的两个成员。

LONG lPitch: 这个lPitch成员表示每个显示行的字节数,也是就行间距。例如,对于640*480*16模式,每一行有640个象素,每个象素需要两个字节存放颜色信息,所以行间距该为1280。

LPVOID lpSurface:这是指向内存中表面的指针。不管使用何种显示模式,DirectDraw都创建一个线性地址,使你能够操纵表面上的象素。这个lpSurface指针是很容易理解的,而行间距是一个需要记住的重要值,因为必须使用它去计算象素互偏移量。

当对表面锁定后,用公式来定位要绘制象素的具体位置——y*nPitch + x。nPitch表示行间距,被y乘后就得到了正确的行数,再加上x,就得到了正确的位置。这时就可以把从DSP中取得的经坐标变换后的数据对应到表面的正确位置。

当对锁定的表面操作完成后,你需要释放这个锁定表面。这个函数IDirectDrawSurface7::Unlock()的原形为:

HRESULT Unlock(LPRECT lpRect);

参数同传递给Lock()函数的要保持一致。

上述操作过程由于是对内存的操作,所以速度是十分快的,可以保证实时性的要求。

5.结论

本文在基于DirectX中的DirectDraw实现了雷达长余辉仿真的显示终端,较好地解决了雷达显示器仿真中,难以达到实时性的要求,余辉现象难以模拟的问题。利用C++面向对象的特性和DirectX进行编程,方法简单灵活,易于掌握,并且模块具有较高的可移植性,为以后进一步开展其它类型的雷达显示器及杂波现象仿真的研究,打下了良好的基础。

参考文献

[1] [美]Peter J.Kovach,Direct3D技术内幕,北京:清华大学出版社,2001

[2] 王坤,李永宁. 基于C++的雷达显示终端设计及实现. 四川大学学报(自然科学版),2004,

41(6):1175-1179

[3] 王立振,刘润华. 基于Visual C++和OpenGL的雷达显示系统实现. 空军雷达学院学报,2003,17(4):

10-12

[4] 刘翠海,温东. 光栅扫描显示器上实现PPI雷达长余辉仿真. 计算机仿真,2002,19(2):25-27

[5] Ding Pengfei, Tang Chenghu, Wang Desheng, Wang Huaili. A novel all-purpose programmable radar system.

IEEE 2001, 604-608

[6] [美]David J. Kruglinski,Inside Visual C++,4th Edition. 北京:清华大学出版社,1999

- 3 -

相关文档
最新文档