class_docstr: Class to represent Pinhole Camera Model.
  
  The pinhole camera model describes the mathematical relationship between
  the coordinates of a point in three-dimensional space and its projection
  onto the image plane of an ideal pinhole camera,
  where the camera aperture is described as a point and no lenses are used to focus light.
  See more: https://en.wikipedia.org/wiki/Pinhole_camera_model
  
  Example:
      >>> cam = CameraModel(ImageSize(480, 640), CameraModelType.PINHOLE, torch.Tensor([328., 328., 320., 240.]))
      >>> cam
      CameraModel(ImageSize(height=480, width=640), PinholeModel, tensor([328., 328., 320., 240.]))
class_docstr_tok: ["Class","to","represent","Pinhole","Camera","Model",".","The","pinhole","camera","model","describes","the","mathematical","relationship","between","the","coordinates","of","a","point","in","three-dimensional","space","and","its","projection","onto","the","image","plane","of","an","ideal","pinhole","camera",",","where","the","camera","aperture","is","described","as","a","point","and","no","lenses","are","used","to","focus","light",".","See","more",":","https",":","\/\/en.wikipedia.org\/wiki\/Pinhole_camera_model","Example",":",">",">",">","cam","=","CameraModel","(","ImageSize","(","480",",","640",")",",","CameraModelType.PINHOLE",",","torch.Tensor","(","[","328.",",","328.",",","320.",",","240",".","]",")",")",">",">",">","cam","CameraModel","(","ImageSize","(","height=480",",","width=640",")",",","PinholeModel",",","tensor","(","[","328.",",","328.",",","320.",",","240",".","]",")",")"]
docstr: Constructor method for PinholeModel class.
  
  Args:
      image_size: Image size
      params: Camera parameters of shape :math:`(B, 4)` of the form :math:`(fx, fy, cx, cy)`.
code: def __init__(self, image_size: ImageSize, params: Tensor) -> None:
      """Constructor method for PinholeModel class.
  
      Args:
          image_size: Image size
          params: Camera parameters of shape :math:`(B, 4)` of the form :math:`(fx, fy, cx, cy)`.
      """
      if params.shape[-1] != 4 or len(params.shape) > 2:
          raise ValueError(
              "params must be of shape (B, 4) for PINHOLE Camera"
          )
      super().__init__(
          AffineTransform(), Z1Projection(), 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 PinholeModel object from inherited base classes: CameraModelBase with example: obj = PinholeModel(image_size, params)