技术领域
[0001] 本
发明涉及流媒体可视化方法领域,具体涉及一种便携式3D扫描仪的流媒体可视化方法。
背景技术
[0002] 现有3D扫描仪采用的技术及其
缺陷如下表所示:
[0003]
[0004] 目前3D扫描仪需要扫描之后将数据导入到电脑中,进行一系列的
软件处理才能看到基于3D扫描数据重建后的效果,不能实时看到扫描过程中的效果,而且大多数都需要安装只能放到本地电脑上面进行可视化操作,并不能通过互联网技术进行免安装的可视化操作,且目前的流媒体技术无法高实时性,高
稳定性的支持这样的3D数据在线可视化需求。
发明内容
[0005] 本发明为了解决上述技术问题提供一种便携式3D扫描仪的流媒体可视化方法。
[0006] 本发明通过下述技术方案实现:
[0007] 一种便携式3D扫描仪的流媒体可视化方法,包括以下步骤,
[0008] A、客户端通过https
请求开启设备并与设备之间进行匹配;
[0009] B、扫描仪将原始3D模型数据传送给设备;
[0010] C、设备对3D模型数据进行提取、融合、简化操作并上传至
服务器;
[0011] D、服务器对3D模型数据进行三
角化操作并保存为stl结果;
[0012] E、读取、解析stl格式的3D模型数据并生成对应的图片序列;
[0014] H、以RTMP协议对媒体流数据进行推送;
[0015] J、客户端接收并以OSMF技术解码媒体流数据以播放。
[0016] 本方案中客户端通过https请求实现对设备的连接,在扫描过程中,实现实时显示。客户端通过
访问设备,对3D模型数据进行预处理,任何主流浏览器在无任何
插件的情况下,均可导入3D模型数据进行放大、缩小、移动等可视化操作,用户不用为了查看3D模型数据去寻找或者下载任何软件。采用OSMF技术解码媒体流数据,能在无插件的情况下在各个主流浏览器中正常工作,且不会有缓存拥堵而造成的视频抖动,同时可以通过便携式开发板的分发机制进行局域网内的共享,更加高效的显示视频,这也是通常视频解码过程中常见的问题。本技术操作流程简单,能高实时性和稳定性地在主流浏览器以及移动端中将数据显示,大大提高了用户体验和维护成本,用户能随时随地的采用便携式3D扫描仪进行扫描并实时查看结果。
[0017] 步骤C中,对3D模型数据的提取采用以下方法:
[0018]
[0019] Wk=Wk+a*Error*Vk;
[0020] 其中:d为点的总数;xi、yi、zi分别为i点的三维坐标;a是寻找最近的几个点的参数;Wk为最终计算出的最近点集,Error为
迭代次数,Vk是目标点。采用该方法能快速准确的确定点的半径,并提取特征点。
[0021] 步骤C中,融合提取后的3D模型数据采用以下方法:
[0023] 归一化点集;
[0024] 偏移点集。
[0025] 具体的,融合提取后的3D模型数据具体方法为:
[0026] 对数据进行坐标系转换和空间旋转:
[0027]
[0028] 其中:t和r代表旋转矩阵的常量,u=1、2、3,v=1、2、3,tu=0,ruv=0;如果u≠v、ruv=1,则不是零转换和零旋转;
[0029] 归一化点集:
[0030]
[0031] Np是对应点的法向量,R(pi)代表法向量的集合,mi是K范围内的点集;
[0032] 偏移点集:
[0033] P=Rk x P0+Tk
[0034] 其中,Rk是K范围内的法向量集合,Tk是旋转矩阵T,K就是
阈值范围,P0指起始点的集合。
[0035] 步骤D中,对3D模型数据进行三角化采用以下方法:
[0036]
[0037] 其中:A、B、C代表构建三角形的相关点的矩阵,D代表不相关点的矩阵。
[0038] 还包括交互步骤:客户端通过Javascript技术获取用户操作的
鼠标信息,通过对应的端口号,以socket协议的方式传送给服务器,服务器通过步骤E至H推送媒体流数据。交互步骤中,采用socket协议,比基于Gsoap的webservice或者restful协议更加快速和稳定,生成的图片速度也更快。
[0040] 周期性收集和判断客户端的带宽和媒体流数据的推送
分辨率;
[0041] 根据客户端当前带宽调整媒体流数据的推送分辨率,判断当前客户端带宽与上一周期带宽的差值,当该差值大于阈值,则调整媒体流数据的推送分辨率。
[0042] 根据客户端当前带宽调整媒体流数据的推送分辨率的方法为:
[0043] 客户端带宽大于400k/s,则将媒体流数据的推送分辨率调整为1024*768;
[0044] 客户端带宽在150k-400k/s之间,则将媒体流数据的推送分辨率调整为640*480;
[0045] 客户端带宽低于150k/s,则反馈意见给客户端。
[0046] 所述视频质量调整步骤包括:
[0047] 获取服务器CPU、内存运行状况,并获得服务区带宽;
[0048] 当服务器CPU、内存和带宽超负荷时,根据ffmpeg的参数对媒体流数据的推送分辨率进行调整。
[0049] 本方案通过实时监测用户终端和服务器的使用情况和带宽情况从而动态的改变传输的视频的质量分辨率等效果,稳定的保证了用户体验。
[0050] 本发明与
现有技术相比,具有如下的优点和有益效果:
[0051] 1、本发明客户端通过https请求实现对设备的连接,并通过对3D模型数据进行提取、融合、简化、三角化、补洞、分割操作,采用OSMF技术解码媒体流数据,实现实时显示,且能在无插件的情况下在各个主流浏览器中正常工作,且不会有缓存拥堵而造成的视频抖动。
附图说明
[0052] 此处所说明的附图用来提供对本发明
实施例的进一步理解,构成本
申请的一部分,并不构成对本发明实施例的限定。
具体实施方式
[0054] 为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
[0055] 实施例1
[0056] 如图1所示的一种便携式3D扫描仪的流媒体可视化方法,包括以下步骤,
[0057] A、客户端通过https请求开启设备并与设备之间进行匹配;
[0058] B、扫描仪将原始3D模型数据传送给设备;
[0059] C、设备对3D模型数据进行提取、融合、简化操作并上传至服务器;
[0060] D、服务器对3D模型数据进行三角化操作并保存为stl结果;
[0061] E、读取、解析stl格式的3D模型数据并生成对应的图片序列;
[0062] F、编码图片序列生成媒体流数据;
[0063] H、以RTMP协议对媒体流数据进行推送;
[0064] J、客户端接收并以OSMF技术解码媒体流数据以播放。
[0065] 实施例2
[0066] 基于上述实施例,本实施例对其进行详细说明。
[0067] A、客户端通过https请求开启设备并与设备之间进行匹配;该设备可以是FPGA开发板或便携式设备,设备针对用户的请求进行用户ID和设备ID的匹配,同时客户端与设备建立TCP连接;
[0068] B、扫描仪启动并将原始3D模型数据传送给设备;
[0069] C、设备对3D模型数据进行提取、融合、简化操作并上传至服务器,以减小带宽影响;
[0070] 具体的:对3D模型数据的提取采用以下方法:
[0071]
[0072] Wk=Wk+a*Error*Vk;
[0073] 其中:d为点的总数;xi、yi、zi分别为i点的三维坐标;a是寻找最近的几个点的参数;Wk为最终计算出的最近点集,Error为迭代次数,Vk是目标点。
[0074] 步骤C中,融合提取后的3D模型数据采用以下方法:
[0075] 对数据进行坐标系转换和空间旋转以将三维坐标集根据特征点进行融合和匹配,:
[0076]
[0077] 其中:t和r代表旋转矩阵的常量,会根据行列的限定条件进行变换;u=1、2、3,v=1、2、3,tu=0,ruv=0;如果u≠v、ruv=1,则不是零转换和零旋转;
[0078] 归一化点集:
[0079]
[0080] 其中,Np是对应点的法向量,R(pi)代表法向量的集合,mi是K范围内的点集;
[0081] 偏移点集:
[0082] P=Rk x P0+Tk
[0083] 其中,Rk是K范围内的法向量集合,Tk是旋转矩阵T,K就是阈值范围,P0指起始点的集合。
[0084] 此公式结合ICP
算法进行加强计算效果更好。
[0085] 采用PCL的statistical removal方法3D模型数据进简化。
[0086] D、服务器对3D模型数据进行三角化、补洞、分割操作并保存为stl结果;
[0087] 具体的:三角化操作采用以下方法:
[0088]
[0089] 其中:A、B、C代表构建三角形的相关点的矩阵,D代表不相关点的矩阵。
[0090] E、读取、解析stl格式的3D模型数据并生成对应的图片序列;用户在浏览器中旋转放大缩小3D模型,获取坐标信息生成对应的图片组,每一次25
帧数,图片的格式是png,分辨率是1024x768。
[0091] F、将生成的图片序列根据h.264的最优设置进行快速编码,形成RTMP传输序列,每一秒15帧图片形成数据包,准备进行推送。
[0092] H、通过负载均衡技术将两组数据以RTMP的协议推送到浏览器中。
[0093] J、客户端接收并采用ActionScript应用OSMF的技术将RTMP数据包实时解码,形成流媒体可播放格式,观看。
[0094] 客户端在观看时,还可与服务器进行交互。客户端通过Javascript技术获取用户操作的鼠标信息,通过对应的端口号,以socket协议的方式传送给服务器,服务器根据鼠标信息生成对应的图片序列,并通过步骤F-J完成交互。
[0095] 客户端在观看时,还可对视频质量今天调整:
[0096] 周期性收集和判断客户端的带宽和媒体流数据的推送分辨率,譬如每间隔一分钟进行一次该操作;
[0097] 根据客户端当前带宽调整媒体流数据的推送分辨率,判断当前客户端带宽与上一周期带宽的差值,当该差值大于阈值,则调整媒体流数据的推送分辨率,该阈值可设置为200K。
[0098] 根据客户端当前带宽调整媒体流数据的推送分辨率的方法为:
[0099] 客户端带宽大于400k/s,则将媒体流数据的推送分辨率调整为1024*768;
[0100] 客户端带宽在150k-400k/s之间,则将媒体流数据的推送分辨率调整为640*480;
[0101] 客户端带宽低于150k/s,则反馈意见给客户端。
[0102] 所述视频质量调整步骤包括:
[0103] 获取服务器CPU、内存运行状况,并获得服务区带宽;
[0104] 当服务器CPU、内存和带宽超负荷时,根据ffmpeg的参数对媒体流数据的推送分辨率进行调整。具体如下表:
[0105]
[0106] 本方案的方法将在扫描过程中实时并高质量的显示并能达到用户实时交互的目的,用户通过访问便携式设备的系统,对3D模型数据进行预处理,且使用任何主流浏览器且无任何插件的情况下,导入3D模型进行放大、缩小、移动等可视化操作,用户不用为了查看3D模型数据去寻找或者下载任何软件。
[0107] 本技术方案首先是移动端通过4G访问便携式设备,然后利用Javascript的技术捕捉到用户的鼠标行为,通过socket协议固定的端口传输到C++中的
渲染引擎,渲染引擎读取对应的模型通过传输过来的鼠标事件,根据鼠标信息生成对应的图片序列。
[0108] 采用了实时监测用户终端和服务器的使用情况和带宽情况从而动态的改变传输的视频的质量分辨率等效果,稳定的保证了用户体验,所采用的流媒体调整算法是基于用户的操作行为并根据视频的I帧,B帧和P帧的关系进行最优的调整。而这部分通常的视频处理方法是根据静态的
视频流进行处理,比如监控,或者视频直播,并没有基于用户的实时操作这样快速的传输响应要求。
[0109] 本文提出一种基于户外便携式3D扫描仪的流媒体可视化技术,将在扫描过程中实时并高质量的显示并能达到用户实时交互的目的。本技术操作流程简单,能高实时性和稳定性地在主流浏览器以及移动端中将数据显示,大大提高了用户体验和维护成本。
[0110] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何
修改、等同替换、改进等,均应包含在本发明的保护范围之内。