ToF相机工作原理:

ToF相机给目标连续发送光脉冲,然后用传感器接收从物体返回的光,通过探测光脉冲往回的飞行时间来得到目标距离。ToF相机可以同时得到整幅图像的深度(距离)信息。
  深度图通常是灰度图,其中的每个值代表光反射表面和相机的距离。灰度图水平垂直坐标对应像素点位置,该位置的灰度值对应的是该像素距离摄像头的距离。所以深度图中的每个像素可以表示空间中一个点的三维坐标。如果光源被吸收或者未收到反射信号则呈现黑色。

从Camera2API中获取DEPTH16格式的深度信息

ImageFormat.DEPTH16: Android密集深度图像格式。每个深度值是16位。16位由置信度值和实际测距测量组成。置信度是该样本正确性的估计值。它被编码在样本的3个最高效有效位中,其值0表示100%置信度,值1表示0%置信度,值2表示1/7,值3表示2/7. 剩下的13位就是表示每个像素的深度值。
获取深度信息流程:打开深度ToF相机---->给ImageReader设置长宽和格式ImageFormat.DEPTH16。在回调接口onImageAvailabe中拿到image数据。

  private int[] getDepth(Image image){ShortBuffer shortDepthBuffer=image.gePlanes()[0].getBuffer().asShortBuffer();int[] arr=new int[WIDTH*HEIGHT];for(int y=0;y<HEIGHT;y++){for(int x=0;x<WIDTH;x++){int index=y*WIDTH+x;short depth=shortDepthBuffer.get(indxe);int newValue=extractRange(depthSample,0.1);arr[index]=newVaule;}}}private int extractRange(short sample,float confidenceFilter){//2字节后13位保存深度信息int depthRange=(short)(sample&0x1FFF);//2字节的前3位保存置信度值int depthConfidence=(short)((sample>>13) & 0x7);//其值0表示100%置信度,值1表示0%置信度,值2表示1/7,值3表示2/7.//转换成我们熟悉点的表示方式 0~~1float depthPercentage=depthConfidence==0?1.f:(depthConfidence-1)/7.f;return depthPercentage>confidenceFilter?depthRange:0;}

获取到的距离信息归一化位0~255的像素值,最后转为RGB Bitmap,然后显示出来,基本可以看到物体的轮廓。

写在最后的话

今天是五一,放假,有时间可以写写博客,刚好可以对自己学习的东西有个整理~~~

ToF相机从Camera2 API中获取DEPTH16格式深度图相关推荐

  1. 从API中获取数据(七)

    一.执行一个请求.通过以上的内容学习,现在是时候去请求一些显示在RecyclerView上的真正的数据.我们将会使用OpenWeatherMap API来获取数据,还有一些普通类来现实这个请求.多亏K ...

  2. 如何从API中获取数据(一)

    一.执行一个请求.通过以上的内容学习,现在是时候去请求一些显示在RecyclerView上的真正的数据.我们将会使用OpenWeatherMap API来获取数据,还有一些普通类来现实这个请求.多亏K ...

  3. 如何从stackoverflow的api 中获取是数据_教你拼多多如何选款、测款,打造出爆款。...

    一. 如何进行选款 拼多多选品是在拼多多商城开设店铺上架商品前的一个非常重要的环节,选品对与否对店铺业绩起着关键性作用,如果你选的商品好那么买的人自然也就多,商品不好自然自然就没人愿意买了.那么要如何 ...

  4. requests从api中获取数据并存放到mysql中

    python的requests库是一个非常强大的库,requests的安装方法十分简单,用: pip install requests 即可安装requests,安装成功后: import reque ...

  5. html 读取物理路径,.Net Core api 中获取应用程序物理路径wwwroot

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: //Classic ...

  6. java processrequest_java-如何在camera2 API中使用reprocessCaptureRequest

    我正在尝试将相机项目更新为Android N,因此将旧的CameraCaptureSession移至ReprocessableCaptureSession.我做到了,它工作正常,但是有了这个新功能,我 ...

  7. 如何从stackoverflow的api 中获取是数据_如何修复Vue中的 “this is undefined” 问题

    当我们使用 Vue 在愉快的开发项目的时候,突然报了一个错误: this is undefined 别担心,不只有你一个人,我也经常遇到这个问题很多次,接下我们一起来看看如何解决这个问题. 一个可能的 ...

  8. ASPNET Core api 中获取应用程序物理路径wwwroot

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...

  9. Net Core api 中获取应用程序物理路径wwwroot

    如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...

最新文章

  1. [算法天天练] 归并排序
  2. RHEL 6.2安装vnc
  3. 信息学奥赛一本通 2037:【例5.4】约瑟夫问题 | 1334:【例2-3】围圈报数 | 洛谷 P1996 约瑟夫问题
  4. 【【henuacm2016级暑期训练】动态规划专题 D】Writing Code
  5. 80.共享内存实现进程通信
  6. fpga驱动步进电机转动指定角度_通过PLC实现步进电机定位控制的方法
  7. 老版本金蝶迷你版9.1升级到金蝶KIS 13.0,升级错误.
  8. 实时数据库和关系数据库的区别、对比
  9. spectral-cluster聚类算法详解
  10. 各大应用商店APP上架指南
  11. SpringCloud Netflix---Eureka服务注册
  12. Python之PIL图片操作
  13. MacBook Pro外接显示器竖屏显示
  14. 递归算法(练习习题)
  15. 微信小程序返回上一页并刷新
  16. 75 道 JavaScript 面试题
  17. 台式计算机不休眠,台式机不休眠的解决方法
  18. java设计模式:23种设计模式及其源代码演示实现
  19. Chapter5 初始化(Initialization)
  20. Spring Integration

热门文章

  1. 最全面的挤出模具知识汇总!收藏收藏吧!!!
  2. 算法基础(二):master公式
  3. 内盘外盘新手看热闹,老手在内盘外盘看门道
  4. 【iOS】仿写iOS计算器总结
  5. 如何查找下载外文文献,超强外文文献检索网站排名
  6. STM32F407ZG定时器
  7. [UnityPhoton]Photon Chat 对话框测试
  8. Python 实现语音文本互转
  9. 关于Vue中$nextTick的作用及实现原理(Vue进阶)
  10. ElasticSearch 之 Linux 安装 ElasticSearch-7.15.2(ELK、IK)