You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Google ML姿态检测API提取的坐标转换为通用3D坐标系点值?

从Google ML姿态检测API的2D像素坐标+预测Z值转换为3D空间坐标

前置概念明确

先理清楚API输出参数的核心定义:

  • (x,y):裁剪后图像的像素坐标,原点在左上角,x向右、y向下
  • z:相对深度值,以左右髋部连线中点为基准,朝向摄像头为负,远离摄像头为正

转换步骤

1. 自定义3D基准坐标系

先建立一个和API参数匹配的基础3D坐标系,确保后续映射逻辑统一:

  • 原点:直接用左右髋部关键点的连线中点(和API的z值基准对齐)
  • 轴方向:
    • X轴:水平向右(和图像像素x方向一致)
    • Y轴:垂直向上(修正像素坐标系y向下的方向问题)
    • Z轴:垂直于相机平面,朝向摄像头为负、远离为正(和API的z值定义完全匹配)

2. 像素坐标转同尺度3D坐标

API的(x,y)是像素单位,z是相对深度,需要先统一尺度:

  • 第一步:将像素坐标转为以图像中心为原点的相对坐标
    假设裁剪后图像宽度为W,高度为H,计算:
    x_rel = x - W/2
    y_rel = H/2 - y
    
    对y取反是为了让轴方向和3D坐标系的Y轴(向上)对齐。
  • 第二步:用人体真实比例校准缩放系数
    由于API的z没有绝对单位,我们用人体生理真实比例将像素单位转为物理单位(比如米):
    比如成年人左右髋部真实宽度约0.3-0.4米,先算出API中左右髋部的像素距离hip_pixel_dist = abs(x_hip_left - x_hip_right),再计算缩放系数:
    scale = 真实髋部宽度 / hip_pixel_dist
    
    最终得到3D坐标系下的X、Y值:
    X = x_rel * scale
    Y = y_rel * scale
    

3. 复用API的z值作为3D Z坐标

API输出的z值本身就是以髋部中点为基准的相对深度,和我们定义的3D坐标系Z轴方向一致,直接复用即可:

Z = api_z_value

4. 适配任意3D空间(可选)

如果要将模型放到自定义3D场景的指定位置,可做以下变换:

  • 平移:给(X,Y,Z)加上目标位置偏移量(tx, ty, tz),得到最终坐标:
    X' = X + tx
    Y' = Y + ty
    Z' = Z + tz
    
  • 旋转:通过旋转矩阵对(X,Y,Z)进行旋转(比如绕Y轴旋转θ角),调整模型朝向以适配场景需求。

注意事项

  • 必须使用裁剪后图像的尺寸计算,不能用原图尺寸,否则坐标会完全错位
  • 缩放系数可通过多个关键点校准:比如同时用肩宽、髋宽的真实比例取平均值,提升3D模型精度
  • 时刻检查坐标方向:若模型出现翻转、错位,优先确认Y轴和Z轴方向是否与定义一致

内容的提问来源于stack exchange,提问作者max.back

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:12:03