当前位置: 首页 > 专利查询>山东大学专利>正文

基于星型网络结构的三维场景数据获取方法及系统技术方案

技术编号:21205183 阅读:29 留言:0更新日期:2019-05-25 02:50
本公开公开了基于星型网络结构的三维场景数据获取方法及系统,它首先采用一种基于NTP的网络时间同步系统让各Kinect节点和中心服务器同步对时,然后借助Winsock通信技术让中心服务器给各传感器节点下达传输数据的指令,各节点利用深度图像压缩技术和传输控制协议对所采集的数据进行压缩和传输,最后中心服务器采用内存池和多线程的技术接收各节点发来的数据并协同处理。

Data Acquisition Method and System of Three-Dimensional Scene Based on Star Network Structure

The present disclosure discloses a method and system for acquiring three-dimensional scene data based on star network structure. Firstly, it uses a network time synchronization system based on NTP to synchronize the Kinect nodes and the central server. Then, with the help of Winsock communication technology, the central server sends instructions for transmitting data to the sensor nodes. Each node uses depth image compression technology and transmission control. The protocol compresses and transmits the collected data. Finally, the central server uses memory pool and multi-threading technology to receive the data from each node and process it in coordination.

【技术实现步骤摘要】
基于星型网络结构的三维场景数据获取方法及系统
本公开涉及基于星型网络结构的三维场景数据获取方法及系统。
技术介绍
本部分的陈述仅仅是提高了与本公开相关的
技术介绍
,并不必然构成现有技术。近年来,RGB-D图像获取设备(例如Kinect如HoloLen)得到了快速发展。利用RGB-D图像获取设备可以获取现实场景中的更多空间信息,进而可借助计算机视觉和人工智能技术可以对这些信息进行融合、提取等处理。空间信息的获取对复杂三维场景的重建,特别是三维人体的重建,具有十分关键的作用。KinectFusion算法是通过移动深度相机即可实时重建出三维场景。但对于人体重建,该方法有较大的局限性,如要求被采集人体固定不动或者保持大致刚性的姿态。HaoLi等人将由KinectFusion系统重建的模型与数据库中已采集好的完整光滑人体模型进行非刚性变形,从而得到一个完整的人体模型。最近,DynamicFusion系统将KinectFusion工作推广到动态物体重建,例如,有部分遮挡的运动人脸、人体等,但这种方法在用设备获取物体信息时要求物体运动速度较慢。Helten等人根据两个Kinect顺序采集到的深度信息估计出采集人的个性化人体模型,然后用该模型跟踪深度相机所拍摄对象的实时姿态变化,但该系统在采集人背对镜头,或当身体的某些部位在Kinect的采集范围之外时会失败。在一个复杂三维场景中,特别是包含了多个人体的大规模三维场景,重建的关键在于多视角的RGB-D图像的获取。对于更为复杂的动态场景,其重建过程则需要对多源时空数据进行实时的获取和进一步融合。但是,目前为止,还没有一个能够全方位时序化的多源深度图像采集系统。
技术实现思路
为了解决现有技术的不足,本公开提供了基于星型网络结构的三维场景数据获取方法及系统,其构建了一个面向复杂场景数据获取的分布式网络系统,实时感知和收集复杂三维场景的多视角RGB-D图像数据,并解决了多源RGB-D图像获取的时间一致性问题。第一方面,本公开提供了基于星型网络结构的三维场景数据获取方法;基于星型网络结构的三维场景数据获取方法,包括:中心服务器向各个Kinect客户端下发数据采集和传输指令;每个Kinect客户端在统一的时间标准下采集图像数据并对所采集的图像数据进行压缩,对压缩后的每一帧图像数据附加一个全局的时间戳,结合传输控制协议将压缩后的数据传至中心服务器;中心服务器在每接收到一个Kinect客户端的加入网络请求时,便启动一个线程接收该Kinect客户端传来的数据,使用内存池方式来接收不同Kinect客户端的图像数据,并将数据解压缩,实时显示各Kinect客户端获取的图像信息。作为可能的一些实施方式,所述方法还包括:构建一个以中心服务器为根节点且以各个计算机终端为叶子节点的星型网络拓扑;中心服务器与各个计算机终端连接,每个计算机终端与一个Kinect传感器连接,每个计算机终端和其所相连的Kinect传感器组成一个Kinect客户端;基于网络时间协议的客户端/服务器工作模式让每个Kinect客户端与中心服务器对时同步,进而使得所有Kinect客户端在统一的时间标准下工作。作为可能的一些实施方式,基于网络时间协议的客户端/服务器工作模式让每个Kinect客户端与中心服务器对时同步,进而使得所有的Kinect客户端在统一的时间标准下工作的具体步骤为:步骤(1-1):同一局域网内,采用网络时间协议NTP的客户端/服务器模式,中心服务器作为服务端,与Kinect客户端作为客户端;Kinect客户端A发送一个NTP报文给中心服务器,所述NTP报文携有离开Kinect客户端A时的时间戳T1;步骤(1-2):当所述NTP报文到达中心服务器时,中心服务器在时间戳T1后面加上时间戳T2;步骤(1-3):中心服务器将所述NTP报文反馈给Kinect客户端A,当所述NTP报文离开中心服务器时,中心服务器在时间戳T2后面再加上时间戳T3;步骤(1-4):当Kinect客户端A接收到所述NTP报文时,Kinect客户端A在时间戳T3后面再加上本地时间戳T4;步骤(1-5):计算NTP报文的往返时延delay:delay=(T4-T1)-(T3-T2)计算Kinect客户端A的相对时间差offset:offset=((T2-T1)+(T3-T4))/2步骤(1-6):Kinect客户端A根据往返时延和相对时间差,计算Tm来同步自己的系统时钟,使Kinect客户端系统时钟与中心服务器的时钟保持同步。Tm=Tn与offset-delay其中,Tm表示同步后的系统时间,Tn表示同步前的系统时间;作为可能的一些实施方式,中心服务器向各个Kinect客户端下发数据采集和传输指令之前,还包括建立中心服务器和各个Kinect客户端之间的TCP连接的具体步骤。作为可能的一些实施方式,建立起中心服务器和各个Kinect客户端之间的TCP连接的具体步骤为:步骤(2-1):采用Winsock通信所具有的C/S体系结构设计,中心服务器为服务端,各个连接Kinect客户端为客户端;在服务端和客户端均调用WSAStartup函数初始化Winsock动态链接库,并调用Socket函数来建立套接字,定义Socket函数使用TCP/IP通信协议;步骤(2-2):在服务端调用bind函数为步骤(2-1)所定义的Socket函数绑定一个IP地址和端口;步骤(2-3):服务端Socket对象绑定完成之后,调用listen函数使服务端的Socket进入监听状态,设定与服务端的最大连接数;步骤(2-4):客户端Socket使用connect函数提出与服务端Socket建立连接的申请,服务端则调用accept函数接收客户端的连接请求,服务端为每个连接新开线程,进而服务端和客户端建立连接。作为可能的一些实施方式,中心服务器向各个Kinect客户端下发数据采集和传输指令的具体步骤为:步骤(3-1):服务端调用send函数向各Kinect客户端发送指令;步骤(3-2):Kinect客户端调用recv函数,在未接收到数据时recv函数一直处于阻塞状态,直至接收到服务端发来的指令,recv函数开始继续执行;步骤(3-3):Kinect客户端收到指令后,初始化Kinect传感器,并调用GetDefaultKinectSensot函数和Open函数启动Kinect传感器;步骤(3-4):启动Kinect传感器后,客户端调用get_DepthFrameSource函数获取深度图像数据,调用get_ColorFrameSource函数获彩色图像数据,调用get_BodyIndexFrameSouce函数获取人体索引数据,人体索引数据即人体在深度图像中的位置,调用get_BodyFrameSource函数获取人体骨架数据;步骤(3-5):客户端调用OpenReader函数打开深度图像数据、彩色图像数据、人体索引数据和人体骨架数据的读取器;客户端调用recv函数阻塞等待服务端发送的采集数据指令;步骤(3-6):服务端发送采集数据指令给客户端,阻塞等待客户端发来的数据,客户端接收数据后调用AcquireLatestFrame函数获取各数据帧。作为可能的一些实施方式,每个Kinec本文档来自技高网
...

