一种实时校正拼接防抖的实现方法与流程

文档序号:22397780发布日期:2020-09-29 18:07阅读:205来源:国知局
一种实时校正拼接防抖的实现方法与流程

本发明涉及嵌入式领域,尤其涉及一种实时校正拼接防抖的实现方法。



背景技术:

随着vr(虚拟现实)的兴起,怎样使得最常用的手持设备支持vr全景的生成和输出成为热门的研究问题。传统的vr全景生成和输出是基于sift算法进行cpu(通用计算处理单元)级别的常规运算得到的,且常用的电脑基本不能做到实时拼接运算,这极大的限制了vr全景设备的应用和推广。

常用的拼接融合是在数据采集后通过高性能服务器在后台进行的线下拼接,此种拼接方式非常耗时,但是这样非实时的方式可以做出拼接后的全景,此种拼接方式是将数据采集、拼接运算、编码、推流等分离开来;为了应对实时拼接的需求,将采集的数据上传到服务器上,在云上采用高性能服务器进行后台接近实时的拼接运算、编码、推流,最后将拼接结果发送给用户,此方式在数据的上传、云上的运算都是存在延时的,所有虽然是端到端的方式,但是端到端的延时也非常长,且整个系统较为复杂。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种实时校正拼接防抖的实现方法,用于解决实时拼接的问题,综合cpu(通用计算处理单元)、gpu(图像处理单元)、vpu(视频处理单元)、陀螺仪等与vr相关的公共属性,针对通用手持设备的芯片进行系统级的优化,在实现实时拼接的同时做到防抖补偿、编码输出和推流。

本发明提供一种实时校正拼接防抖的实现方法,所述方法包括以下步骤:

s1:利用cpu采集外部输入数据,所述外部输入数据包括三种,分别是拼接源、位姿信息、lut;

s2:利用lut进行鱼眼展开和球面建模;

s3:利用gpu进行贴图渲染,所述贴图渲染包括拼缝融合、双线性插值、色度空间降转、姿态融合;

s4:利用vpu进行编码输出,利用cpu进行推流;

s5:按照全景视频或者图像的需求,进行循环迭代;

进一步的,所述拼接源为视频或图像,所述视频和图像为2~n个摄像头的输出数据或本地的存储数据;所述位姿信息为能够提供三维位姿信息设备的输出数据;所述lut为自行标定后的输出数据或第三方工具的生成数据,是特征匹配后用来展开具体位置的查找表。

进一步的,所述贴图渲染包括以下步骤:

步骤3.1:根据外部输入数据,对gpu进行初始化;

步骤3.2:根据定制顶点着色器来计算球面xyz坐标、2~n个拼接源的uv坐标、顶点顺序坐标,并对拼接源进行拼接融合;

步骤3.3:根据定制片元着色器来对拼接源进行加权处理、双线性插值处理,并配置yuv空间到rgb空间的变换矩阵,将每一帧的yuv数据,转换成适合lcd显示的rgb数据;

步骤3.4:根据输入的位姿信息,基于配置好的防抖补偿矩阵,进行姿态融合,得到最终投影。

进一步的,所述双线性插值的每个新的uv坐标位置(u,v)和周围四个位置(u1,v1),(u1,v2),(u2,v1),(u2,v2)进行浮点运算得到。

如上所述,本发明的一种实时校正拼接防抖的实现方法,具有以下有益效果:本发明充分利用手持设备的cpu、vpu、gpu、陀螺仪等与vr相关的公共属性来完成全景视频和图片的拼接融合和全景输出,在全景视频和图片的拼接融合和全景输出之前,将相应的算法集成到通用的手持设备的芯片中,结合嵌入式应用和2~n个摄像头的输出数据,可以做到2k、4k或更高分辨率的实时拼接融合、全景输出和推流,可以做vr180的实时输出,且对手持设备的抖动进行补偿;由于充分利用了通用设备的硬件能力,极大地降低了全景拼接输出对硬件的需求。

