| |
| from abc import ABCMeta, abstractmethod |
|
|
| from mmcv.utils import Registry |
|
|
| CAMERAS = Registry('camera') |
|
|
|
|
| class SingleCameraBase(metaclass=ABCMeta): |
| """Base class for single camera model. |
| |
| Args: |
| param (dict): Camera parameters |
| |
| Methods: |
| world_to_camera: Project points from world coordinates to camera |
| coordinates |
| camera_to_world: Project points from camera coordinates to world |
| coordinates |
| camera_to_pixel: Project points from camera coordinates to pixel |
| coordinates |
| world_to_pixel: Project points from world coordinates to pixel |
| coordinates |
| """ |
|
|
| @abstractmethod |
| def __init__(self, param): |
| """Load camera parameters and check validity.""" |
|
|
| def world_to_camera(self, X): |
| """Project points from world coordinates to camera coordinates.""" |
| raise NotImplementedError |
|
|
| def camera_to_world(self, X): |
| """Project points from camera coordinates to world coordinates.""" |
| raise NotImplementedError |
|
|
| def camera_to_pixel(self, X): |
| """Project points from camera coordinates to pixel coordinates.""" |
| raise NotImplementedError |
|
|
| def world_to_pixel(self, X): |
| """Project points from world coordinates to pixel coordinates.""" |
| _X = self.world_to_camera(X) |
| return self.camera_to_pixel(_X) |
|
|