一、相机数学模型

  • 从世界坐标系到相机坐标系

相机模型与视觉测距

假设在某间房子中放了一台相机拍照。为了方便测量,我们以房子的某处墙角为原心建立直角坐标系,即世界坐标系。为了研究相机模型,要做的第一步就是将世界坐标系转化为以相机光心为原点的相机坐标系,以相机的视角来“看”外部世界。

三维直角坐标系的旋转与平移变换,可以表示为:

齐次坐标矩阵乘法形式:

 是单位矩阵),这是一个非常重要的性质。

 角,用矩阵可以表示为:

相机模型与视觉测距

用矩阵可以表示为

 成立。更复杂情况类似,感兴趣的朋友可以自行探索。

  • 从相机坐标系到成像平面坐标系

相机模型与视觉测距

物理焦距(单位:米)。

 投影到成像平面的过程,并在成像平面形成倒像。这里有一个问题,为何平时我们用手机、数码相机拍照时生成的图片不是倒的?这是由于手机、数码相机等拍照设备内部软件在处理时做了自动翻转。

相机模型与视觉测距等效成像平面(虚像)

 。

相机模型与视觉测距

那么在上图中,由相似三角形原理可以得出:

将上式整理写成齐次坐标矩阵乘法形式:

  • 像素坐标系

相机模型与视觉测距

数字图像就是一个由离散像素点组成的矩阵。

相机模型与视觉测距

 像素坐标系的单位是离散的“像素”。

相机模型与视觉测距

 的变换可以表示为:

这个变换有两个步骤组成:

  1. 相机传感器中每个感光原件大小决定。
  2.  像素到左上角点。

 中的点(单位:像素)。那么最终变换关系是:

 像素坐标系中的的位置(单位:像素)。简记为:

或更简记为:

当然由于最后一列为0,也记为:

 是相机外参矩阵,由相机摆放位置决定。显然相机标定就是计算内、外参矩阵的过程。

二、视觉测距

  • 单目测距(单目距离估计)

 呢?

相机模型与视觉测距

 信息。

 ,此时可以估计出地面物体与相机真实距离为:

 可以从标定板图像中读取出来。需要说明,这只是一种估计方法,并非精确计算。

相机模型与视觉测距

  • 双目测距

 参数。

相机模型与视觉测距

某宝的双目测距模块(左右相机一样+相机z_c光轴平行)

 平行,否则就是对极几何问题了。

相机模型与视觉测距

双目测距

 。

 的公式为:

 。那么从上式得出,对于左边的相机:

对于右边的相机:

 。上面两式相减得:

 ,那么有:

 能够精确计算出来。

虽然可以通过双目可以精确测距,但是在实际中也存在问题:

  1.  的平行程度。
  2.  ,即双目立体匹配。在复杂光照和复杂场景下,如何准确双目立体匹配本身就是很难的问题。
  3.  越小,测距结果越容易受到双目立体匹配误差影响(即双目测距精度与被测物体距离成反相关)。

相机模型与视觉测距

所以,单目估计距离简单但是不精确,双目测距精确但是算法复杂且不稳定。

三、深度学习在视觉测距中的发展

当然,目前也有使用深度学习网络单目距离估计的方法:

深度图,再通过网络refine得到高精度距离图。

相机模型与视觉测距

 估计的基础上继续精细化估计,并且加入条件随机场CRF修正网络结果。

相机模型与视觉测距

目前CVPR 2020有文章通过边缘和边界来进一步提高深度学习深度估计网络的结果。

相机模型与视觉测距

综合来说,使用深度学习网络单目距离估计是个是典型的缺乏理论支持的工作,纯粹依赖于大型深度学习网络的拟合能力。目前对于特定的场景(如室内环境,卧室,客厅等),深度学习网络可以进行较为准确的单目距离估计,但是很难推广到任意场景。

为了保住头顶的头发,建议还是别在工程中用了。。。

 

相关文章: