鱼眼图像的生成方法及装置
技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及通过计算机生成鱼眼图像的方法和装置。
背景技术
随着人工智能技术的发展,越来越多的场景通过计算机来替代人工,形成无人值守场景。例如,无人驾驶车辆、无人值守货柜等等。在无人值守场景中,通常需要大量的3维场景图片进行相关模型的训练,以通过训练好的相关模型对无人值守场景进行实时监控。这些场景图片往往通过预先针对特定场景进行收集。然而,在一些场景中,可能没有过多经验可以参考,无法收集现有的图片。例如,在无人值守货柜场景中,货柜中的产品可能是个性化的,例如A通过无人值守货柜出售饮料,B通过无人值守货柜出售零食,C通过无人值守货柜出售刚刚研发上市的新型文具等等。如果无法收集现有的图片,那么就无法训练出有效的模型,进行自动上新(如补货)或识别的操作。因此,在无人值守场景下,可以考虑在模拟场景下生成大量仿真图片,代替真实图片作为样本进行模型训练。如此,仿真图片的准确度至关重要。
鱼眼图像是常用的实时监控图像。常规技术中,往往通过对2维图像应用变形算法,制造模拟鱼眼图像畸变的效果,使得图像看上去就像是通过鱼眼透镜显示一般。但是这种方式不能完全模拟出真实鱼眼镜头的广角,只是从人眼观看的角度来说,视觉效果相似。应用到机器学习的视觉自动识别技术的鱼眼图像,有着更高的要求。
发明内容
本说明书一个或多个实施例描述了一种鱼眼图像的生成方法和装置,可以生成模拟真实场景下的仿真鱼眼图像,提高鱼眼图像的准确度,从而使得鱼眼图像更有效地用于无人值守场景的监控预备阶段。
根据第一方面,提供了一种鱼眼图像的生成方法,所述方法包括:获取仿真的三维场景,以及为所述三维场景中的鱼眼相机预先确定的标定参数,所述标定参数至少包括所述鱼眼相机的设置位置和拍摄角度;基于所述标定参数,在所述三维场景中按照相应设置位置和拍摄角度采集多个预定方向上的图片;将所述多个预定方向上的图片渲染成一个立体贴图,其中,所述立体贴图为预定三维形状的单一纹理图片组合;根据预定的鱼眼成像模型,将所述立体贴图中的多个采样点的颜色,采样到相应的各个鱼眼成像位置,其中,所述鱼眼成像模型用于利用鱼眼成像的光学原理描述三维空间中的点与所成的像之间的位置关系;基于采样结果进行图形渲染,生成鱼眼图像。
在一个实施例中,所述基于所述标定参数,在所述三维场景中按照相应位置和角度采集多个预定方向上的图片包括:从鱼眼相机的设置位置向正前采集第一图片;以鱼眼相机的设置位置为基准点分别向上、向下、向左、向右采集第二图片、第三图片、第四图片和第五图片。
在一个实施例中,所述立体贴图为,立方体贴图或者球体贴图。
在一个实施例中,所述鱼眼成像模型为,等距投影模型、等立体角投影模型、立体视觉投影模型、正交投影模型中的一种。
在一个实施例中,所述标定参数包括角度畸变系数,所述鱼眼成像模型描述出通过所述角度畸变系数描述的坐标转换关系。
在一个实施例中,所述根据预定的鱼眼成像模型,将所述立体贴图中的多个采样点的颜色,采样到相应的各个鱼眼成像位置包括:获取所述立体贴图中指定的多个采样点的坐标,根据预定的鱼眼成像模型,确定各个采样点分别对应的各个鱼眼成像位置,其中,各个鱼眼成像位置分别对应所述鱼眼图像中的各个像素;将各个采样点对应的颜色,分别确定为相应像素的颜色;通过插值的方式对所述鱼眼图像的其他像素进行颜色补充采样。
在一个进一步的实施例中,所述多个采样点包括相邻的采样点A和采样点B,采样点A和采样点B分别对应到所述鱼眼图像的像素A和像素B,像素A和像素B相距s个像素,所述通过插值的方式对所述鱼眼图像的其他像素进行颜色补充采样包括,通过线性插值的方式对像素A和像素B之间的s-1个像素进行颜色补充采样:如果从像素A到像素B按照像素A为第0个像素、像素B为第s个像素进行排列,则对于第i个像素,按照与像素A和像素B的间隔距离,将像素A和像素B的颜色值的加权和,作为第i个像素的颜色值,其中像素A的颜色值的权重为(s-i)/s,像素B的颜色值的权重为i/s,其中,i为1至s-1中的自然数。
在一个实施例中,所述根据预定的鱼眼成像模型,将所述立体贴图中的多个采样点的颜色,采样到相应的各个鱼眼成像位置包括:按照待生成的鱼眼图像的各个像素位置,确定各个鱼眼成像位置;根据预定的鱼眼成像模型,从所述立体贴图中确定与各个鱼眼成像位置分别对应的各个点作为采样点;将各个采样点的颜色采样到相应的鱼眼成像位置。
在一个实施例中,所述标定参数还包括鱼眼相机的焦距。
根据第二方面,提供一种鱼眼图像的生成装置,所述装置包括:
获取单元,配置为获取仿真的三维场景,以及为所述三维场景中的鱼眼相机预先确定的标定参数,所述标定参数至少包括所述鱼眼相机的设置位置和拍摄角度;
拍摄单元,配置为基于所述标定参数,在所述三维场景中按照相应设置位置和拍摄角度采集多个预定方向上的图片;
贴图单元,配置为将所述多个预定方向上的图片渲染成一个立体贴图,其中,所述立体贴图包括预定三维形状的单一纹理图片组合;
采样单元,配置为根据预定的鱼眼成像模型,将所述立体贴图中的多个采样点的颜色,采样到相应的各个鱼眼成像位置,其中,所述鱼眼成像模型用于利用鱼眼成像的光学原理描述三维空间中的点与所成的像之间的位置关系;
生成单元,配置为基于采样结果进行图形渲染,生成鱼眼图像。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面的方法。
通过本说明书实施例提供的鱼眼图像的生成方法和装置,在鱼眼图像的生成过程中,通过在仿真的三维场景中,为三维场景中的鱼眼相机标定参数,进一步模拟鱼眼相机按照标定参数在所述三维场景中按照相应位置和角度采集多个预定方向上的图片,并将这些图片渲染成一个立体贴图,从而根据预定的鱼眼成像模型模拟光线的真实路线,来确定立体贴图中的采样点与成像平面上的鱼眼成像位置之间的关系,进而完成鱼眼图像各个像素的颜色采样,并渲染成鱼眼图像。由于通过三维场景仿真,真实还原鱼眼相机的拍摄过程,以及通过鱼眼成像模型真实模拟采样点到鱼眼成像位置的光线确定各个采样点的鱼眼成像位置,因此,所生成的鱼眼图像更加接近现实,可以提高鱼眼图像的有效性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1示出本说明书披露的一个实施例的实施场景示意图;
图2示出根据一个实施例的鱼眼图像的生成方法流程图;
图3示出鱼眼成像模型中的等距投影模型的示意图;
图4示出小孔成像模型下的成像示意图;
图5示出一个具体例子的鱼眼成像过程中的畸变示意图;
图6示出一个具体例子的鱼眼成像模型示意图;
图7示出一个具体例子中所生成的鱼眼图像示意图;
图8示出根据一个实施例的鱼眼图像的生成装置的示意性框图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
为了便于说明,结合图1示出的本说明书实施例的一个具体适用场景进行描述。图1示出的实施场景,是一个无人值守货柜的场景。在该实施场景中,无人值守货柜可以包括一个或多个货架,用于放置商品。每个货架的正上方可以设置有鱼眼相机。鱼眼相机采集的图像可以经过计算平台中预先训练的场景模型(识别模型)来进行分析,以确定哪些商品被出售、哪些商品需要补货等情况。
其中,计算平台可以与鱼眼相机集成在一起,也可以设置在与鱼眼相机通过有线或无线方式连接的其他设备,在此不作限定。计算平台中存储有预先训练的场景模型。这里的场景模型用于处理具体场景下,鱼眼相机采集的图像数据。例如在无人值守货柜的场景下,场景模型用于识别当前被出售的商品,并通过计算平台的进一步进行统计操作,确定需要补货(或上新)的商品。
可以理解,针对具体场景的识别模型的训练需要大量的鱼眼图像作为训练样本。这些鱼眼图像包括各种商品摆放位置、商品缺失等情形。如果人工采集这些图像,需要对商品实物进行大量改变位置、数量等操作,并且没改变一种状态就需要采集相应的图片,费时费力。
根据本说明书提供的技术构思,对鱼眼图像的采集过程进行改进(在附图1中相应创新部分通过边框加粗、字体加大加粗表示)。具体地,通过在仿真的三维场景中,模拟真实鱼眼相机的拍摄,自动采集鱼眼图像,作为训练样本。并且,在三维场景中按照预定的鱼眼成像模型来渲染鱼眼图像,可以提高鱼眼图像的准确度、仿真度,从而生成更有效的鱼眼图像。
下面详细介绍鱼眼图像的生成方法。
图2示出根据一个实施例的鱼眼图像的生成方法流程图。该方法的执行主体可以是任何具有计算、处理能力的系统、设备、装置、平台或服务器。例如图1示出的计算平台。
如图2所示,该鱼眼图像的生成方法可以包括以下步骤:步骤201,获取仿真的三维场景,以及为三维场景中的鱼眼相机预先确定的标定参数,标定参数至少包括鱼眼相机的设置位置和拍摄角度;步骤202,基于标定参数,在三维场景中按照相应设置位置和拍摄角度采集多个预定方向上的图片;步骤203,将多个预定方向上的图片渲染成一个立体贴图,其中,立体贴图为预定三维形状的单一纹理图片组合;步骤204,根据预定的鱼眼成像模型,将立体贴图中的多个采样点的颜色,采样到相应的各个鱼眼成像位置,其中,鱼眼成像模型用于利用鱼眼成像的光学原理描述三维空间中的点与所成的像之间的位置关系;步骤205,基于采样结果进行图形渲染,生成鱼眼图像。
首先,在步骤201中,获取仿真的三维场景,以及为三维场景中的鱼眼相机预先确定的标定参数。其中,三维场景可以通过各种三维仿真应用建立,例如通过Solidworks、Maya、UG、AutoCAD等等中的至少一个。三维场景可以如图1所示的货柜。三维场景可以是当前建立的,也可以是预先建立的,从本地或远程直接获取。
三维场景中,可以模拟实际场景中的各种物品。如图1中,货柜的形状、尺寸,每一层货柜中摆放的物品、物品形状、状态(如立置、倒置、平放等)、色彩等等,都需要呈现在三维场景中。也就是说,这里的三维场景是对现实场景的仿真,完全按照现实场景进行布置。在仿真的三维场景中,每个现实中的独立物品可以作为一个独立元素,可以独立移动、旋转等。例如图1示出的货架上摆放的一瓶饮料,其可以被独立去除,也可以独立从货架左侧移动到右侧,还可以在货架上倒置、平放。可选地,对每一个在现实中相对于用于监控的鱼眼相机可移动的物品,在三维场景中都可以进行独立移动。
可以理解,三维场景中可以包含至少一个虚拟的鱼眼相机,对应于现实场景中进行监控的各个鱼眼相机。鱼眼相机可以出现在三维场景中,也可以不出现在三维场景中,重点在于,鱼眼相机的参数需要在三维场景进行标定。通常,鱼眼相机的参数可以包括外参、内参、畸变参数等。这些参数都可以按照现实场景中预先确定的鱼眼相机的参数进行设置。其中,外参可以是鱼眼相机相对于其他物品的参数,例如安装位置、拍摄角度等。内参可以是鱼眼相机本身的参数,例如焦距等。畸变参数是描述预压图像相对于普通平面图像的畸变性能的参数,如广角相机扭曲角度、误差等。这些被标定的参数也可以称为标定参数。
本步骤201中获取的三维场景的鱼眼相机的标定参数,至少包括在三维场景中的摆放位置和拍摄角度。这里的标定参数可以通过人工标定。
接着,在步骤202,基于标定参数,在三维场景中按照设置位置和拍摄角度采集多个预定方向上的图片。其中,标定参数是步骤201涉及的为鱼眼相机标定的各种参数。
可以理解,鱼眼相机通常是全景视角的广角相机。通常情况下,可以通过仿生相机实现,或者通过多角度获取多张图片并进行合成的方式获取鱼眼图像。而在仿真的三维场景中,并非真实存在一个鱼眼相机,而是要通过模拟一个鱼眼相机来获取鱼眼图像。因此,可以按照鱼眼相机的相关参数,采集预定方向上的图片,来合成鱼眼图像。
这里,预定方向可以是预先设定的,与现实场景的监控范围需求相关的数量。例如,在360度监控场景下,预定方向可以有6个。在货架上方的监控场景下,预定方向可以有5个(安装鱼眼相机的一面无需监控)。也就是说,通过预定方向上的图片,可以合成现实场景监控范围内的鱼眼图像。这些图片通常是90度视角的图片。图片与图片之间可能有重合,也可能包含超出监控范围的视角图像,在此不作限定。
采集这些图片时,针对一个当前物品摆放状态,可以以仿真的三维场景虚拟鱼眼相机的摆放位置为基准点,调整相应视角,以屏幕截图、拍照等形式进行。例如,在无人值守货柜场景中,货柜顶端无需监控,鱼眼相机可以与货架正相对设置在货架顶端的中心位置,则在鱼眼图像中体现以虚拟鱼眼相机的摆放位置为视点的三维图像。因此,可以在仿真应用中,以顶端鱼眼相机的摆放位置为视点(基准点),分别将正前方(货架方向)和上、下、左、右方向作为预定方向。分别调整视角(视线与显示器等的垂直方向所成的角度)为向正前、向上、向下、向左、向右,分别拍摄照片或者获取截图。或者理解为,用1个平视视角的相机向正前拍摄照片作为第一图片,再用4个分别向上、向下、向左、向右的90度视角相机拍摄这4个方向上的图片,分别可以称为第二图片、第三图片、第四图片和第五图片。其中,这里的第一、第二……第五仅用于区分图像,而不对顺序等表示限定。
在获取到预定方向上的图片后,进一步可以在步骤203中,将预定数量的图片渲染成立体贴图。
其中,立体贴图是一种环境映射的方法,可以将多张图片的2维纹理通过折叠、畸变等处理,组合映射到单一纹理。立体贴图简单地说就是绘制出立体图形,将各张图片贴上去。
立体贴图可以是预定三维形状(如立方体、球体等)的单一纹理组合,例如可以是立方体贴图(Cubemap)、球体贴图等等。以立方体贴图为例,立方体最多包含6个面,可以对应6张图片。将每一张图片进行畸变等处理,映射为同一个纹理,并分别贴到对应的面。可选地,立方体贴图也可以只贴其中的部分面,例如5个面。
进一步地,通过步骤204,根据预定的鱼眼成像模型,将立体贴图中的多个采样点的颜色,采样到相应的各个鱼眼成像位置。可以理解,鱼眼成像模型可以用于描述,任意一点经过鱼眼折射形成的成像点之间的位置关系。鱼眼成像模型可以包括诸如等距投影模型、等立体角投影模型、立体视觉投影模型、正交投影模型等等。
下面以等距投影模型为例,介绍一个采样点P,和对应的鱼眼成像位置P'之间的位置关系。
请参考图3所示,等距投影模型的基础为:r=fθ。其中,r是相距增量,f是鱼眼相机的焦距,θ是入射角增量。也就是说,等距投影模型将这些相同增量的像素投影到成像面上的时候所得到的像高是相等的。
在小孔成像情形下,如图4所示,三维空间XYZ中一点P,坐标为(L,M,N),成像在平面xoy上的一点P',P'在平面xoy上的坐标为(a,b)。其中,xoy平面相当于Z=-f的平面,x轴与X轴方向一致,y轴与Y轴方向一致。则根据图4的示意图可以看出:
a/f=L/N;
b/f=M/N;
r2=a2+b2;
r/f=tanθ。
也就是说:
θ=arctan(r/f)=(a2+b2)1/2/f=(L2+M2)1/2/N。
可以理解,小孔成像模型中,光线是直线传播,而在鱼眼成像模型中,鱼眼类似于特殊的凸透镜,光线发生偏折,成像位置和角度会发生畸变。在不同的坐标系中,成像位置的畸变表达方式也不同。在一个可能的实现方式中,如图5所示,这种畸变可以包括2种,一种是径向畸变,一种是切向畸变。径向畸变和切向畸变都可以和折射后的角度相对于入射角θ的畸变相关。在另一种可选的实现方式中,如图6所示,这种畸变可以通过横向畸变(x方向的畸变)和纵向畸变(y方向的畸变)。在图6中,上述的P点在xoy平面内的成像位置为P"点,坐标为(u,v),与P'(a,b)相比,在x轴方向的偏移量为X',在y轴的偏移量为Y'。
在鱼眼成像模型中,畸变参数可以是预先设定的,例如,畸变系数:θd=θ(1+k1θ2+k2θ4+k3θ6+k4θ8)。其中的k1,k2,k3,k4是预先设定的系数。
假设真实的成像位置P",在xoy平面上的坐标为(u,v),横向偏移量为X',纵向偏移量为Y',那么,根据等距投影模型,有:
X′=(fθd/r)L;
Y′=(fθd/r)M;
u=fx X′+cx;、
v=fy Y′+cy;
其中,fx为x方向的焦距分量,fy为y方向的焦距分量,fx和fy都可以预先设定,cx、cy分别为预先设定的常数。
可以看出,由于θd与θ有关,u和v可以转化成与L、M、N相关的表示。也就是说,经过鱼眼成像模型,任意一个采样点和成像点(即鱼眼成像位置)之间具有一个对应关系,并且该对应关系可以通过坐标相互表示。这样,针对每一个鱼眼图像中的点(鱼眼成像位置),都可以在立体贴图中找到相应的采样点,针对每一个立体贴图中的采样点,也可以在鱼眼图像中对应一个成像位置。
在本步骤中,可以将立体贴图中的部分点作为采样点。可以理解,由于采样点与鱼眼图像中的各个鱼眼成像位置之间具有对应关系,那么对于各个鱼眼成像位置,都可以采样到相应采样点的颜色。进一步地,各个鱼眼成像位置还可以对应到鱼眼图像中的像素。采样点的颜色就可以对应到像素的颜色。
根据一个实施方式,可以先在立体贴图上确定各个采样点,针对每个采样点,根据其坐标确定鱼眼成像位置,即在成像平面上的坐标表示。此时,鱼眼成像位置所落在的像素,就可以是采样点对应的像素。具体地,可以在GPU渲染的顶点着色阶段,根据在立体贴面上指定的每个采样点,计算出其在立体贴图表达出的三维空间的坐标,并根据成像模型,确定其对应到光线最终在成像平面上的坐标,也就是鱼眼成像位置。鱼眼成像位置的颜色可以取相应制定的采样点的颜色。在后续的片元处理阶段,可通过自动插值的方式去直接进行像素颜色补充采样。
自动插值就是在指定采样点对应的鱼眼图片上的像素之间的像素上,通过差值方式赋予相应颜色。例如,采样点A对应的颜色通过RGB颜色通道表示为(Ra,Ga,Ba),采样点B对应的颜色表示为(Rb,Gb,Bb),采样点A和采样点B分别对应到成像平面上的像素A和像素B分别多赢采样点A和采样点B的颜色。假设在像素A和像素B中间相距s个像素,将像素A到像素B之间的像素进行排列,则当像素A为第0个像素时,像素B为第s个像素。那么,像素A到像素B的像素中,第i(1≤i≤s-1)个像素的颜色可以表示为:
(Ra,Ga,Ba)×(s-i)/s+(Rb,Gb,Bb)×i/s。
其中,(s-i)/s、i/s分别是像素A和像素B对应的颜色的权重。也就是说,对于像素A和像素B之间的像素i,根据像素A和像素B对应的颜色,按照一定权重进行混合后,作为相应像素的颜色。像素i距离像素A越近,像素A的颜色比重越大,距离像素B同理。
这种方案可以控制计算量。当希望产生较少计算量时,可以指定较少的采样点。但是,如果指定的采样点数量过少,模拟效果的质量相对较低。指定的采样点数量足够多时,对应的模拟效果也越好,但是相应计算量增大。
根据另一个实施方式,可以先确定鱼眼图像的大小,并根据鱼眼图像的大小,对鱼眼图像上的各个像素,去确定在立体贴图上对应的采样点(坐标)。具体地,可以根据成像平面上每个像素的位置,确定各个像素对应的鱼眼成像位置。一个像素对应一个鱼眼成像位置时,各个像素对应的鱼眼成像位置例如可以是相应像素的中心点位置。一个像素对应两个鱼眼成像位置时,可以将像素沿对角线分成两个三角形,每个三角形中心点可以对应一个鱼眼成像位置。逐个鱼眼成像位置计算出其对应在立体贴图上的采样点的坐标,并对相应坐标处的采样点对应的颜色进行采样。
这种方式由于按照鱼眼图像上的各个像素进行采样,对每个像素都能够准确采样到相应的颜色,因此模拟效果较好。这种方式下计算量由鱼眼图像的像素决定。
因此,在步骤205中,基于步骤204的采样结果进行图形渲染,从而生成鱼眼图像。图像渲染方法可以是图形处理器(Graphics Processing Unit,缩写:GPU,又称显示核心、视觉处理器、显示芯片)来进行,图形处理器是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。图像渲染是将三维的光能传递处理转换为一个二维图像的过程。场景和实体用三维形式表示,而图形的显示通常是二维的光栅化显示或点阵化显示。将三维景象光栅化作一个像素矩阵的过程就是图像渲染。鱼眼图像,也就是一种或多种颜色的像素集合,用于显示立体贴图中的点在成像平面上形成的图案。在本步骤205中,可以将步骤204中采样到的颜色渲染到相应的像素,形成鱼眼图像。
根据步骤204中采取的采集采样点并确定相应的各个鱼眼成像位置的方式不同,步骤205中的图像渲染过程也不相同。下面针对步骤204中的不同实施方式进行说明。
在一个实施方式中,可以先在立体贴图上确定各个采样点,针对每个采样点,确定鱼眼成像位置。此时,在后续的片元处理阶段,可通过自动插值的方式去直接进行像素颜色补充采样,来完成渲染。这样,指定的采样点对应的像素之外的像素采样过程在渲染步骤中完成。
在另一种实施方式中,根据鱼眼图像上的各个像素,去确定在立体贴图上对应的采样点。这种操作可以在图像渲染的片元着色阶段进行。这样,全部采样过程和渲染过程都融合在一起。
通过片元着色之后,图像渲染过程就完成了。在实际操作中,可以根据需要选择以上方式进行图像渲染,在此不作限定。
从以上描述可以看出,虽然在图2示出的实施例中,对采样和渲染分别通过步骤204和步骤205进行描述,但是实践中这两个步骤可以交叉在一起进行,而没有严格区分先后顺序。因此,在本说明书的实施例中,不对步骤204和步骤205做严格的顺序限定。
为了更直观地描述本说明书实施例达到的技术效果,请参考图7。图7示出了一张通过图2示出的鱼眼图像的生成方法渲染好的鱼眼图像。可以看出,所生成的鱼眼图像可以代替现实场景拍摄的鱼眼图像,用于模型训练等场景。以图7为例,可以设置随机改变任意一个物品的状态,每改变一个状态可以生成一张鱼眼图像。
回顾以上过程,在鱼眼图像的生成过程中,通过在仿真的三维场景中,为三维场景中的鱼眼相机标定参数,进一步模拟鱼眼相机按照标定参数在所述三维场景中按照相应位置和角度采集多个预定方向上的图片,并将这些图片渲染成一个立体贴图,从而根据预定的鱼眼成像模型模拟光线的真实路线,来确定立体贴图中的采样点与成像平面上的鱼眼成像位置之间的关系,完成鱼眼图像各个像素的颜色采样,并渲染成鱼眼图像。由于通过三维场景仿真,真实还原鱼眼相机的拍摄过程,以及通过鱼眼成像模型真实模拟采样点到鱼眼成像位置的光线确定各个采样点的鱼眼成像位置,因此,所生成的鱼眼图像更加接近现实,提高了鱼眼图像的有效性。
根据另一方面的实施例,还提供一种鱼眼图像的生成装置。图8示出根据一个实施例的鱼眼图像的生成装置的示意性框图。如图8所示,用于鱼眼图像的生成装置800包括:获取单元81,配置为获取仿真的三维场景,以及为三维场景中的鱼眼相机预先确定的标定参数,标定参数至少包括鱼眼相机的设置位置和拍摄角度;拍摄单元82,配置为基于标定参数,在三维场景中按照相应设置位置和拍摄角度采集多个预定方向上的图片;贴图单元83,配置为将多个预定方向上的图片渲染成一个立体贴图,其中,立体贴图为预定三维形状的单一纹理图片组合;采样单元84,配置为根据预定的鱼眼成像模型,将所述立体贴图中的多个采样点的颜色,采样到相应的各个鱼眼成像位置,其中,鱼眼成像模型用于利用鱼眼成像的光学原理描述三维空间中的点与所成的像之间的位置关系;生成单元85,配置为基于采样结果进行图形渲染,生成鱼眼图像。
在一个实施例中,拍摄单元82还配置为:
从鱼眼相机的设置位置向正前采集第一图片;
以鱼眼相机的设置位置为基准点分别向上、向下、向左、向右采集第二图片、第三图片、第四图片和第五图片。
在一个实施例中,立体贴图可以为,立方体贴图或者球体贴图。
在一个实施例中,鱼眼成像模型为,等距投影模型、等立体角投影模型、立体视觉投影模型、正交投影模型中的一种。
在一个实施例中,标定参数包括角度畸变系数,鱼眼成像模型描述出通过角度畸变系数描述的坐标转换关系。
在一个实施例中,采样单元84进一步配置为:
获取立体贴图中指定的多个采样点的坐标,根据预定的鱼眼成像模型,确定各个采样点分别对应的各个鱼眼成像位置,其中,各个鱼眼成像位置分别对应鱼眼图像中的各个像素;
将各个采样点对应的颜色,分别确定为相应像素的颜色;
通过插值的方式对鱼眼图像的其他像素进行颜色补充采样。
在一个进一步的实施例中,所获取的多个采样点包括相邻的采样点A和采样点B,采样点A和采样点B分别对应到鱼眼图像的像素A和像素B,像素A和像素B相距s个像素,采样单元84还配置为,通过线性插值的方式对像素A和像素B之间的s-1个像素进行颜色补充采样:
如果从像素A到像素B按照像素A为第0个像素、像素B为第s个像素进行排列,则对于第i个像素,按照与像素A和像素B的间隔距离,将像素A和像素B的颜色值的加权和,作为第i个像素的颜色值,其中像素A的颜色值的权重为(s-i)/s,像素B的颜色值的权重为i/s。
在一个实施例中,采样单元84进一步配置为:
按照待生成的鱼眼图像的各个像素位置,确定各个鱼眼成像位置;
根据预定的鱼眼成像模型,从立体贴图中确定与各个鱼眼成像位置分别对应的各个点作为采样点;
将各个采样点的颜色采样到相应的鱼眼成像位置。
在一个实施例中,标定参数还包括鱼眼相机的焦距。
值得说明的是,图8所示的装置800是与图2示出的方法实施例相对应的装置实施例,图2示出的方法实施例中的相应描述同样适用于装置800,在此不再赘述。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本说明书的技术构思的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本说明书的技术构思的具体实施方式而已,并不用于限定本说明书的技术构思的保护范围,凡在本说明书实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本说明书的技术构思的保护范围之内。