三维实时显示

2024-06-19

三维实时显示(精选九篇)

三维实时显示 篇1

三维虚拟环境是利用虚拟现实技术构建的某一区域真实而全面的可视化描述,集成了地形、地貌、河流、海洋、气象等自然环境的虚拟展现,并提供了相关态势的准确表现,是军事、公共安全、市政等各种应用的重要辅助平台。

在复杂的虚拟三维环境中,因为目标繁多,无法对重复的目标建立特有的三维模型[1],所以同一类的虚拟场景的目标使用相同的模型,导致了同一类目标无法具体区分,容易造成混淆,如一个飞行编队中的战机无法从模型上区分,而实际中的各种模型在表面都有明确的不同编号及辅助信息。针对这类问题,一般的解决思路有[2,3,4]:

(1)在使用3DMax等建模软件建模时,直接把编号信息建在模型上,固定在一个确定的位置上。其缺点是用户应用中无法改变编号信息的位置和信息内容,可用性差。

(2)在三维建模时,需要预留位置标志,用户在应用中修改模型的相关信息。其缺点是用户要对三维模型的内部结构预知,灵活性不足。

(3)在模型上方加一个独立的标签用来显示编号信息,从视觉来看是两部分,真实感有一定的缺失。

本文通过RTT技术实现了标签在三维模型上的实时显示,在视觉上标签与三维模型融为一体,与现实世界真实情况相一致,真实感较强。增强了三维模型的信息承载能力。

1 OSG 及 RTT

OSG是一个开源的场景图形管理开发库,主要为图形图像应用程序的开发提供场景管理和图形的渲染优化功能[5]。使用已经成为工业标准的Open GL底层渲染API。因此OSG具备跨平台性,可以在Windows,MAC OS和大多数类型的Unix和Linux操作系统上运行。在OSG中大部分的操作可以独立于本地的GUI。与工业标准和其他图形库相比,OSG的优点显而易见,它的封装并提供了数量众多的提升程序运行时性能的算法,针对包括分页数据库在内的几乎所有的主流数据格式之间的数据接口。

OSG纹理映射技术是把纹理图像映射到物体表面,即在一个平面区域(纹理空间)上预先定义出纹理图案,然后建立物体表面空间和纹理图案坐标之间的映射关系,当物体表面的点确定后,就可以根据纹理空间对应点的值将纹理图案附到物体的表面上,纹理映射的一般步骤如图1所示。

OSG中主要有以下几种图形渲染时用到的缓存:Frame Buffer,Frame Buffer object,Pixel Buffer Object,Vertex Buffer object。其中Frame Buffer相当于一个本地的缓存集合,包括颜色缓存、深度缓存、模板缓存、累计缓存,用于存放每帧的渲染数据。Frame Buffer object是Open GL的一个高级扩展,提供一种渲染到目标的新机制,提供了与Frame Buffer同类型的离屏渲染操作对象,可直接控制管线最终渲染数据的去向,分配的空间在显存中 ,用Frame Buffer object来对显存 进行实际GPU运算的交互操作效率较高,主要用于显存内部数据的转换、交互、操作的场合。基于OSG的RTT(Render To Texture)[6,7,8,9,10]技术就是通过预渲染一个子场景。RTT相机用于预渲染子场景,将子场景渲染结果(存储在Frame Buffer中)通过纹理的方式直接读取,然后可以作为纹理贴图贴在主场景中的目标位置,这样可以在很大程度上提高渲染的性能,避免从Frame Buffer中拷贝纹理对象。基于OSG的RTT一般步骤如图2所示。

2 三维模型标签处理流程

三维模型标签的处理流程设计如图3所示。

从三维模型数据库中读出三维模型,可以进行鼠标交互生成标签或者读取Json文件生成。

实现三维模型标签实时显示的步骤如下:

第1步:加载三维模型,如果通过Json文件加载标签执行步骤第7步,否则执行第2步。

第2步:在三维模型中通过鼠标交互选择标签的目标区域;虚拟了RTT相机,投影到三维模型,方便用户选择标签位置。

第3步:输入标签的信息内容,根据标签内容(即:虚拟三维场景中的目标编号信息及其他辅助信息)生成二维文字。

第4步:二维文字添加到子场景,使用RTT相机预渲染子场景生成二维纹理。

第5步:设置纹理映射。

第6步:显示三维模型及标签,执行第8步。

第7步:读取Json文件生成。如果不是第一次加载这个模型,那么可以选择该模型对应的Json文件,可对Json文件中的标签内容进行更改然后直接进行绘制和显示,避免了对于模型目标区域的重复操作。如果要修改标签的位置则转到第2步。

第8步:保存和标签有关的数据(如:虚拟投影摄像机的位置)到Json文件,方便下次调用时进行直接绘制或输出到其他三维显示系统中。

3 基于RTT的三维模型标签实时显示相关实现

这里重点介绍基于RTT的三维模型标签实时显示的相关实现。

3.1标签目标区域

标签目标区域用于显示三维模型的编号信息。目标区域的选择:主要为用户提供目标模型的选择,这里提供了虚拟的RTT相机投影,方便用户对模型区域的选择。用户可以通过鼠标交互调整虚拟RTT相机的位置选择用于显示三维模型编号信息的区域。如图4所示。

目标区域的生成:在用户选择好了目标区域后(即虚拟RTT相机所对应的模型位置),需要生成一个与虚拟RTT相机投影区域大小相同的透明四边形面片用来标明模型的编号信息,并且可以设置面片的细分度;在凹凸不平的模型表面,生成细粒度的四边形面片;在较为平滑的曲面生成粗粒度的面片以减少运算量。生成方法:通过虚拟RTT相机的视点坐标向模型发射线求交,返回交点作为构建四边形面片的点。

3.2标签文字

在OSG中,OSGText提供了向场景中添加矢量文字的强大渲染功能,由于第三方插件Free Type的支持,它完全支持Ture Type字体,实现了文字的无极缩放,良好的抗锯齿能力等。OSG专门定义了一个命名空间来管理文字的渲染,控制文字各种渲染属性的设置。

在OSG中文字显示的机制:创建一个Font对象读取字体文件,把Font与对应的文字相关联,创建绘制字符串图形的纹理贴图。

在文字渲染时,文字会根据字符的形状生成纹理坐标,并为每个字符绘制一个已添加纹理的四边形。本文的文字添加步骤如下:

(1)创建一个Font对象并读取字体文件。

(2)创建一个osg Text::Text对象,设置文字的属性,同时关联字体,程序为用户提供了字体的选择。如果在场景中显示中文,需要将中文转换为宽字符。

(3) 调用add Drawable()方法将步 骤(2)的osg-Text::Text实例对象添加到一个Geode实例,然后添加到场景进行渲染。

3.3RTT 相机的 OSG 节点组成及设置

本文通过RTT技术实现将子场景中的二维文字实时渲染到主场景的二维平面的功能,实现方式是在一个场景上创建一个覆盖图,这张覆盖图的生成是通过预渲染一个子场景(已生成的二维文字)到这张贴图上,最终将纹理贴图贴到主场景上,而投影的位置是通过三维模型标签的目标区域预先确定的。