附图说明

图1显示为本发明实施例中公开的实现方法的整体流程图;

图2显示为本发明实施例中公开的cpu、gpu、vpu三者之间的关系图;

图3显示为本发明实施例中公开的全景模式属性配置流程图;

图4显示为本发明实施例中公开的边界融合矩阵属性配置流程图;

图5显示为本发明实施例中公开的防抖补偿矩阵属性配置流程图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

如图1和图2所示,本发明提供一种实时校正拼接防抖的实现方法,所述方法包括以下步骤:

s1:利用cpu采集外部输入数据,所述外部输入数据包括三种,分别是拼接源、位姿信息、lut(查找表);

其中,所述拼接源可以是视频或者图像,所述视频和图像可以是2~n个摄像头的输出数据,也可以是本地存储的数据;所述位姿信息是能够提供三维位姿信息设备的输出数据,比如:thetas/phi/gamma(三维空间沿着xyz方向的转角),一般是陀螺仪的输出数据,但是不限制于陀螺仪;所述lut可以是自行标定后的输出数据,也可以是第三方工具如pt-gui生成的,是特征匹配后用来展开具体位置的查找表;

s2:利用lut进行鱼眼展开和球面建模;

s3:利用gpu进行贴图渲染,包括拼缝融合、色度空间降转、双线性插值以及姿态融合;

具体如下:

s3.1:根据外部输入数据,对gpu进行初始化;

s3.2:全景模式属性配置:根据定制顶点着色器来计算球面xyz坐标,2~n个拼接源的uv(纹理)坐标、顶点顺序坐标、并对拼接源进行拼接融合;如图3所示,每一行和每一列的单元数都是通过lut从拼接源的原图上得到的,通过对行数和列数的配置,可以对渲染的质量和效率进行平衡;

s3.3:边界融合矩阵属性配置:如图4所示,根据定制片元着色器来对外部输入源进行加权处理、双线性插值处理;并配置yuv空间到rgb空间的变换矩阵,将每一帧的yuv数据,转换成适合lcd显示的rgb信息;

其中,对于最耗时的双线性插值,每个新的uv坐标位置(u,v),都需要周围四个位置(u1,v1),(u1,v2),(u2,v1),(u2,v2)及其对应的值来参与运算,而且是浮点运算,所述浮点运算公式:

f(u,v)=f(u1v1)*(u2-u)*(v2-v)/(u2-u)/(v2-v)+

f(u2v1)*(u-u1)*(v2-v)/(u2-u1)/(v2-v1)+

f(u1v2)*(u2-u)*(v-v1)/(u2-u1)/(v2-v1)+

f(u2v2)*(u-u1)*(v-v1)/(u2-u1)/(v2-v1);

s3.4:防抖补偿矩阵属性配置:如图5所示,根据输入的位姿信息,基于配置好的防抖补偿矩阵,进行姿态融合,得到最终投影;

s4:利用vpu进行编码输出,利用cpu进行推流;

在传统的视频制作中,视频编码是重中之重,但是对于全景模式或3d模式的制作,视频编码不是最重要的,但也是很重要的环节,本发明利用vpu进行硬件编码,并按需对输出进行流媒体推流。

s5:按照全景视频或者图像的需求,进行循环迭代;

对于反畸变、logo、水印可以看作是常用渲染的一种特殊形式,也是同样的逻辑,通过顶点着色器配置和片元着色器的定制,只是在常用渲染的同时,做反畸变处理,水印、logo做渲染输出。

对于3d,只是把左右双眼的数据分别做一次上述的姿态融合,最后按照左右式或上下式进行封装输出。

综上所述,本发明解决了实时拼接的问题,综合cpu、gpu、vpu、陀螺仪等与vr相关的公共属性,针对通用手持设备的芯片进行系统级的优化,在实现实时拼接的同时做到防抖补偿、编码输出和推流。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1