一种3D立体成像的方法与流程

文档序号:14993687发布日期:2018-07-20 23:05阅读:268来源:国知局

本发明是关于3d成像技术,具体地,是关于一种3d立体成像的方法。



背景技术:

现有的2d转3d的立体成像方法,主要包含两种方法。其中一种是采集单个摄像头(主摄像头)的彩色图像,为彩色图像的每个像素点赋予深度值,然后形成虚拟视点并进行空洞填补等处理,形成立体图像。由于深度值是利用先验知识和图像中隐含的深度线索(阴影、遮挡关系等),采用经验估计的方式取得的,所生成的立体图像存在较大的误差甚至违反图像场景空间关系的错误,效果较差。

另一种方法,则需要使用两个同型号的摄像头,通过两个摄像头采集的色彩图像进行2d图像到3d图像的转换。但这种方法对摄像设备要求较高,需要相同型号的摄像设备,因此此种方法不够普及,具有很大局限性。



技术实现要素:

本发明实施例的主要目的在于提供一种3d立体成像的方法,以实现结合异型摄像头生成3d立体图像。

为了实现上述目的,本发明实施例提供一种3d立体成像的方法,所述的方法包括:步骤a:分别获取主摄像头拍摄的第一图像,以及副摄像头拍摄的第二图像,并进行灰度处理,生成第一灰度图像及第二灰度图像,其中,所述主摄像头与所述副摄像头为不同型号;步骤b:将所述第一灰度图像及第二灰度图像转换为同一坐标系下,具有相同焦距及分辨率的第三灰度图像及第四灰度图像;步骤c:对所述第三灰度图像及第四灰度图像进行立体匹配,获取所述第三灰度图像及第四灰度图像中相对应的像素点的视差值,并根据所述视差值计算所述第三灰度图像中各像素点的深度值;步骤d:根据所述深度值对所述第一图像进行2d至3d转换,生成3d立体图像。

在一实施例中,将所述第一灰度图像及第二灰度图像转换为同一坐标系下,具有相同焦距及分辨率的第三灰度图像及第四灰度图像,具体包括:对所述第一灰度图像及第二灰度图像进行归一化重投影处理,使所述第一灰度图像及第二灰度图像具有相同的焦距,并转换至所述同一坐标系下;采用近邻取样插值法或二次线性插值法将所述同一坐标系中的第一灰度图像及第二灰度图像转换为具有相同分辨率的所述第三灰度图像及第四灰度图像。

在一实施例中,通过以下公式对所述第一灰度图像进行归一化重投影处理:其中,为主摄像头内参数矩阵的逆矩阵,为主摄像头焦距x分量,该焦距为马达固定在某个距离下的测定值;f为主摄像头的焦距,dx是数字图像系统每个像素的x方向大小;为主摄像头焦距y分量,该焦距为马达固定在某个距离下的测定值;u0l为主摄像头主点x分量,该焦距为马达固定在特定距离下的测定值;v0l为主摄像头主点y分量,该焦距为马达固定在特定距离下的测定值;(ul,vl)为所述第一灰度图像所对应的像素坐标系的坐标;(pl,ql)为变换后的坐标。

在一实施例中,通过以下公式对所述第二灰度图像进行归一化重投影处理:其中,为主摄像头内参数矩阵的逆矩阵,axr为副摄像头焦距x分量,该焦距为马达固定在某一距离下的测定值;ayr为副摄像头焦距y分量,该焦距为马达固定在某一距离下的测定值;u0r为副摄像头主点x分量,该焦距为马达固定在某一距离下的测定值;v0r为副摄像头主点y分量,该焦距为马达固定在某一距离下的测定值;(pr,qr)为变换后的坐标。

在一实施例中,通过以下公式计算所述深度值:其中,z为深度值;f为焦距;t为基线长度;视差值d=xl-xr,其中,xl为一点在所述主摄像头的成像平面中的像点的x轴坐标,xr为同一点在所述副摄像头的成像平面中的像点的x轴坐标。