渲染场景树的节点组成如图5所示。

在场景的根节点下有两个子节点:一个是osg::Camera对象用于RTT相机,在RTT Camera节点下添加已经生成的二维文字作为子场景,然后定义一个二维纹理对象osg::Texture2D用来从子场景中提取二维纹理,最后定义一张二维纹理贴图osg::Image,作为覆盖图用于存储二维纹理;另一个是场景组节点,添加了三维模型和承载三维模型标签信息的四边形面片。

RTT相机设置如下:

4 实验结果

实验模型一使用武装直升机模型,根据真实的装备编号信息生成二维文字,然后映射到直9武装直升机模型上(图6(a)部分来源于互联网)。效果如图6所示。

实验模型二使用波音737模型,根据飞机的飞行速度实时在机身上显示时速。效果如图7所示。

5 结语

本文采用RTT技术,实现了三维虚拟场景中三维模型的具体编号及相关数据的实时显示,效果较好。需要进一步完善:多个标签(飞机的双侧)、图标与文字的组合显示(民航客机)、字的轮廓显示样式等问题。

摘要:针对三维模型标签的显示,分析已有处理的不足,提出一种基于RTT(Render To Texture)的三维模型标签实时显示的解决思路:在三维模型上确定显示标签的目标区域,用RTT相机对标签预渲染到帧缓存中,从帧缓存中提取出二维纹理映射到三维模型上的目标区域,采用OSG(Open Scene Graph)实现对三维模型标签的实时显示,具有良好的真实感。

三维实时显示 篇2

在使用金山毒霸2007时,开机后显示“文件实时防毒”未加载!金山毒霸系统状态显示“文件实时防毒”不可用

解决方案

该现象一般因为相关服务没有成功加载的原因;

建议在“我的电脑”右键-->管理中选择“服务和应用程序”中的服务查看kingsoftantivirusservices状态是否为自动及已启动,如果状态是未启动调整为启动即可,若仍无法解决或无此服务,建议重新安装毒霸以修复该服务;同时该情况也有可能与某些特殊的病毒有关,如果以上操作不能解决问题,建议使用可疑文件扫描工具将可疑文件发送给金山毒霸核实,

金山毒霸2007显示“文件实时防毒”的解决

三维实时显示 篇3

传统二维图像技术因某些三维暗示(3D cue)缺失而无法准确表达各个物体之间的三维空间关系,难以让观察者体验真实的三维深度信息和完整的表面特性;而真三维技术通过赋予被采集场景中每个三维像点真实的表面特性,在三维空间中进行模型渲染和显示,使人们通过双目视差、移动视差等三维暗示对正在观察实际对象产生三维感知[1,2,3,4,5,6,7,8,9],因而一整套从采集(输入)端到显示(输出)端的真三维显示系统能够给观察者提供完备的心理和生理三维感知信息。其中采集方式主要分为主动和被动式采集[6]:主动式采集一般引入主动光投影增强被测表面上的特征[6];而被动式采集往往针对被采集物体的光场信息,以相机阵列等形式获取对象多视角图像[6];显示的方式主要分为体显示、多视显示:体显示在三维立体介质空间上点亮物体三维模型对应的点,使多个观察者能同时观察到实际的被渲染物体[1,2];多视显示一般基于特殊构造的面显示屏幕,将不同视点的图像沿着各自视点应被观察到的方向重叠投影至同一屏幕,屏幕将其分解重组后形成真实场景中物体被光照射后的散射光场[3,4,5]。

1系统结构设计实现

1.1系统原理

本文提出的真三维端到端系统在输出端为观察者提供渲染自真实物体的裸眼真三维图像,主要利用了纵向散射介质(Vertical Diffusion Only Medium,VDOM)各项异性散射的性质,输出端投影阵列中多个投影单元将被渲染对象在不同角度采集到的多幅图像重映射后叠加投影到同一个VDOM屏幕上,利用屏幕的特性形成真实场景中物体被光照射后的散射光场,使观察者通过双目视差和移动视差产生对被渲染图像的三维感知。对于VDOM,光线经过其在水平方向仅有很小方向(1°左右)的散射,而在垂直方向有60°∼90° 左右的散射,以此可以建立VDOM的投影光线散射模型[6,10]:

依据式(1),通过合理安排投影阵列中投影单元位置可使观察者在不同地方观察到不同的图像[11,12],从而产生水平移动视差和双目视差。

1.2系统硬件模块设计实现

1.2.1采集阵列硬件模块

采集阵列采用基于相机阵列的被动式三维采集方式对物体或场景进行多角度采集,每个采集单元由包含CCD相机的树莓派(Raspberry Pi,Ras Pi)嵌入式处理单板构成。单个Ras Pi可支持最高30 f/s,720 p分辨率的图像采集[13]。各个模块之间和PC通过千兆交换机以TCP/IP或UDP协议进行数据互联,将采集到的三维数据传输到主机进行预处理等,采集端部分硬件如图1(a)所示。

1.2.2显示阵列硬件模块

显示阵列采用基于投影阵列的多视真三维显示技术进行三维图像渲染,整个采集阵列如图1(b)所示。 为了使系统更加紧凑,我们采用广角镜头(Wide Angle Lens, WAL)对单个投影单元的光路进行了扩展。如图1(c)所示,在投影光程不变的情况下增加了投影面积;同时采用反射光路的方法使投影仪在VDOM下方有限空间内背向投影到VDOM上。

1.3软件模块设计实现

1.3.1图像重映射模块

依据前述VDOM的工作原理,叠加图像经过VDOM的调制,以图像纵列为单位进行重组。而图像重映射模块即通过建立被渲染对象和观察者所在空间的联系,建立投影图像的重映射关系,对采集到的图像序列进行正确的多视真三维渲染[6,10]。图2建立了渲染对象和观察者所在空间的位置关系,人眼中心Oc和投影镜头中心Op分别位于VDOM平面两侧。由图2(a)的侧视图中可知真实物体两个上端点P1、P4应该被渲染于屏幕的P2、P3处。此时对于观察者和投影单元,被渲染物体(以P1、P4两点为例)的比例分别通过角度以式(2)表达:

此时两者之间的尺度存在一定的差异,如果直接渲染将会造成y方向归一化坐标的失真[6,10]。本系统将投影中心的高度设置在和观察者眼睛高度相同的位置,即令,从而得到两者在y方向上高度的差异补偿系数κy;对图2(b)x方向情况可进行类似的分析:

实际渲染物体时,遍历所有的观察点(xi,Oc,yi,Oc,zi ,Oc),根据式(3)求出对应投影仪应投影的被渲染图像位置[6,10]。

1.3.2校正模块

在不考虑镜头本身成像质量的情况下[14],采集阵列中每个采集单元对同一场景进行采集或者投影时, 因为所处位置不同,采集或投影的图像会在公共面上产生失真。以显示端投影失真为例,图3中(a)1,2, 3,4四个四边形分别为不同位置投影仪朝同一区域投影的成像区域,校正后使其互相重合且都与矩形屏幕重合[15,16]。在采集端的校正中,所有采集单元采集到的全分辨率图像被映射到含有被拍摄物体的公共重合区域上;而在显示端的校正中,所有投影单元将全分辨率图像映射到含有显示屏幕的公共重合区域上,此时待处理的图像分辨率相对原始采集图像有所降低,这样在采集端和显示端可以只传输和处理最终会被投影到屏幕上的有效数据,而边缘无效数据直接置零,减少了数据的处理量。

