具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。
此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
如图1所示,是根据本申请实施例的基于三维场景的视频融合方法实施的系统结构示意图,其中在计算机终端上的处理包括:视频流中的一帧图像作为需要进行融合的视频帧,三维虚拟场景作为待进行融合的三维场景。根据所述视频流中的一帧图像,确定虚拟相机在世界坐标中的位置,并将视频投射到三维场景中。从而无需使用标定板的参数计算虚拟相机位置及三个轴旋转角度,,通过在视频帧的取点方式,再结合PNP算法计算出的虚拟相机在世界坐标中的位置,将视频显示到三维场景中与实景模型融合显示。
本申请实施例中一所提供的方法实施例可以在移动终端、计算机终端或者类似的装置中执行。以运行在计算机终端上为例,如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
如图2所示,该方法包括如下的步骤S201至步骤S204:
步骤S201,获取视频流中至少一帧二维图像中的多组像素坐标信息以及所述多组像素坐标在三维场景中对应的世界坐标信息;
步骤S202,根据所述多组像素坐标信息、所述三维场景中对应的世界坐标信息、所述虚拟相机的内参矩阵、所述虚拟相机的畸变矩阵,获得所述虚拟相机的外参矩阵,其中所述虚拟相机的畸变矩阵置零;
步骤S203,根据所述虚拟相机的外参矩阵,确定所述虚拟相机在世界坐标中的位置;
步骤S204,根据所述虚拟相机在世界坐标系中的位置、所述虚拟相机的内参矩阵、所述虚拟相机的外参矩阵,将所述视频流逐帧投射到所述三维场景中进行融合。
从以上的描述中,可以看出,本申请实现了如下技术效果:
采用获取视频流中至少一帧二维图像中的多组像素坐标信息以及所述多组像素坐标在三维场景中对应的世界坐标信息的方式,通过根据所述多组像素坐标信息、所述三维场景中对应的世界坐标信息、所述虚拟相机的内参矩阵、所述虚拟相机的畸变矩阵,获得所述虚拟相机的外参矩阵,其中所述虚拟相机的畸变矩阵置零,根据所述虚拟相机的外参矩阵,确定所述虚拟相机在世界坐标中的位置,达到了根据所述虚拟相机在世界坐标系中的位置、所述虚拟相机的内参矩阵、所述虚拟相机的外参矩阵,将所述视频流逐帧投射到所述三维场景中进行融合的目的,从而实现了无需使用标定板的参数计算相机内外参数,通过获取视频帧中的取点位置进行PNP计算,并根据得到的相机位置将视频显示到三维场景中与实景模型融合显示的技术效果,进而解决了标定板容易造成误差,影响视频融合的技术问题。
上述步骤S201中首先需要获取所述视频流中的至少一帧二维图像。需要注意的是所述二维图像,是相对于所述三维场景而言的图像,通常而言通过相机获取得到。在二维图像中进行取点,根据图像得到多组像素坐标信息,同时得到所述多组像素坐标信息在所述的三维场景中对应的世界坐标信息。
作为一种可选的实施方式,在通过视频流获取图像帧的过程中,在视频流中截取一帧图像,并将其作为二维场景图像,另一个则是待融合的三维场景。
作为一种优选的实施方式,在所述二维场景图像中拾取四组像素坐标就是四个点。
具体实施时,在图像中的取点规则包括但不限于:首先确定第一点,然后第二个点在第一点水平方向上,其次第三个点在第一个点垂直方向,最后第四个点任意位置。通过上述四个点,可算出一组水平像素距离及实际距离,一组垂直像素距离及实际距离。
上述步骤S202中根据所述多组像素坐标信息、所述三维场景中对应的世界坐标信息、所述虚拟相机的内参矩阵、所述虚拟相机的畸变矩阵,即根据内参矩阵、畸变矩阵以及取点得到的像素坐标信息和对应的世界坐标信息,确定并获得所述虚拟相机的外参矩阵。即根据多个像素点数组以及与像素点组对应的物理坐标数组、相机内矩阵、畸变参数矩阵,通过PNP计算出平移向量和旋转向量。
作为一种可选的实施方式,由于视频流是用于在三维场景中进行视频融合,是虚拟相机,所以使用参数与真实物理相机不同。畸变参数全部设置为0。
作为一种优选的实施方式,所述虚拟相机的内参矩阵可以根据所述多组像素坐标信息以及所述三维场景中对应的世界坐标信息,计算得到。
优选地,所述虚拟相机的内参矩阵中包括:根据所述至少一帧二维图像的中心点位置确定出所述虚拟相机内参数cx、cycx = w/2,cy=h/2,其中,所述cx、所述cy用以作为所述虚拟相机光轴在图像坐标系中的偏移量;根据所述至少一帧二维图像中取得的像素宽度px以及高度py,并在所述三维场景中取得实际宽度ox、高度oy以及所述视频相机的对地高度d,确定虚拟相机的焦距fx=d*px/ox,fy=d*py/oy。
具体实施时,相机内参数cx、cy是相机光轴在图像坐标系中的偏移量,在当前场景中,使用图像中心点位置即cx = w/2,cy=h/2;从图像中取得的像素宽度(px)、高度(py),三维场景中取得实际宽度(ox)、高度(oy)。视频相机到物体距离即相机对地高度(d);通过公式fx=d*px/ox,fy=d*py/oy计算得到焦距fx、fy。
上述步骤S203中根据确定的所述虚拟相机的外参矩阵,计算出所述虚拟相机在世界坐标中的位置。
作为一种可选的实施方式,从所述虚拟相机的旋转向量中提取旋转矩阵,并计算相机坐标系的三轴旋转欧拉角,其中所述三轴旋转欧拉角对应于在所述三维场景下的旋转角、滚转角、俯仰角。
具体实施时,旋转向量中提取旋转矩阵,计算相机坐标系三轴旋转欧拉角,对应于三维场景下的旋转角、滚转角、俯仰角。
作为一种优选的实施方式,从所述虚拟相机的平移向量提取平移矩阵,并将所述平移矩阵的坐标至原点进行反向旋转之后,获得所述虚拟相机在世界坐标中的位置。
具体实施时,平移矩阵坐标至原点,进行反向旋转,获得相机在世界坐标系位置,即虚拟相机在世界坐标中的位置。
上述步骤S204中根据上述步骤中获取的所述虚拟相机在世界坐标系中的位置、所述虚拟相机的内参矩阵、所述虚拟相机的外参矩阵,将所述视频流逐帧投射到所述三维场景中进行融合。
作为一种可选的实施方式,所述虚拟相机的内参矩阵中涵盖了虚拟相机的FOV距离。
作为一种优选的实施方式,所述虚拟相机的外参矩阵包括旋转角、滚转角、俯仰角。
作为一种优选的实施方式,将所述视频流逐帧投射到所述三维场景中进行融合后,进行显示时还需要根据实际场景中相机到地面的距离进行融合。
作为本实施例中的优选,所述获取视频流中至少一帧二维图像中的多组像素坐标信息以及所述多组像素坐标在三维场景中对应的世界坐标信息,还包括:所述至少一帧二维图像中的多组像素坐标信息至少包括:三组像素坐标信息,所述多组像素坐标在三维场景中对应的世界坐标信息包括:所述三组像素坐标信息对应的世界坐标信息;所述三组像素坐标信息按照如下步骤进行取点:对于像素坐标对应的第一位置点、第二位置点在所述第一水平方向上、第三位置个点在所述第一位置个点的垂直方向上;根据所述第一位置点、第二位置点以及第三位置点,得到所述对应的世界坐标信息。
具体实施时,通过筛选出至少三组像素坐标信息以及所述三组像素坐标信息对应的世界坐标信息,得到的是至少三组像素点坐标以及对应的世界坐标信息。可以理解,世界坐标信息为绝对位置关系。像素坐标为相对位置关系,可能在选择是发生变化。取点的步骤包括对于像素坐标对应的第一位置点、第二位置点在所述第一水平方向上、第三位置个点在所述第一位置个点的垂直方向上;根据所述第一位置点、第二位置点以及第三位置点,得到所述对应的世界坐标信息。优选地,还可以确定出第四位置点,其中所述第四位置点可为任意位置。
作为本实施例中的优选,所述根据所述多组像素坐标信息、所述三维场景中对应的世界坐标信息、所述虚拟相机的内参矩阵、所述虚拟相机的畸变矩阵,获得所述虚拟相机的外参矩阵,其中所述虚拟相机的畸变矩阵置零,包括:根据至少三组像素点坐标信息、所述三维场景中对应的世界坐标信息、所述相机内矩阵、置零的所述畸变参数矩阵,计算出所述虚拟相机的平移向量以及旋转向量。
具体实施时,对于所述虚拟相机的外参矩阵,根据至少三组像素点坐标信息、所述三维场景中对应的世界坐标信息、所述相机内矩阵、置零的所述畸变参数矩阵,可以计算出。对应地,在所述虚拟相机的外参矩阵即包含所述虚拟相机的平移向量以及旋转向量。
作为本实施例中的优选,所述根据所述虚拟相机的外参矩阵,确定所述虚拟相机在世界坐标中的位置,包括:从所述虚拟相机的旋转向量中提取旋转矩阵,并计算相机坐标系的三轴旋转欧拉角,其中所述三轴旋转欧拉角对应于在所述三维场景下的旋转角、滚转角、俯仰角;从所述虚拟相机的平移向量提取平移矩阵,并将所述平移矩阵的坐标至原点进行反向旋转之后,获得所述虚拟相机在世界坐标中的位置。
具体实施时,首先从所述旋转向量中提取旋转矩阵,计算相机坐标系三轴旋转欧拉角,对应于三维场景下的旋转角、滚转角、俯仰角。然后将所述平移矩阵的平移矩阵坐标至原点,进行反向旋转,获得相机在世界坐标系位置,即虚拟相机在世界坐标中的位置。
作为本实施例中的优选,所述根据所述虚拟相机在世界坐标系中的位置、所述虚拟相机的内参矩阵、所述虚拟相机的外参矩阵,将所述视频流逐帧投射到所述三维场景中进行融合包括:根据所述虚拟相机在世界坐标中的位置、所述三维场景下的旋转角、滚转角、俯仰角、所述虚拟相机的FOV,将所述视频流逐帧投射到所述三维场景中进行融合,与预置实景模型融合显示。
具体实施时,预置实景模型是虚拟三维场景中的模型。在视频与所述预置实景模型融合显示的过程中,根据所述拟相机在世界坐标中的位置、所述三维场景下的旋转角、滚转角、俯仰角、所述虚拟相机的FOV作为参数,将所述视频流逐帧投射到所述三维场景中。
作为本实施例中的优选,所述根据所述虚拟相机在世界坐标系中的位置、所述虚拟相机的内参矩阵、所述虚拟相机的外参矩阵,将所述视频流逐帧投射到所述三维场景中进行融合,还包括:在所述视频流中的图像发生变化的情况下,根据所述虚拟相机在世界坐标系中的位置、所述虚拟相机的内参矩阵、所述虚拟相机的外参矩阵实时射到所述三维场景中进行更新、融合。
具体实施时,在所述视频流中的图像发生变化的情况下,根据所述虚拟相机在世界坐标系中的位置、所述虚拟相机的内参矩阵、所述虚拟相机的外参矩阵实时射到所述三维场景中进行更新,并且无需使用标定参数反算相机位置及三个轴旋转角度,就可以根据计算出的位置将视频显示到三维场景中与实景模型融合显示。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本申请实施例,还提供了一种用于实施上述方法的基于三维场景的视频融合装置,如图3所示,该装置包括:
第一获取模块301,用于获取视频流中至少一帧二维图像中的多组像素坐标信息以及所述多组像素坐标在三维场景中对应的世界坐标信息;
第二获取模块302,用于根据所述多组像素坐标信息、所述三维场景中对应的世界坐标信息、所述虚拟相机的内参矩阵、所述虚拟相机的畸变矩阵,获得所述虚拟相机的外参矩阵,其中所述虚拟相机的畸变矩阵置零;
确定模块303,用于根据所述虚拟相机的外参矩阵,确定所述虚拟相机在世界坐标中的位置;
融合模块304,用于根据所述虚拟相机在世界坐标系中的位置、所述虚拟相机的内参矩阵、所述虚拟相机的外参矩阵,将所述视频流逐帧投射到所述三维场景中进行融合。
上述第一获取模块301中首先需要获取所述视频流中的至少一帧二维图像。需要注意的是所述二维图像,是相对于所述三维场景而言的图像,通常而言通过相机获取得到。在二维图像中进行取点,根据图像得到多组像素坐标信息,同时得到所述多组像素坐标信息在所述的三维场景中对应的世界坐标信息。
作为一种可选的实施方式,在通过视频流获取图像帧的过程中,在视频流中截取一帧图像,并将其作为二维场景图像,另一个则是待融合的三维场景。
作为一种优选的实施方式,在所述二维场景图像中拾取四组像素坐标就是四个点。
具体实施时,在图像中的取点规则包括但不限于:首先确定第一点,然后第二个点在第一点水平方向上,其次第三个点在第一个点垂直方向,最后第四个点任意位置。通过上述四个点,可算出一组水平像素距离及实际距离,一组垂直像素距离及实际距离。
上述第二获取模块302中根据所述多组像素坐标信息、所述三维场景中对应的世界坐标信息、所述虚拟相机的内参矩阵、所述虚拟相机的畸变矩阵,即根据内参矩阵、畸变矩阵以及取点得到的像素坐标信息和对应的世界坐标信息,确定并获得所述虚拟相机的外参矩阵。即根据多个像素点数组以及与像素点组对应的物理坐标数组、相机内矩阵、畸变参数矩阵,通过PNP计算出平移向量和旋转向量。
作为一种可选的实施方式,由于视频流是用于在三维场景中进行视频融合,是虚拟相机,所以使用参数与真实物理相机不同。畸变参数全部设置为0。
作为一种优选的实施方式,所述虚拟相机的内参矩阵可以根据所述多组像素坐标信息以及所述三维场景中对应的世界坐标信息,计算得到。
优选地,所述虚拟相机的内参矩阵中包括:根据所述至少一帧二维图像的中心点位置确定出所述虚拟相机内参数cx、cycx = w/2,cy=h/2,其中,所述cx、所述cy用以作为所述虚拟相机光轴在图像坐标系中的偏移量;根据所述至少一帧二维图像中取得的像素宽度px以及高度py,并在所述三维场景中取得实际宽度ox、高度oy以及所述视频相机的对地高度d,确定虚拟相机的焦距fx=d*px/ox,fy=d*py/oy。
具体实施时,相机内参数cx、cy是相机光轴在图像坐标系中的偏移量,在当前场景中,使用图像中心点位置即cx = w/2,cy=h/2;从图像中取得的像素宽度(px)、高度(py),三维场景中取得实际宽度(ox)、高度(oy)。视频相机到物体距离即相机对地高度(d);通过公式fx=d*px/ox,fy=d*py/oy计算得到焦距fx、fy。
上述确定模块303中根据确定的所述虚拟相机的外参矩阵,计算出所述虚拟相机在世界坐标中的位置。
作为一种可选的实施方式,从所述虚拟相机的旋转向量中提取旋转矩阵,并计算相机坐标系的三轴旋转欧拉角,其中所述三轴旋转欧拉角对应于在所述三维场景下的旋转角、滚转角、俯仰角。
具体实施时,旋转向量中提取旋转矩阵,计算相机坐标系三轴旋转欧拉角,对应于三维场景下的旋转角、滚转角、俯仰角。
作为一种优选的实施方式,从所述虚拟相机的平移向量提取平移矩阵,并将所述平移矩阵的坐标至原点进行反向旋转之后,获得所述虚拟相机在世界坐标中的位置。
具体实施时,平移矩阵坐标至原点,进行反向旋转,获得相机在世界坐标系位置,即虚拟相机在世界坐标中的位置。
上述融合模块304中根据上述步骤中获取的所述虚拟相机在世界坐标系中的位置、所述虚拟相机的内参矩阵、所述虚拟相机的外参矩阵,将所述视频流逐帧投射到所述三维场景中进行融合。
作为一种可选的实施方式,所述虚拟相机的内参矩阵中涵盖了虚拟相机的FOV视场角。
作为一种优选的实施方式,所述虚拟相机的外参矩阵包括旋转角、滚转角、俯仰角。
作为一种优选的实施方式,将所述视频流逐帧投射到所述三维场景中进行融合后,进行显示时还需要根据实际场景中相机到地面的距离进行融合。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
为了更好的理解上述基于三维场景的视频融合方法流程,以下结合优选实施例对上述技术方案进行解释说明,但不用于限定本发明实施例的技术方案。
本申请实施例中的基于三维场景的视频融合方法,无需使用标定板的参数计算相机内外参数,通过获取视频帧中的取点位置进行PNP计算,并根据得到的相机位置将视频显示到三维场景中与实景模型融合显示。
如图4所示,是本申请实施例中基于三维场景的视频融合方法的流程示意图,实现的具体过程包括如下步骤:
S401,获取图像帧。
通过相机拍摄得到视频流,并获取连续的图像帧。
S402,确定图像帧中的特征点。
视频流中截取一帧图像,显示在界面左侧,右侧显示三维场景。在左侧二维视频图像拾取四组像素坐标就是四个点(至少三个点),右侧三维场景实景模型上,拾取对应世界坐标。具体地,取点规则包括:第二个点在第一点水平方向上,第三个点在第一个点垂直方向,第四个点任意位置。可算出一组水平像素距离及实际距离,一组垂直像素距离及实际距离。
S403,通过特征点计算相机参数。
因为视频是用于在三维场景中进行视频融合,是虚拟相机,所以使用参数与真实物理相机不同。畸变参数全部设置为0。
相机内参数cx、cy是相机光轴在图像坐标系中的偏移量,在此场景中,使用图像中心点位置即
cx = w/2,
cy=h/2
从图像中取得的像素宽度(px)、高度(py),三维场景中取得实际宽度(ox)、高度(oy)。虚拟相机到物体距离即相机对地高度(d)。
通过公式fx=d*px/ox,fy=d*py/oy计算得到焦距fx、fy。
S404,相机姿态估计。
基于PNP算法,根据四个像素点数组、对应的物理坐标数组、相机内矩阵、畸变参数矩阵,通过PNP计算出平移向量和旋转向量。
从旋转向量中提取旋转矩阵,计算相机坐标系三轴旋转欧拉角,对应于三维场景下的旋转角、滚转角、俯仰角。
平移矩阵坐标至原点,进行反向旋转,获得相机在世界坐标系位置,即虚拟相机在世界坐标中的位置。
S405,视频在三维场景实景融合显示。
根据上述步骤得出的相机位置,三轴旋转角,相机的FOV视场角、观测距离(虚拟相机到物体距离即相机对地的距离),将视频投射到三维场景中,与实景模型融合显示。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。