全景图生成方法及装置与流程

文档序号:13423056阅读:249来源:国知局
全景图生成方法及装置与流程

本发明涉及全景图技术领域,尤其涉及一种全景图生成方法及装置。



背景技术:

全景图是一种通过图像的方式来全方位展现周围环境的技术,。在生成全景图的过程中,首先需要在真实场景中从某一个固定点采集若干周围环境的图像;然后根据相应的投影变换关系,把这些图像投影到一个统一的全景坐标空间中;在这个坐标空间中,将这些图像拼接合成为一张完整的全景图。当播放全景图时,通过逆投影变换即可获得任一视点的图像,从而实现对周围场景任意视点的观察。

在拼接图像时,需要依赖多张图像之间的位置关系。在现有技术中,需要从相邻图像的重叠区域中提取足够多的特征点,根据这些特征点确定图像之间的位置关系。特征点的提取非常耗时,而且为便于提取足够多的特征点,需要相邻图像之间的重叠区域足够大(一般需要超过30%的重叠区),往往导致拍摄图像的数量较多,这两个因素导致现有技术在生成全景图时效率较低,耗时较长。



技术实现要素:

本发明的多个方面提供一种全景图生成方法及装置,用以提高全景图生成的效率。

本发明实施例提供一种全景图生成方法,包括:

获取智能移动设备通过鱼眼镜头对真实场景进行旋转拍摄得到的至少两张原始二维图像,其中,相邻原始二维图像的边界重合或相交;

获取所述智能移动设备在拍摄所述至少两张原始二维图像中的每张原始二维图像时在世界坐标系中的旋转矩阵;

根据所述智能移动设备在拍摄每张原始二维图像时在所述世界坐标系中的旋转矩阵,确定所述至少两张原始二维图像之间的相对位置;

根据所述至少两张原始二维图像之间的相对位置,将所述至少两张原始二维图像拼接成全景图。

可选地,所述根据所述智能移动设备在拍摄每张原始二维图像时在所述世界坐标系中的旋转矩阵,确定所述至少两张原始二维图像之间的相对位置,包括:

根据所述智能移动设备在拍摄每张原始二维图像时的设备坐标系相对于所述世界坐标系的旋转矩阵,计算所述至少两张原始二维图像之间的相对欧拉角。

可选地,所述根据所述智能移动设备在拍摄每张原始二维图像时的设备坐标系相对于所述世界坐标系的旋转矩阵,计算所述至少两张原始二维图像之间的相对欧拉角,包括:

从所述至少两张原始二维图像中,选择一张原始二维图像作为基准二维图像;

根据拍摄所述至少两张原始二维图像中其它原始二维图像时的设备坐标系相对于所述世界坐标系的旋转矩阵以及拍摄所述基准二维图像时的设备坐标系相对于所述世界坐标系的旋转矩阵,计算所述其它原始二维图像相对于所述基准二维图像的旋转矩阵;

将所述基准二维图像的欧拉角作为基准欧拉角,根据所述其它原始二维图像相对于所述基准图像的旋转矩阵,得到所述其它原始二维图像相对于所述基准二维图像的欧拉角。

可选地,所述根据所述至少两张原始二维图像之间的相对位置,将所述至少两张原始二维图像拼接成全景图,包括:

对所述至少两张原始二维图像进行畸变校正,以得到所述设备坐标系下的至少两张待拼接二维图像;

根据所述至少两张原始二维图像之间的相对位置以及拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系,将所述设备坐标系下的所述至少两张待拼接二维图像投影到所述二维全景图坐标系下,以得到所述至少两张待融合二维图像;

融合所述至少两张待融合二维图像,以生成所述全景图;

其中,所述二维全景图坐标系为将三维全景图坐标系二维展开后的坐标系。

可选地,所述根据所述至少两张原始二维图像之间的相对位置以及拍摄每张原始二维图像时的设备坐标系与所述二维全景图坐标系之间的映射关系,将所述设备坐标系下的所述至少两张待拼接二维图像投影到所述二维全景图坐标系下,以得到所述至少两张待融合二维图像,包括:

根据所述基准二维图像的基准欧拉角、所述其它原始二维图像相对于所述基准二维图像的欧拉角以及所述智能移动设备的拍摄参数,获取拍摄每张原始二维图像时的设备坐标系与所述二维全景图坐标系之间的映射关系;