使用计算机视觉库Open CV中的相关函数[17],投影棋盘格校正图像于屏幕上。使用摄像头获取发生投影失真的棋盘格图像的角点位置,通过与原始棋盘格角点位置以及计算出的棋盘格在不失真情况下应该被投影到屏幕上的位置逐一对比,求出造成投影失真的投影畸变参数矩阵Mprj,再对投影图像施以反投影畸变参数矩阵M-1prj即可抵消投影失真带来的影响。整个校正过程如图3(b)所示(只以四个投影单元的校正情况为例)[10],校正时采用专门的均匀散射屏幕替代VDOM显示棋盘格图像,以便使所有投影单元投出的图都被固定在同一位置的摄像头捕获,该过程同样适用于采集端的校正。若(Xj,Yj)和(Uj,Vj)分别为校正前后图像上第j个像素的坐标,整个校正过程相当于重新调整图像中每个像素的位置[15,16]:

其中cij为畸变参数矩阵中各个元素的值。式(4)中的算法在计算校正过程时共需要使用八次加法,两次次乘法(乘以被除数的倒数)运算。除了采用在C++程序中混合汇编的方法提高程序运行速度外,我们使用查表法仅在每个投影单元第一帧按照式(4)进行校正计算,并将每个像素在式(4)中计算的结果保存在内存中,对于后面每帧图像通过索引赋值代替乘加运算[15]。基于此分别使用C++和汇编实现的查表法相比于式(4)的原始方法,时间消耗对比如表1所示。由于算法耗时和待处理图片分辨率和硬件配置有关,为便于比较以节约时间的百分比进行对比。

1.3.3图像采集模块

图像采集模块主要负责控制采集阵列中所有采集单元同步采集物体或场景多角度数据,转换格式后通过TCP/IP或UDP协议传输到主机上进行处理。采集单元之间的角间隔度数和采集单元数目与显示端投影阵列中的投影单元对应。其中Ras PI单元配置百兆网卡,PC端配置千兆网卡,所有Ras PI和PC通过千兆交换机以千兆传输的标准进行物理互联。Ras PI提供API将摄像头采集的图像以YUV420格式送入板上内存中。程序中接收线程获取摄像头采集到的图像,并对数据进行封装、分包、压缩,确保整个传输过程的稳定。目前显示端显示速度经过校正等处理后无法跟上采集端的全速采集速度,故还增加了主动掉帧处理防止整个程序由于瓶颈处的数据堆积造成的卡死现象。

2实验结果

图4为该系统实时采集到的图像序列和显示的三维场景在不同视点观察到的图像(平台测试包括30个视点,限于篇幅,仅给出其中10个视点的测试结果):其中系统采集端和显示端视点数目共30个,间隔1.5°,观察距离在1.5∼1.2 m。系统采集端Ras PI单元最高采集速度30 f/s,采集端图片最高分辨力720 p, 校正后图像更新速度5∼10 f/s左右,只取校正后采集图像中有效场景区域数据进行传输,分辨力在500×500左右,故单幅YUV420格式彩色图像大小为0.36 MB(500×500×3/(2×1 024×1 024)MB);所有视点每秒传输到PC端的数据不高于110 MB(0.36 MB ×30×10);显示端将数据校正后图像更新速度2∼5 f/s左右。

忽略屏幕亮度对图片拍摄的影响,本系统很好的将采集端的图片序列经过重映射后以多视真三维显示的方式渲染出来,且可使人眼左右看到相邻的两个视点的图像,保证了双目视差的三维感知效果;人眼水平移动时也可以像观察实际物体那样观察到屏幕上被渲染物体视角的水平变化。我们分别选取了1.0°,1.5° 的角间隔作为对比,如图4(b)所示。

从被采集模型的细节可以看出,当角度间隔变小时,图像细节会因为视点间更加平滑的过度变得清楚, 但整个图像的变化范围会变小。因此具体角度间隔的选取根据实际显示时的侧重进行选择。

3结论

本文建立了一种端到端的真三维系统平台,在输入(采集)端采用基于相机阵列的被动式采集方式对物体或场景进行采集;在显示端采用多视真三维显示的方式对采集的图像进行保留纹理、色彩的渲染。整个系统将三维采集技术和真三维显示技术结合起来,通过软、硬件模块的设计,实现了这种真三维端到端系统的硬件平台,验证了建立三维数据从采集到显示这条重要数据链的可行性和有效性。

三维实时显示 篇4

张家口于2005年建立首批60套雨量、温度两要素加密自动气象站,并于汛期投入应用.为有效利用加密 自动气象站资料,充分发挥加密自动气象站资料高时空分辨率的特点,结合日常业务运行流程和公众服务的需求, 研制了“加密自动气象站实时监控与查询显示系统”.该系统集数据查询、统计计算、自动绘制雨量等值线图、文件 输出、报警监控等于一体,具有界面美观、易于操作、自动化程度高等特点.业务运行表明该系统功能实用、运行稳 定、查询速度快、输出图表清晰美观,适合在基层业务部门推广应用.

作 者:杨晓武 黄兴友 徐平Yang Xiaowu Huang Xingyou Xu Ping 作者单位:杨晓武,黄兴友,Yang Xiaowu,Huang Xingyou(南京信息工程大学遥感学院,南京,210044)

徐平,Xu Ping(河北省张家口市气象局,张家口,075000)

三维实时显示 篇5

关键词:VGA标准,VBE标准,动态图像实时显示

0 引言

PC机的开放体系结构使得有更多的厂商能够参与计算机部件的生产,参加标准的制定。在PC机图形显示领域的早期,IBM推出的VGA标准成为默认的行业标准,但随后一段时期,其他厂商生产的VGA显示卡虽兼容了IBM VGA的BIOS和寄存器,却加入了扩展功能,当时,出现了众多具有更高分辨率、更多色彩甚至附加图形处理功能的显示卡--Super VGA显示卡。

当时,对于Super VGA显示卡的软件开发者而言,他们却要面对非常严重的问题:由于没有硬件设计标准,软件开发者面对着各种完全不同的Super VGA硬件结构,而且,由于没有统一的软件开发界面,在程序开发中必须解决软件兼容不同显示卡的问题,随之而来的是,对于某一具体的Super VGA显示卡,除了一些特定的软件可以得到制造厂家提供的显示驱动程序支持,几乎再没有什么软件包可以利用Super VGA带来的能力和优点。

VBE标准的制定就是要改变这种困境,作为各种Super VGA显示卡的统一软件接口,它可以使应用软件和系统软件在较大的范围内利用扩展VGA可用的优势。

本文先简单介绍VBE标准,然后结合一个具体设计,给出如何利用VBE标准实现遥感图像实时滚动显示。

1 VBE标准

