深度相机原理(TOF、双目、结构光)

最近对单目/双目散点结构光相机的原理有些模糊了,故写个博文记录一下当下我认识的一些主流深度相机原理。

1. TOF相机

TOF(Time of Flight):基本原理就是通过光往返的时间差来测距。

\[d = \frac{c\cdot t}{2} \]

TOF相机一般不直接测量时差(dTOF),而是通过发射调制连续波(通常 20–100 MHz),在接收端测量相位差间接测距(iTOF):
调制信号(调制信号多为方波,以正弦波为例简化分析):$$E(t)=A\cos (\omega t)$$
接收信号:$$R(t)=A\cos (\omega t+\phi)$$
距离:$$d=\frac{c}{4\pi f}\phi$$

2. 双目相机

双目相机的基本原理是利用两个相机对同一点的观测做三角测距。
图片
根据相似三角形,有:

\[\frac{z-f}{z} = \frac{b-u_L+u_R}{b} \]

稍加整理,得:

\[z=\frac{fb}{d} \]

其中\(d=u_L-u_R\)为左右图的横坐标之差,称为视差。
为了获得\(f\)\(b\),需要标定两台相机的内外参;为了获得\(d\),需要做极线校正和匹配:

  • 极线校正(rectification):
    对左右相机的图像做二维单应变换,把两幅图像变换到共面平行状态,使得同一空间点落在两图的同一水平行上。这样就得到了一个光轴平行、基线水平、成像平面对齐的理想双目系统。
  • 匹配(stereo matching):
    对每个像素找出对应视差\(d\)
    一般的双目相机主要通过像素纹理特征等局部特征完成匹配,在特征不明显的场景可能失效。

主动双目相机(双目结构光相机):

一般的双目相机可以叫被动双目相机,相对的还有主动双目相机,主要是散点结构光双目相机
它带了一个可以投影随机散点的投影器(如激光散斑),利用散点图案的局部唯一性作为特征,代替了被动相机通过自然纹理特征来进行左右图像的匹配。
在这里,散点结构光起到了辅助匹配的作用,测距定位原理还是跟双目相机一致,因此将其放入“双目相机”一类。

3. 结构光相机

结构光相机的基本原理是利用投影仪投出已知点,然后用相机对其的观测做三角测距。
投影可以理解为相机成像的反向过程,所以深度计算公式仍然是:

\[z=\frac{fb}{d} \]

其中\(d=u_C-u_P\)\(u_P\)是通过投影编码解码得到的对应投影坐标。
以上只是最简化的公式,实际可以有多种三角测距方式。

根据投影仪投出已知点的方式不同,主流的结构光相机有:线扫结构光相机、条纹编码结构光相机、散斑结构光相机。

3.1 线扫结构光相机

图片

  • 投影仪(通常是激光发射器)投影出一条直线,相机观测直线的位置。
  • 每次只计算激光打到的直线区域的深度,通过物体或者相机的匀速移动,计算出整个区域的深度。
  • 线扫结构光相机可以做到很高的精度,但是缺乏实时性,一般用于精密测量和3D建模。

线扫结构光投影光路和相机光心一般有较大的夹角,因此不能简单使用$ z=\frac{fb}{d}$计算深度。
例如可以预标定一个参考平面,然后利用相似三角形计算参考平面到物体表面的距离来间接测距。如下图所示:
图片

3.2 条纹编码结构光相机

图片

  • 投影多张二值条纹图:001011010... (例如格雷码)
  • 每个像素通过多帧图像,解出唯一的投影行/列编号,使用三角测距。
  • 条纹编码结构光相机可以通过增加编码位数提高测距解析度,同时也需要拍摄更多帧图像,不适合动态场景。

此外,条纹编码结构光还有相移法等求解方法。

3.3 散斑结构光相机

图片

  • 投影固定随机点阵,相机观测点阵与已知模板做相关匹配,然后用三角测距。
  • 只需单帧可完成测距,实时性高。
  • 散斑非连续,没有散斑的区域深度需插值获取,精度低于条纹编码结构光相机。
posted @ 2026-02-12 15:12  唐康  阅读(90)  评论(0)    收藏  举报