根据所述二维全景图坐标系下的点坐标以及拍摄每张原始二维图像时的设备坐标系与所述二维全景图坐标系之间的映射关系,计算每张待拼接二维图像在其对应的设备坐标系下的整数点坐标;

将每张待拼接二维图像在其对应的设备坐标系下的整数点坐标所对应的像素值作为所述二维全景图坐标系中对应点坐标的像素值,以获得所述至少两张待融合二维图像。

可选地,在所述根据所述二维全景图坐标系下的点坐标以及拍摄每张原始二维图像时的设备坐标系与所述二维全景图坐标系之间的映射关系,计算每张待拼接二维图像在其对应的设备坐标系下的整数点坐标之前,所述方法还包括:

根据所述智能移动设备的焦距,确定所述三维全景图坐标系下的点坐标范围;

根据所述三维全景图坐标系下的点坐标范围,确定所述二维全景图坐标系下的点坐标范围;

从所述二维全景图坐标系下的点坐标范围中获取整数点坐标,作为所述二维全景图坐标系下的点坐标。

可选地,在根据所述至少两张原始二维图像之间的相对位置,将所述至少两张原始二维图像拼接成全景图之前,所述方法还包括:

创建用于保存所述全景图的帧缓冲区,以及与所述帧缓冲区绑定的、对应所述全景图的分辨率的纹理空间;

在图形程序接口中实现用于将所述至少两张原始二维图像拼接成所述全景图的渲染管线;

所述根据所述至少两张原始二维图像之间的相对位置,将所述至少两张原始二维图像拼接成全景图,包括:

采用gpu加速技术,通过所述图形程序接口的渲染管线,将所述至少两张原始二维图像渲染到所述纹理空间中;

通过所述图形程序接口读取所述纹理空间中的图像信息,并保存至所述帧缓冲区中,以得到所述全景图。

本发明实施例还提供一种全景图生成装置,包括:

第一获取模块,用于获取智能移动设备通过鱼眼镜头对真实场景进行旋转拍摄得到的至少两张原始二维图像,其中,相邻原始二维图像的边界重合或相交;

第二获取模块,用于获取所述智能移动设备在拍摄所述至少两张原始二维图像中的每张原始二维图像时在世界坐标系中的旋转矩阵;

确定模块,用于根据所述智能移动设备在拍摄每张原始二维图像时在所述世界坐标系中的旋转矩阵,确定所述至少两张原始二维图像之间的相对位置;

拼接模块,用于根据所述至少两张原始二维图像之间的相对位置,将所述至少两张原始二维图像拼接成全景图。

可选地,所述确定模块具体用于:

根据所述智能移动设备在拍摄每张原始二维图像时的设备坐标系相对于所述世界坐标系的旋转矩阵,计算所述至少两张原始二维图像之间的相对欧拉角。

可选地,所述确定模块具体用于:

从所述至少两张原始二维图像中,选择一张原始二维图像作为基准二维图像;

根据拍摄所述至少两张原始二维图像中其它原始二维图像时的设备坐标系相对于所述世界坐标系的旋转矩阵以及拍摄所述基准二维图像时的设备坐标系相对于所述世界坐标系的旋转矩阵,计算所述其它原始二维图像相对于所述基准二维图像的旋转矩阵;

将所述基准二维图像的欧拉角作为基准欧拉角,根据所述其它原始二维图像相对于所述基准图像的旋转矩阵,得到所述其它原始二维图像相对于所述基准二维图像的欧拉角。

在本发明实施例中,通过获取智能移动设备在拍摄至少两张原始二维图像中的每张原始二维图像时在世界坐标系中的旋转矩阵;进而确定至少两张原始二维图像之间的相对位置,无需提取图像之间重叠区域的特征点,即可快速、准确地得到至少两张原始二维图像之间的相对位置,在保证图像配准精度的同时,降低了拼接所用的时间,提高全景图拼接的效率。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为本发明一实施例提供的全景图生成方法的流程示意图;

图2为本发明又一实施例提供的设备坐标系和世界坐标系的示意图;

图3为本发明又一实施例提供的设备坐标系和重新确定的世界坐标系的示意图;

图4为本发明又一实施例提供的全景图生成装置的模块结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

以下结合附图,详细说明本发明各实施例提供的技术方案。