VBE1.0提供了基本信息查询、显示方式信息查询、设置显示方式、返回当前显示方式、保存/恢复视频状态等几项基本功能,定义了有限的几种扩展显示模式。

VBE1.1增加了设置/获取逻辑扫描线长度等功能,并增加5种显示模式和新的显示方式参数。

VBE1.2增加了对调色板设置的接口及更多的显示模式和显示方式参数。

VBE2.0增加了对线性帧缓存和保护模式的支持等。

VBE3.0扩充了过去版本中的许多功能,实现了刷新率、点时钟、硬件帧切换等。由于篇幅所限,这里只对被硬件厂商广泛支持的VBE2.0标准定义的软件接口做简单介绍。

标准VGA的BIOS是通过中断10来调用的,而VBE是通过中断4F,通过设置不同的功能号调用该标准的不同功能:

(1)功能调用00H--基本信息查询

可返回VBE版本号、OEM名字,显示视频环境能力、支持的显示方式、显示存储器数目等信息。

(2)功能调用01H--显示方式信息查询

可返回特定显示方式的具体信息,包括显示方式属性、主机视频窗口属性、功能调用入口地址、分辨率、像素位数、显示存储器分块数、分块长度等。

(3)功能调用02H--设置显示方式设置显示方式。

(4)功能调用03H--返回显示方式返回当前显示方式。

(5)功能调用04H--保存/恢复视频状态保存/恢复视频状态。

(6)功能调用05H--主机视频窗口控制

设置主机视频窗口在显示存储器中的位置。

(7)功能调用06H--设置/获取逻辑扫描线长度

通过对子功能的控制实现设置或获取逻辑扫描线长度。

(8)功能调用07H--设置/获取显示起始地址

通过对子功能的控制实现设置或获取显示的起始地址。

(9)功能调用08H--设置/获取调色板格式

通过对子功能的控制实现设置或获取调色板格式。

(10)功能调用09H--设置/获取调色板数据

通过对子功能的控制实现设置或获取调色板数据。

(11)功能调用0AH--返回保护模式接口

返回保护模式程序接口。

2 遥感图像实时滚动显示系统的设计要求

遥感图像实时滚动显示系统具有以下特点:

(1)图像尺寸大,行像素点数多;

(2)图像滚动显示,速度快,每秒刷新行数较多;

(3)显示信息丰富,除显示动态图像外,还要能够在图像上叠加显示文字信息和网格信息;

(4)有良好的视觉效果,图像滚动显示不能有跳跃的感觉;

(5)基于可满足特殊环境要求的嵌入式平台运行。

基于上述设计限制,对动态图像实时显示系统显示速度的要求是比较高的。具体的技术指标如下:

输入数据率:≤2.5Mb/s

输入每行像素数:8192点/线

输入数据格式:遥感图像+辅助数据

显示字长:8bit

显示图像灰度级:256

屏幕显示方式:滚动显示

网状标尺叠加显示:热键选择

辅助信息字符显示:热键选择

图像显示模式:A.高分辨率局部显示,行显示起始可选

B.抽样全局显示,行向8抽

1,列向8抽1

要求实时显示系统在1024×768的显示模式下滚动显示图像的同时,在固定位置叠加显示的辅助数据字符和网格标尺。由于需要在全屏范围内叠加滚动的和静止的两种图像,在嵌入式平台的实现难度较大。

3 几种软件实现方案的对比

根据嵌入式计算机的显示卡性能和可利用的编程软件库,可以采用以下3种方式实现实时图像显示软件:

(1)基于帧切换

基于帧切换的滚动图像与静止图像叠加显示是通过类似电影放映的方式实现的,即由全屏图像构成一帧,许多这样的帧一起构成帧序列,通过在屏幕上顺序显示这些帧序列,就形成在图像滚动显示的同时叠加静止网格和文字。

按照实时显示的要求,基于帧切换的方法构成一帧时,首先要在后台显存中重建整个一帧的图像数据,然后将网格和文字写到显存的相应地址。这种方法的数据搬移量非常大,所需的显示内存容量很大,对显存的存取速度要求高。

(2)基于帧切换,并利用硬件二维加速功能

利用硬件二维加速功能实现帧切换,这种方法与上述方法类似,不同的是它利用了硬件的优势,即滚动显示的图像与静止的网格和文字分别存储于显示存储器的不同区域,在显示时由显示卡的硬件进行叠加,这样,对每帧图像的操作基本只集中在图像数据的存储区内。

此时,构成一帧的主要工作是重建整个一帧的图像数据,由于网格和文字存储于显存中的另一地址空间,一般情况下,仅需对个别文字进行操作。然而,这种方法的数据搬移量还是非常大,对系统内存寻址能力要求高,所需的显示内存容量更大。

(3)基于更改显示窗口在显存中的起始地址

在显示存储器中,屏幕上显示的仅是显存的一小部分。当设定显示模式后,可以把整个显示存储器看作是一幅纵向很长的画面,显示器作为一个窗口只显示了其中的一部分。我们可以通过更改显示窗口在内存中的起始地址的方法来改变屏幕上的内容,如果这种改变是顺序、连续的,在屏幕上就会形成滚动的图像。

每次输入的图像数据依次存储于显存中,再进行所需的处理(如添加纵向的网格线),当需要屏幕滚动时,首先更改显示窗口在内存中的起始地址,然后处理横向的网格线和文字,使它们在屏幕上处于正确的位置。这种方法的数据搬移量比较小,所需的系统内存和显示内存容量也很小,但这种方法的数据处理较复杂,在编程过程中需要考虑多种边界的影响。同时,当用户不需要显示网格线和文字时,恢复已被显示网格线和文字破坏的原图像数据的处理量是非常大的,是否能够实现取决于目标系统的系统内存和显示内存的存取速度以及编程语言的效率。

结合图像实时显示分机的技术指标,可以通过表1具体说明上述三种方法各自的优势及问题:

对于普通的计算机平台而言,三种实现方法对系统的要求都是可以满足的,但在实际的工程实施中,则要考虑环境因素对目标系统在结构、温度、湿度等方面的限制,这时,加以限制的目标系统是否能满足要求,成为制约图像显示方案的关键因素。

考虑特殊的环境适应性要求,动态图像实时显示系统的嵌入式计算机必须具有插针式的机械结构,同时还要具有很小的体积,并具备PCI接口。因此,考虑成本和体积限制,选择PC104plus结构的嵌入式计算机。这种结构的计算机的显示内存很少配置在2M以上,因此,利用硬件二维加速功能实现帧切换方法暂时不能应用。尽管可以得到2M显存的PC104plus计算机,但由于系统主频低,系统内存和显示内存速度慢,经过测试,基于帧切换方法只能达到25frame/s的显示速度,考虑图像数据输入所占用的时间,最多也只能保证15frame/s,这样的更新速度会造成图像闪烁,是不能接受的。

4 基于VBE的图像实时显示软件解决方案

基于更改显示窗口在内存中的起始地址的方法可以通过VBE编程接口实现,具体如下:

4.1 目标系统

在目标系统中,与图像显示输出相关的部分是嵌入式计算机和集成在其上的显示卡,嵌入式计算机为PC104plus结构,具有PCI和ISA两种总线接口,其CPU为Pentium MMX166,系统内存32M,显示控制芯片为M69000,显示内存2M。

