(self,viewpoint,scale = 8)
| 467 | ) |
| 468 | |
| 469 | def downsample(self,viewpoint,scale = 8): |
| 470 | |
| 471 | viewpoint.fx = viewpoint.fx / scale |
| 472 | viewpoint.fy = viewpoint.fy / scale |
| 473 | viewpoint.cx = viewpoint.cx / scale |
| 474 | viewpoint.cy = viewpoint.cy / scale |
| 475 | viewpoint.image_height = viewpoint.image_height // scale |
| 476 | viewpoint.image_width = viewpoint.image_width // scale |
| 477 | |
| 478 | viewpoint.depth = cv2.resize(viewpoint.depth, (viewpoint.image_width, viewpoint.image_height), interpolation=cv2.INTER_LINEAR) |
| 479 | viewpoint.cov = cv2.resize(viewpoint.cov, (viewpoint.image_width, viewpoint.image_height), interpolation=cv2.INTER_LINEAR) |
| 480 | viewpoint.original_image = viewpoint.original_image.permute(1, 2, 0).cpu().numpy() |
| 481 | viewpoint.original_image = cv2.resize(viewpoint.original_image, (viewpoint.image_width, viewpoint.image_height), interpolation=cv2.INTER_AREA) |
| 482 | viewpoint.original_image = torch.from_numpy(viewpoint.original_image).permute(2, 0, 1).to(self.device) |
| 483 | |
| 484 | viewpoint.FoVx = focal2fov(viewpoint.fx, viewpoint.image_width) |
| 485 | viewpoint.FoVy = focal2fov(viewpoint.fy, viewpoint.image_height) |
| 486 | projection_matrix = getProjectionMatrix2( |
| 487 | znear=0.01, |
| 488 | zfar=100.0, |
| 489 | fx=viewpoint.fx, |
| 490 | fy=viewpoint.fy, |
| 491 | cx=viewpoint.cx, |
| 492 | cy=viewpoint.cy, |
| 493 | W=viewpoint.image_width, |
| 494 | H=viewpoint.image_height, |
| 495 | ).transpose(0, 1) |
| 496 | |
| 497 | viewpoint.projection_matrix = projection_matrix.to(device=self.device) |
| 498 | |
| 499 | return viewpoint |
| 500 | |
| 501 | def add_to_window(self,idx): |
| 502 | if idx not in self.current_window: |
no test coverage detected