地球上第一款测身高的安卓手机应用——AR 测身高

Posted 陈蒙_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了地球上第一款测身高的安卓手机应用——AR 测身高相关的知识,希望对你有一定的参考价值。

文章目录


本文介绍一个运行于 tango 手机的应用 demo,功能是测量人体高度。

效果预览

原理概述

该应用主要使用了 tango 的深度感知技术。

如上图,通过深度感知技术,我们可以获取设备周围物体的点云坐标集合。如果深度相机前面站着一个人,我们可以拿到这个人的身体的三维坐标集合(当然也混杂着无关物体的坐标),然后对这些集合进行筛选,筛选出人的头顶坐标和地面坐标,再将这两个坐标的 y 值相减,绝对值即为人体身高。

开发思路

本应用的开发环境是 tango + unity,测试机型是联想 phab2 pro。

最关键的步骤是找出头顶坐标和地面坐标,找出这两点坐标之后,就可以算出身高值了,同时也可以通过 untiy 在坐标位置绘制出线条和箭头以及高度文本等。

寻找地面坐标

寻找地面坐标有两种方式:

  • 遍历人体的点云坐标集合,找出 y 值最小的坐标点,即可近似认为是地面的 y 坐标;
  • 通过 TangoPointCloud.FindFloor() 方法找到地面(使用方法见官方demo:ExperimentalFloorFinding)及其 y 坐标值;

寻找头顶坐标

寻找头顶坐标,也有两种方法:

  • 遍历人体的点云坐标集合,找出 y 值最小的点,即可近似做为地面的 y 坐标;
  • TangoPointCloud.FindClosetPoint() 方法(使用方法见官方 demo:PointToPoint),在手机屏幕上点击预览帧图像上的人的头顶,通过该方法找出离点击位置最近的人体三维坐标点,即可近似做为头顶坐标;

为简单起见,笔者都是采用第一种方式得到两个目标坐标点的。

目前能想到的最优的方法是围绕人体进行 360 度扫描,然后将获取的身体坐标集合进行 3d 建模,这样得到的人体数据(不止是身高,连三围数据都易如反掌)才最靠谱最准确。目前还未验证该想法的可行性。

一些经验

tango 的深度感知对头发不敏感,拿到的人体最高点的坐标往往是额头上的,而非头顶(光头除外)。

设备获取的点云坐标集合,除了人体坐标,还会有周围干扰物体的坐标(比如墙壁、沙发、天花板、吊灯等),需要用某种策略筛选人体坐标点,然后找出的最高点才能作为头顶坐标。

以上是关于地球上第一款测身高的安卓手机应用——AR 测身高的主要内容,如果未能解决你的问题,请参考以下文章

Android自定义尺子控件(选择身高体重等)

Android自定义尺子控件(选择身高体重等)

求一个c++程序 要求输入身高和体重,输出BMI值(身体质量指数)

ar眼镜怎么看手机视频

AcWing:244. 谜一样的牛(树状数组 + 二分)

安卓手机有没有能做3d模型的软件?