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: Scales the camera model by a scale factor.
  
  Args:
      scale_factor: Scale factor to scale the camera model.
  
  Returns:
      Scaled camera model.
  
  Example:
      >>> cam = CameraModel(ImageSize(480, 640), CameraModelType.PINHOLE, torch.Tensor([328., 328., 320., 240.]))
      >>> cam_scaled = cam.scale(2)
      >>> cam_scaled.params
      tensor([656., 656., 640., 480.])
code: def scale(self, scale_factor: Tensor) -> PinholeModel:
      """Scales the camera model by a scale factor.
  
      Args:
          scale_factor: Scale factor to scale the camera model.
  
      Returns:
          Scaled camera model.
  
      Example:
          >>> cam = CameraModel(ImageSize(480, 640), CameraModelType.PINHOLE, torch.Tensor([328., 328., 320., 240.]))
          >>> cam_scaled = cam.scale(2)
          >>> cam_scaled.params
          tensor([656., 656., 640., 480.])
      """
      fx = self.fx * scale_factor
      fy = self.fy * scale_factor
      cx = self.cx * scale_factor
      cy = self.cy * scale_factor
      params = stack((fx, fy, cx, cy), -1)
      image_size = ImageSize(
          self.image_size.height * scale_factor,
          self.image_size.width * scale_factor,
      )
      return PinholeModel(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 3 for calling the PinholeModel obj's underlying member method code with example usage: obj.scale(scale_factor) and returns: PinholeModel