| | import pytest |
| | import torch |
| |
|
| | import kornia |
| | from kornia.testing import assert_close |
| |
|
| |
|
| | def test_create_meshgrid(device, dtype): |
| | height, width = 4, 6 |
| | normalized_coordinates = False |
| |
|
| | |
| | grid = kornia.utils.create_meshgrid(height, width, normalized_coordinates, device=device, dtype=dtype) |
| |
|
| | assert grid.device == device |
| | assert grid.dtype == dtype |
| | assert grid.shape == (1, height, width, 2) |
| |
|
| | |
| | assert tuple(grid[0, 0, 0].cpu().numpy()) == (0.0, 0.0) |
| | assert tuple(grid[0, height - 1, width - 1].cpu().numpy()) == (width - 1, height - 1) |
| |
|
| |
|
| | def test_normalize_pixel_grid(device, dtype): |
| | if device.type == 'cuda' and dtype == torch.float16: |
| | pytest.skip('"inverse_cuda" not implemented for "Half"') |
| |
|
| | |
| | height, width = 2, 4 |
| |
|
| | |
| | grid_norm = kornia.utils.create_meshgrid(height, width, normalized_coordinates=True, device=device, dtype=dtype) |
| |
|
| | assert grid_norm.device == device |
| | assert grid_norm.dtype == dtype |
| | grid_norm = torch.unsqueeze(grid_norm, dim=0) |
| |
|
| | grid_pix = kornia.utils.create_meshgrid(height, width, normalized_coordinates=False, device=device, dtype=dtype) |
| |
|
| | assert grid_pix.device == device |
| | assert grid_pix.dtype == dtype |
| | grid_pix = torch.unsqueeze(grid_pix, dim=0) |
| |
|
| | |
| | norm_trans_pix = kornia.geometry.transform.normal_transform_pixel( |
| | height, width, device=device, dtype=dtype |
| | ) |
| | pix_trans_norm = torch.inverse(norm_trans_pix) |
| | |
| | grid_pix_to_norm = kornia.geometry.linalg.transform_points(norm_trans_pix, grid_pix) |
| | grid_norm_to_pix = kornia.geometry.linalg.transform_points(pix_trans_norm, grid_norm) |
| | assert_close(grid_pix, grid_norm_to_pix) |
| | assert_close(grid_norm, grid_pix_to_norm) |
| |
|
| |
|
| | def test_create_meshgrid3d(device, dtype): |
| | depth, height, width = 5, 4, 6 |
| | normalized_coordinates = False |
| |
|
| | |
| | grid = kornia.utils.create_meshgrid3d(depth, height, width, normalized_coordinates, device=device, dtype=dtype) |
| |
|
| | assert grid.device == device |
| | assert grid.dtype == dtype |
| | assert grid.shape == (1, depth, height, width, 3) |
| |
|
| | |
| | assert tuple(grid[0, 0, 0, 0].cpu().numpy()) == (0.0, 0.0, 0.0) |
| | assert tuple(grid[0, depth - 1, height - 1, width - 1].cpu().numpy()) == (depth - 1, width - 1, height - 1) |
| |
|