图1为本发明一实施例提供的全景图生成方法的流程示意图。如图1所示,该方法包括以下步骤:

s101:获取智能移动设备通过鱼眼镜头对真实场景进行旋转拍摄得到的至少两张原始二维图像,其中,相邻原始二维图像的边界重合或相交。

s102:获取智能移动设备在拍摄至少两张原始二维图像中的每张原始二维图像时在世界坐标系中的旋转矩阵。

s103:根据智能移动设备在拍摄每张原始二维图像时在世界坐标系中的旋转矩阵,确定至少两张原始二维图像之间的相对位置。

s104:根据至少两张原始二维图像之间的相对位置,将至少两张原始二维图像拼接成全景图。

首先,通过安装在智能移动设备上的鱼眼镜头在真实场景中拍摄至少两张原始二维图像。其中,智能移动设备可以为具备拍摄功能和姿态检测功能的移动设备,基于此,智能移动设备可以包括但不限于手机、掌上电脑、mp5等设备。鱼眼镜头是是一种焦距为16mm或更短的并且视角接近或大于180°的极端的广角镜头。若采用大于180度的鱼眼镜头拍摄,最少需要2张原始二维图像即可覆盖水平360度的范围。

至少两张原始二维图像用于拼接成全景图。可选地,全景图包括但不限于球面全景图、柱面全景图、立方体全景图、平面全景图等。

优选地,基于球面全景图能够带来较佳的视觉体验,可以将至少两张原始二维图像拼接成球面全景图。基于此,可以通过智能移动设备水平旋转拍摄至少两张原始二维图像。所拍摄的原始二维图像可以基本覆盖横向360度*纵向180度的空间范围。

可选地,智能移动设备在拍摄的过程中,以自身为中心,进行自旋转拍摄。在一示例中,智能移动设备拍摄一张原始二维图像后,旋转第一角度,拍摄第二张原始二维图像。再旋转第二角度,拍摄第三张原始二维图像,并以此类推。可选地,智能移动设备拍摄前后两张原始二维图像之间旋转的角度可以相同,也可以不同。

一般来说,视角越大的鱼眼镜头,拍摄出来的图像的分辨率越低。为了保证原始二维图像足够的分辨率和鱼眼镜头较大的视角,优选地,可以采用视角100度左右的鱼眼镜头,水平旋转拍摄4张原始二维图像。

可选地,可以将智能移动设备安装在三脚架上,水平旋转三脚架,以拍摄4张原始二维图像;也可以由用户手持智能移动设备,原地旋转拍摄4张原始二维图像。

在一示例中,可以在东、西、南、北四个方向上分别拍摄1张原始二维图像,以拍摄4张原始二维图像,拍摄比较方便。

其中,为了将至少两张原始二维图像拼接成全景图,相邻原始二维图像的边界重合或相交。在具体实现上,可以令智能移动设备在拍摄相邻原始二维图像之间所旋转的角度小于或等于鱼眼镜头的视角,以使相邻原始二维图像的边界重合或相交。其中,相邻原始二维图像所对应的真实场景的位置是相邻的。

然后,对拍摄得到的原始二维图像进行图像配准。图像配准指不同时间、不同传感器(成像设备)或不同条件下(天候、照度、摄像位置和角度等)获取的两幅或多幅图像进行匹配、叠加的过程;也就是获取图像之间的相对位置的过程。

本实施例中,可以获取智能移动设备在拍摄至少两张原始二维图像中的每张原始二维图像时在世界坐标系中的旋转矩阵,进而获取至少两张原始二维图像之间的旋转矩阵,也就得到至少两张原始二维图像之间的相对位置。

可选地,在智能移动设备中设置姿态检测模块,如陀螺仪,以从陀螺仪获取智能移动设备在拍摄每张原始二维图像时在各个方向上的角速度。根据陀螺仪的基本原理,陀螺仪所检测出的角速度是相对于世界坐标系而言。基于此,进一步根据智能移动设备在拍摄每张原始二维图像时,陀螺仪在世界坐标系各个方向上的角速度以及拍摄时间,计算智能移动设备在拍摄每张原始二维图像时在世界坐标系中的欧拉角。进而,将欧拉角作为参数带入到待求的旋转矩阵中,以得到旋转矩阵。

