本发明涉及计算机视觉中的三维重建领域,特别涉及一种静态场景动态目标的三维重建方法。
背景技术:
三维重建是计算机视觉的经典问题,是构建人工智能视觉系统的基础和关键。对于建模及导航、视觉监控、虚拟现实、人机交互、计算机辅助设计等领域,三维重建技术是场景目标感知与理解的基础和关键技术。
三维重建方法有很多分类,如基于标记点的方法,双目重建方法,多视角立体重建方法,多传感器方法等。用于三维重建的传感器类型有很多,包括视觉类的单目摄像机、双目摄像机、rgbd视觉加深度传感器、安装于环境中的摄像机阵,以及非视觉类的激光扫描仪、结构光、声呐、结合imu的传感器等。
其中,重建动态物体的三维重建算法分为基于多视角、多传感器源的重建,又或者基于物体标记点的重建,这样的算法对传感器,环境以及目标增加了很多限制,在许多场景中显然不适用。如有标记的算法需要在被重建物体上贴标记以辅助重建过程,这种算法繁琐耗时,操作复杂;多视角重建对设备要求高,需要固定场景,同样限制了其应用;多传感器昂贵的价格增加了成本,不适用于普通用户的广泛使用;rgbd传感器虽然有直接获得深度信息的优势,但也有一些量程、应用范围和光照的限制。
技术实现要素:
为解决上述技术问题,本发明提供了一种静态场景动态目标的三维重建方法,有效降低了背景对重建模型的干扰,提高了重建模型的可观性,降低了特征点的提取和纹理划分时的计算量,有效的提高了三维重建的速度。
为达到上述目的,本发明的技术方案如下:
一种静态场景动态目标的三维重建方法,包括如下过程:
步骤一,读取视频,截取无动态物体的视频片段,生成背景模型;
步骤二,抽取动态物体出现后的视频帧,使用背景图像提取视频帧中的前景,组成前景集合;
步骤三,使用前景集合进行三维重建,具体如下:
(1)检测特征点,计算描述子,匹配特征点;
(2)计算特征点对应的空间点,ba优化稀疏点云;
(3)以稀疏点云为基础,生成稠密点云,并去除外点;
(4)在稠密点云的基础上,划分三角网格,截取图像集合中的图像,为三角网格贴上纹理。
上述方案中,步骤一具体方法如下:
选取一定时间范围内无任何动态物体的视频片段,设置视频片段的第一帧图像为初始背景图像b0,依次融合视频片段中的每帧图像i更新背景:
bf=(1-α)×bf-1+α×if
其中,f表示图像在视频片段中的帧数,α为学习速率,且0<α<1,if为视频片段中的第f帧图像,bf-1和bf分别为融合了f-1帧和f帧后的背景图像。
上述方案中,步骤二具体方法如下:
在动态物体出现后的视频序列中每隔15帧抽取1帧图像放入图像集合k中,用于提取前景参与后续的三维重建,对图像集合k中的每一幅图像i作以下处理:
(1)将带有动态目标的图像i与背景图像b相比较,得到图像i与背景图像b在像素层面上的差异值,将差异值少于th的像素设置为0,大于等于th的像素部设置为255,th为自定义阈值;此时获得提取出粗糙前景的二值图;
(2)对粗糙前景二值图做膨胀和腐蚀处理,生成膨胀二值图和腐蚀二值图;组合膨胀二值图和腐蚀二值图后生成一幅初步标记了前景、背景和不确定的区域的标记图;使用分水岭算法处理标记图生成仅标记了背景和前景的标记图,二值化分水岭算法生成的标记图,将前景设置为1,背景设置为0;
(3)在二值化标记图上提取轮廓并获取每个轮廓的重心,每一个轮廓圈出了提取出的前景区域,计算轮廓重心与相机拍摄图像的中心位置的距离d,使用矩形逼近生成每个轮廓对应的矩形,矩形的宽和高分别为wr和hr,计算轮廓矩形的面积s=wr×hr;
其中,mba为轮廓的矩,m的下标b和a的取值为0或1,m00,m10,m01为b和a分别在不同取值情况下计算出的轮廓矩,x为图像中像素的横坐标,y为图像中像素的纵坐标,pxy为轮廓上一点(x,y)的像素值,w为相机成像图像的宽,h为相机成像图像的高;
(4)遍历图像i的每一个前景轮廓,当轮廓的矩形面积s大于或小于设置的面积阈值时删除该轮廓,当轮廓重心与相机拍摄图像的中心位置的距离d大于设置的距离阈值时删除该轮廓;若执行完上述过滤操作后图像i无前景轮廓,则认为该图像为无用图像不参与后续的三维重建过程;若执行完上述过滤操作后图像i仍存在前景轮廓,则排序各个轮廓对应的矩形面积,保留面积最大的矩形rect;
根据矩形rect生成图像i对应的掩码二值图mask,在掩码二值图mask上将矩形rect范围内的像素值设置为255,矩形范围以外的像素值标记为0;将图像i和掩码二值图mask设置为图像-掩码对存入前景集合k'用于后续的三维重建过程。
上述方案中,步骤三中,在进行三维重建之前预先标定相机的内部参数,获得针孔相机模型内参矩阵c。
上述方案中,步骤(1)检测特征点,计算描述子,匹配特征点的具体方法如下:
提取前景集合k'中的每一幅图像i,读取其对应的掩码二值图mask,在图像i上检测特征点,仅检测对应在掩码二值图mask上像素值大于零的像素;计算特征点对应的描述子,比较特征点的描述子,使用暴力匹配方法获取任意两幅图像上的特征点的匹配关系。
上述方案中,步骤(2)计算特征点对应的空间点,ba优化稀疏点云的具体方法如下:
使用增量方法重建稀疏点云,计算前景集合k'中任意两幅图像的匹配得分ms:
其中,n为两幅图像的匹配对数量,λ为自定义的权值系数,λ>1,用于提高匹配对数量对匹配得分的影响,σ1为自定义的匹配对数量阈值,σ2为自定义的时间间隔阈值,δk为选定两幅图像在图像集合k中的索引之差;
设置ms得分高的两幅图像作为初始两视图,使用基于对极约束的八点法计算初始两视图的本质矩阵,使用svd分解本质矩阵获得初始两视图之间的相对位姿t;
设置初始两视图中的一幅图像的相机坐标系为世界坐标系,计算出的相对位姿都转化为相对于世界坐标系的位姿,使用三角量测生成初始两视图对应的稀疏点云,构造ba代价函数g(δ),优化稀疏点云和相机的位姿,之后不断地添加新的图像生成新的空间点,并执行ba优化:
其中,n为相机参与ba优化的图片数量,i为第i幅图像,w为空间点数量,j为第j个空间点,χij表示第j个空间点能否出现在第i幅图像对应的视野中,χij值为0表示不可见,χij值为1表示可见;ti为图像i对应的相机位姿,xj为第j个空间点,uij()为将空间点j投影到图像i上的投影公式,
上述方案中,步骤(3)以稀疏点云为基础,生成稠密点云,并去除外点的具体方法如下:
读取稀疏点云数据,获得优化后的前景集合中的图像的相机位姿;为前景集合中每一幅图像i创建一个相邻图像集,相邻图像集中的图像为图像i在前景集合序列中的前7幅和后7幅共14图像;
计算相邻图像集中的任意图像k与图像i之间的夹角θik,保留6°<θik<54°范围内的相邻图像,获取相应的图像的相机相对距离dik;计算相邻图像集中相对于图像i的平均相机相对距离
移除相邻图像集中相对于图像i较远
对于前景图像集合中的每一幅图像i与它的参考图像构成了一对立体匹配对,使用基于双目视觉的立体匹配方法计算图像i的前景掩码区域的深度图,计算前景集合中的每幅图像的深度图;
对于前景图像集合中的每一幅图像i,使用该图像的深度图剔除其相邻图像集合中所有图像的被遮挡及深度相近的深度值;剔除掉这些冗余的深度值后,反投影图像前景掩码区域的像素到三维空间,生成稠密的点云。
通过上述技术方案,本发明提供的一种静态场景动态目标的三维重建方法具有如下有益效果:
1、本发明使用固定相机位置的单目相机重建静态场景中的动态物体,通过仅使用图像中的前景区域参与重建,实现了固定位置的相机对动态物体的三维重建。
2、本发明将前景提取与三维重建相结合,扩展了三维重建技术的应用范围。
3、本发明仅使用前景区域参与重建过程,去除了背景元素,有效降低了背景对重建模型的干扰,提高了重建模型的可观性。
4、本发明仅使用前景区域参与重建过程,大大降低了特征点的提取和纹理划分时的计算量,有效的提高了三维重建的速度。
5、本方面更仅使用前景区域参与重建过程,降低了外点数量,提高了三维重建的鲁棒性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为粗糙前景二值图的示意图;
图2为分水岭算法生成的前景轮廓的示意图;
图3为输入图像对应的掩码图像示意图;
图4为检测特征点的图像示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明提供了一种静态场景动态目标的三维重建方法,具体实施例如下:
步骤一,读取视频,截取无动态物体的视频片段,生成背景模型;
选取一定时间范围内无任何动态物体的视频片段,设置视频片段的第一帧图像为初始背景图像b0,依次融合视频片段中的每帧图像i更新背景:
bf=(1-α)×bf-1+α×if
其中,f表示图像在视频片段中的帧数,α为学习速率,且0<α<1,if为视频片段中的第f帧图像,bf-1和bf分别为融合了f-1帧和f帧后的背景图像。
步骤二,抽取动态物体出现后的视频帧,使用背景图像提取视频帧中的前景,组成前景集合;
在动态物体出现后的视频序列中每隔15帧抽取1帧图像放入图像集合k中,用于提取前景参与后续的三维重建,对图像集合k中的每一幅图像i作以下处理:
(1)将带有动态目标的图像i与背景图像b相比较,得到图像i与背景图像b在像素层面上的差异值,将差异值少于th的像素设置为0,大于等于th的像素部设置为255,th为自定义阈值;此时获得提取出粗糙前景的二值图,如图1所示;
(2)对粗糙前景二值图做膨胀和腐蚀处理,生成膨胀二值图和腐蚀二值图;组合膨胀二值图和腐蚀二值图后生成一幅初步标记了前景、背景和不确定的区域的标记图;使用分水岭算法处理标记图生成仅标记了背景和前景的标记图,如图2所示,二值化分水岭算法生成的标记图,将前景设置为1,背景设置为0;
(3)在二值化标记图上提取轮廓并获取每个轮廓的重心,每一个轮廓圈出了提取出的前景区域,计算轮廓重心与相机拍摄图像的中心位置的距离d,使用矩形逼近生成每个轮廓对应的矩形,矩形的宽和高分别为wr和hr,计算轮廓矩形的面积s=wr×hr;
其中,mba为轮廓的矩,m的下标b和a的取值为0或1,m00,m10,m01为b和a分别在不同取值情况下计算出的轮廓矩,x为图像中像素的横坐标,y为图像中像素的纵坐标,pxy为轮廓上一点(x,y)的像素值,w为相机成像图像的宽,h为相机成像图像的高;
(4)遍历图像i的每一个前景轮廓,当轮廓的矩形面积s大于或小于设置的面积阈值时删除该轮廓,当轮廓重心与相机拍摄图像的中心位置的距离d大于设置的距离阈值时删除该轮廓;若执行完上述过滤操作后图像i无前景轮廓,则认为该图像为无用图像不参与后续的三维重建过程;若执行完上述过滤操作后图像i仍存在前景轮廓,则排序各个轮廓对应的矩形面积,保留面积最大的矩形rect;
根据矩形rect生成图像i对应的掩码二值图mask,如图3所示,在掩码二值图mask上将矩形rect范围内的像素值设置为255,矩形范围以外的像素值标记为0;将图像i和掩码二值图mask设置为图像-掩码对存入前景集合k'用于后续的三维重建过程。
步骤三,使用前景集合进行三维重建,具体如下:
在进行三维重建之前预先标定相机的内部参数,获得针孔相机模型内参矩阵c。
(1)检测特征点,计算描述子,匹配特征点;
提取前景集合k'中的每一幅图像i,读取其对应的掩码二值图mask,在图像i上检测特征点,如图4所示,仅检测对应在掩码二值图mask上像素值大于零的像素;计算特征点对应的描述子,特征点可以选择orb,sift,surf等。比较特征点的描述子,使用暴力匹配方法获取任意两幅图像上的特征点的匹配关系。
(2)计算特征点对应的空间点,ba优化稀疏点云;
在本发明中相机保持不动,物体在转动,提取图像中的前景后计算相机为位姿时,将整个运动模型转换为目标不动,相机绕目标旋转。
使用增量方法重建稀疏点云,计算前景集合k'中任意两幅图像的匹配得分ms:
其中,n为两幅图像的匹配对数量,λ为自定义的权值系数,λ>1,用于提高匹配对数量对匹配得分的影响,σ1为自定义的匹配对数量阈值,σ2为自定义的时间间隔阈值,δk为选定两幅图像在图像集合k中的索引之差;
设置ms得分高的两幅图像作为初始两视图,使用基于对极约束的八点法计算初始两视图的本质矩阵,使用svd分解本质矩阵获得初始两视图之间的相对位姿t;
设置初始两视图中的一幅图像的相机坐标系为世界坐标系,计算出的相对位姿都转化为相对于世界坐标系的位姿,使用三角量测生成初始两视图对应的稀疏点云,构造ba代价函数g(δ),优化稀疏点云和相机的位姿,之后不断地添加新的图像生成新的空间点,并执行ba优化:
其中,n为相机参与ba优化的图片数量,i为第i幅图像,w为空间点数量,j为第j个空间点,χij表示第j个空间点能否出现在第i幅图像对应的视野中,χij值为0表示不可见,χij值为1表示可见;ti为图像i对应的相机位姿,xj为第j个空间点,uij()为将空间点j投影到图像i上的投影公式,
(3)以稀疏点云为基础,生成稠密点云,并去除外点;
读取稀疏点云数据,获得优化后的前景集合中的图像的相机位姿;为前景集合中每一幅图像i创建一个相邻图像集,相邻图像集中的图像为图像i在前景集合序列中的前7幅和后7幅共14图像;
计算相邻图像集中的任意图像k与图像i之间的夹角θik,保留6°<θik<54°范围内的相邻图像,获取相应的图像的相机相对距离dik;计算相邻图像集中相对于图像i的平均相机相对距离
移除相邻图像集中相对于图像i较远
对于前景图像集合中的每一幅图像i与它的参考图像构成了一对立体匹配对,使用基于双目视觉的立体匹配方法计算图像i的前景掩码区域的深度图,计算前景集合中的每幅图像的深度图;
对于前景图像集合中的每一幅图像i,使用该图像的深度图剔除其相邻图像集合中所有图像的被遮挡及深度相近的深度值;剔除掉这些冗余的深度值后,反投影图像前景掩码区域的像素到三维空间,生成稠密的点云。
(4)在稠密点云的基础上,划分三角网格,截取图像集合中的图像,为三角网格贴上纹理。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。