MCPcopy Create free account
hub / github.com/MotrixLab/ADHMR / process_db_coord

Function process_db_coord

ADHMR/lib/utils/preprocessing.py:188–241  ·  view source on GitHub ↗
(joint_img, joint_cam, joint_valid, do_flip, img_shape, flip_pairs, img2bb_trans, rot,
                     src_joints_name, target_joints_name)

Source from the content-addressed store, hash-verified

186
187
188def process_db_coord(joint_img, joint_cam, joint_valid, do_flip, img_shape, flip_pairs, img2bb_trans, rot,
189 src_joints_name, target_joints_name):
190 joint_img_original = joint_img.copy()
191 joint_img, joint_cam, joint_valid = joint_img.copy(), joint_cam.copy(), joint_valid.copy()
192
193 # flip augmentation
194 if do_flip:
195 joint_cam[:, 0] = -joint_cam[:, 0]
196 joint_img[:, 0] = img_shape[1] - 1 - joint_img[:, 0]
197 for pair in flip_pairs:
198 joint_img[pair[0], :], joint_img[pair[1], :] = joint_img[pair[1], :].copy(), joint_img[pair[0], :].copy()
199 joint_cam[pair[0], :], joint_cam[pair[1], :] = joint_cam[pair[1], :].copy(), joint_cam[pair[0], :].copy()
200 joint_valid[pair[0], :], joint_valid[pair[1], :] = joint_valid[pair[1], :].copy(), joint_valid[pair[0],
201 :].copy()
202
203 # 3D data rotation augmentation
204 rot_aug_mat = np.array([[np.cos(np.deg2rad(-rot)), -np.sin(np.deg2rad(-rot)), 0],
205 [np.sin(np.deg2rad(-rot)), np.cos(np.deg2rad(-rot)), 0],
206 [0, 0, 1]], dtype=np.float32)
207 joint_cam = np.dot(rot_aug_mat, joint_cam.transpose(1, 0)).transpose(1, 0)
208
209 # affine transformation
210 joint_img_xy1 = np.concatenate((joint_img[:, :2], np.ones_like(joint_img[:, :1])), 1)
211 joint_img[:, :2] = np.dot(img2bb_trans, joint_img_xy1.transpose(1, 0)).transpose(1, 0)
212 joint_img[:, 0] = joint_img[:, 0] / cfg.input_img_shape[1] * cfg.output_hm_shape[2]
213 joint_img[:, 1] = joint_img[:, 1] / cfg.input_img_shape[0] * cfg.output_hm_shape[1]
214
215 # check truncation
216 joint_trunc = joint_valid * ((joint_img_original[:, 0] > 0) * (joint_img[:, 0] >= 0) * (joint_img[:, 0] < cfg.output_hm_shape[2]) * \
217 (joint_img_original[:, 1] > 0) *(joint_img[:, 1] >= 0) * (joint_img[:, 1] < cfg.output_hm_shape[1]) * \
218 (joint_img_original[:, 2] > 0) *(joint_img[:, 2] >= 0) * (joint_img[:, 2] < cfg.output_hm_shape[0])).reshape(-1,
219 1).astype(
220 np.float32)
221
222 # transform joints to target db joints
223 joint_img = transform_joint_to_other_db(joint_img, src_joints_name, target_joints_name)
224 joint_cam_wo_ra = transform_joint_to_other_db(joint_cam, src_joints_name, target_joints_name)
225 joint_valid = transform_joint_to_other_db(joint_valid, src_joints_name, target_joints_name)
226 joint_trunc = transform_joint_to_other_db(joint_trunc, src_joints_name, target_joints_name)
227
228 # root-alignment, for joint_cam input wo ra
229 joint_cam_ra = joint_cam_wo_ra.copy()
230 joint_cam_ra = joint_cam_ra - joint_cam_ra[smpl_x.root_joint_idx, None, :] # root-relative
231 joint_cam_ra[smpl_x.joint_part['lhand'], :] = joint_cam_ra[smpl_x.joint_part['lhand'], :] - joint_cam_ra[
232 smpl_x.lwrist_idx, None,
233 :] # left hand root-relative
234 joint_cam_ra[smpl_x.joint_part['rhand'], :] = joint_cam_ra[smpl_x.joint_part['rhand'], :] - joint_cam_ra[
235 smpl_x.rwrist_idx, None,
236 :] # right hand root-relative
237 joint_cam_ra[smpl_x.joint_part['face'], :] = joint_cam_ra[smpl_x.joint_part['face'], :] - joint_cam_ra[smpl_x.neck_idx,
238 None,
239 :] # face root-relative
240
241 return joint_img, joint_cam_wo_ra, joint_cam_ra, joint_valid, joint_trunc
242
243
244def process_human_model_output(human_model_param, cam_param, do_flip, img_shape, img2bb_trans, rot, human_model_type, joint_img=None):

Callers 1

__getitem__Method · 0.90

Calls 1

Tested by

no test coverage detected