4.2 图像实时显示软件

图像实时显示软件由数据读入、显示输出和显示控制三个模块构成,下面只对本文相关的显示输出模块进行介绍。

显示输出模块要实现在1024×768的高分辨率显示模式下滚动显示图像数据,同时叠加显示固定的辅助数据字符和网格,并可由操作员通过显示控制模块控制是否显示辅助数据字符和网格。在每次图像滚动时,显示输出模块需要完成以下操作:

(1)更改当前读写窗口;

(2)将读入数据写入显存的相应地址;

(3)写入纵向网格线;

(4)恢复原横向网格线上的图像数据(此期间需更改当前读写窗口);

(5)写入新的横向网格线;

(6)恢复原辅助数据字符上的图像数据;

(7)写入新的辅助数据字符;

(8)更改显示窗口在显存中的起始地址使屏幕滚动;

(9)重复(1)

4.3 性能

通过测试表明,每次滚动2条线,每秒可滚动120线,若每次滚动4条线,可以达到240线每秒,在这两种情况下,图像滚动时无明显跳动感。

5 小结

随着计算机技术的发展,VBE标准不断升级,最高版本是3.0版。同时,也派生出一些子标准,如VBE/AF、VBE/AI、VBE/PM等。然而,计算机显示系统的发展主流是向三维加速、立体显示等方向发展,这些主流发展方向的功能很多都得不到VBE的支持。但在一些特殊应用领域,VBE标准仍不失为一种适应高环境要求的动态图像实时显示系统的较好解决方案。

参考文献

[1]Video Electronics Standards Association.VESA BIOS EXTENSION Core Function Standard Version:2.0[S].1994.

[2]Video Electronics Standards Association.VESA BIOS EXTENSION Core Function Standard Version:3.0[S].1998.

实时图像显示系统电路设计 篇6

1 SAA7111的振荡电路的设计

根据SAA7111数据手册应用电路, 24.576MHz晶振两侧电容, 其电容数值为10pF, 但通过实验发现, 在此后的实时显示系统显示的图像中, 彩色图像无法正常显示, 色差严重。通过更改电容, 把10pF改为20pF后, 图像画面色彩清晰, 效果良好。而且, 实验证明, 10μH的电感的有无对系统影响不大, 也可以去除。如图2所示。

2 AL250模式选择电路设计

AL250的8, 9, 11, 12, 13五脚, 为视频输入模式选择引脚。对它们高位或低位的选择, 可关系到系统初始化, 影响输出视频信号格式。运用拨码开关, 可以方便进行由拨码开关来选择图像格式。但在系统中, 由于AL250的初始化是以软件为主, 故在原理图上未用这种连接方法, 此接法仅供参考, 如图3所示。

3 AL250复位电路

AL250为低电平复位, 当系统上电, 电容相当于短路, AL250立即复位。随后, 电容充电, 当充电结束, 复位也完成。电路如图4所示。

4 SAA7111与AL250的接口设计

SAA7111与AL250的接口电路上, 主要有数字视频信号和、同步信号和时钟信号线。其中, VPO0~7为色度信号, VPO8~15亮度信号, HS和VS分别为行同步和场同步信号, VREF为场参考电压, LLC和LLC2为时钟信号线, 同步问题至关重要, 对同步信号线的分析也需仔细。在系统中, LLC为27MHz, LLC2为13.5MHz, VS信号为标准50Hz, HREF为15.6kHz。接线设计如图5所示。

5 AL250与CRT的接口设计

由AL250至CRT显示器的信号, 相当于进行图像格式的转换, 将YUV422信号转换成VGA信号, 从而在显示器上实时显示出CCD所采集的图像信息。接口设计如图6所示。

CRT显示器的接口电路上AR, AG, AB红绿蓝三线在接地时需分别接一个磁珠和一个75Ω电阻, 磁珠两侧用10pF电容接地;AL250的GHS和GVS线和对应显示器的行场同步信号线连接。

6 电源设计

本系统为多器件数模混和的系统, 在设计电源系统的设计时应考虑到不同器件的需求。其中, SAA7111和AL250两个器件都涉及到了对模拟信号和数字信号的处理, 加之系统中有模拟电路和数字电路, 为避免两种信号间的干扰, 设计模拟电源和数字电源。系统中, 8051F015为5V供电, 其他器件为3.3V模拟和数字供电。设计如图7所示。

在设计时, 需用电感或磁珠来隔离模拟电源和数字电源。电感或磁珠相当于一个低通滤波器, 直流可以通过, 而高频信号将被滤去。

7 系统中其它相关引脚设计

在SAA7111中, /FEI为快速输入信号允许, 低电平有效。用于控制数字YUV总线的高速切换。当它为高时, 通过I2C强制Y和UV信号输出的全部为高阻态。在系统中, 我们要求图像实时显示, 所以通过一个1K的电阻直接接地。AL250中, 31脚COMP为比较输出端, 接0.1μF电容上拉到电源, 30脚RSET为输入限流调节, 通过100欧姆电阻拉到地。如图8所示。

三维实时显示 篇7

红外热成像技术在军事领域和民用工程中都得到了越来越广泛的应用。红外系统一般由3个部分构成:光学系统以及红外探测器、图像高速采集系统、图像处理系统。随着半导体制造工艺的不断进步,红外探测器性能得到迅猛发展,国外已推出了多种超大阵列红外探测器[1]。正因如此,如何保证数据高速稳定的采集以及进行实时处理成为了当前的研究热点。

此外,在诸多实际工程应用中,为方便调试、操作以及监控,实时显示红外图象显得尤为重要,目前常见的应用是采用基于PCI或USB的采集卡,再经由PC机实现红外图像的动态显示[2]。这样的缺点是当数据量很大时,图像的显示将占用PC机的过多资源且实时性受到PC机处理能力的限制。

本文设计的系统采用基于光纤接口的高速数据采集模块,并且使用FPGA编程实现接收模块的控制且直接生成DVI格式的全景视频输出到显示器显示。

1系统总体架构

红外图像高速采集及实时显示系统的总体结构如图1所示。红外探测器头部将采样所得红外图像数据转换为光信号,再经由光纤通道往下传送到接收终端。光纤接收模块将接收到的光信号解码恢复成电信号,传送给FPGA。使用光纤传输图像数据,一方面其带宽大,具备极高的数据传输率;另一方面其抗电磁干扰性强,有利于实现数据稳定准确的传输。FPGA通过CPCI接口与PC机相连,以实现与PC机间必要的通信以及人机互动功能。此外FPGA外接两块DDR存储器,以乒乓模式控制,使得高速数据传输和图像处理能够同时进行。显示模块基于DVI数字视频技术设计,在FPGA内采用Verilog编程实现DVI时序发生控制器,并连接到DVI物理层芯片,生成DVI视频流到显示器上显示这样的设计使得红外图像的显示控制完全在FPGA内完成,不会给主机带来任何负担,实时性的要求也易于实现。而且DVI数字视频相比传统的模拟视频分辨率更高,也更稳定。

2光纤接收模块的设计