其中,世界坐标系如图2所示。世界坐标系的原点为o,包括x轴、y轴和z轴。xoy平面与水平面平行,z轴垂直于xoy平面。可选地,鱼眼镜头的光心与世界坐标系的原点重合。

在确定每张原始二维图像在世界坐标系中的旋转矩阵后,可以确定至少两张原始二维图像之间的相对位置。可选地,智能移动设备在拍摄每张原始二维图像时,智能移动设备没有平移或平移较小,不影响拼接效果。基于此,至少两张原始二维图像之间的相对位置可以指至少两张原始二维图像之间的相对欧拉角。

至少两张原始二维图像之间的相对位置决定了原始二维图像拼接到全景图上时的相对位置。基于此,可根据至少两张原始二维图像之间的相对位置,将至少两张原始二维图像拼接成全景图。

本实施例中,通过获取智能移动设备在拍摄至少两张原始二维图像中的每张原始二维图像时在世界坐标系中的旋转矩阵;进而确定至少两张原始二维图像之间的相对位置,使得无需提取图像之间重叠区域的特征点,即可快速、准确地得到至少两张原始二维图像之间的相对位置,在保证图像配准精度的同时,降低了拼接所用的时间,提高全景图拼接的效率。

进一步地,采用短焦距、大视角的鱼眼镜头进行拍摄,可以有效较少原始二维图像的数量,进而提高全景图的生成效率。

更进一步地,由于无需提取图像之间重叠区域的特征点,相邻两张原始二维图像的重叠区域可以尽量减小。基于此,需拍摄的原始二维图像的数量较少,能够令相邻原始二维图像的边界重合或相交即可。

在上述实施例或下述实施例中,根据智能移动设备在拍摄每张原始二维图像时在世界坐标系中的旋转矩阵,确定至少两张原始二维图像之间的相对位置,包括:根据智能移动设备在拍摄每张原始二维图像时的设备坐标系相对于世界坐标系的旋转矩阵,计算至少两张原始二维图像之间的相对欧拉角。

如图2所示,设备坐标系的原点o位于鱼眼镜头的光心,且与世界坐标系的原点重合。设备坐标系包括x轴、y轴和z轴。其中,x轴穿过鱼眼镜头中心,且指向镜头前方。z轴指向智能移动设备的正上方。y轴与xoz平面垂直。

然后,获取智能移动设备在拍摄每张二维图像时的设备坐标系相对于世界坐标系的旋转矩阵。

由旋转矩阵的基本知识,可知设备坐标系单独绕x轴旋转,旋转角度为s的旋转矩阵为:

同理,设备坐标系单独绕y轴旋转,旋转角度为t的旋转矩阵为:

同理,设备坐标系单独绕z轴旋转,旋转角度为u的旋转矩阵为:

假设旋转次序为z-y-x,即设备坐标系先绕世界坐标系的z轴旋转u角,再绕旋转u角之后新的设备坐标系的y轴旋转t角,最后,绕旋转t角之后新的设备坐标系的x轴旋转s角,则由以上三式可求得该旋转次序的旋转角的旋转矩阵rzyx为:

在获取智能移动设备拍摄每张原始二维图像时的设备坐标系相对于世界坐标系的旋转矩阵之后,可以根据获得的旋转矩阵,计算至少两张原始二维图像之间的相对欧拉角。

可选地,可以从至少两张原始二维图像中,选择一张原始二维图像作为基准二维图像。可选地,基准二维图像可以是至少两张原始二维图像中的任一张图像。

在至少两张原始二维图像中,除基准图像之外的图像称为其他原始二维图像。基于此,至少两张原始二维图像之间的相对欧拉角可以指其他原始二维图像相对于基准二维图像的欧拉角。

可选地,根据拍摄至少两张原始二维图像中其它原始二维图像时的设备坐标系相对于世界坐标系的旋转矩阵以及拍摄基准二维图像时的设备坐标系相对于世界坐标系的旋转矩阵,计算其它原始二维图像相对于基准二维图像的旋转矩阵。

在一示例中,智能移动设备共拍摄4张原始二维图像,分别为图像a、图像b、图像c、图像d。智能移动设备拍摄4张原始二维图像时的设备坐标系相对于世界坐标系的旋转矩阵依次为ma、mb、mc、md。假设以图像a为基准二维图像,可根据ma、mb、mc、md,求得图像b、图像c、图像d相对于图像a的旋转矩阵。