在一实施例中,通过以下公式对所述第一深度图进行重投影处理:其中,为所述校正后主摄像头参数矩阵的mrect的逆矩阵;(u,v)为所述第一深度图中各像素点的像素坐标;(p,q)为变换后的坐标。

在一实施例中,根据所述深度值对所述第一图像进行2d至3d转换,生成3d立体图像,具体包括:根据所述深度值生成所述第三灰度图像的深度图;对所述深度图进行重投影处理,生成处理后深度图,并与所述第一图像组合生成彩色-深度立体图像;

通过基于深度的图像绘制技术生成所述彩色-深度立体图像的虚拟视点图像;将所述彩色-深度立体图像与所述虚拟视点图像组合生成3d立体图像。

进一步地,上述的通过基于深度的图像绘制技术生成所述彩色-深度立体图像的虚拟视点图像,具体包括:从深度值0~255中选取一个值zps作为零平面的深度值;对于每个像素点(x,y),在所述虚拟视点图像上对应的视差为:dx=-ds*(z-zps),其中,ds为视差因子,用以调节图像景深效果;z为该像素点对应的深度值;所述像素点在虚拟视点图像上对应的位置为:(x+ds,y);根据各所述像素点在所述虚拟视点图像上对应的位置生成所述虚拟视点图像。

在一实施例中,在所述步骤b之前,所述的3d立体成像的方法还包括:根据所述主摄像头和副摄像头各自的旋转矩阵及平移矩阵,通过bouguet算法分别对所述第一灰度图像及第二灰度图像进行立体校正,生成具有平行光轴的校正后第一灰度图像及校正后第二灰度图像;用所述校正后第一灰度图像替换所述第一灰度图像、用所述校正后第二灰度图像替换所述第二灰度图像图像,执行所述步骤b至步骤d。

在一实施例中,在所述步骤b之后,所述的3d立体成像的方法还包括:根据所述主摄像头和副摄像头各自的旋转矩阵及平移矩阵,通过bouguet算法分别对所述第三灰度图像及第四灰度图像进行立体校正,生成具有平行光轴的校正后第三灰度图像及校正后第四灰度图像;用所述校正后第三灰度图像替换所述第三灰度图像、用所述校正后第四灰度图像替换所述第四灰度图像图像,执行所述步骤c至步骤d。

本发明实施例的有益效果在于,将两异型摄像头的图像相结合,生成3d立体图像,处理效果更佳,且处理效率更高。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为根据本发明实施例的3d立体成像的方法的流程图;

图2为双目摄像头理想模型的成像示意图;

图3为根据本发明实施例的双目异型摄像头的成像示意图;

图4a及图4b为二次线性插值法进行图像缩放过程的示意图。

具体实施方式

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

本发明实施例提供一种3d立体成像的方法。以下结合附图对本发明进行详细说明。

如图1所示,本发明实施例的3d立体成像的方法主要包括以下步骤:

步骤s101:分别获取主摄像头拍摄的第一图像,以及副摄像头拍摄的第二图像,并进行灰度处理,生成第一灰度图像及第二灰度图像,其中,主摄像头与副摄像头为不同型号;

步骤s102:将第一灰度图像及第二灰度图像转换为同一坐标系下,具有相同焦距及分辨率的第三灰度图像及第四灰度图像;

步骤s103:对第三灰度图像及第四灰度图像进行立体匹配,获取第三灰度图像及第四灰度图像中相对应的像素点的视差值,并根据视差值计算第三灰度图像中各像素点的深度值;

步骤s104:根据深度值对第一图像进行2d至3d转换,生成3d立体图像。

通过上述的步骤s101至步骤s104,本发明实施例的3d立体成像的方法,能够针对两异型摄像头的型号、光学参数、分辨率、黑白彩色的不同所拍摄图像的差异进行处理,将两异型摄像头的图像相结合,生成3d立体图像,处理效果更佳,且处理效率更高。

以下结合具体实施例,对本发明实施例的3d立体成像的方法中的各个步骤做进一步描述。

首先,关于双目异型摄像头的定义和参数描述。

(1)双目摄像头参数。