光纤接收模块框图如图2所示,其工作流程如下:HFBR-5208光电转换芯片接收光信号并解码成PECL电平的串行数据流,然后经由电平转换芯片sn65lvdt100变换成LVDS电平高速串行信号,再通过MAX9218解串成并行数据流传送到FPGA接收。

2.1HFBR-5208光电转换芯片简介

Avago公司(原Agilent公司半导体部)提供一系列光纤收发模块芯片,数据传输率从几百兆比特每秒到几十吉比特每秒,可满足不同实际应用的需求。本文选用HFBR-5208芯片,其使用62.5/125 μm多模光纤,传输距离可达到500 m,数据传输率为155-622 Mb/s。 其接收数据的原理如图3所示,光学组件从光纤接收到的光信号经InGaAs光电探测器转变为电信号,再通过前置放大器、滤波器、放大器、PECL输出缓冲器,完成光信号到高速串行电信号的转换。

2.2利用MAX9218实现串并转换

MAX9218是一款简单易用的数字串/并转换器,包含数据和控制周期总共27位数据解串。在数据周期,LVDS串行输入被转换为18位并行数据信号,在控制周期,输入被转换为9位并行控制信号。支持3 MHz到35 MHz的较宽范围的并行时钟频率。

为保证数据的正常接收,编码时以行同步控制数据周期与控制周期的切换,在数据周期(HSync为高),使用14位数据线来传输A/D变换后的数字图像数据;在控制周期(HSync为低),使用控制数据线来传输行号,俯仰码等自定义信息。如图4所示。

3实时显示模块

3.1TFP410简介

DVI接口是由DDWG(Digital Display Working Group)提出的新一代高性能数字视频显示接口技术[3]。DVI接口包含了两条T.M.D.S链路,最高可支持165 MHz时钟。单TMDS链路可以支持到1920×1200@60 Hz的分辨率。

TFP410符合DVI1.0接口协议,支持从VGA 到UXGA 的分辨率(25 MHz 到165 MHz 的像素率)。它接收24位并行像素数据、像素时钟以及控制信号,通过T.M.D.S编码模块将其编码成RGB三路数据通道和一路时钟通道。其数据输入接口及性能如下:

时钟输入:支持差分和单端时钟输入模式,频率范围为25 MHz 到165 MHz,在单端时钟输入模式下,IDCK + 应接到单端时钟源上,IDCK-引脚直接接地。差分时钟模式比普通模式有更强的抗干扰能力,这种模式只能在低摆动模式下有效。

图像数据输入:可选择的12位双边沿输入和24位单边沿输入。

控制信号:主要包括数据有效、行同步、帧同步以及其他一些配置TFP410芯片的信号。

3.2显示模块的时序控制

不论CRT或LCD显示器均是通过帧同步和行同步信号来实现逐行逐点的动态扫描。如图5所示。

水平扫描过程由行同步(HSync)和行数据有效信号(H_DE)控制。包含以下4个步骤。(1)行同步有效期(H-Sync),HSync有效,H_DE无效,此提示行扫描将要开始;(2)同步后等待期(H-Back),HSync无效,H_DE无效,提示准备随时开始行扫描;(3)数据有效(Active),HSync无效,H_DE有效,随像素时钟脉冲在总线上逐点输出图像数据。(4)等待下一个同步信号(Wait),HSync无效,H_DE无效, 整行数据传输完毕,等待下一次行扫描开始。垂直扫描与水平扫描类似,由帧同步信号控制。如图6所示。注:数据有效信号必须在H_DE和V_DE同时为高时才有效,此时才在总线上输出有效数据。

4FPGA程序设计

系统核心基于FPGA设计,图7给出了FPGA内部逻辑设计框图。其工作流程如下:首先接收解串后的并行图像数据,使用FPGA内部的Block Ram缓冲数据然后送给图像处理单元;图像处理单元与外部DDR存储器相连,实现红外图像增强等算法;根据视频时序发生器的控制信号,将做增强处理后的图像数据以及同步时钟等信号按标准格式输出到显示模块。

5结论

本文设计的系统优点在于:采用光纤接收图像数据,具备数据传输率高,抗电磁干扰性强等特性;显示部分采用DVI技术,能实时显示超大分辨率的红外全景图;处理和控制逻辑都在FPGA内完成,能独立完成数据接收和实时显示,应用前景十分广阔。

摘要:介绍了一种红外图像高速采集及实时显示系统的总体结构设计。数据采集模块采用Avago公司先进的光纤收发模块,实现了数据高速稳定的接收。显示模块采用数字视频接口(DVI)技术,能够实时显示超大分辨率的红外全景图。系统基于FPGA设计,其可编程特性使得该系统能够满足不同的实际需求,应用前景十分广阔。

关键词:红外图像,高速采集,实时显示

参考文献

[1]麦绿波.焦平面热像仪的发展与应用综述.红外技术,2006,28(9):497—502

[2]王贤均,袁祥辉.实时红外系统图像动态显示的研究.激光与红外,2007,37(3):303—306

[3]Digital Visual Interface1.0.http://www.ddwg.com,1999

[4]HFBR-5208Data Sheet,http://www.avagot ech.com

[5]MAX9218Data Sheet,http://www.max-ic.com

[6]TFP410Data Sheet,http://www.ti.com

基于单片机的无线远程实时显示系统 篇8

目前市面上LED显示屏种类繁多,大多数显示内容固定,更新信息时有的使用GSM和WIFI等方式实现有的利用PC通过RS232或者GPRS将数据传送给LED显示系统,不仅繁琐而且成本高。另外因显示时多为汉字,汉字显示时基本上都是通过单片机调用外部字库存储器中的数据实现显示,解决信息实时更新问题又会受到存储器本身容量限制,影响显示效果,还存在字库制作复杂,成本较高,通讯费用昂贵等问题[1,2]。针对以上问题,本文采用NRF24L01无线通讯模块来实现实时信息传送,并通过读取汉字字库芯片GT21L16S2W中汉字和字符的点阵信息实现汉字显示。

2 系统硬件设计

硬件系统由远程控制和显示受控两大部分组成。

2.1 显示受控系统

显示受控系统由STC89S52RD+单片机、汉字字库芯片GT21L16S2W、用于接收数据的无线通讯模块以及LED显示屏和相应的驱动电路组成。系统框图如图1所示。

2.1.1 显示驱动

系统采用动态扫描方式,各组发光灯依次点亮,只要扫描频率高于临界闪烁频率,给人的感觉就是一个静态的效果[3,4]。显示屏的主要部分是点阵模块以及行和列的驱动电路。文中LED采用5*8共40块8*8点阵模块,共2560个点阵,一个汉字为256点阵。每行都有一个行驱动器,由单片机控制74HC138提供行选通信号,从第一行开始依次对各行进行扫描。根据各汉字的点阵信息,确定相应的列驱动器74HC595是否将该列与此行接通,如果接通,则该行该列的LED点亮,用这种方式把所有行扫描一次后,再从第一行开始,进行下一个周期的扫描。以每行的8块点阵模块为一组,共5组,且这5组的74HC138片选信号由另外一个74HC138控制,这样可省去显示屏的级联,而且控制方便。列显示驱动电路由74HC595组成。电路图如图2所示。