具体而言,图像a与相对于图像a的旋转矩阵为图像b与相对于图像a的旋转矩阵为图像c与相对于图像a的旋转矩阵为图像d与相对于图像a的旋转矩阵为其中是ma的逆矩阵。

接着,将基准二维图像的欧拉角作为基准欧拉角,根据其它原始二维图像相对于基准图像的旋转矩阵,得到其它原始二维图像相对于基准二维图像的欧拉角。

其中,基准欧拉角可以为(0,0,0)。本实施例中,如图3所示,可以令垂直穿过基准二维图像,如图像a的中心的轴作为世界坐标系的x轴,进而重新确定世界坐标系。基准欧拉角也就是拍摄基准二维图像时的设备坐标系在重新确定的世界坐标系中的欧拉角。

在重新确定世界坐标系后,其他二维图像相对于基准二维图像的欧拉角就是拍摄其他二维图像时,设备坐标系在重新确定的世界坐标系中的欧拉角。

下面以上述示例中的图像b为例,详解阐述求解图像b相对于图像a的欧拉角的过程。设图像b相对于图像a的旋转矩阵mba为:

根据rzyx和mba,可得:

至此,求得图像b相对于图像a的欧拉角为(s,t,u)。

在上述实施例或下述实施例中,由于至少两张原始二维图像是旋转拍摄得到的,拍摄的角度不同,它们不在同一坐标系中,它们之间的重合部分是相对变形的,如果将它们直接进行拼接操作,会造成重合部分的景物发生严重的扭曲,也就不能保证视觉场景的一致性。所以在拼接前,还需要将至少两张原始二维图像经过畸变校正后,变换到同一坐标系下。

基于上述分析,可选地,根据至少两张原始二维图像之间的相对位置,将至少两张原始二维图像拼接成全景图,包括:对至少两张原始二维图像进行畸变校正,以得到设备坐标系下的至少两张待拼接二维图像;根据至少两张原始二维图像之间的相对位置以及拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系,将设备坐标系下的至少两张待拼接二维图像投影到二维全景图坐标系下,以得到至少两张待融合二维图像;融合至少两张待融合二维图像,以生成全景图。

其中,二维全景图坐标系为将三维全景图坐标系二维展开后的坐标系。在一示例中,三维全景图坐标系为球面全景图坐标系,二维全景图坐标系为将球面全景图按照经线和纬线展开的经纬坐标系。

通过鱼眼镜头拍摄出来的原始二维图像畸变较严重,要达到高质量的拼接效果可以对原始二维图像进行校正。基于本实施例中的原始二维图像由水平拍摄而来,可以使用二维校正方法对原始二维图像进行校正。这种二维校正过程简单,且对水平拍摄的原始二维图像有较好的校正效果。可选地,可以使用二维校正方法中的一种不断重定位圆心的校正算法对原始二维图像进行校正。

对至少两张原始二维图像进行校正后,可将校正后的图像称为待拼接图像。基于此,根据至少两张待拼接图像之间的相对位置,将至少两张待拼接二维图像拼接成全景图。

接着,获取智能移动设备拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系。

可选地,可以首先获取智能移动设备拍摄每张原始二维图像时的设备坐标系转换为重新确定的世界坐标系的第一转换式。然后,获取重新确定的世界坐标转换为球面坐标系的第二转换式。再获取球面坐标系展开为经纬坐标系(二维全景图坐标系)的第三转换式。之后,根据第一转换式、第二转换式、第三转换式可以得到智能移动设备拍摄每张原始二维图像时的设备坐标系转换为二维全景图坐标系的第四转换式。

其中,拍摄每张原始二维图像时的设备坐标系到二维全景图坐标系的映射关系即第四转换式;相反,二维全景图坐标系到智能移动设备拍摄每张原始二维图像时的设备坐标系的映射关系即第四转换式的逆过程。

下面以生成球面全景图为例,说明拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系的获取过程。

图像b相对于图像a的欧拉角就是拍摄图像b时设备坐标系相对于重新确定的世界坐标系的欧拉角。进一步,根据该欧拉角,确定拍摄图像b时设备坐标系的x轴与重新确定的世界坐标系的x轴夹角,例如为a,以及设备坐标系的y轴与重新确定的世界坐标系的y轴夹角,例如为b。将设备坐标系转换为重新确定的世界坐标系的第一转换式为m。