双摄像头包含两部分,每个镜头的内参数(intrinsicparameters)和镜头间的外参数(extrinsicparameters)。内参数描述的是单个摄像头的规格参数,外参数描述的是阵列摄像头之间的规格参数。双摄像头系统中以一路彩色摄像头为主的称为主摄像头,以left作为标识,主摄像头分担了主要的预览,非双摄像头模式下拍照等主要的拍照功能;另一路摄像头主要作为辅助作用,称为副摄像头,以right作为标识。

主摄像头(leftcamera)内参数矩阵定义如下:

其中:

摄像头焦距x分量,该焦距为马达固定在某个特定距离下(dist1)的测定值。f为摄像头的焦距,dx是数字图像系统每个像素的x方向大小,对数字图像系统来说,f和dx是不可分辨的。

摄像头焦距y分量,该焦距为马达固定在某个特定距离下(dist1)的测定值。

u0l:摄像头主点x分量,该焦距为马达固定在某个特定距离下(dist1)的测定值。

v0l:摄像头主点y分量,该焦距为马达固定在某个特定距离下(dist1)的测定值。

同理,定义副摄像头(rightcamera)的内参数矩阵如下:

axr:摄像头焦距x分量,该焦距为马达固定在某个特定距离下(dist1)的测定值。

ayr:摄像头焦距y分量,该焦距为马达固定在某个特定距离下(dist1)的测定值。

u0r:摄像头主点x分量,该焦距为马达固定在某个特定距离下(dist1)的测定值。

v0r:摄像头主点y分量,该焦距为马达固定在某个特定距离下(dist1)的测定值。

对于同型双目摄像头来说,mr和ml是相同的。

对于异型双目摄像头来说,mr和ml是不同的。

此外,leftcamera与rightcamera之间相对外参数有六个说明如下:

rx:副摄像头相对于主摄像头x方向的旋转量。

ry:副摄像头相对于主摄像头y方向的旋转量。

rz:副摄像头相对于主摄像头z方向的旋转量。

tx副摄像头相对于主摄像头x方向的偏移量。

ty:副摄像头相对于主摄像头y方向的偏移量。

tz:副摄像头相对于主摄像头z方向的偏移量。

由此,定义摄像头的旋转矩阵r:

是一个3x3正交单位矩阵;

平移矩阵:tr=(txtytz)t

(2)双目摄像头标定。

双目摄像头的参数可以测量获得,也可以采用厂家提供的信息。由于移动终端上一般提供变焦的功能,反复测量较为繁琐不实用。

(3)双目摄像头的理想模型。

如图2所示,在最简单的双目立体视觉中,左右摄像机内外参数一致,两幅的像平面是精确位于同一个平面上,而且光轴严格平行(光轴是从透视中心经过主点c的一条射线,也被叫做主射线,principalray),距离一定,并且有相同的焦长度f。

此时,如图3所示,双目摄像头的理想模型可以描述为:mr=ml,t为两个光心的距离,称为基线;r=e(标准正交矩阵),tr=(t00)t

在使用双目异型摄像头过程中,能够直接获取到的数据包括:

(1)采用像素坐标系(ul,vl)的主(左)图像pl;

(2)采用像素坐标系(ur,vr)的副(右)图像pr;

(3)拍摄拍摄图像时的摄像头实时内外参数mr、ml、r、tr。

在本发明实施例中,上述的步骤s101,分别获取主摄像头拍摄的第一图像,以及副摄像头拍摄的第二图像,并进行灰度处理,生成第一灰度图像及第二灰度图像。

其中,对于第一图像及第二图像中的各个像素点,其灰度值的计算公式为:gray=r*0.299+g*0.587+b*0.114。

并且,在本发明实施例中,该主摄像头和副摄像头是不同型号的两个摄像头。

步骤s102,将第一灰度图像及第二灰度图像转换为同一坐标系下,具有相同焦距及分辨率的第三灰度图像及第四灰度图像。其中,第三灰度图像为转化后的第一灰度图像;第四灰度图像为转换后的第二灰度图像。

