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. 不要在.h文件中定义变量

    今天在头文件.h中初始化了一个数组和函数,在编译的时候提示这个数组和函数重新定义了,检查后发现,犯了一个致命的错误,在头文件中定义变量... 以下引用别人的一篇说明,警示自己. C语言作为一种结构化的 ...

  2. Qt资料大全

    简述 发福利了.发福利了.发福利了,重要的事情说三遍... 为了方便更多Qter了解.学习Qt,现将相关资源进行整理,主要内容包括:Qt官网.编码风格.GitHub & Third-Party ...

  3. HDU--4891--The Great Pan--暴力搜索

    The Great Pan Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) To ...

  4. hdu_5139 概率问题

    #include<iostream> #include<cstdio> #include<cmath> using namespace std; int main( ...

  5. poj_1974,最长回文字串manacher

    时间复杂度为O(n),参考:http://bbs.dlut.edu.cn/bbstcon.php?board=Competition&gid=23474 #include<iostrea ...

  6. 人生之清单(list of life)

    人生要走走停停,想想记记,修修改改,再向前走.国家工程,公平正义,一腔热血,都很容易燃起来,热血起来. 1. 没得选,有得选,怎么办 没得选 原生家庭,自己怎么生,怎样的父母: 遇见谁,会有怎样的对白 ...

  7. 8.ES6测试

    转自:http://www.ruanyifeng.com/blog/2015/12/a-mocha-tutorial-of-examples.html 如果测试脚本是用ES6写的,那么运行测试之前,需 ...

  8. Car Talk2

    #! /usr/bin/python # -*- coding: utf-8 -*- # # # “Recently I had a visit with my mom and we realized ...

  9. A string is a sequence

    A string is a sequence of characters. You can access the characters one at a time with the bracket o ...

  10. Codeforces434D 网络流

    思路: 题意:有n<=50个点,每个点有xi有[li, ri]种取值,-100 <= li <= ri <= 100,并且给定m<=100条边,每条边为u,v,d表示xu ...