用于点云数据实时显示的滑位处理方法研究
2023-09-25冯孝欣陈兴杰丁宝钢
冯孝欣 陈兴杰 丁宝钢
摘 要: 针对下位机向上位机发送数据时由于接收端和发送端的时钟不同源或者由于短促的干扰造成的数据异常,导致接收到的数据偏移若干个比特的问题,以LabWindows/CVI为平台使用C语言设计点云数据采集软件,采用滑位寻找帧同步码的方法,解决了因帧失步导致的帧内数据错位问题,进而通过TCP/IP网络协议接收实时图像数据,根据帧格式对图像数据进行接收、解析、离线处理以及实时显示,满足了接收速率达到380Mbps、0.2s内处理并显示一帧图像的需求。
关键词: 时钟; LabWindows/CVI; 滑位; 帧失步
中图分类号:TP311.1 文献标识码:A 文章编号:1006-8228(2023)09-06-04
Research on slide processing method for real-time display of point cloud data
Feng Xiaoxin, Chen Xingjie, Ding Baogang
(School of Urban Railway Transportation, Shanghai University of Engineering Science, Shanghai 201620, China)
Abstract: When the lower computer sends data to the upper computer, the received data is offset by several bits due to the clock difference between the receiving and sending ends, or data anomalies caused by short interference. To address this problem, with LabWindows/CVI platform and C language, the point cloud data acquisition software is designed. The method of searching frame synchronization code by sliding bit is adopted to solve the problem of intra-frame data dislocation caused by frame out-of-sync, and real-time image data can be received through TCP/IP network protocol. According to the frame format, the image data is received, analyzed, offline processed and real-time displayed. It meets the demand of receiving rate of 380Mbps and processing and displaying one frame of image within 0.2s.
Key words: clock; LabWindows/CVI; sliding bit; frame out-of-sync
0 引言
深空探測任务对解析软件的要求不仅限于数据的离线处理,对点云图像的实时显示也是载荷图像采集装置不可或缺的。航空遥感图像和卫星遥感图像的处理加工,都离不开载荷图像采集装置的使用[1-2]。载荷图像采集装置主要由地面站设备和点云数据解析软件组成,对点云数据的采集、存储和连续有效转发起着巨大作用[3]。由于数据经过采集装置转化后数据量增大,加上传输速度快,导致对采集软件的性能要求迅速增长。点云数据采集软件获取点云数据的准确度是实时显示的关键。
数据传输时,当下位机与上位机建立连接,因为接收端和发送端的时钟不匹配或短促的干扰,导致数据错位出现异常,由此造成的接收端所获取的数据偏移若干个比特,这就是滑位问题[4]。现有的帧同步码查找方法主要是固定数据流中同步码的位置,即在数据流中找到首个帧同步码后按照帧固定长度进行数据截取。该方法实现简单,但要求接收端与发送端时钟同步,缺乏灵活性且难以得到正确的点云数据。本文研究的滑位处理实时点云数据的方法,不但提供了图像数据的同步码位置,同时也提高了图像数据的准确度和软件处理效率。
1 载荷图像采集装置
不同的卫星,其载荷完成的任务是不一样的,但解析处理软件的功能却是基本一致的。载荷图像采集装置主要包括地面站装置和载荷图像地面解析软件两个部分。总的来说,载荷软件可看作一个信息交换中心,实现有效载荷与地面站装置之间的数据交换[5]。
地面站设备首先将LVDS传输的图像数据按一定方法整理后,编制为串行数字序列,再将这些序列按系统规定的形式调制到射频载波上,然后使调制载波信息以无线电的方式,按照特定的功率范围和方向性要求向周围的建筑传播,地面站接收到调制载波信号并经过解调后接收到信号,数据实时处理软件将接收到的数据存盘并实时显示 [6]。载荷图像采集装置构成如图1所示。
2 软件设计原理
点云数据采集软件以LabWindows/CVI为开发平台,CVI使用C语言开发设计,是NI公司推出的开发软件。
2.1 信息传输基本帧格式
在上位机与下位机通讯过程中,需要制定统一的通讯协议方便数据的传输过程,即规定传输数据中每个字节代表的信息,所传输的数据称为信息传输帧。完整的一条传输帧由两部分构成,同步码和信息包,其中同步码为固定的0x33CC,信息包由信息头和信息体组成,信息体包括了长度、设备编号、时间等九个部分。采集软件可以根据信息头数据的不同,来判断图像数据所属的类型和包含的信息,信息传输帧格式定义如表1所示。
2.2 软件功能设计
采集软件方便后续维护,保障软件稳定性,采用模块化设计,各功能模块要尽可能保障通用性,以便于进行系统功能扩充和二级技术开发[7]。
点云数据采集软件主要作用:①实时采集数传信道所传的点云数据,对接收到的点云数据进行处理,包括按比特查找同步码、点云图像显示、数据保存等;②对保存在本地的点云图像数据进行回放显示,能够通过滑位寻找同步码的方法,得到准确的点云数据并显示图像。点云数据的存储是按照帧格式,一帧为一个文件,存储到本地硬盘上,对信息进行分类和管理,根据接收到数据的时间给文件命名,并以二进制文件保存,方便以后查看。
软件功能模块主要分为TCP通信模块、数据处理模块、数据保存模块、实时图像显示模块、数据反演5个子功能模块,其功能模块如图2所示。
3 软件实现
3.1 软件界面
LabWindows/CVI提供了丰富的回调函数和图形控件,可以快速、方便地设计出人机交互界面,缩短软件开发周期。软件界面如图3所示,图像显示部分可播放實时图像、回放图像和反演图像;网络配置可设置服务器端口号和IP地址。
3.2 点云数据同步码查找及显示
3.2.1 多线程设计
本软件对实时数据采集速度要求较高,如果在LabWindows/CVI程序中采用单线程完成数据传输,即在接收到的数据中对一帧数据处理完成以后才能进行其他数据操作,这种方法容易导致软件性能低下,甚至会造成数据缓冲区溢出的问题[8]。多线程程序中,由程序自身告诉操作系统在主线程之上建立线程,并接收数据以提供完成多任务的所需时间[9]。点云数据采集软件采用多线程处理实现多任务分割,主要功能为数据采集,滑位寻找同步码,点云图像显示等。
本软件选择采用LabWindows/CVI多线程处理中的线程池机制,调用CmtScheduleThreadPoolFunction函数创建辅助线程,防止可能出现的数据堵塞问题,减少了等待所需要的时间开销,大大提高了软件运行速度。
3.2.2 网络参数设置
下位机与上位机(采集软件)之间采用基于TCP/IP协议的信息交互格式,载荷图像采集装置中,采集软件扮演客户端的角色,负责发出连接请求,需要设置服务端的端口号以及IP地址。其中端口号默认值为9010,IP地址默认为192.168.100.10,界面如图4所示,用户可根据网络实际情况进行参数设置。
3.2.3 接收点云数据
TCP 是一个工作在传输层的可靠数据传输的服务,它能确保接收端接收的网络包是无损坏、无间隔、非冗余和按序的[10]。接收点云数据实现过程主要分为以下步骤:
⑴ 进行网络配置,通过GetCtrlVal()函数来获取网络配置界面中的服务器端口号与IP地址;
⑵ 客户端通过TCP连接函数ConnectToTCP-
Server()向服务器设备发起建立连接的请求;
⑶ 当服务器接收到请求时,右侧指示灯亮起提示建立连接成功,服务器发送数据,软件通过TCP协议读函数ClientTCPRead()开始接收图像数据;
⑷ 网络接收数据线程开始实时接收设备发送过来的TCP数据并将数据存入数据缓冲区中。
3.2.4 点云数据提取及显示
点云数据接收线程启动后,进入点云数据提取程序,并通过以太网接收实时图像,接收速率最大为单机LVDS实际输出数据速率的1.5倍。
当接收到的原有数据中出现滑位问题时,若按照截取信息传输帧固定长度的方案处理数据会造成数据错误,导致程序解析错误的数据。本文设计的点云数据滑位处理方法,可以有效、准确的查找同步码的位置,得到正确的图像数据,方便接下来的点云数据处理工作,原始数据出现左移一位情况如图5所示。
本程序对出现滑位现象的信息传输帧,处理部分关键伪代码具体如下。
for(i=0; i<n; i++)
A[i]=(B[i]<<count)+(B[i+1]>>(8 - count));
for(i=0; i<n; i++)
if((A[i]==0x33)&&(A[i+1]==0xCC))
查找到同步码0x33CC
else
未查找到同步码0x33CC
为防止数据量过大造成的数据堵塞,除了使用多线程机制以外,同时对原有点云数据进行抽帧处理,即随机在数据缓冲区内取出两帧长度的数据,若发生滑位现象一定存在完整的一帧数据,图像数据同步码检测流程如图6所示。
采集软件利用LabWindows/CVI中的3D Graph控件对于接收的数据进行实时显示,如图7所示。
3.3 点云数据离线处理
在图3所示软件界面选择“原始拆分”按钮,在弹出界面选择想要拆分的原始文件,将原始文件拆分为单个图像文件,方便后续的点云数据核对和点云图像查看,拆分完成后的图像会以二进制文件的格式储存在存储路径设置文件路径中。
在图3界面选择“点云反演”按钮,通过对话框选择想要反演的点云数据文件,进度条显示点云图像反演进度,“暂停反演”按钮可以中止图像反演,此时可仔细观察三维图中所呈现的图像状态。
4 实际应用情况
本程序以LabWindows/CVI为开发平台,采用C语言编写并实现了网络连接、数据采集、数据处理、点云图像实时显示等功能,使用文本框、3D Graph、进度条等控件表示各参数值,可设置网络参数,并具有离线处理数据、分析数据的功能。通过软件查看保存的数据,经核对与协议所规定的格式一致。
软件实际功能经过测试,当数据传输速率达到380Mbps、数据出现滑位现象时,本程序能在0.2s内处理并显示一帧点云图像,并能够根据用户需要进行图像大小调整,数据离线处理能根据帧格式规定将数据按照接收时间文件命名,合理设计解决了帧失步现象导致的帧内数据错位问题。证明点云数据采集软件能够稳定、可靠的运行,软件性能测试见表2。
5 结论
在实际项目中能够快速获取点云数据、显示点云图像对整个系统有重要作用。本文提出了一种点云数据实时显示的滑位处理方法,通过C语言开发点云数据采集软件,使系统能够在不更改时钟的前提下,解决了数据错位问题,实现了实时接收数据并滑位寻找同步码、离线处理点云数据和图像显示的功能。所设计的软件界面清晰美观,便于操作和监测,功能强大,用此方法能显著提升点云数据的实时传输能力。
参考文献(References):
[1] 彭晴晴.基于NiosⅡ的遥测图像数据采集转发系统的设计[D].山西:中北大学,2012.
[2] 李斌,张会新,刘文怡.基于LVDS的高速图像数据存储器的设计与实现[J].电视技术,2014,38(3):48-52.
[3] 张海江.基于IP组播技术的遥测实时预处理系统的设计与实现[D].辽宁:东北大学,2013.
[4] 单琦,张志芳,ZHANG Ye,等. 一種高速并行帧同步的FPGA实现方法[A].武汉:第四届高分辨率对地观测学术年会论文集[C],2017:1036-1047.
[5] 黎佩南.卫星载荷软件的层次化设计[J].电讯技术,2012,52(5):766-769.
[6] 仝维超,周殊伦,鲍中华,等.遥测图像采集装置软件的设计与实现[J].国外电子测量技术,2021,40(8):100-104.
[7] 卢长海,石一鸣,王殿勋.遥测实时图像处理显示系统设计与实现[J].信息技术与网络安全,2020,39(7):57-60.
[8] 牛云鹏,王小鹏,房超,等.利用LabWindows/CVI多线程技术实现实时数据采集[J].电子测试,2011(12):41-45.
[9] 杨秋虎.LabWindows/CVI多线程技术的应用[J].电子科技,2015,28(3):19-21,37.
[10] 师永林.一种基于TCP/IP协议的通信数据传输方式[J].网络安全技术与应用,2021(11):2-3.