具体地,是分别对第一灰度图像及第二灰度图像进行归一化重投影处理,使第一灰度图像及第二灰度图像具有相同的焦距,并将第一灰度图像及第二灰度图像转换至同一坐标系(像素坐标系)下。

由于主摄像头和副摄像头属于不同型号,其所拍摄的图像坐标点的映射关系并不相同。因此,首先通过归一化重投影处理,将第一灰度图像和第二灰度图像进行坐标转换,转换至同一坐标系下。

具体地,可通过以下公式将所述第一灰度图像转换至像素坐标系:

其中,为主摄像头内参数矩阵的逆矩阵,

为主摄像头焦距x分量,该焦距为马达固定在某个距离下的测定值;f为主摄像头的焦距,dx是数字图像系统每个像素的x方向大小;为主摄像头焦距y分量,该焦距为马达固定在某个距离下的测定值;u0l为主摄像头主点x分量,该焦距为马达固定在特定距离下的测定值;v0l为主摄像头主点y分量,该焦距为马达固定在特定距离下的测定值;(ul,vl)为所述第一灰度图像所对应的像素坐标系的坐标;(pl,ql)为变换后的坐标。

并且,通过以下公式将所述第二灰度图像转换至像素坐标系:

其中,为主摄像头内参数矩阵的逆矩阵,

axr为副摄像头焦距x分量,该焦距为马达固定在某一距离下的测定值;ayr为副摄像头焦距y分量,该焦距为马达固定在某一距离下的测定值;u0r为副摄像头主点x分量,该焦距为马达固定在某一距离下的测定值;v0r为副摄像头主点y分量,该焦距为马达固定在某一距离下的测定值;(pr,qr)为变换后的坐标。

然后,采用近邻取样插值法或二次线性插值法将同一坐标系中的第一灰度图像及第二灰度图像转换为具有相同分辨率的第三灰度图像及第四灰度图像。

其中,上述的二次线性插值法进行缩放的原理如图4a所示,图4a中,右侧为进行缩放前的原图,(宽sw,高sh);左侧为进行缩放后的图片,(宽dw,高dh)。

为便于查看,将上述图4a中的原图进行一定程度的放大后,如图4b所示。从原图像中(sx,sy)坐标点(sx,sy为浮点数)附近的a、b、c、d四个点的颜色值(此处为灰度值)color0/color1/color2/color3,把(sx,sy)到a/b/c/d坐标点的距离作为系数来把4个颜色近似得出(sx,sy)坐标点的颜色值(此处为灰度值)。

而对于近邻取样插值的缩放算法,则是直接取离该(sx,sy)坐标点距离最近的点(例如是a点,对应颜色为color0颜色)作为缩放后点的颜色(此处为灰度)。

上述的步骤s103,对第三灰度图像及第四灰度图像进行立体匹配,获取第三灰度图像及第四灰度图像中相对应的像素点的视差值,并根据视差值计算第三灰度图像中各像素点的深度值。

基于上述步骤s102生成的第三灰度图像及第四灰度图像,计算得出深度图。

在一实施例中,可依据平行光轴的双目立体视觉测距原理进行计算。具体地,双目立体视觉测距原理为:

如图3所示,设空间一点p(x,y,z)在两个平行放置的完全相同的摄像机中像点分别是(xl,yl)和(xr,yr),则在知道基线长t和焦距f的情况下,可以计算出深度z。

而焦距和基线参数称为双目摄像头的内外参数,可以直接采用厂家给出的数据,也可以采用摄像机标定的方法得出。

而立体匹配则是找出图像的同名点,即世界坐标中的同一点分别在两个摄像机中所成的像点,即上图中p点的两个(xl,yl)和(xr,yr)的一一对应关系,从而确定两点之间的视差值d。

然后,计算第三灰度图像中各像素点的z值。具体地,是通过以下公式计算所述深度值:

其中,z为深度值;f为焦距;t为基线长度;视差值d=xl-xr,其中,xl为一点在所述主摄像头的成像平面中的像点(图3中xl对应的点)的x轴坐标,xr为同一点在所述副摄像头的成像平面中的像点的x轴坐标。