其中,(xw,yw,zw)是图像b在世界坐标系下的点坐标,(x,y,r)是图像b在设备坐标系下的点坐标。r是相机焦距,也就是投影的球面的半径,r可以通过如下公式计算得到:

r=width/2*tan(hfov/2)(10)

其中,width是图像b的宽度(单位:像素),hfov是鱼眼镜头的水平视域夹角。

然后,获取重新确定的世界坐标转换为球面坐标系的第二转换式n。

设球面坐标为(x′w,y′w,z′w),则重新确定的世界坐标转换为球面坐标系的关系式如下:

进一步根据x′w2+y′w2+z′w2=r2可得到

再获取球面坐标系展开为经纬坐标系(二维全景图坐标系)的第三转换式。设展开之后的二维坐标为(x′,y′),根据几何知识,可得到:

当z′w>0时,有

当z′w≤0时,有

根据第一转换式、第二转换式和第三转换式,可以推导出智能移动设备拍摄图像b时的设备坐标系转换为二维全景图坐标系的第四转换式。设δ=y*sina*cosb-x*sinb-r*cosa*cosb如下式所示:

当δ≥0时,有

当δ<0时,有

二维全景图坐标系转换为智能移动设备拍摄图像b时的设备坐标系为第四转换式的逆过程,如下式所示:

为了避免由于展开后的二维全景图坐标出现小数,导致产生图像空洞的情况。可选地,根据二维全景图坐标系下的整数点坐标以及拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系,计算每张待拼接二维图像在其对应的设备坐标系下的整数点坐标。

本实施例中,采用第四转换式的逆过程,在预先获知二维全景图坐标的前提下,将二维全景图坐标经第四转换式的逆过程,得到对应的设备坐标系中的整数点坐标。

接着,将每张待拼接二维图像在其对应的设备坐标系下的整数点坐标所对应的像素值作为二维全景图坐标系中对应点坐标的像素值,以获得至少两张待融合二维图像。

可选地,可以将获取的设备坐标系中的整数点坐标所对应的像素值赋值到对应的二维全景图坐标中,以获得二维全景图坐标系下的至少两张待融合二维图像。

可选地,由于直接获取到的设备坐标系中的点坐标一般是小数,所以需要采用插值算法进行插值,以获得待拼接图像在其对应的设备坐标系下的整数点坐标。可选地,本实施例中,可以使用双线性插值算法,计算待拼接图像在其对应的设备坐标系下的整数点坐标,并获取整数点坐标所对应的像素值。

在一可选实施方式中,在得到至少两张待融合二维图像后,可将至少两张待融合二维图像依次拼接到一起,生成一张无缝的全景图。可选地,可以采用渐入渐出式的融合算法或拉普拉斯金字塔融合算法,拼接成全景图。

在上述实施例或下述实施例中,在根据二维全景图坐标系下的点坐标以及拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系,计算每张待拼接二维图像在其对应的设备坐标系下的整数点坐标之前,可以预先确定二维全景图坐标系下的整数点坐标。可选地,根据智能移动设备的焦距,确定三维全景图坐标系下的点坐标范围;根据三维全景图坐标系下的点坐标范围,确定二维全景图坐标系下的点坐标范围;从二维全景图坐标系下的点坐标范围中获取整数点坐标,作为二维全景图坐标系下的点坐标。

下面以生成球面全景图为例说明二维全景图坐标系下的整数点坐标的确定过程。

智能移动设备的焦距就是鱼眼镜头的焦距,也是所要生成的球面全景图的半径,进而根据球面全景图的半径获得球面坐标系下的点坐标范围。

然后根据球面坐标系转换为经纬坐标系的转换式,将球面坐标系下的点坐标范围转换为经纬坐标系下的点坐标范围。

接着,从经纬坐标系下的点坐标范围中,获取整数点坐标,作为经纬坐标系下的点坐标。

在一示例中,经纬坐标系下的点坐标范围为[-1,-1]—[1,1],从中获取整数点坐标,例如为(-1,1)、(0,0)、(1,1),即将(-1,1)、(0,0)、(1,1)作为经纬坐标系下的点坐标。

在上述实施例或下述实施例中,为了达到高速的全景拼接,可以利用gpu加速技术对拼接过程进行加速。gpu本来是用来渲染三维图形的,其整个计算流水线是按照图形渲染管线来进行的。本实施例将全景图拼接的过程转化到图形渲染管线之中,并利用图形处理器(graphicsprocessingunit,gpu)来进行加速。

