Inputs: poses: (3, 4) bds: bounds x: translational perturb range angle: rotation angle perturb range in degrees Outputs: new_c2w: (N_views, 3, 4) new poses
(poses, bds, x, angle)
| 234 | return render_poses |
| 235 | |
| 236 | def perturb_render_pose(poses, bds, x, angle): |
| 237 | """ |
| 238 | Inputs: |
| 239 | poses: (3, 4) |
| 240 | bds: bounds |
| 241 | x: translational perturb range |
| 242 | angle: rotation angle perturb range in degrees |
| 243 | Outputs: |
| 244 | new_c2w: (N_views, 3, 4) new poses |
| 245 | """ |
| 246 | idx = np.random.choice(poses.shape[0]) |
| 247 | c2w=poses[idx] |
| 248 | |
| 249 | N_views = 10 # number of views in video |
| 250 | new_c2w = np.zeros((N_views, 3, 4)) |
| 251 | |
| 252 | # perturb translational pose |
| 253 | for i in range(N_views): |
| 254 | new_c2w[i] = c2w |
| 255 | new_c2w[i,:,3] = new_c2w[i,:,3] + np.random.uniform(-x,x,3) # perturb pos between -1 to 1 |
| 256 | theta=np.random.uniform(-angle,angle,1) # in degrees |
| 257 | phi=np.random.uniform(-angle,angle,1) # in degrees |
| 258 | psi=np.random.uniform(-angle,angle,1) # in degrees |
| 259 | new_c2w[i] = perturb_rotation(new_c2w[i], theta, phi, psi) |
| 260 | return new_c2w, idx |
| 261 | |
| 262 | def remove_overlap_data(train_set, val_set): |
| 263 | ''' Remove some overlap data in val set so that train set and val set do not have overlap ''' |
nothing calls this directly
no test coverage detected