ToF相机从Camera2 API中获取DEPTH16格式深度图[通俗易懂]

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

大家好,又见面了,我是你们的朋友全栈君。

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~~1
      float depthPercentage=depthConfidence==0?1.f:(depthConfidence-1)/7.f;
      return depthPercentage>confidenceFilter?depthRange:0;
      }

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

写在最后的话

今天是五一,放假,有时间可以写写博客,刚好可以对自己学习的东西有个整理~~~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142697.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vim查找选中的文本

    vim查找选中的文本在vim中按/查找的时候,不想每次都键盘输入查找内容,希望能够查找选中的文本。方法如下:第一步:使用y复制选中的文本(yank操作会将文本存入默认寄存器”)第二步:按/键(进入查找模式)第三步:按ctrl+r(访问寄存器)第四步:按”键(粘贴寄存器”的内容)参考资料:https://superuser.com/questions/41378/how-to-search-for-selected-text-in-vim…

    2022年6月18日
    70
  • github加速插件

    github加速插件在chrome或edge的插件库里搜索github加速,安装后访问github,和在github上下东西都很快

    2025年6月15日
    2
  • sql嵌套查询和连接查询_sql子查询嵌套规则

    sql嵌套查询和连接查询_sql子查询嵌套规则嵌套查询单值嵌套查询值返回结果是一个值的嵌套查询称为单值嵌套查询对Sales数据库,列出市场部的所有员工的编号USESaleGOSELECTemployee_idFROMemployeeWHEREdepartment_id=(SELECTdepartment_idFROMdepartmentWHEREdepartment_name=’市场部’)语句的执行过程分两个过程,首先在部门…

    2022年10月9日
    3
  • ps快捷键常用表格[通俗易懂]

    ps快捷键常用表格[通俗易懂]ps快捷键常用表,ps快捷键大全!天下武功,唯快不破!看完这篇PS快捷键使用指南,帮你掌握最常用的32个Photoshop快捷键!注:左上为Mac快捷键,右上为PC快捷键1、Command+T:自由变形该快捷键,主要对图层进行旋转、缩放等变形调整,同时可以拖动修改图层在画面中的位置,是极为常用的功能键。2、Command+J:复制图层对图层的复制,一般的操作是通过图层菜单…

    2022年9月29日
    1
  • Mac环境变量配置(Java)

    Mac环境变量配置(Java)1.打开终端:2.输入命令:【/usr/libexec/java_home-V】,查看默认的jdk下载地址(绿色下划线的就是jdk默认路径)(注意⚠️:命令行终端是区分大小写的【-v是不对的,必须是大写-V】)3.如果是第一次配置环境变量,使用命令:【touch.bash_profile】创建一个.bash_profile隐藏配置文件(如果存在已有配置文件就输入:【open-e.bash_profile】)打开如下4.输入以下命令:(注意⚠️:红色字体是第2步查出来自己jd…

    2022年6月29日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号