基于Kinect Azure的多相机数据采集(二)

    在基于Kinect Azure的多相机数据采集(一)中以双相机数据采集为例,介绍了Kinect Azure进行多相机数据采集的方法,主要包括数据采集,设备同步,设备标定,数据融合四个部分。并给出了采集深度数据、彩色数据以及获得彩色点云数据的方法。这一篇继续介绍如何对设备进行同步。
    老样子,还是先放参考链接:
    https://docs.microsoft.com/zh-cn/azure/Kinect-dk/multi-camera-sync
    https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/examples/green_screen/MultiDeviceCapturer.h
    多相机数据采集最终想要合成好的点云模型,设备同步是最基础的要求。所谓同步,就是使得各设备在同一时刻捕获数据,只有把设备同步做到精确,最终多设备间的点云数据才能得到完美的融合。设备同步包括设备内的同步以及设备间的同步,设备内的同步指深度传感器和彩色传感器的同步,它们之间的同步可以通过设备的depth_delay_off_color_usec属性进行设置。设备间的同步又包括硬件同步和软件同步,硬件同步的具体方式可以参考上方的第一个连接。本文重点分享软件上如何同步两台设备。

一、准备工作:

1、设置设备的主从属性;
2、先开启所有从属设备,再启动主设备;(以上两点详见本系列上一篇文章)
3、设置设备的subordinate_delay_off_master_usec属性为0;
4、分别设置两台设备的depth_delay_off_color_usec属性为80和-80。为了防止多台设备的深度传感器之间相互干扰,所以深度传感器之间的捕获时间应偏离160μs或以上;
5、为了设备的精确定时,需手动调整彩色图像的曝光时间,自动模式会使已同步的设备较快的失去同步。使用k4a_device_set_color_control函数将曝光时间设置为手动模式;同时用k4a_device_set_color_control函数继续设置控制频率为手动模式,这里我设置的参数与上方链接的例程中一致。

二、实现方法及代码

使用调整时间戳的方法来获取设备同步。具体实现思路如下:
1、主从设备分别获取一帧数据,并获取其彩色图像(深度图像也可以);
2、用k4a_image_get_device_timestamp_usec函数分别获取两张图像的时间戳;
3、计算期望时间戳;
   期望时间戳=主设备图像时间戳+subordinate_delay_off_master_usec属性值,
   如果使用深度图像,还需加上depth_delay_off_color_usec属性值)
4、将从属设备图像的时间戳与期望时间戳比较:
    1)差值小于设置阈值的相反数,表明从属设备的时间戳滞后,从属设备重新捕获数据,并转到步骤3;
    2)差值大于设置的阈值,表明主设备的时间戳滞后,主设备重新捕获数据,并转到步骤3;
    3)差值的绝对值小于设置的阈值,表明两个设备间已完成同步;
    用彩色图像同步时,阈值设为100μs;用深度图像同步时,阈值设为260μs。

    至此,两台设备间已经完成了同步,但也有可能面临着失步的风险(不过我暂时还没发现这种情况)。因此为了程序的正确性,每一帧数据采集时都调用一次同步函数比较保险。而且一定注意,在同步函数中获取的图像一定要及时release,不然循环跑起来内存会爆!!!别问我是怎么知道的…

