ios - 如何从嵌入 iphone 肖像图片的深度数据中计算距离值?
问题描述
我正在开发一个从深度数据重建点云的应用程序。我尝试使用一些智能手机拍摄的人像图像中嵌入的深度数据。
到目前为止,我在 Google 相机应用照片方面取得了进展。它具有详细记录的深度格式(https://developer.android.com/training/camera2/Dynamic-depth-v1.0.pdf)。
我还可以通过将 ios 肖像图片上传到https://www.photopea.com/或使用 exiftool 来提取与深度相关的数据。这是嵌入数据的预览:
不幸的是,我无法确定编码到该嵌入图像的实际距离值。
xmp 元数据中似乎有编码相关信息,例如
Stored Format = 'L008' // one component 8 bit
Native Format = 'hdis' // half precision floating point disparity
Depth Data Version = 125537 // varies
Int min value = 0
Int max value = 255
Float Min Value // for example 1.23
Float Max Value // for example 2.12
我尝试插入图像数据值并将其用作差异,就像谷歌相机一样
distance_to_camera = constant * 1.0 / (Float_Max_Value * pixel / 255 + Float_Min_Value * (1 - pixel / 255))
但它会导致点云严重失真。我认为这很可能是不正确的深度数据解释。
解决方案
如果您仅在深度图上获取点云,那么您不需要实际的相机-物体距离。您可以使用一些可视化库直接生成点云。我推荐Vedo。
然后,如果您需要该距离信息,则需要获取您的相机参数。查看OpenCV 关于相机校准的教程。
推荐阅读
- gpg-signature - 获取 GPG 公钥的密钥签名/指纹
- android - 从 Play 商店下载时出现安全网 Api 错误
- reactjs - 反应钩子中的同时异步 API 调用
- mysql - 我如何在不使用 ALL 的情况下编写这个?
- reactjs - react-hooks 查询和 setState 导致 500 错误
- angular - 使用@ngrx/entity 的ngrx 实体动态集
- php - Laravel Forge 调度程序中的 foreach 循环不起作用
- mysql - 在 node.js 的目标表中未更新 INNER JOIN
- assembly - 意外覆盖通用寄存器
- python-3.x - 如何绘制由 groupby 生成的元组列表