如果想要深入学习单目深度估计方面的知识,可以关注我们工坊推出的课程: 单目深度估计方法:算法梳理与代码实现
单目深度估计一直以来都是计算机视觉领域中的一项非常具有挑战的难题。随着计算机技术、数字图像处理算法和深度学习等技术的发展,常用的单目深度估计算法大概可以分为以下几类:基于线索的和机器学习的传统方法、基于有监督的深度学习方法和基于无监督的深度学习方法。
今天和大家重点介绍一下三个传统方法的基本原理,包括:马尔科夫随机场(Markov random field, MRF)、运动恢复结构(Structure from motion, SFM)、阴影恢复形状(Shape from Shading)。
1、马尔可夫随机场
在基于有监督学习的图像深度估计算法中,通常以图像中单个像素或者区域作为深度估计的基本单元,并且某一个像素或区域的深度与相邻像素或区域的深度存在关联。对这种上下文相关的约束关系, 一般使用马尔可夫随机场(Markov random field, MRF) 或条件随机场(conditional random field, CRF)来建模,描述一个像素或区域的深度与其相邻像素或区域深度间的关系。
在进行深度估计时,每个像素或区域的位置上存在随机场中的一个随机变量,它可以从深度值的集合中进行取值,所以,深度估计问题的本质就是找到最可能符合真实场景深度的一个深度值的配置。
2、运功恢复结构(SFM)
SFM,全称structure from motion,是通过相机的移动来确定目标的空间和几何关系的方法,通俗的说法就是利用视频中不同帧之间的二维特征点的对应关系同时恢复三维结构和相机的内外参,是三维重建中的一种常见方法,也是深度学习之前深度估计的经典方法。
SFM首先挑选合适的无序图片,从这些图像中提取出相机的焦距信息,然后采用SIFT等算法对图像进行特征提取,并计算两张图像特征点之间的欧氏距离进行特征点匹配,从而找到达到要求的图像对。
对于每一个图像匹配对,通过计算对极几何,估计F矩阵并通过ransac算法优化改善匹配对。如果有特征点可以在这样的匹配对中链式地传递下去,一直被检测到,就可以形成特征轨迹。
SFM关键在于Bundle Adjustment(BA)过程。首先对初始化选择的两幅图片进行第一次BA,而后循环添加新的图片进行BA,直到没有可以继续添加的图片,BA结束。得到相机估计参数和场景几何信息,即稀疏的3D点云。
3、阴影恢复形状(SFS)
Shape From Shading是一种从单幅图像中计算一个表面三维形状的方法。与大多数其他三维重建问题(例如立体和光度立体)相反,在Shape From Shading问题中,我们只使用单个图像。
SFS根据一张物体表面的黑白图像的亮度来计算该表面的三维形状,如下图所示。
众所周知Shape From Shading是病态(ill-posed)问题。下图展示了一种凹凸歧义性,这里的歧义是由于照明参数的估计发生了变化。我们可以看到两个陨石坑,一小一大,但如果我们想象光源在图片的底部而不是顶部,我们可以将这些陨石坑变成火山。
考虑到这些困难,我们因此在这里假设光源、表面反射率和相机的所有参数都是已知的。我们利用灰度图片的亮度信息和亮度生成原理,求出每个像素在3D空间中的表面法向量,再根据法向量求得深度信息。
最后的结果如下图所示,
备注:作者也是我们「3D视觉从入门到精通」特邀嘉宾