如何在Android Q中获取深度图

6

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

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

我已经阅读了这个文件 Dynamic Depth Format ,看起来深度数据以XMP元数据的形式存储在JPG文件中,现在我的问题是如何从文件或直接从android API中获取这个深度图? 我正在使用带有Android Q的Galaxy S10。


嗨,这个有什么进展吗?我也在研究它,但是找不到深度数据。 - user2991413
我是在谷歌像素上使用谷歌相机应用程序完成的。如果您拍摄肖像照片,谷歌相机会在DCIM文件夹中保存2张照片:第一张是正常的,第二张是模糊的背景,然后您需要在模糊的照片上使用exiftool命令:exiftool -b -Data file.jpg > depth.jpg,然后您将收到深度照片。我仍然不知道如何以编程方式获取此地图。 - wownis
@wownis,你使用了带有两个后置摄像头的像素吗?还是只有一个?我在想如果只有一个后置摄像头是否能够生成深度信息。 另外,你原来的问题解决了吗?得到xmp元数据了吗? - Lumi Wang
@wownis 你有找到任何解决办法吗? - Gomathimeena Subburayan
1个回答

3
如果您检索了一个动态深度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的包装字节缓冲区。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接