在一实施例中,上述的立体匹配过程可以是通过opencv实现。在opencv中,cvfindstereocorrespondencebm()实现了一个快速有效的块匹配立体算法,它使用了绝对误差累计的小窗口sad来查找左右两幅立体校正图像之间的匹配点。对于处理非畸变的校正立体图像,块匹配立体匹配算法有可以如下三个步骤:

(1)对匹配图像先进行预过滤,使匹配图像的亮度归一化并加强匹配图像的纹理;

(2)在水平极线上用sad窗口进行匹配搜索;

(3)再对第步骤s102中的结果进行过滤,去掉坏的匹配点。

上述步骤s104,根据深度值对第一图像进行2d至3d转换,生成3d立体图像。

具体地,该步骤s104主要包括以下各步骤:

步骤s1041:根据该深度值生成第三灰度图像的深度图。具体地,是对于第三灰度图像计算出的灰度图每个像素点坐标的z值进行非线性的归一化处理,使得每个的z值在0~255之间,可以用一个8位灰度图来表示,从而生成对应该第三灰度图像的深度图。

步骤s1042:对深度图进行重投影处理,生成处理后深度图,并与第一图像组合生成彩色-深度立体图像。

在本发明实施例的步骤s102中,对第一灰度图像进行归一化重投影处理,对第一灰度图像进行转换,因此,在此步骤s1042中,还需对深度图进行重投影处理,逆向变换(消除畸变),将深度图的坐标点变换为与原图对应的坐标点。具体地,是通过以下公式对该深度图进行重投影处理:

其中,(u,v)为所述第一深度图中各像素点的像素坐标;(p,q)为变换后的坐标。

并且,针对对深度图进行重投影处理生成的处理后深度图和原始取得的主图像(第一图像),对图像周边缺少深度信息或者深度信息失真较大的部分进行剪裁,组合生成彩色-深度立体图像。

在上述的重投影处理过程中,对于处理后深度图中各像素点的深度值,结合该深度图中各像素点的深度值,采用近邻取样插值法或者二次线性插值法进行计算。具体的计算过程在上文中进行了描述,在此不再赘述。

步骤s1043,通过基于深度的图像绘制技术生成所述彩色-深度立体图像的虚拟视点图像。

彩色-深度立体图像是一种有损的立体图像表示标准,由一副单视点彩色图和每个像素点对应的8位深度值构成。在立体显示的时候,需经过基于深度的图像绘制(dibr:depth-image-basedrendering),得到另一视点的图像,(一个左视点,一个右视点),才能正常显示。

因此,在本发明实施例中,采样基于深度的图像绘制(dibr)技术,形成双视点的立体图像。

具体地,首先是关于虚拟视点的视差求取。从深度值0~255中选取一个值zps作为零平面的深度值。

对每个像素点(x,y),在虚拟视点图像上对应的视差为:dx=-ds*(z-zps),

其中,ds为视差因子,可以调节图像景深效果。z为该像素点对应的深度值。该像素点在虚拟试点图像上对应的位置为:(x+ds,y)。

然后,经过虚拟视点相机变换得到的虚拟视点图像,在具体实施时,个别像素点由于遮挡等原因不能计算得出,表现为未知(称为空洞)。采用图像修复的空洞填补技术,把这些未知的像素点补绘出来。小型的空洞使用采用周围像素点差值的办法填补,较大的空洞采用文理合成的方法进行填补。

在生成了彩色-深度立体图像对应的虚拟视点图像后,可通过步骤s1044,将主图像(彩色-深度立体图像)作为左视点图,通过dibr绘制的虚拟视点图作为右视图,组合成side-by-side格式的立体图像。

由此,通过本发明实施例的3d立体成像的方法,基于双目异型摄像头所拍摄的图像,生成相应的3d立体图像。通过此方法,由立体校正使主摄像头和副摄像头的光轴平行,从而使后续进行立体匹配的算法过程相对简化很多,大大缩减了对图像进行处理的时间。

在上述实施例中,所使用的主摄像头和副摄像头的参数是采用厂家通过api提供的实时参数信息。

