Closed yxyyundanfengqing closed 11 months ago
重投影优化直接参考smplify_runner吧
@shaohua-pan ,你好,这是我在smplify_runner中找到的相关代码,我知道他是相机坐标系下的点左乘相机内参矩阵得到图片上的点坐标,但我仍然不知道ax,bx,ay,by,az,bz的计算依据,请问您能给出数学推导嘛? projected_joints = model_joints / model_joints[..., 2:]#projected_joints = model_joints / model_joints[..., 2:]:这一行代码将3D关键点的x和y坐标分别除以z坐标,以实现透视投影。这是将3D点投影到2D图像平面的基本操作。在这个步骤之后,projected_joints包含了归一化的2D关键点坐标。 projected_joints = cam_k.matmul(projected_joints.unsqueeze(-1)).squeeze(-1)[..., :2]#2302,33,3 2302,33,3,1 2302,33,3,1 2302,33,3 2302,33,2
imu_ori_loss = (imu_ori_weight ** 2) * ((art.math.rotation_matrix_to_axis_angle(imu_ori).reshape(body_pose.shape[0], -1) -
art.math.rotation_matrix_to_axis_angle(ori).reshape(body_pose.shape[0], -1)) ** 2).sum(dim=-1)
#在这段代码中,imu_ori_loss计算了IMU方向损失。IMU方向损失表示IMU方向数据(imu_ori)与3D关键点方向(ori)之间的差异。这个损失项可以帮助约束3D姿态估计,使其更符合IMU方向数据。
# Weighted robust reprojection error
reprojection_error = gmof(projected_joints - joints_2d, sigma)
# joints_invalid = torch.where(joints_conf.mean(dim=1)<0.3)
# joints_conf[joints_conf < 0.3] = 0.0
reprojection_loss = (joints_conf ** 2) * reprojection_error.sum(dim=-1)#计算重投影损失2302,33
smplify_runner,这个就是直接优化求解的pose和tran,考虑了2d重投影以及一些人体先验的约束。ax,bx,ay,by,az,bz这段代码没有用
谢谢
if self.use_reproj_opt and c > self.conf_range[0]: p = j2dc[:, 2]#获取置信度
optimize x, y
请问在上述代码中az和bz的计算依据是什么
我的式子是正确的嘛,我无法推导出az和bz