python - 基于参考点标准化坐标点
问题描述
我有一个人体骨骼关节的 3D 坐标数据集。我想标准化 3D 点,以便所有关节位置与参考点(在本例中为髋关节)的距离相似。数据集形状为 (3*25),其中 3 表示 25 个关节的 X、Y、Z 坐标值。我正在考虑计算与参考点的距离,但我不知道如何实际实现标准化
解决方案
这里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
。
推荐阅读
- java - 如何为 gradle 项目包括声纳排除
- django - 在 DRF 中发送激活电子邮件时处理错误
- javascript - 每当对 Firebase 存储进行新条目时发出通知
- javascript - 基于其他字段值的 Mongoose 动态模式类型
- nic - 关于 XDP_redirect 方法的问题
- reactjs - 将道具传递给组件时,如何添加第 n 个子属性?
- angular - 分享 Facebook、Linkedin 或 Twitter (Angular) 时,什么都不会被刮掉
- java - 线程“主”java.lang.UnsatisfiedLinkError 中的 Rocksaw JNI_Exception:java.library.path 中没有 Rocksaw
- javascript - 为什么通过 Javascript 的 Grid-Area 被多次插入?
- amazon-web-services - 在 aws 粘合作业中仅使用 2 列中的 1 个分区列作为下推谓词