74HC595输入端是8位串行移位寄存器,输出端是8位并行缓存器具有锁存功能,可以实现在同一脉冲下,列的数据同时进行输入和输出。列数据准备好后,启动OE信号使所有数据同时输出并锁存,设计所占用I/O口少。显示数据从单片机到驱动芯片是以串行方式传输,使得传输控制电路简单。行扫描驱动相当于对发光管脉冲供电,每行由一个P N P三极管用共射接法来驱动,74HC138输出端连接三极管的基极,为该行提供大的驱动电流。

每一行LED管子亮、灭取决于74HC595中所锁存的信号。在第一行LED管子点亮的同时,在74HC595中移入第二行需要显示的数据,随后将其锁存,并同时由行扫描控制电路将第一行扫描管关闭而接通第二行,使第二行L E D管子点亮,以此类推,最后一行扫描过后再回到第一行,只要扫描速度足够高,就可形成完整的图像。

单片机将要显示的数据,转换成相对应的LED屏显示驱动信号,再加入相应的动态显示效果控制程序(画面左移、上移、开幕、覆盖、闪烁和直显等)后,通过SPI口分别输出给行、列驱动电路。

2.1.2 汉字字模读取

汉字字库芯片G T 2 1 L 1 6 S 2 W的工作电压为2.7V~3.6V,在与单片机的VCC端相连时需加上电平转换芯片CM1117,将5V电压转换为3.3V电压。HOLD#引脚接上2K的电阻后接3.3V电压,CS#,SI,SO,SCLK四个引脚分别接单片机的四个IO口。使用芯片时,需要先将片选信号CS#置低,然后根据一般读取指令使用时序图,通过芯片串行数据输入引脚SI把1字节的指令数据和3字节的地址数据写入到芯片中,每一位在串行时钟上升沿被锁存。在写完1字节指令和3字节地址之后,通过串行数据输出引脚SO将字模信息连续读出,每一位在串行时钟下降沿被移出。每个15×16的汉字点阵信息由3 2字节组成,通过芯片资料给出的由某一个汉字的内码可以得到该汉字点阵信息存储的地址的算法,将连续读取的32个字节数据存放在一个数组中,只要按一定的顺序调用这个数组中的数据,就能在LED屏上正确显示相应的汉字。

2.2 无线通信

系统采用的无线通信模块是基于无线通信芯片NRF24L01的模块,采用FSK调制,每次最大能传输32字节的数据。使用前发送端和接收端需要分别设定NRF24L01芯片的工作状态,单片机通过串口配置发送端及接收端NRF24L01芯片地址、数据包的大小、发送接收速率等参数。

在远程通信系统中无线通信模块主要完成发送显示数据以及控制指令,采用中断接收方式。对于主机无线数据发送单元,主机先等待用户键入所要显示文字的内码,并一直等待确认发送键的按下,当确认键按下后,主机处理所显示内容,并把段码数据和位码数据(点阵数据)向从机发送。从机无线接收器控制,无线模块的中断控制引脚接到从机的外部总段引脚,当接收到信息时,触发外部中断,进入中断子程序,并从模块中读出数据,跳出中断后处理所接受数据,待数据全部接收完成后显示输出。

2.3 远程控制系统

远程控制部分由单片机控制系统、12864液晶、以及用于发送数据的无线通讯模块组成。系统框图如图3所示。

单片机控制模块接有一组矩阵键盘,负责从外界获取显示内容,通过无线通讯模块把数据发送给显示受控系统。为了确保这一过程的完成,在完成某一动作的同时需要在液晶上显示这一动作信息,使统更加稳定。需要提供给单片机控制模块5V直流电压,单片机是核心部分,带有复位电路,外接一组矩阵键盘,通过IO口与无线通讯模块和液晶屏相连接。

3 软件设计

在远程控制端,接有一组矩阵键盘,通过键盘给单片机输入汉字的内码,单片机通过SPI串口通讯协议对发送端的无线模块进行配置,之后发送显示数据。在显示受控端,接收端的无线模块接收到数据之后,通过SPI串口通讯协议将数据传送给接收端的单片机进行处理单片机通过读取汉字字库芯片中的点阵信息,显示时采用定时器中断方法,通过设置合适的进入中断时间常数,即可以得到高于40 Hz的LED刷新帧频,使人眼得到稳定的动态视觉效果。软件流程图如图4所示。

4 结束语

本文给出了基于NRF24L01无线通信模块来实现LED显示屏的远程控制和实时信息显示系统,并通过汉字的内码从GT21L16S2W芯片中得到15×16点阵字模信息。通过该系统可以远程实时发布信息,且可以随时录入信息并显示,可以经济高效的应用于户外实时信息的发布,并随时修改显示内容,方便信息管理,同时省去了复杂的字库制作,使整个系统成本低廉,便于维护。

摘要:本文介绍了利用NRF24L01和GT21L16S2W实现的基于单片机的无线远程实时显示系统。该系统成本低廉,信息更新方便快捷,且可以解决显示汉字难的问题。

关键词:LED点阵屏,无线通信,汉字字模

参考文献

[1]梁纯等.基于MCS-51单片机的LED点阵图文显示屏设计[J].工矿自动化,2005,(6):90~92.

[2]袁强,陆启生,李文煜.基于单片机89C51和89C2051点阵LED图文显示[J].工程地质计算机应用,2006,(4):17~19.

[3]李熹霖.谈LED大屏的刷新频率和换帧频率[J].现代显示,2004,(1):22~25.

三维实时显示 篇9

1 系统的组成与设计

1.1 实时姿态显示系统组成

实时姿态测量系统主要由MIMU数据采集系统,蓝牙通信模块和实时显示上位机等组成,系统组成原理框图如图1所示。MIMU数据采集系统主要实现惯性数据的采集和上传等功能;蓝牙模块是数据传输的接口;实时显示软件实现对惯性数据的补偿、姿态解算和实时显示等功能。

1.2 实时显示软件设计

实时显示软件是系统的主要组成部分,其主要功能是数据通信、数据补偿、姿态解算和数据显示。根据上述功能需要上位机软件具有运算速度快、数据显示量大、数据接收快等特点。基于上述要求,选择命名用C++语言进行程序的编写和MFC进行主要窗口框架。同时为了实时数据显示和优化显示方案,使用OpenGL进行数据显示[4]。

1.2.1 数据通信接口设计

一般的数据采集系统通过数据线进行数据传输,这种方法会影响载体运动的自由度。为了克服上述不足,系统设计时使用蓝牙进行载体与采集系统之间的数据传输。通过蓝牙传输的数据经过串口协议进入计算机,计算机与硬件电路通信数据定义如表1所示。其中01~02为帧头;03是由硬件生成的帧计数;04~09分别为ωx,ωy,ωz;10~16分别是ax,ay,az;最后一位是帧尾校验位。

通过上述帧定义,帧数据与电压数据的对应关系可以用下面两式进行说明,以ωx为例,它的两个字节分别为byte1,byte2。

式中:data是以电压表示的物理量,当byte1>128时取负号,当byte1<128时系统取正号。

