RGB图像的主平面检测算法
2020-04-08李志明
李志明
(四川大学计算机学院,成都 610065)
0 引言
平面结构是日常生活中非常常见的一种特殊结构,例如建筑物墙体、书桌桌面、电子显示屏等,大大小小的众多平面构成了复杂的生活场景。随着计算机视觉技术的迅速发展,平面凭借其特殊的几何特性,在计算机视觉领域中发挥着越来越重要的作用。例如在增强现实领域中,在场景中加入虚拟物体通常要依托于某些平面结构,这样才能满足物理上的真实感;再如当下智能手机中的全景拍照功能,就是利用同一个场景下运动拍摄的多张照片,检测出图像中的多个平面并进行配准,然后拼接起来得到全景图像。
对于人眼来说,判断图像中的平面结构是一件轻而易举的事情,但对于计算机而言,理解和识别图像中的平面结构是一大难题。随着硬件的发展,出现了3D摄像头,可拍摄含有深度信息的图像,即RGB-D图像,对于RGB-D图像,可根据其深度信息恢复重建三维场景,从而提取出场景中的平面。但3D摄像头尚未普及前,从RGB图像中提取平面仍是亟需解决的课题。
1 研究现状
目前针对二维图像的平面检测算法中,最常用且表现最好的是基于特征点匹配的平面模型拟合方法。首先采集同一场景在不同视角下的多张图像,通过对多张图像进行特征点检测和匹配得到特征点对数据集,由匹配的特征点对拟合出单应性矩阵来定义平面模型。这一类方法存在明显的弊端:
(1)严重依赖于特征点检测与匹配的准确度。当图像中平面较光滑时,无法检测到足够的特征点;当图像中含有噪声或者大量重复纹理时,很容易出现错误的匹配。而这些情况会导致无法提取平面模型、生成虚平面(不存在的平面)、生成的平面模型存在极大的误差等各种情况。
(2)检测出的平面是非连续的。此类方法是通过点到模型的匹配关系,将每个特征点分配到对应的平面模型,最终的检测结果仅仅是对离散的特征点的划分,而非对整幅图像的连续的、逐像素的划分。
(3)需要采集场景在不同视角下的多幅图像。如果图像间的视角变化不明显,则无法区分不同的平面,这一前提条件也使得这一类方法的应用受到了极大的限制。
鉴于此,本文提出一种新的平面检测算法,首先利用图像分割技术提取出图像主体部分,然后基于轮廓提取技术和平面的几何特性提取出主平面的轮廓,最后使用拟合技术并结合图像中的边缘信息对平面的边界进行优化。
2 算法实现
2.1 图像预处理
Toldo等[1]提出了基于随机抽样和概念数据表示的J-linkage聚类算法,将样本数据放入相似概念空间中进行分析,使属于同一模型的数据元素在相似概念空间中聚为一类.Tardif等[2]将J-Linkage聚类算法应用到消失点检测,多次随机取样得到一定数量的消失点假设模型,然后计算每一条直线到所有消失点模型的匹配程度,若消失点与直线距离小于某个阈值则相匹配记为1,反之为0,从而每一条直线对应一个0-1向量,称为该直线的偏好集。将偏好集相似的直线聚为一类,最终得到多个聚类,每一个聚类中的直线近似相交于对应的消失点。本文使用此聚类思想对场景中的直线段进行聚类处理,由于日常的户外场景通常为曼哈顿结构[3],直线段聚类后主要有三类,且三类直线段在三维空间中的映射是相互正交的,如图3所示,直线段主要分为了红绿蓝三类,三类直线分别近似相交于消失点v1,v2,v3。设相机的焦距为 f,根据曼哈顿结构中消失点的几何性质[4],消失点的相机坐标( )vix,viy,f相互正交,即满足公式vix*vjx+viy*vjy+f*f=0(i≠j),由此可求得相机焦距 f,以及内参矩阵,cx和cy分别为主点横纵坐标,即图像中心点的坐标值。
图1
2.2 提取主平面轮廓
图像分割即把图像分成若干个特定的、具有独特性质的区域并提取出感兴趣目标的技术和过程,随着深度学习技术的发展,图像分割技术已能将视觉输入分为不同的语义可解释类别。本文使用DeepLabv3模型[5]将场景中的主体建筑部分分割出来,效果如图2a所示,随后提取该部分的所有轮廓,筛选出符合条件的主轮廓,由于提取的轮廓所含节点极多,这里先将轮廓拟合成一个多边形,从而在不影响轮廓整体形状的前提下保留尽量少的节点,如图2(b)所示,其中红色线条构成的多边形即为拟合结果。
图2
从图2(b)中可看出,拟合后的多边形轮廓仍存在许多误差,所以随后需要做进一步优化,删除无效的节点。记轮廓中任意相邻的三节点为vi,vj,vk,vj的两条邻边为lij、ljk,若线段lij和ljk的斜率差小于某阈值,则删除节点vj,将节点vi与节点vk相连。接下来,在剩余的节点中,寻找三平面的交点V,使得其满足:
其中,H1(A1,B1,C1),H2(A2,B2,C2)为轮廓中所求交点V的两条邻边,H3(A3,B3,C3)是过点V的直线段,vi、vj、vk分别为2.1节中所求的三个消失点。即过所求节点V的三条直线段正好对应三个不同的消失点方向,H3即为某两个平面间的分界线,如图3所示,绿色圆点为三平面交点V,蓝色线段即为左右两平面的分界线H3,将其延长后可将原轮廓分成两部分,计算每个部分的区域面积,面积最大的部分即为场景主平面,剩余平面可根据实际需要保留。
图3主平面轮廓
2.3 优化平面边界
上一节中提取的平面轮廓很不规则,接下来做进一步优化。按逆时针方向记平面轮廓节点为ri(i=0,1,…,n),起点r0为图3中绿色节点,记2.2节中所求平面分界线H3延长后的直线段为L1,轮廓中L1相邻的两直线段分别为 Lpre、Lnext,Pi(i=1,2,3,4)为 4个点集,初始为空,分别对应平面的4条边Li(逆时针方向),kj为节点ri和ri+1之间线段的斜率。将rj(j=1,…,n-1)按如下规则分类:
(1)rj∈P2,当dist(rj,Lpre)/dist(rj,Lnext)>5);
(2)rj∈P4,当dist(rj,Lnext)>5)/dist(rj,Lpre);
(3) rj∈P2且 rj∈P3,当 dist( rj,Lnext)<10)且| kj-1-k1|
(4) rj∈P3且 rj∈P4,当 dist( rj,Lpre)<10)且| kj-1-kn|
(5)rj∈P3。
将分类后的点集Pi,使用RANSAC(Random Sample Consensus,随机抽样一致性)算法拟合得到平面的另外三条边界线段L2,L3,L3,将其作为初值,构造代价函数:
对平面边界进行优化,其中li为待求的四条线段参数,w=K-TK-1为绝对二次曲线,K为2.1节中所求得的相机内参矩阵和分别为待求的平面边界Li中两组对边的交点,由于平面边界线段在3D空间的映射中对边相互平行且邻边相互垂直,所以满足绝对二次曲线约束[6],即。这个具有非线性约束的最小二乘问题可通过LM(Levenberg-Marquardt,列文伯格-马夸尔特)算法迭代求解,优化结果如图4所示。由于算法流程中轮廓本身就存在一定误差,可将所求直线段与图像边缘检测的结果进行匹配,如果某直线和所拟合直线相似程度达到一定阈值,则将该直线作为最终的边界。我们采用公式‖来衡量两直线的相似程度,Qk(k=1,…,m)为图像中检测到直线段,m为拟合的直线L上所取的第j个等分点iji表示直线Qk与点mij的距离范数,使S最小的Qk则是与Li相似程度最高的直线段,当S<2时,则用Qk替代Li,最终结果如图5。需要注意的一点是对于非矩形平面,即不满足曼哈顿结构的场景,则忽略使用绝对二次曲线作约束进行优化的步骤,直接将拟合的线段与图像边缘线段进行匹配。
图4拟合的平面边界
图5优化后的平面边界
2.4 实验结果分析
传统的平面提取算法需要不同视角下的多幅图像,所得结果仅仅是对离散的特征点的划分,而非对整幅图像的连续的、逐像素的划分,而本文算法是提取单幅RGB图像中的完整平面区域,所以未作对比分析实验。为了验证此平面检测算法的有效性,我们在多个场景下进行了实验,部分实验结果如图6所示。
图6其他实验结果
3 结语
本文所提出的平面检测算法,是在单幅RGB图像上,利用图像分割、轮廓提取技术,以及平面的几何特性检测出主平面,并利用图像中的边缘信息对平面的边界进行优化,最终得到完整、连续的平面区域,可为后续平面跟踪、三维重建等工作提供丰富的先验信息,极大地节省了算法开销。但本文算法也存在一定的缺陷,适用范围限于平面结构相对简单的户外场景,且对于一些干扰因素如遮挡、平面丢失等比较敏感。鉴于此,我们下一步的工作目标是提高算法的普适性和鲁棒性。另外,由于传统的平面检测算法未重视平面的整体外观特征,充分利用平面的轮廓结构等几何特征并结合深度学习技术来检测单幅RGB图像平面将是我们下一步工作的主要研究路线。