基于此,在根据至少两张原始二维图像之间的相对位置,将至少两张原始二维图像拼接成全景图之前,可以在智能移动设备内部,创建用于保存融合后的全景图的帧缓冲区,以及与帧缓冲区绑定的、对应全景图的分辨率的纹理空间;在图形程序接口中实现用于将至少两张原始二维图像拼接成全景图的渲染管线。

通过gpu处理之后的全景图会保存到帧缓冲区中,默认的帧缓冲区也就是显示器的帧缓冲区(framebuffer),该缓冲区只支持不大于显示器分辨率的纹理图像,而本实施例中的全景图可能超过显示器的分辨率。基于此,可以使用帧缓冲对象(framebufferobject,fbo)创建一个足够大的帧缓冲区,将通过渲染管线渲染之后的全景图存储到该缓冲区中。

其中,纹理空间用于渲染待拼接图像。可选地,纹理空间的分辨率与全景图的分辨率相同。可选地,还可以创建另一纹理空间,用于存储原始二维图像。

然后,在图形程序接口中实现用于将至少两张原始二维图像拼接成全景图的渲染管线。

可选地,可以使用基于图形绘制接口(opengraphicslibrary,opengl)的着色器(shader)编程技术将至少两张原始二维图像拼接成全景图的算法写入opengl的渲染管线中。然后将该代码设置到opengl中,进行编译、链接,检查编写的代码是否正确。

opengl是一个跨平台、跨编程语言的图形图像处理库,能够在安装android或ios操作系统的智能设备上使用;而且opengl的渲染流程实质上是源图像的坐标到目标图像的坐标之间的映射关系函数,与本实施例中的方法契合性较高。

可选地,首先使用opengl着色语言(openglshadinglanguage,glsl)编写程序代码,以使原有的渲染管线具有可编程性。然后,使用opengl着色语言编写将至少两张原始二维图像拼接成全景图的程序代码,并将写好的程序代码替换opengl的渲染管线中的片段处理(fragmentprocessing)部分。由于本实施例处理的是图像,对片段处理部分进行编程即可。

可选地,根据至少两张原始二维图像之间的相对位置,将至少两张原始二维图像拼接成全景图,包括:

采用gpu加速技术,通过图形程序接口的渲染管线,将至少两张原始二维图像渲染到纹理空间中;通过opengl读取纹理空间中的图像信息,并保存至帧缓冲区中,以得到全景图。

可选地,通过使用opengl的绘制代码来通知opengl开始处理图像。该过程中,opengl会根据编写的glsl代码,通过opengl渲染管线流程对输入的原始二维图像进行计算,然后渲染到目标纹理中。计算与渲染的过程均采用gpu加速技术。

渲染结束后,调用opengl提供的接口读取目标纹理中的图像信息,并保存至帧缓冲区中,以得到全景图。

本实施例提供的方法将拍照功能、姿态检测功能以及全景图拼接功能都统一于智能移动设备上,使得只需要拍摄至少两张原始二维图像就能将其自动进行图像配准、并投影为二维全景图坐标系下的待拼接二维图像,最后拼接成一张完整的全景图。而且,通过利用智能移动设备自动获取的欧拉角进行拼接辅助,并采用gpu进行加速,显著提升了计算效率,在一般的小型智能移动设备上也可以达到很高的拼接速度。

本发明实施例还提供一种全景图生成装置,如图4所示,全景图生成装置200包括:第一获取模块201、第二获取模块202、确定模块203和拼接模块204。

第一获取模块201,用于获取智能移动设备通过鱼眼镜头对真实场景进行旋转拍摄得到的至少两张原始二维图像,其中,相邻原始二维图像的边界重合或相交。

第二获取模块202,用于获取智能移动设备在拍摄至少两张原始二维图像中的每张原始二维图像时在世界坐标系中的旋转矩阵。

确定模块203,用于根据第二获取模块202获取的智能移动设备在拍摄每张原始二维图像时在世界坐标系中的旋转矩阵,确定至少两张原始二维图像之间的相对位置。

拼接模块204,用于根据确定模块203确定的至少两张原始二维图像之间的相对位置,将至少两张原始二维图像拼接成全景图。