而在另一实施例中,有可能无法直接从厂家获得相应的摄像头参数信息,此时,需先对摄像头参数据进行标定。而对于标定所得的参数,还需进行进一步的校正。因此,在此实施例中,在上述步骤s102之前,3d立体成像的方法还加入一校正步骤,具体地,是根据主摄像头和副摄像头各自的旋转矩阵及平移矩阵,通过bouguet算法分别对第一灰度图像及第二灰度图像进行立体校正,生成校正后主摄像头参数矩阵mrect,以及具有平行光轴的校正后第一灰度图像及校正后第二灰度图像。

基于上述步骤s102中取得的第一灰度图及第二灰度图,采用bouguet算法进行立体校正,在两台标定摄像机的旋转矩阵和平移参数基础上进行,再给定立体匹配图像间的旋转矩阵和平移矩阵(r,tr),bouguet算法就是使每一幅匹配图像中的重投影次数最小化(也能最小化重投影畸变),使观测面积最大化。在一实施例中,可使用opencv中的cvstereorectify函数来实现该算法。对准两个匹配图像平面后的有八个参数项,每个摄像机都分别有一个畸变向量distcoeffs,一个旋转矩阵rrect(应用于摄像机),校正以及未校正的摄像机矩阵(mrect和m)。

然后,用校正后第一灰度图像替换第一灰度图像、用校正后第二灰度图像替换第二灰度图像图像,再继续执行上述步骤s102至步骤s104。

需要注意的是,由于在上述的校正步骤中,对摄像头参数矩阵进行了校正,因此,在后续的步骤s1042中,对深度图进行重投影处理时,是通过以下公式对该深度图进行重投影处理:

其中,为所述校正后主摄像头参数矩阵的mrect的逆矩阵;(u,v)为所述深度图中各像素点的像素坐标;(p,q)为变换后的坐标。

在另一实施例中,上述的校正步骤也可在步骤s102之后进行。此时,该校正步骤具体为:

根据主摄像头和副摄像头各自的旋转矩阵及平移矩阵,通过bouguet算法分别对第三灰度图像及第四灰度图像进行立体校正,生成具有平行光轴的校正后第三灰度图像及校正后第四灰度图像;

用校正后第三灰度图像替换第三灰度图像、用校正后第四灰度图像替换第四灰度图像图像,继续执行步骤s103至步骤s104。

需要注意的是,由于在上述的校正步骤中,对摄像头参数矩阵进行了校正,因此,在后续的步骤s1042中,对深度图进行重投影处理时,是通过以下公式对该深度图进行重投影处理:

其中,为所述校正后主摄像头参数矩阵的mrect的逆矩阵;(u,v)为所述深度图中各像素点的像素坐标;(p,q)为变换后的坐标。

本发明实施例的3d立体成像的方法的上述优点较为突出的体现在对移动设备的应用中,当用户使用具有双目摄像头的移动设备拍照时,如果想要生成具有立体效果的3d立体图像并进行编辑,其所希望的等待操作事件仅为几秒,甚至几毫秒。而使用传统的3d立体图像转换算法,此过程很可能会消耗几分钟的时间,这就大大地降低了用户体验。因此,通过实施本发明实施例的3d立体成像的方法,能够大大缩减对图像进行处理的时间,从而满足用户的需求。

此外,需要说明的是,在本发明实施例中,虽是以序号表明每一步骤,但在实际应用中,本发明实施例的3d立体成像的方法并非一定要按照步骤s101至步骤s104的顺序执行。具体实施时,可对每步骤所生成的图像或是数据进行存储,当使用某一设备对大量图像进行批量处理时(例如连续拍照所产生的大量图像),由于拍摄这些图像的双摄像头的参数均一致,因此,可针对第一幅图像进行全过程的处理,然后对于后续的多幅图像,可使用第一幅图像处理过程中生成的校正后摄像头参数矩阵、立体匹配的视差值等。从而可进一步大大减少将图像转换为立体图像的处理时间。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,比如rom/ram、磁碟、光盘等。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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