class_docstr: Class to represent camera models.
  
  Example:
      >>> # Pinhole Camera Model
      >>> cam = CameraModel(ImageSize(480, 640), CameraModelType.PINHOLE, torch.Tensor([328., 328., 320., 240.]))
      >>> # Brown Conrady Camera Model
      >>> cam = CameraModel(ImageSize(480, 640), CameraModelType.BROWN_CONRADY, torch.Tensor([1.0, 1.0, 1.0, 1.0,
      ... 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]))
      >>> # Kannala Brandt K3 Camera Model
      >>> cam = CameraModel(ImageSize(480, 640), CameraModelType.KANNALA_BRANDT_K3, torch.Tensor([1.0, 1.0, 1.0,
      ... 1.0, 1.0, 1.0, 1.0, 1.0]))
      >>> # Orthographic Camera Model
      >>> cam = CameraModel(ImageSize(480, 640), CameraModelType.ORTHOGRAPHIC, torch.Tensor([328., 328., 320., 240.]))
      >>> cam.params
      tensor([328., 328., 320., 240.])
class_docstr_tok: ["Class","to","represent","camera","models",".","Example",":",">",">",">","#","Pinhole","Camera","Model",">",">",">","cam","=","CameraModel","(","ImageSize","(","480",",","640",")",",","CameraModelType.PINHOLE",",","torch.Tensor","(","[","328.",",","328.",",","320.",",","240",".","]",")",")",">",">",">","#","Brown","Conrady","Camera","Model",">",">",">","cam","=","CameraModel","(","ImageSize","(","480",",","640",")",",","CameraModelType.BROWN_CONRADY",",","torch.Tensor","(","[","1.0",",","1.0",",","1.0",",","1.0",",","...","1.0",",","1.0",",","1.0",",","1.0",",","1.0",",","1.0",",","1.0",",","1.0","]",")",")",">",">",">","#","Kannala","Brandt","K3","Camera","Model",">",">",">","cam","=","CameraModel","(","ImageSize","(","480",",","640",")",",","CameraModelType.KANNALA_BRANDT_K3",",","torch.Tensor","(","[","1.0",",","1.0",",","1.0",",","...","1.0",",","1.0",",","1.0",",","1.0",",","1.0","]",")",")",">",">",">","#","Orthographic","Camera","Model",">",">",">","cam","=","CameraModel","(","ImageSize","(","480",",","640",")",",","CameraModelType.ORTHOGRAPHIC",",","torch.Tensor","(","[","328.",",","328.",",","320.",",","240",".","]",")",")",">",">",">","cam.params","tensor","(","[","328.",",","328.",",","320.",",","240",".","]",")"]
docstr: Constructor method for CameraModel class.
  
  Args:
      image_size: Image size
      model_type: Camera model type
      params: Camera parameters of shape :math:`(B, N)`.
code: def __init__(
      self,
      image_size: ImageSize,
      model_type: CameraModelType,
      params: Tensor,
  ) -> None:
      """Constructor method for CameraModel class.
  
      Args:
          image_size: Image size
          model_type: Camera model type
          params: Camera parameters of shape :math:`(B, N)`.
      """
      self._model = get_model_from_type(model_type, image_size, params)
  
imports: from __future__ import annotations
  from enum import Enum
  from typing import Any, Union
  from kornia.core import Tensor, stack, zeros_like
  from kornia.geometry.vector import Vector2, Vector3
  from kornia.image import ImageSize
  from kornia.sensors.camera.distortion_model import AffineTransform, BrownConradyTransform, KannalaBrandtK3Transform
  from kornia.sensors.camera.projection_model import OrthographicProjection, Z1Projection
label_desc: Use image node_id 1 to create a new CameraModel object  with example: obj = CameraModel(image_size, model_type, params)