全景图生成方法、装置、计算机可读存储介质及电子设备
技术领域
本公开涉及计算机技术领域,尤其是一种全景图生成方法、装置、计算机可读存储介质及电子设备。
背景技术
目前,全景图被广泛地应用于VR场景。在一些领域,诸如地图、房屋租赁、室内装修等领域,使用全景图可以以近似实景的方式向用户展示周围的环境。同时全景图包含了大量的场景信息,能有效地应用于深度图估计算法。
在全景图的拍摄过程中,通常需要用户手持相机原地以竖直方向为轴旋转一周,因此,拍摄的全景图的垂直方向的视场角有限。
发明内容
为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种全景图生成方法、装置、计算机可读存储介质及电子设备。
本公开的实施例提供了一种全景图生成方法,该方法包括:获取用于生成全景图的至少两个图像序列,其中,至少两个图像序列包括至少一个离散方式拍摄的图像序列;基于至少两个图像序列的拍摄方式,确定至少两个图像序列中的有效图像,并确定有效图像之间的连接关系;确定相机的内参;基于内参和连接关系,确定有效图像对应的相机姿态角;基于相机姿态角,将有效图像映射至以相机为中心的映射面,得到全景图。
在一些实施例中,基于至少两个图像序列的拍摄方式,确定至少两个图像序列中的有效图像,并确定有效图像之间的连接关系,包括:响应于确定至少两个图像序列中的每个图像序列为横向离散方式拍摄得到的,对于至少两个图像序列中的每个图像序列,确定图像序列中的每个图像为有效图像,并通过特征提取与特征匹配确定图像序列中的图像之间的连接关系。
在一些实施例中,基于相机姿态角,将有效图像映射至以相机为中心的映射面,得到全景图,包括:调整竖直方向排列的图像的偏航角至一致;对于至少两个图像序列中的每个图像序列,基于图像序列中的每个图像的调整偏航角后的相机姿态角,将图像序列中的每个图像映射至映射面,得到图像序列对应的子全景图。确定所得到的各个子全景图的特征;基于各个子全景图的特征,合并各个子全景图,得到最终的全景图。
在一些实施例中,基于至少两个图像序列的拍摄方式,确定至少两个图像序列中的有效图像,并确定有效图像之间的连接关系,包括:响应于确定至少两个图像序列中的每个图像序列为纵向离散方式拍摄得到的,对于至少两个图像序列中的每个图像序列,确定图像序列中的目标图像与其他图像之间的映射关系;基于映射关系,将其他图像融合至目标图像,得到图像序列对应的融合图像作为有效图像;通过特征提取与特征匹配确定所得到的各个融合图像之间的连接关系。
在一些实施例中,基于相机姿态角,将有效图像映射至以相机为中心的映射面,得到全景图,包括:对于各个融合图像中的每个融合图像,将融合图像映射至映射面,得到融合图像对应的子全景图;确定所得到的各个子全景图的特征;基于各个子全景图的特征,合并各个子全景图,得到最终的全景图。
在一些实施例中,基于至少两个图像序列的拍摄方式,确定至少两个图像序列中的有效图像,并确定有效图像之间的连接关系,包括:响应于确定至少两个图像序列中的第一图像序列为横向离散方式拍摄得到的,且其他图像序列为横向连续方式拍摄得到的,确定第一图像序列包括的每个图像为有效图像;并通过特征提取与特征匹配确定第一图像序列中的每个图像之间的连接关系;对于其他图像序列中的每个图像序列,确定图像序列中的关键帧图像为有效图像,并通过特征提取与特征匹配确定关键帧图像与间图像序列之间的连接关系。
在一些实施例中,基于相机姿态角,将有效图像映射至以相机为中心的映射面,得到全景图,包括:将第一图像序列中的每个图像映射至映射面,得到第一图像序列对应的子全景图;将关键帧图像映射至映射面,得到映射图像;确定映射图像与子全景图的特征;基于映射图像与子全景图的特征,合并映射图像和子全景图,得到最终的全景图。
根据本公开实施例的另一个方面,提供了一种全景图生成装置,该装置包括:获取模块,用于获取用于生成全景图的至少两个图像序列,其中,至少两个图像序列包括至少一个离散方式拍摄的图像序列;第一确定模块,用于基于至少两个图像序列的拍摄方式,确定至少两个图像序列中的有效图像,并确定有效图像之间的连接关系;第二确定模块,用于确定相机的内参;第三确定模块,用于基于内参和连接关系,确定有效图像对应的相机姿态角;映射模块,用于基于相机姿态角,将有效图像映射至以相机为中心的映射面,得到全景图。
在一些实施例中,第一确定模块包括:第一确定单元,用于响应于确定至少两个图像序列中的每个图像序列为横向离散方式拍摄得到的,对于至少两个图像序列中的每个图像序列,确定图像序列中的每个图像为有效图像,并通过特征提取与特征匹配确定图像序列中的图像之间的连接关系。
在一些实施例中,映射模块包括:调整单元,用于调整竖直方向排列的图像的偏航角至一致;第一映射单元,用于对于至少两个图像序列中的每个图像序列,基于图像序列中的每个图像的调整偏航角后的相机姿态角,将图像序列中的每个图像映射至映射面,得到图像序列对应的子全景图。第二确定单元,用于确定所得到的各个子全景图的特征;第一合并单元,用于基于各个子全景图的特征,合并各个子全景图,得到最终的全景图。
在一些实施例中,第一确定模块包括:融合单元,用于响应于确定至少两个图像序列中的每个图像序列为纵向离散方式拍摄得到的,对于至少两个图像序列中的每个图像序列,确定图像序列中的目标图像与其他图像之间的映射关系;基于映射关系,将其他图像融合至目标图像,得到图像序列对应的融合图像作为有效图像;第三确定单元,用于通过特征提取与特征匹配确定所得到的各个融合图像之间的连接关系。
在一些实施例中,映射模块包括:第二映射单元,用于对于各个融合图像中的每个融合图像,将融合图像映射至映射面,得到融合图像对应的子全景图;第四确定单元,用于确定所得到的各个子全景图的特征;第二合并单元,用于基于各个子全景图的特征,合并各个子全景图,得到最终的全景图。
在一些实施例中,第一确定模块包括:第五确定单元,用于响应于确定至少两个图像序列中的第一图像序列为横向离散方式拍摄得到的,且其他图像序列为横向连续方式拍摄得到的,确定第一图像序列包括的每个图像为有效图像;并通过特征提取与特征匹配确定第一图像序列中的每个图像之间的连接关系;第六确定单元,用于对于其他图像序列中的每个图像序列,确定图像序列中的关键帧图像为有效图像,并通过特征提取与特征匹配确定关键帧图像与间图像序列之间的连接关系。
在一些实施例中,映射模块包括:第三映射单元,用于将第一图像序列中的每个图像映射至映射面,得到第一图像序列对应的子全景图;第四映射单元,用于将关键帧图像映射至映射面,得到映射图像;第七确定单元,用于确定映射图像与子全景图的特征;第三合并单元,用于基于映射图像与子全景图的特征,合并映射图像和子全景图,得到最终的全景图。
根据本公开实施例的另一个方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序用于执行上述全景图生成方法。
根据本公开实施例的另一个方面,提供了一种电子设备,电子设备包括:处理器;用于存储处理器可执行指令的存储器;处理器,用于从存储器中读取可执行指令,并执行指令以实现上述全景图生成方法。
基于本公开上述实施例提供的全景图生成方法、装置、计算机可读存储介质及电子设备,通过在不同的拍摄方式下,从拍摄的图像序列中确定不同方式排列的有效图像,并确定有效图像之间的连接关系,然后对相机进行标定,得到相机内参,再基于内参和连接关系确定有效图像的相机姿态角,最后基于相机姿态角,将各个有效图像映射为全景图,从而可以根据不同用户的习惯,采用不同方式生成大视场角的全景图,提高了生成全景图的灵活性和效率。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本公开所适用的***图。
图2是本公开一示例性实施例提供的全景图生成方法的流程示意图。
图3是本公开另一示例性实施例提供的全景图生成方法的流程示意图。
图4是本公开的实施例的全景图生成方法的横向离散方式拍摄的示例性示意图。
图5是本公开又一示例性实施例提供的全景图生成方法的流程示意图。
图6是本公开的实施例的全景图生成方法的纵向离散方式拍摄的示例性示意图。
图7是本公开又一示例性实施例提供的全景图生成方法的流程示意图。
图8是本公开的实施例的全景图生成方法的横向连续方式拍摄的示例性示意图。
图9是本公开一示例性实施例提供的全景图生成装置的结构示意图。
图10是本公开另一示例性实施例提供的全景图生成装置的结构示意图。
图11是本公开一示例性实施例提供的电子设备的结构图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机***、服务器等电子设备,其可与众多其它通用或专用计算***环境或配置一起操作。适于与终端设备、计算机***、服务器等电子设备一起使用的众所周知的终端设备、计算***、环境和/或配置的例子包括但不限于:个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的***、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机***、大型计算机***和包括上述任何***的分布式云计算技术环境,等等。
终端设备、计算机***、服务器等电子设备可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机***/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
申请概述
现有的全景图拍摄设备存在垂直方向视角(VFOV)偏小的问题,导致深度估计的效果不佳,并且面向终端用户呈现时会受视角限制,因此需要在拍摄全景图时扩展垂直方向视角。
示例性***
图1示出了可以应用本公开的实施例的全景图生成方法或全景图生成装置的示例性***架构100。
如图1所示,***架构100可以包括终端设备101,网络102和服务器103。网络102用于在终端设备101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101通过网络102与服务器103交互,以接收或发送消息等。终端设备101上可以安装有各种通讯客户端应用,例如拍摄类应用、地图类应用、三维模型应用等。
终端设备101可以是各种电子设备,包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。
服务器103可以是提供各种服务的服务器,例如对终端设备101上传的图像序列进行处理的后台图像处理服务器。后台图像处理服务器可以对接收到的图像序列进行处理,得到全景图等信息。
需要说明的是,本公开的实施例所提供的全景图生成方法可以由服务器103执行,也可以由终端设备101执行,相应地,全景图生成装置可以设置于服务器103中,也可以设置于终端设备101中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。在图像序列不需要从远程获取的情况下,上述***架构可以不包括网络,只包括服务器或终端设备。
示例性方法
图2是本公开一示例性实施例提供的全景图生成方法的流程示意图。本实施例可应用在电子设备(如图1所示的终端设备101或服务器103)上,如图2所示,该方法包括如下步骤:
步骤201,获取用于生成全景图的至少两个图像序列。
在本实施例中,电子设备可以从本地或从远程获取用于生成全景图的至少两个图像序列。其中,图像序列可以是由电子设备上集成的相机或与电子设备连接的相机对周围的场景进行拍摄得到的,至少两个图像序列包括至少一个离散方式拍摄的图像序列。离散方式拍摄是指,相机在某个位置以一定的姿态拍摄一张图像,然后改变相机的姿态和/或位置再拍摄一张图像,重复该操作,得到图像序列。图像序列中的图像的排列方式可以是横向的也可以是纵向的。
作为示例,横向排列的一行图像可以为一个图像序列,或纵向排列的一列图像可以为一个图像序列。
步骤202,基于至少两个图像序列的拍摄方式,确定至少两个图像序列中的有效图像,并确定有效图像之间的连接关系。
在本实施例中,电子设备可以基于至少两个图像序列的拍摄方式,确定至少两个图像序列中的有效图像,并确定有效图像之间的连接关系。相机拍摄的方式可以是离散方式(即相机停留到一个位置拍摄一张图像)拍摄的,也可以是连续方式(例如拍摄视频的方式)拍摄的。有效图像是用于映射到三维映射面从而生成全景图的图像。例如视频拍摄方式的关键帧。
步骤203,确定相机的内参。
在本实施例中,电子设备可以确定相机的内参。相机的内参通常为内参数矩阵(Camera Intrinsics)K。相机的内参可以是固定的,即相机的内参是已知的,电子设备可以获取预先输入的内参。相机的内参还可以通过标定得到,电子设备可以利用步骤201得到的图像序列,对相机进行标定,得到相机的内参。相机内参标定方法是目前广泛使用的公知技术,这里不再赘述。
步骤204,基于内参和连接关系,确定有效图像对应的相机姿态角。
在本实施例中,电子设备可以基于内参和连接关系,确定有效图像对应的相机姿态角。其中,相机姿态角用于表征相机在三维坐标系下的拍摄方向。上述三维坐标系可以是以相机位置为原点建立的直角坐标系。姿态角可以包括俯仰角(pitch)、偏航角(yaw)、滚转角(roll)。其中,俯仰角用于表征相机的光轴沿竖直方向的偏转,偏航角用于表征相机的光轴在水平面上的偏转,滚转角用于表征相机沿光轴翻滚的程度。
电子设备可以基于内参和图像间的连接关系,按照现有的各种方法确定相机姿态角。例如,确定相机姿态角的方法可以包括但不限于以下至少一种:比如光度误差,重投影误差,3D几何误差等等。
步骤205,基于相机姿态角,将有效图像映射至以相机为中心的映射面,得到全景图。
在本实施例中,电子设备可以基于相机姿态角,将有效图像映射至以相机为中心的映射面,得到全景图。具体地,全景图可以是映射到各种形状(例如球形、柱形等)的映射面的图像。以球心(或圆柱中心)为中心朝某一个方向建立参考坐标系,则相机拍摄得到的平面图像的坐标系与上述参考坐标系之间存在一个转换关系,该转换关系可以由相机姿态角表征,相机姿态角表明了将平面图像映射至全景图的哪一部分。需要说明的是,将二维图像映射到三维映射面的方法是目前的公知技术,这里不再赘述。
本公开的上述实施例提供的方法,通过在不同的拍摄方式下,从拍摄的图像序列中确定不同方式排列的有效图像,并确定有效图像之间的连接关系,然后对相机进行标定,得到相机内参,再基于内参和连接关系确定有效图像的相机姿态角,最后基于相机姿态角,将各个有效图像映射为全景图,从而可以根据不同用户的习惯,采用不同方式生成大视场角的全景图,提高了生成全景图的灵活性和效率。
进一步参考图3,示出了全景图生成方法的又一个实施例的流程示意图。如图3所示,全景图生成方法包括如下步骤:
步骤301,获取用于生成全景图的至少两个图像序列。
在本实施例中,步骤301与图2对应实施例中的步骤201基本一致,这里不再赘述。
步骤302,响应于确定至少两个图像序列中的每个图像序列为横向离散方式拍摄得到的,对于至少两个图像序列中的每个图像序列,确定图像序列中的每个图像为有效图像,并通过特征提取与特征匹配确定图像序列中的图像之间的连接关系。
在本实施例中,横向离散方式拍摄得到的图像,从上至下可以分布至少两行,每行即为一个图像序列。作为示例,如图4所示,相机在三维空间中按照图中箭头的方向水平旋转360°拍摄三次,可以得到三行图像,即三个图像序列,每个图像序列对应于一个俯仰角。
本实施例中的每个图像序列包括的每个图像均为有效图像,即这些图像均可以映射到全景图中。
电子设备可以利用现有的特征提取方法提取各个图像中的特征点。作为示例,特征提取算法可以包括但不限于以下至少一种:SIFT(Scale Invariant FeatureTransform,尺度不变特征变换),SURF(Speeded Up Robust Features,改进了特征的提取和描述方式),ORB(Oriented FAST and Rotated BRIEF,快速特征点提取和描述的算法)等。得到特征点后,可以对特征点进行匹配,将表征空间中相同的点连接,从而确定图像之间的连接关系。
步骤303,确定相机的内参。
在本实施例中,步骤303与图2对应实施例中的步骤203基本一致,这里不再赘述。
步骤304,基于内参和连接关系,确定有效图像对应的相机姿态角。
在本实施例中,步骤304与图2对应实施例中的步骤204基本一致,这里不再赘述。
步骤305,调整竖直方向排列的图像的偏航角至一致。
如图4所示,每列图像的偏航角(yaw)可能存在偏差,导致上下两个相邻的图像错位,通过调整偏航角,可以使上下相邻的图像对齐,有利于提高生成全景图的准确性。
步骤306,对于至少两个图像序列中的每个图像序列,基于图像序列中的每个图像的调整偏航角后的相机姿态角,将图像序列中的每个图像映射至映射面,得到图像序列对应的子全景图。
在本实施例中,对于某个图像序列,基于该图像序列中的每个图像的相机姿态角,可以确定图像与全景图的映射关系(即图像中的像素点映射到全景图的映射面上的位置),根据映射关系,可以生成该图像序列对应的子全景图。
步骤307,确定所得到的各个子全景图的特征。
在本实施例中,电子设备可以按照现有的特征提取方法(例如上述步骤302中描述的各种算法),确定各个子全景图的特征。
步骤308,基于各个子全景图的特征,合并各个子全景图,得到最终的全景图。
在本实施例中,电子设备可以基于各个子全景图的特征,将各个子全景图连接到一起,并对连接到一起的各个子全景图的像素进行融合,从而得到最终的全景图。作为示例,可以对分别位于两个互相连接的子全景图中的表征同一个三维空间点的像素点的颜色值取平均值(或基于其他权重进行加权求和),得到最终的全景图中的像素点的颜色值。
上述图3对应实施例提供的方法,在拍摄方式为横向离散方式时,基于每个图像序列中的各个图像间的连接关系,生成各个图像序列分别对应的子全景图,再将子全景图合并,得到最终的全景图,横向离散方式的拍摄速度快,各个子全景图的生成可以并行执行,从而有利于提高全景图的效率。
进一步参考图5,示出了全景图生成方法的又一个实施例的流程示意图。如图5所示,全景图生成方法包括如下步骤:
步骤501,获取用于生成全景图的至少两个图像序列。
在本实施例中,步骤501与图2对应实施例中的步骤201基本一致,这里不再赘述。
步骤502,响应于确定至少两个图像序列中的每个图像序列为纵向离散方式拍摄得到的,对于至少两个图像序列中的每个图像序列,确定图像序列中的目标图像与其他图像之间的映射关系;基于映射关系,将其他图像融合至目标图像,得到图像序列对应的融合图像作为有效图像。
在本实施例中,纵向离散方式拍摄得到的图像,从左至右可以分布至少两列,每列即为一个图像序列。作为示例,如图6所示,相机在三维空间中可以按照图中箭头的方向水平旋转360°拍摄,可以得到多列图像,每一列为一个图像序列。
上述目标图像可以是预先指定的图像,例如,对于如图6所示的一列图像,位于中间的图像可以为目标图像。电子设备可以利用现有的特征提取方法提取一个图像序列中的每个图像的特征点,在利用特征点进行特征匹配,得到图像间的单应性矩阵,从而确定其他图像与目标图像的映射关系。
电子设备利用映射关系,可以将将其他图像融合至目标图像,从而得到融合图像作为有效图像。
步骤503,通过特征提取与特征匹配确定所得到的各个融合图像之间的连接关系。
在本实施例中,电子设备可以按照上述图3对应实施例中的步骤302中描述的特征提取与特征匹配方法,确定所得到的各个融合图像之间的连接关系。
步骤504,确定相机的内参。
在本实施例中,步骤504与图2对应实施例中的步骤203基本一致,这里不再赘述。
步骤505,基于内参和连接关系,确定有效图像对应的相机姿态角。
在本实施例中,步骤505与图2对应实施例中的步骤204基本一致,这里不再赘述。
步骤506,对于各个融合图像中的每个融合图像,将融合图像映射至映射面,得到融合图像对应的子全景图。
在本实施例中,对于某个融合图像,基于融合图像的相机姿态角,可以确定融合图像与全景图的映射关系(即融合图像中的像素点映射到全景图的映射面上的位置),根据映射关系,可以生成该融合图像对应的子全景图。
步骤507,确定所得到的各个子全景图的特征。
在本实施例中,电子设备可以按照现有的特征提取方法(例如上述步骤302中描述的各种算法),确定各个子全景图的特征。
步骤508,基于各个子全景图的特征,合并各个子全景图,得到最终的全景图。
在本实施例中,步骤508与图3对应实施例中的步骤308基本一致,这里不再赘述。
上述图5对应实施例提供的方法,在拍摄方式为纵向离散方式时,首先融合每个图像序列中的图像,得到融合图像,再将各个融合图像映射到全景图的映射面上,生成各个图像序列分别对应的子全景图,再将子全景图合并,得到最终的全景图,纵向离散方式由于需要先进行图像融合,因此特征提取和匹配的调用次数更多,对图像的处理过程更细致,可以改善拼接产生的重影、拼缝等现象,提高生成的全景图的质量。
进一步参考图7,示出了全景图生成方法的又一个实施例的流程示意图。如图7所示,全景图生成方法包括如下步骤:
步骤701,获取用于生成全景图的至少两个图像序列。
在本实施例中,步骤701与图2对应实施例中的步骤201基本一致,这里不再赘述。
步骤702,响应于确定至少两个图像序列中的第一图像序列为横向离散方式拍摄得到的,且其他图像序列为横向连续方式拍摄得到的,确定第一图像序列包括的每个图像为有效图像;并通过特征提取与特征匹配确定第一图像序列中的每个图像之间的连接关系。
在本实施例中,第一图像序列为相机先拍摄的图像序列。如图8所示,801为第一图像序列。拍摄完第一图像序列后,通过改变相机的俯仰角,继续以横向连续方式拍摄图像序列,横向连续方式拍摄的图像序列通常可以为视频方式拍摄的图像帧序列。如图8所示,802和803为横向连续方式拍摄的图像序列。
电子设备可以按照步骤302中描述的特征提取与特征匹配方法,确定第一图像序列中的每个图像之间的连接关系。
步骤703,对于其他图像序列中的每个图像序列,确定图像序列中的关键帧图像为有效图像,并通过特征提取与特征匹配确定关键帧图像与第一图像序列之间的连接关系。
在本实施例中,如图8所示,标记“*”的帧即为关键帧。,关键帧(又称为I帧)是在压缩后的视频中,完整保留图像数据的帧,在对关键帧进行解码时,只需要本帧的图像数据就可以完成解码。在视频中,关键帧通常是视频中的场景、物体图像等发生明显变化时的帧,即关键帧中包含一端时间范围内对应的多个帧的关键信息。通常,在时间上相邻关的键帧之间的时间间隔较合理,不会太长也不会太短。通过提取关键帧,可以从众多图像帧中提取少量图像,这些图像之间包含多个对应于不同空间点的特征点,且相邻关键帧的之间有足够多的匹配特征点。电子设备可以按照各种方法提取关键帧,例如基于颜色特征法、基于运动分析法、基于聚类的方法等。
电子设备可以按照步骤302中描述的特征提取与特征匹配方法,确定关键帧图像与间图像序列之间的连接关系。
步骤704,确定相机的内参。
在本实施例中,步骤704与图2对应实施例中的步骤203基本一致,这里不再赘述。
步骤705,基于内参和连接关系,确定有效图像对应的相机姿态角。
在本实施例中,步骤705与图2对应实施例中的步骤204基本一致,这里不再赘述。
步骤706,将第一图像序列中的每个图像映射至映射面,得到第一图像序列对应的子全景图。
在本实施例中,对于某个图像序列,基于图像的相机姿态角,可以确定图像序列中的每个图像与全景图的映射关系(即图像中的像素点映射到全景图的映射面上的位置),根据映射关系,可以生成图像序列对应的子全景图。
步骤707,将关键帧图像映射至映射面,得到映射图像。
在本实施例中,可以按照步骤706同样的方法,将每个关键帧图像映射至映射面,得到每个关键帧图像对应的映射图像。
步骤708,确定映射图像与子全景图的特征。
在本实施例中,电子设备可以按照上述图3对应实施例中的步骤302中描述的特征提取与特征匹配方法,确定映射图像与子全景图的特征。
步骤709,基于映射图像与子全景图的特征,合并映射图像和子全景图,得到最终的全景图。
在本实施例中,电子设备可以基于各个映射图像与子全景图的特征,将各个映射图像与子全景图连接到一起,并对连接到一起的图像的像素进行融合,从而得到最终的全景图。
上述图7对应实施例提供的方法,在第一图像序列为横向离散方式拍摄得到,其他图像序列为横向连续方式拍摄得到时,首先基于第一图像序列生成子全景图,在提取其他图像序列中的关键帧图像,将关键帧图像映射到全景图的映射面,最后合并映射图像和全景图,得到最终的全景图。由于视频的信息量相对于离散图像的信息量大很多,并且关键帧的选择很灵活,因此,本实施例可以提高图像拼接生成全景图的成功率。
示例性装置
图9是本公开一示例性实施例提供的全景图生成装置的结构示意图。本实施例可应用在电子设备上,如图9所示,全景图生成装置包括:获取模块901,用于获取用于生成全景图的至少两个图像序列,其中,至少两个图像序列包括至少一个离散方式拍摄的图像序列;第一确定模块902,用于基于至少两个图像序列的拍摄方式,确定至少两个图像序列中的有效图像,并确定有效图像之间的连接关系;第二确定模块903,用于确定相机的内参;第三确定模块904,用于基于内参和连接关系,确定有效图像对应的相机姿态角;映射模块905,用于基于相机姿态角,将有效图像映射至以相机为中心的映射面,得到全景图。
在本实施例中,获取模块901可以从本地或从远程获取用于生成全景图的至少两个图像序列。其中,图像序列可以是由全景图生成装置上集成的相机或与上述装置连接的相机对周围的场景进行拍摄得到的,至少两个图像序列包括至少一个离散方式拍摄的图像序列。离散方式拍摄是指,相机在某个位置以一定的姿态拍摄一张图像,然后改变相机的姿态和/或位置再拍摄一张图像,重复该操作,得到图像序列。图像序列中的图像的排列方式可以是横向的也可以是纵向的。
作为示例,横向排列的一行图像可以为一个图像序列,或纵向排列的一列图像可以为一个图像序列。
在本实施例中,第一确定模块902可以基于至少两个图像序列的拍摄方式,确定至少两个图像序列中的有效图像,并确定有效图像之间的连接关系。相机拍摄的方式可以是离散方式(即相机停留到一个位置拍摄一张图像)拍摄的,也可以是连续方式(例如拍摄视频的方式)拍摄的。有效图像是用于映射到三维映射面从而生成全景图的图像。例如视频拍摄方式的关键帧。
在本实施例中,第二确定模块903可以确定相机的内参。相机的内参通常为内参数矩阵(Camera Intrinsics)K。相机的内参可以是固定的,即相机的内参是已知的,第二确定模块903可以获取预先输入的内参。相机的内参还可以通过标定得到,电子设备可以利用步骤201得到的图像序列,对相机进行标定,得到相机的内参。相机内参标定方法是目前广泛使用的公知技术,这里不再赘述。
在本实施例中,第三确定模块904可以基于内参和连接关系,确定有效图像对应的相机姿态角。其中,相机姿态角用于表征相机在三维坐标系下的拍摄方向。上述三维坐标系可以是以相机位置为原点建立的直角坐标系。姿态角可以包括俯仰角(pitch)、偏航角(yaw)、滚转角(roll)。其中,俯仰角用于表征相机的光轴沿竖直方向的偏转,偏航角用于表征相机的光轴在水平面上的偏转,滚转角用于表征相机沿光轴翻滚的程度。
上述第三确定模块904可以基于内参和图像间的连接关系,按照现有的各种方法确定相机姿态角。例如,确定相机姿态角的方法可以包括但不限于以下至少一种:比如光度误差,重投影误差,3D几何误差等等。
在本实施例中,映射模块905可以基于相机姿态角,将有效图像映射至以相机为中心的映射面,得到全景图。具体地,全景图可以是映射到各种形状(例如球形、柱形等)的映射面的图像。以球心(或圆柱中心)为中心朝某一个方向建立参考坐标系,则相机拍摄得到的平面图像的坐标系与上述参考坐标系之间存在一个转换关系,该转换关系可以由相机姿态角表征,相机姿态角表明了将平面图像映射至全景图的哪一部分。需要说明的是,将二维图像映射到三维映射面的方法是目前的公知技术,这里不再赘述。
参照图10,图10是本公开另一示例性实施例提供的全景图生成装置的结构示意图。
在一些可选的实现方式中,第一确定模块902可以包括:第一确定单元9021,用于响应于确定至少两个图像序列中的每个图像序列为横向离散方式拍摄得到的,对于至少两个图像序列中的每个图像序列,确定图像序列中的每个图像为有效图像,并通过特征提取与特征匹配确定图像序列中的图像之间的连接关系。
在一些可选的实现方式中,映射模块905可以包括:调整单元90501,用于调整竖直方向排列的图像的偏航角至一致;第一映射单元90502,用于对于至少两个图像序列中的每个图像序列,基于图像序列中的每个图像的调整偏航角后的相机姿态角,将图像序列中的每个图像映射至映射面,得到图像序列对应的子全景图。第二确定单元90503,用于确定所得到的各个子全景图的特征;第一合并单元90504,用于基于各个子全景图的特征,合并各个子全景图,得到最终的全景图。
在一些可选的实现方式中,第一确定模块902可以包括:融合单元9022,用于响应于确定至少两个图像序列中的每个图像序列为纵向离散方式拍摄得到的,对于至少两个图像序列中的每个图像序列,确定图像序列中的目标图像与其他图像之间的映射关系;基于映射关系,将其他图像融合至目标图像,得到图像序列对应的融合图像作为有效图像;第三确定单元9023,用于通过特征提取与特征匹配确定所得到的各个融合图像之间的连接关系。
在一些可选的实现方式中,映射模块905可以包括:第二映射单元90505,用于对于各个融合图像中的每个融合图像,将融合图像映射至映射面,得到融合图像对应的子全景图;第四确定单元90506,用于确定所得到的各个子全景图的特征;第二合并单元90507,用于基于各个子全景图的特征,合并各个子全景图,得到最终的全景图。
在一些可选的实现方式中,第一确定模块902可以包括:第五确定单元9024,用于响应于确定至少两个图像序列中的第一图像序列为横向离散方式拍摄得到的,且其他图像序列为横向连续方式拍摄得到的,确定第一图像序列包括的每个图像为有效图像;并通过特征提取与特征匹配确定第一图像序列中的每个图像之间的连接关系;第六确定单元9025,用于对于其他图像序列中的每个图像序列,确定图像序列中的关键帧图像为有效图像,并通过特征提取与特征匹配确定关键帧图像与间图像序列之间的连接关系。
在一些可选的实现方式中,映射模块905可以包括:第三映射单元90508,用于将第一图像序列中的每个图像映射至映射面,得到第一图像序列对应的子全景图;第四映射单元90509,用于将关键帧图像映射至映射面,得到映射图像;第七确定单元90510,用于确定映射图像与子全景图的特征;第三合并单元90511,用于基于映射图像与子全景图的特征,合并映射图像和子全景图,得到最终的全景图。
本公开上述实施例提供的全景图生成装置,通过在不同的拍摄方式下,从拍摄的图像序列中确定不同方式排列的有效图像,并确定有效图像之间的连接关系,然后对相机进行标定,得到相机内参,再基于内参和连接关系确定有效图像的相机姿态角,最后基于相机姿态角,将各个有效图像映射为全景图,从而可以根据不同用户的习惯,采用不同方式生成大视场角的全景图,提高了生成全景图的灵活性和效率。
示例性电子设备
下面,参考图11来描述根据本公开实施例的电子设备。该电子设备可以是如图1所示的终端设备101和服务器103中的任一个或两者、或与它们独立的单机设备,该单机设备可以与终端设备101和服务器103进行通信,以从它们接收所采集到的输入信号。
图11图示了根据本公开实施例的电子设备的框图。
如图11所示,电子设备1100包括一个或多个处理器1101和存储器1102。
处理器1101可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备1100中的其他组件以执行期望的功能。
存储器1102可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器1101可以运行程序指令,以实现上文的本公开的各个实施例的全景图生成方法以及/或者其他期望的功能。在计算机可读存储介质中还可以存储诸如图像序列等各种内容。
在一个示例中,电子设备1100还可以包括:输入装置1103和输出装置1104,这些组件通过总线***和/或其他形式的连接机构(未示出)互连。
例如,在该电子设备是终端设备101或服务器103时,该输入装置1103可以是相机、鼠标、键盘等设备,用于输入图像序列。在该电子设备是单机设备时,该输入装置1103可以是通信网络连接器,用于从终端设备101和服务器103接收所输入的图像序列。
该输出装置1104可以向外部输出各种信息,包括生成的全景图。该输出设备1104可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图11中仅示出了该电子设备1100中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备1100还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的全景图生成方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的全景图生成方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于***实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、***的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、***。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。