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. docker安装MySQL8,目录挂载、配置用户名密码、忽略表名大小写、连接数、特殊字符、时区

    原文:docker安装MySQL8,目录挂载.配置用户名密码.忽略表名大小写.连接数.特殊字符.时区 一.环境配置 1.系统:centos7.3 2.docker版本:Docker version 1 ...

  2. Adobe Flex迷你教程 —Flex4全屏显示

    应用场景 1.播放器 我们经常看视频的时候,需要全屏显示,(在flex中这个视频初始化的时候是嵌入到html的iframe中). 2.监控 如下图所示,大多时候我们的监控用的是flex,而树形菜单和标 ...

  3. jquery-ui日期时间控件实现

    日期控件和时间控件为独立控件,日期时间控件要同一时候导入日期控件和时间控件的js,然后在日期控件加入时间控件显示參数,没有导入时间控件js.日期控件函数设置的时间控件參将包错 日期控件官网网址:htt ...

  4. IOS开发-经常使用站点集合

    1.    https://developer.apple.com  //苹果开发人员站点 2.    https://itunesconnect.apple.com  //itunes站点 3.   ...

  5. linux 流量统计小程序

    源代码例如以下: //2015/7/2 10:30:35 //gino #include <stdio.h> #include <sys/stat.h> #include &l ...

  6. android -- 小问题 关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题

    关于ListView设置了OnScrollListener之后onScrollStateChanged()和onScroll方法监听不到的问题: 原因: 首先OnScrollListener是焦点滚动 ...

  7. NSTimer解除循环引用

    NSTimer作为一个经常使用的类,却有一个最大的弊病,就是会强引用target.造成调用timer很麻烦.稍有不慎就造成内存泄漏. 下面就是为解决问题做的封装. 直接上代码: #import < ...

  8. C# 解压及压缩文件源代码

    using System.IO; using System.Windows.Forms; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.Sh ...

  9. QT跟VC++结合来进行插件的验证机制(遍历vtable,保证虚函数的个数一致,也可使用Q_INVOKABLE宏定义)

    由于最近公司要开发一个以C++插件机制为主的,主要有一个问题就是C++的二进制兼容性的问题.一旦类使用虚函数,只要随便改动下增删查改下头文件的虚函数,就会导致程序在跑的时候进行乱跳,因为这个时候exe ...

  10. less06 引入(importing)

    main.less @wp:960px; .colorsss{ color: darkgreen; } index.css .color{ color: #ff6600; } style.less / ...