ToF相机属于一种非接触式光学传感器,通过计算发射激光的飞行时间获取对应像素的深度信息。就非接触式距离测量方法而言,其分类可用下表表示如下:

1.1 ToF传感器基础

一个逐点式的ToF传感器采用了雷达原理估计场景点的径向距离。简单来说,就是通过计算光从发射到经场景点反射后的飞行时间。为了测量整个场景表面而不是几个场景点,很多距离测量系统集成了一个逐点式ToF传感器在一个场景扫描机构上。不同于那些通过逐点扫描方式获取场景几何结构的ToF传感器,矩阵式深度传感器通过将很多ToF传感器集成到一个阵列面上,形成一个矩阵。这样通过矩阵式ToF拍摄一张场景图片即可实时获取整个场景的表面几何结构信息。

除了以上这些简单的概念性原理,通过time of flight实现深度值测量方法的背后还隐藏着许多很有挑战性的技术。例如ToF相机需要5ps来覆盖1mm的路径,那么就需要一个时钟来对5ps的单步时长进行计量。不同的时钟技术选择导致了不同的ToF相机类型。当前市面上大部分是基于连续波(continuous  wave)强度调制方法,还有一些是基于光学快门的方法,这里就不做过多的介绍。

1.2 CW ToF传感器的工作原理

连续波长深度传感器通过向场景表面发送一个正弦波信号,振幅为AE,调制频率为fmod:

信号sE(t)被场景表面反射回来并被传感器接收。当信号到达被接收后,由于能量衰减,其振幅衰减为AR,并产生了一个相位延迟ΔΦ,于是反射后的信号变为
发射信号和接收信号如下图所示
 
其中,AR+BR(下面表示为B)被称为强度或偏移,BR是一个由于背景光引起的干扰。于是反射回来的信号可等价表示为

上式中有三个未知量A, B 和ΔΦ,其中A和B是IR射线振幅,ΔΦ是一个纯数字的相位值。最重要的未知量就是ΔΦ,因为ΔΦ是一个跟测量距离ρ相关的量,故有

或等价表示为

2 ToF相机使用注意事项

2.1 温度要求

当使用SR4000/SR4500时,官方建议相机所处的使用环境温度应不高于50摄氏度,过多的热量会显著地增加相机的热敏误差。另外,相机的曝光(积分)时间增加,也会是LED的激活时间被延长,由此会带来更多的工作热量。为了减少这部分热量,可以考虑采用触发模式来代替连续采集模式。

2.2 电压

SR4500供电电压为24V直流电,上下浮动10%。如果工作电压小于最小电压,相机的测量精度会下降。如果供电电压过高,则会使用相机发热,最终也会影响测量精度。

ToF相机学习笔记之基本知识的更多相关文章

  1. MyBatis:学习笔记(1)——基础知识

    MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...

  2. C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

    一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...

  3. C#学习笔记(基础知识回顾)之值传递和引用传递

    一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...

  4. C#学习笔记(基础知识回顾)之值类型和引用类型

    一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...

  5. JAVA学习笔记—review基本知识[反射与异常]

    JAVA学习笔记—review基本知识[反射与异常] 1.异常: 1.1异常的分类: Java会将所有的异常封装成对象,其根本父类为Throwable. Throwable有两个子类:Error 和E ...

  6. Quartz学习笔记:基础知识

    Quartz学习笔记:基础知识 引入Quartz 关于任务调度 关于任务调度,Java.util.Timer是最简单的一种实现任务调度的方法,简单的使用如下: import java.util.Tim ...

  7. 大数据学习笔记——Linux基本知识及指令(理论部分)

    Linux学习笔记整理 上一篇博客中,我们详细地整理了如何从0部署一套Linux操作系统,那么这一篇就承接上篇文章,我们仔细地把Linux的一些基础知识以及常用指令(包括一小部分高级命令)做一个梳理, ...

  8. .net学习笔记---xml基础知识

    一.XML简介 XML是一种标记语言,用于描述数据,它提供一种标准化的方式来来表示文本数据.XML文档以.xml为后缀.需要彻底注意的是XML是区分大小写的. 先从一个简单的XML例子来了解下xml基 ...

  9. react学习笔记1--基础知识

    什么是react A JAVASCRIPT LIBRARY FOR BUILDING USER INTERFACES[React是一个用于构建用户界面的JavaScript库.] React之所以快, ...

随机推荐

  1. Android中设置半个屏幕大小且居中的button布局 (layout_weight属性)

            先看例如以下布局 : 

  2. 数学之路-python计算实战(6)-numpy-ndarray

    >>>> mya=np.zeros(shape=(2,2)) >>>> mya array([[ 0.,  0.], [ 0.,  0.]]) > ...

  3. HDU 2222 Keywords Search(AC自己主动机模板题)

    题意:给出一个字符串和若干个模板,求出在文本串中出现的模板个数. 思路:由于有可能有反复的模板,trie树权值记录每一个模板出现的次数就可以. #include<cstdio> #incl ...

  4. 由动态库文件dll生成lib库文件

    本文基于OpenBlas的编译和安装.来说明怎样从一个dll文件生成lib库文件. 參考OpenBlas的说明"Howto generate import library for MingW ...

  5. hibernate动态表名映射--仅仅有想不到,没有做不到

    近期的一个项目有一个需求,有N个考核单位,要对每一个考核单位生成一张考核情况表.这样做的目的是横切数据库,这这个需求的实现中,我的组员遇到了一个技术问题,我将我的解决的方法和整个思考过程与大家分享, ...

  6. bzoj1801: [Ahoi2009]chess 中国象棋(DP)

    1801: [Ahoi2009]chess 中国象棋 题目:传送门 题解: 表示自己的DP菜的抠脚 %题解... 定义f[i][j][k]表示前i行 仅有一个棋子的有j列 有两个棋子的有k个 的方案数 ...

  7. pyton写购物车

    pyton写购物车 基本要求: 用户输入工资,然后打印购物菜单用户可以不断的购买商品,直到余额不够为止退出时打印用户已购买的商品和剩余金额.. 1.这个程序功能不完整,bug很多,练手之作. good ...

  8. 我的Spring MVC第一个应用

    Product package com.mstf.bean; import java.io.Serializable; /** * Product类,封装了一些信息,包含三个属性 * @author ...

  9. ItemTouchHelper(实现RecyclerView上添加拖动排序与滑动删除的所有事情)

    简单介绍: ItemTouchHelper是一个强大的工具,它处理好了关于在RecyclerView上添加拖动排序与滑动删除的所有事情.它是RecyclerView.ItemDecoration的子类 ...

  10. Signal programming

    Signal programming is used in the same sense as dataflow programming, and is similar to event-driven ...