Normalize the poses and make the center close to axis center.
(pose_numpy: np.ndarray, min_value: Union[float, int],
max_value: Union[float, int], mask: Union[np.ndarray, list])
| 11 | |
| 12 | |
| 13 | def _norm_pose(pose_numpy: np.ndarray, min_value: Union[float, int], |
| 14 | max_value: Union[float, int], mask: Union[np.ndarray, list]): |
| 15 | """Normalize the poses and make the center close to axis center.""" |
| 16 | assert max_value > min_value |
| 17 | pose_np_normed = pose_numpy.copy() |
| 18 | if not mask: |
| 19 | mask = list(range(pose_numpy.shape[-2])) |
| 20 | axis_num = 3 |
| 21 | axis_stat = np.zeros(shape=[axis_num, 4]) |
| 22 | for axis_index in range(axis_num): |
| 23 | axis_data = pose_np_normed[..., mask, axis_index] |
| 24 | axis_min = np.min(axis_data) |
| 25 | axis_max = np.max(axis_data) |
| 26 | axis_mid = (axis_min + axis_max) / 2.0 |
| 27 | axis_span = axis_max - axis_min |
| 28 | axis_stat[axis_index] = np.asarray( |
| 29 | (axis_min, axis_max, axis_mid, axis_span)) |
| 30 | target_mid = (max_value + min_value) / 2.0 |
| 31 | max_span = np.max(axis_stat[:, 3]) |
| 32 | target_span = max_value - min_value |
| 33 | for axis_index in range(axis_num): |
| 34 | pose_np_normed[..., axis_index] = \ |
| 35 | pose_np_normed[..., axis_index] - \ |
| 36 | axis_stat[axis_index, 2] |
| 37 | pose_np_normed = pose_np_normed / max_span * target_span |
| 38 | pose_np_normed = pose_np_normed + target_mid |
| 39 | return pose_np_normed |
| 40 | |
| 41 | |
| 42 | def visualize_kp3d( |
no test coverage detected