本实施例中,通过获取智能移动设备在拍摄至少两张原始二维图像中的每张原始二维图像时在世界坐标系中的旋转矩阵;进而确定至少两张原始二维图像之间的相对位置,使得无需提取图像之间重叠区域的特征点,即可快速、准确地得到至少两张二维图像之间的相对位置,在保证图像配准精度的同时,降低了拼接所用的时间,提高全景图拼接的效率。

可选地,确定模块203在根据所述智能移动设备在拍摄每张原始二维图像时在所述世界坐标系中的旋转矩阵,确定所述至少两张原始二维图像之间的相对位置时,具体用于:根据所述智能移动设备在拍摄每张原始二维图像时的设备坐标系相对于世界坐标系的旋转矩阵,计算至少两张原始二维图像之间的相对欧拉角。

可选地,确定模块203在根据所述智能移动设备在拍摄每张原始二维图像时的设备坐标系相对于世界坐标系的旋转矩阵,计算至少两张原始二维图像之间的相对欧拉角时,具体用于:从至少两张原始二维图像中,选择一张原始二维图像作为基准二维图像;根据拍摄至少两张原始二维图像中其它原始二维图像时的设备坐标系相对于世界坐标系的旋转矩阵以及拍摄基准二维图像时的设备坐标系相对于世界坐标系的旋转矩阵,计算其它原始二维图像相对于基准二维图像的旋转矩阵;将基准二维图像的欧拉角作为基准欧拉角,根据其它原始二维图像相对于基准图像的旋转矩阵,得到其它原始二维图像相对于基准二维图像的欧拉角。

可选地,拼接模块204在根据至少两张原始二维图像之间的相对位置,将至少两张原始二维图像拼接成全景图时,具体用于:对所述至少两张原始二维图像进行畸变校正,以得到所述设备坐标系下的至少两张待拼接二维图像;根据至少两张原始二维图像之间的相对位置以及拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系,将设备坐标系下的至少两张待拼接二维图像投影到二维全景图坐标系下,以得到至少两张待融合二维图像;融合至少两张待融合图像,以生成全景图;其中,二维全景图坐标系为将三维全景图坐标系二维展开后的坐标系。

可选地,拼接模块204在根据至少两张原始二维图像之间的相对位置以及拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系,将设备坐标系下的至少两张待拼接二维图像投影到二维全景图坐标系下,以得到至少两张待融合二维图像时,具体用于:

根据基准二维图像的基准欧拉角、其它原始二维图像相对于基准二维图像的欧拉角以及智能移动设备的拍摄参数,获取拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系;

根据二维全景图坐标系下的点坐标以及拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系,计算每张待拼接二维图像在其对应的设备坐标系下的整数点坐标;

将每张待拼接二维图像在其对应的设备坐标系下的整数点坐标所对应的像素值作为二维全景图坐标系中对应点坐标的像素值,以获得至少两张待融合二维图像。

可选地,在拼接模块204根据二维全景图坐标系下的点坐标以及拍摄每张原始二维图像时的设备坐标系与二维全景图坐标系之间的映射关系,计算每张待拼接二维图像在其对应的设备坐标系下的整数点坐标之前,拼接模块204还用于:

根据智能移动设备的焦距,确定三维全景图坐标系下的点坐标范围;根据三维全景图坐标系下的点坐标范围,确定二维全景图坐标系下的点坐标范围;从二维全景图坐标系下的点坐标范围中获取整数点坐标,作为二维全景图坐标系下的点坐标。

可选地,全景图生成装置200还包括创建模块和实现模块。

创建模块,用于在根据所述至少两张原始二维图像之间的相对位置,将所述至少两张原始二维图像拼接成全景图之前,创建用于保存全景图的帧缓冲区,以及与帧缓冲区绑定的、对应全景图的分辨率的纹理空间。

实现模块,用于在图形程序接口中实现用于将至少两张原始二维图像拼接成所述全景图的渲染管线。

基于此,拼接模块204在根据所述至少两张原始二维图像之间的相对位置,将所述至少两张原始二维图像拼接成全景图时,具体还用于:采用gpu加速技术,通过图形程序接口的渲染管线,将至少两张原始二维图像渲染到纹理空间中;通过图形程序接口读取纹理空间中的图像信息,并保存至帧缓冲区中,以得到全景图。

以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

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