【问题标题】:How to get depth map in Android Q如何在 Android Q 中获取深度图
【发布时间】:2019-08-14 12:22:59
【问题描述】:

在 Android Q 中有一个从图像获取深度图的选项。

从 Android Q 开始,相机可以使用称为动态深度格式 (DDF) 的新架构将图像的深度数据存储在单独的文件中。应用程序可以请求 JPG 图像及其深度元数据,使用该信息在后期处理中应用他们想要的任何模糊,而无需修改原始图像数据。 要阅读新格式的规范,请参阅动态深度格式。

我已阅读此文件Dynamic Depth Format,它看起来深度数据作为 XMP 元数据存储在 JPG 文件中,现在我的问题是如何从文件或直接从 android API 获取此深度图? 我正在使用带有安卓 Q 的 Galaxy s10

【问题讨论】:

  • 嗨。这有什么好运气吗?我也在调查它,但无法找到深度数据
  • 我是使用谷歌相机应用在谷歌像素上完成的。如果您拍摄人像照片谷歌相机将 2 张照片保存在 DCIM 文件夹中:第一张普通照片和第二张背景模糊的照片,那么您需要使用 exiftool 对模糊照片使用命令:exiftool -b -Data file.jpg > depth.jpg,您将接收深度照片。我仍然不知道如何以编程方式获取此地图。
  • @wownis 你是用一个像素带两个后置摄像头还是只用一个?我想知道是否只有 1 个后置摄像头能够生成深度信息。而且,你原来的问题有什么运气吗?有 xmp 元数据吗?
  • @wownis 你找到解决办法了吗?

标签: android image api


【解决方案1】:

如果您检索 DYNAMIC_DEPTH jpeg,深度图像将存储在紧接在主 jpeg 图像之后的字节中。文档在解释这一点方面还有很多不足之处;我终于通过在整个字节缓冲区中搜索 JPEG 开始和结束标记来弄清楚了。

我写了一个解析器,你可以在这里查看或使用:https://github.com/kmewhort/funar/blob/master/app/src/main/java/com/kmewhort/funar/preprocessors/JpegParser.java。它执行以下操作:

  1. 使用com.drew.imaging.ImageMetadataReader 读取EXIF。
  2. 使用com.adobe.internal.xmp 读取有关深度图像大小的信息(以及您不一定需要的其他一些有趣的深度属性,具体取决于您的用例)
  3. 通过从整个字节缓冲区的最后一个字节中减去每个预告片大小来计算深度图像的字节位置(可能还有其他预告片图像,例如缩略图)。它返回实际深度 JPEG 的包装字节缓冲区。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    • 2015-07-16
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 2021-10-23
    相关资源
    最近更新 更多