首页 > 解决方案 > 基于参考点标准化坐标点

问题描述

我有一个人体骨骼关节的 3D 坐标数据集。我想标准化 3D 点,以便所有关节位置与参考点(在本例中为髋关节)的距离相似。数据集形状为 (3*25),其中 3 表示 25 个关节的 X、Y、Z 坐标值。我正在考虑计算与参考点的距离,但我不知道如何实际实现标准化

标签: python

解决方案


这里x将您的数据表示为一个 numpy 数组,其平均值大于零(例如,如果原点在地面上)。减去平均值(或您希望的其他参考点r0)为您提供翻译坐标x_prime

x = 1 + np.random.random(size=(3, 25))

# mean value of x, y, z
r0 = np.mean(x, axis=1)
x_prime = x - r0.repeat(25).reshape(3,-1)

的值x_prime以坐标的平均值为中心,r0

价值观:

# x: array([[1.22775846, 1.00789537, 1.87935654, 1.29619989, 1.58583233,
        1.07384066, 1.79940306, 1.31427029, 1.33737685, 1.11822982,
        1.25295585, 1.99507199, 1.35576529, 1.33653588, 1.09144568,
        1.39071231, 1.62220731, 1.51699306, 1.7251716 , 1.82776378,
        1.08754129, 1.71490424, 1.36129209, 1.30384671, 1.92491102],
       [1.84661373, 1.75477255, 1.84062395, 1.11899577, 1.58505895,
        1.0319569 , 1.27084547, 1.4218331 , 1.37757554, 1.76657088,
        1.41127085, 1.29526149, 1.9046747 , 1.08405311, 1.8935798 ,
        1.37053927, 1.53447677, 1.29007676, 1.81003735, 1.52832396,
        1.75636217, 1.79290876, 1.71346988, 1.13226816, 1.57871741],
       [1.69483708, 1.79504479, 1.64944096, 1.02228922, 1.94060496,
        1.95737316, 1.04935255, 1.30276262, 1.54081862, 1.7085608 ,
        1.53338657, 1.86862677, 1.42629734, 1.26265798, 1.51475237,
        1.15758014, 1.55924182, 1.91127961, 1.99838997, 1.07916387,
        1.90672647, 1.2093029 , 1.98844762, 1.04804565, 1.4027781 ]])

# r0: array([1.44589126, 1.52443469, 1.54111048])

请注意,r0可以选择 的值,然后以类似的方式从 中减去x


推荐阅读