1.2.2 采集数据量化处理

硬件电路传输到上位机的数据经过式(1)分离后得到的仍是电压值,不便于后续的计算,需采用式(2)对电压值进行补偿进而得到被测角速率和加速度值。其中,补偿参数包括了传感器的零点、标度因数矩阵等。这些参数可以通过椭球拟合、十二位置和线性标定等方法对MIMU标定得到

式中:Ui(i=x,y,z)是测量得到的电压值;Ui0(i=x,y,z)是零位电压;kij(i,j=x,y,z)为对应轴向相关标定矩阵值;Mi(i=x,y,z)是补偿后得到的物理量。

1.3 姿态解算算法设计

在设计姿态解算算法时,为了使数据解算具有通用性、封装性,可将四元素算法定义为姿态解算类CMySinsSolve。该类主要包括惯性计算的几个重要函数,姿态阵转化由四元素的函数、更新四元素的函数、提取姿态的函数和提取位置信息函数等组成。使用时只需重载该解算类,即可使用上述函数。姿态解算流程图如图2所示。

1.4 数据显示

传统的数据显示方法为图形控件显示法和背景消隐显示法。图形控件显示法显示速度较慢,背景消隐法在屏幕闪烁以及内存占用的显示方面皆存在很大问题,而利用OpenGL进行数据曲线具有显示直观、实现容易等优点。

OpenGL提供两种不同的透视方式,一种是正投影,另一种是透视投影。正投影是将物体尺寸直接投影到观察者的屏幕上;另一种是透视投影,透视投影会根据物体的远近程度对物体大小进行改变。在进行数据显示时,利用OpenGL的投影技术,可以很轻松地实现数据的二维曲线显示和三维动画显示,且由于OpenGL支持双缓存技术,使其绘制的图像不会与背景消隐法一样出现不同程度的闪烁。在OpenGL中只要如下两个函数即可对视图类型进行设置:

在VC++中,只要在刷新屏幕或改变窗口大小时使用上述两个函数就可以改变OpenGL的显示方式。图3是两种数据显示方式的实际效果图。

2 关键技术

2.1 通信数据处理

通过串口进行实时数据通信时,系统的实时性要求数据读取与处理同时进行。如果直接进行数据读取和处理容易发生数据丢失。使用数据缓存可以解决数据处理和数据读取等问题。实际编程时,设置两个数据缓存会使数据在读取和处理过程中出现数据混淆和数据错误。为了解决上述问题,编写程序时使用3个缓存区,通过缓存的交换进行数据先后顺序的判断。判断方法如表2所示,通过这种技术可以识别数据的顺序,同时起到数据缓存的作用。

实际应用过程中发现,计算机直接读取数会造成数据错帧、漏帧。分析原始数后发现,这是帧格式在基于消息的Window程序分块读取串口数据时被截断。为了解决这个问题,消息让程序对缓存数据读取。程序读取串口数据时,会按照数据块大小读取数据。为了克服系统的弊端,程序中设计了如图4所示程序。

如图4所述,每当通过串口读取一个数据块之后,首先检测有无上一个数据块留下的断帧数据,如果有断帧数据,先对断帧数据进行连接,再进行其他数据处理。同时,在数据处理完成后,要判断这块数据的最后一帧是否完整,如果不完整暂时先保存断帧数据以供下次连接断帧使用。通过上述方法,解决了实时通信过程中数据错帧、漏帧等问题。

2.2 多线程应用

为了实现实时数据采集、显示等长时间占用线程的操作,本文使用了多线程技术。多线程是指程序在运行时通过创建多个子线程在时间上同步完成不同任务。C++要通过CreateThread函数和TerminateThread函数分别对各线程进行启用和终止。由于多线程之间的数据通信方法比较繁琐,更多的信息请参见MSDN,这里不再详述。

2.3 OpenGL窗口创建

很多文献中提到的OpenGL使用方法都是建立一个视图类窗口,配置视图窗口为OpenGL风格。类似做法生成的窗口可以实现OpenGL的显示,但是当系统是实时显示系统时,为了实时更新视图要求窗口实时更新,这种更新方式会使显示视图产生闪烁,同时不能在当前窗口上使用VC++所封装的控件资源[4]。

上述两个缺点都会很大程度地影响软件人机交互的友好和系统的开发周期。为了改变上述方法的缺点,结合VC++控件本质也是一种窗口的事实,本文设计并实现了将控件作为OpenGL窗口的方法。首先,取得控件的句柄,利用CreatEx函数,在当前控件位置生成一个窗口。通过将指定的窗口风格中去掉了窗口框架。在主窗口的初始化中,重载并调用OpenGL窗口类。使用上述方法生成的OpenGL窗口解决了更新视图产生闪烁和不能使用控件的不足,实现了数据的实时显示和系统的控制。

3 功能测试

3.1 姿态解算功能测试

为了验证软件能否实现姿态解算的功能,对整个系统进行转台实验。实时参数为没有偏航角,横滚角20°/s转动60 s,俯仰角从-45°~+45°,共运行60 s。实验结果如图5所示。

通过实验数据发现,实时解算系统的解算误差比较小,航向角的解算误差在0.5°以下(70 s以内)。实验证明,实时姿态解算系统精度比较高,能完成姿态解算的功能。

3.2 帧测试和速度测试

系统选择的串口波特率为115 200 bit/s,结合帧格式的定义,每一帧有24个数据,所以最高的传输速率为600 Hz。其中没有计算串口协议的起始位和停止位等,所以选择了传输速率为500 Hz。由于系统有帧计数,通过帧计数可以进行如图6所示的帧计数增量观察系统有无掉帧或错帧的情况。实验时采集了大约90 s,得到45 965组数据,根据帧计数的增量发现,数据并无丢帧、错帧的现象。

3.3 软件功能测试

图7和图8是系统工作时上位机软件截图,从图中可以看出,软件能够很好地实现数据曲线显示和三维姿态数据。

4 结论

本文搭建的实时姿态显示系统比较好地解决了实时的数据通信、数据解算和数据显示等问题。通过实验验证系统比较好地解决了实时显示系统中数据传输引起的错帧、漏帧等问题,同时通过OpenGL的应用,解决由于实时刷新造成的数据显示时闪烁、不流畅和使用控件等问题。本文为捷联惯导系统的应用和实时显示软件的编写提供了参考,有一定的工程实践价值。

参考文献

[1]朱立华,程向红.基于OpenGL的船用SINS可视化仿真系统[J].舰船电子工程,2009(9):113-117.

[2]孙静,王彤,韩凤玲.捷联式姿态基准系统软件设计[J].哈尔滨工业大学学报,1990(12):120-124.

[3]梁丽,褚晶辉,张小佩,等.一种3D视频中立体字幕叠加技术[J].电视技术,2011,35(20):32-40.

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【三维实时显示】相关文章:

三维实时场景05-19

实时交互行为三维动画的设计技术研究12-15

实时图像05-10

实时运营05-13

实时评估05-29

实时性能06-30

实时采集范文05-17

实时物流范文05-17

实时报道范文05-30

实时线路电流05-09

上一篇:落脚点下一篇:推波助澜