【技术保护点】
1.基于星型网络结构的三维场景数据获取方法,其特征是,包括:中心服务器向各个Kinect客户端下发数据采集和传输指令;每个Kinect客户端在统一的时间标准下采集图像数据并对所采集的图像数据进行压缩,对压缩后的每一帧图像数据附加一个全局的时间戳,结合传输控制协议将压缩后的数据传至中心服务器;中心服务器在每接收到一个Kinect客户端的加入网络请求时,便启动一个线程接收该Kinect客户端传来的数据,使用内存池方式来接收不同Kinect客户端的图像数据,并将数据解压缩,实时显示各Kinect客户端获取的图像信息。

【技术特征摘要】
1.基于星型网络结构的三维场景数据获取方法,其特征是,包括:中心服务器向各个Kinect客户端下发数据采集和传输指令;每个Kinect客户端在统一的时间标准下采集图像数据并对所采集的图像数据进行压缩,对压缩后的每一帧图像数据附加一个全局的时间戳,结合传输控制协议将压缩后的数据传至中心服务器;中心服务器在每接收到一个Kinect客户端的加入网络请求时,便启动一个线程接收该Kinect客户端传来的数据,使用内存池方式来接收不同Kinect客户端的图像数据,并将数据解压缩,实时显示各Kinect客户端获取的图像信息。2.如权利要求1所述的方法,其特征是,还包括:构建一个以中心服务器为根节点且以各个计算机终端为叶子节点的星型网络拓扑;中心服务器与各个计算机终端连接,每个计算机终端与一个Kinect传感器连接,每个计算机终端和其所相连的Kinect传感器组成一个Kinect客户端;基于网络时间协议的客户端/服务器工作模式让每个Kinect客户端与中心服务器对时同步,进而使得所有Kinect客户端在统一的时间标准下工作。3.如权利要求2所述的方法,其特征是,基于网络时间协议的客户端/服务器工作模式让每个Kinect客户端与中心服务器对时同步,进而使得所有Kinect客户端在统一的时间标准下工作的具体步骤为:步骤(1-1):同一局域网内,采用网络时间协议NTP的客户端/服务器模式,中心服务器作为服务端,与Kinect客户端作为客户端;Kinect客户端A发送一个NTP报文给中心服务器,所述NTP报文携有离开Kinect客户端A时的时间戳T1;步骤(1-2):当所述NTP报文到达中心服务器时,中心服务器在时间戳T1后面加上时间戳T2;步骤(1-3):中心服务器将所述NTP报文反馈给Kinect客户端A,当所述NTP报文离开中心服务器时,中心服务器在时间戳T2后面再加上时间戳T3;步骤(1-4):当Kinect客户端A接收到所述NTP报文时,Kinect客户端A在时间戳T3后面再加上本地时间戳T4;步骤(1-5):计算NTP报文的往返时延delay:delay=(T4-T1)-(T3-T2)计算Kinect客户端A的相对时间差offset:offset=((T2-T1)+(T3-T4))/2步骤(1-6):Kinect客户端A根据往返时延和相对时间差,计算Tm来同步自己的系统时钟,使Kinect客户端系统时钟与中心服务器的时钟保持同步;Tm=Tn+offset-delay其中,Tm表示同步后的系统时间,Tn表示同步前的系统时间。4.如权利要求1所述的方法,其特征是,中心服务器向各个Kinect客户端下发数据采集和传输指令之前,还包括建立中心服务器和各个Kinect客户端之间的TCP连接的具体步骤。5.如权利要求4所述的方法,其特征是,建立起中心服务器和各个Kinect客户端之间的TCP连接的具体步骤为:步骤(2-1):采用Winsock通信所具有的C/S体系结构设计,中心服务器为服务端,各个连接Kinect客户端为客户端;在服务端和客户端均调用WSAStartup函数初始化Winsock动态链接库,并调用Socket函数来建立套接字,定义Socket函数使用TCP/IP通信协议;步骤(2-2):在服务端调用bind函数为步骤(2-1)所定义的Socket函数绑定一个IP地址和端口;步骤(2-3):服务端Socket对象绑定完成之后,调用listen函数使服务端的Socket进入监听状态,设定与服务端的最大连接数;步骤(2-4):客户端Socket使用connect函数提出与服务端Socket建立连接的申请,服务端则调用accept函数接收客户端的连接请求,服务端为每个连接新开线程,进而服务端和客户端建立连接。6.如权利要求1所述的方法,其特征是,中心服务器向各个Kinect客户端下发数据采集和传输指令的具体步骤为:步骤(3-1):服务端调用send函数向各Kinect客户端发送指令;步骤(3-2):Kinect客户端调用recv函数,在未接收到数据时recv函数一直处于阻塞状态,直至接收到服务端发来的指令,recv函数开始继续执行;步骤(3-3):Kinect客户端收到指令后,初始化Kinect传感器,并调用GetDefaultKinectSensot函数和Open函数启动Kinect传感器;步骤(3-4):启动Kinect传感器后,客户端调用get_DepthFrameSource函数获取深度图像数据,调用get_ColorFrameSource函数获彩色图像数据,调用get_BodyIndexFrameSouce函数获取人体索引数据,人体索引数据即人体在深度图像中的位置,调用get_BodyFrameSource函数获取人体骨架数据;步骤(3-5):客户端调用OpenReader函数打开深度图像数据、彩色图像数据、人体索引数据和人体骨架数据的读取器;客户端调用recv函数阻塞等待服务端发送的采集数据指令;步骤(3-6):服务端发送采集数据指令给客户端,阻塞等待客户端发来的数据,客户端接收数据后调用AcquireLatestFrame函数获取各数据帧。7.如权利要求1所述的方法,其特征...

【专利技术属性】
技术研发人员:李峰徐帅斌谢成圆辛士庆周元峰
申请(专利权)人:山东大学
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1