基于Kinect Azure的多相机数据采集(二)相关推荐

  1. 基于Kinect Azure的多相机数据采集(三)

    基于Kinect Azure的多相机数据采集(三)     在基于Kinect Azure的多相机数据采集(一)和基于Kinect Azure的多相机数据采集(二)中,我们总结了用Kinect Azu ...

  2. 基于ZXing Android实现生成二维码图片和相机扫描二维码图片即时解码的功能

    NextQRCode ZXing开源库的精简版 **基于ZXing Android实现生成二维码图片和相机扫描二维码图片即时解码的功能 原文博客 附源码下载地址** 与原ZXingMini项目对比 N ...

  3. 本科毕设论文——基于Kinect的拖拉机防撞系统

    基于Kinect的拖拉机防撞系统 电子信息科学与技术专业学生 sukeysun 摘要:随着智能车辆技术的发展,智能导航定位和实时车载监控等技术被更多的应用到日常生活照.在农业领域上,车辆自主感知道路环 ...

  4. 深度相机(二)——飞行时间(TOF)

    深度相机按照深度测量原理不同,一般分为:飞行时间法.结构光法.双目立体视觉法.本文就来说一说飞行时间法. 一.TOF简介 飞行时间是从Time of Flight直译过来的,简称TOF.其基本原理是通 ...

  5. [译]Kinect for Windows SDK开发入门(二):基础知识 上

    上篇文章介绍了Kinect开发的环境配置,这篇文章和下一篇文章将介绍Kinect开发的基本知识,为深入研究Kinect for Windows SDK做好基础. 每一个Kinect应用都有一些基本元素 ...

  6. Kinect开发学习笔记之(二)Kinect开发学习资源整理

    Kinect开发学习笔记之(二)Kinect开发学习资源整理 zouxy09@qq.com http://blog.csdn.net/zouxy09 刚刚接触Kinect,在网上狂搜资料,获得了很多有 ...

  7. 基于kinect的人体动作识别系统

    基于kinect的人体动作识别系统(算法和代码都放出) 首先声明一下,本系统所使用的开发环境版本是计算机系统Windows 10.Visual Studio 2013.Opencv3.0和Kinect ...

  8. 在Ubuntu中用Qt基于OpenCV调用大恒相机

    在Ubuntu中用Qt基于OpenCV调用大恒相机 前言 视觉萌新买了工业相机却不会用,上网也查不到具体方法,没办法只能自己硬刚了.刚开始自己摸索,碰到好多问题解决不了,Qt报错不知道咋回事,缺少的链 ...

  9. 基于OpenCV的单目相机标定与三维定位

    相机是产生图像数据的硬件,广泛应用于消费电子.汽车.安防等领域.围绕着相机衍生出一系列的研究与应用领域,包括传统的图像处理和基于深度学习的智能应用等.目前大火的自动驾驶中相机也是重要的硬件组成,如环视 ...

最新文章

  1. Python字符串、时间戳、datetime时间相关转换
  2. LeetCode 414. Third Maximum Number
  3. java map的常用方法吗_Java Map接口常用方法
  4. BI软件应用在哪些方面
  5. 解决excel导出大数字溢出或者被科学计数法格式化
  6. 5KPlayer:跨平台支持 AirPlay 无线串流 / 下载在线视频
  7. 十进制进制法_二进制/八进制/十进制/十六进制 怎么学会?是怎么算的方式?...
  8. 笔记本风扇噪音大的解决方法
  9. neu坐标系和xyz坐标系转换_航测必知的坐标系详解和转换关系
  10. 基于遗传算法的大规模工程优化设计方法初探
  11. 单枪匹马的背锅侠,终于不再是一个人的军团了
  12. mysql CONFLICT 冲突
  13. hawk物联网组态工具_万德物联平台|智能供电整体解决方案之物联网在线组态软件...
  14. Python 爬取财务报表
  15. 微信小程序 五 下拉刷新
  16. 【引用】雨林木风Ghost XP SP3系统
  17. 新个税基数来了,九月工资啥时候发合适
  18. P25 Scanner类
  19. Python正则表达式 re 用法
  20. 2022年6月电子学会Python等级考试试卷(二级)答案解析

热门文章

  1. 给入门程序员找培训班的一些建议
  2. c语言用星号输出大写字母H,如何在C语言中用星号或自定义字符打印方形图案
  3. python开发框架——Django基础知识(七)
  4. 淘宝API关键词搜索接口调用示例
  5. Spring AOP切入点表达式
  6. 常规设置-Sinon.JS
  7. 关于动态抽样(Dynamic Sampling)
  8. 传递函数的幅值计算公式_设积分环节的传递函数为G(s)=1/s ,则其频率特性幅值M(ω)=( )...
  9. APMServ启动失败解决方法
  10. Vue.js面试题整理