class_docstr: Class that represents a Pinhole Camera model.
  
  Args:
      intrinsics: tensor with shape :math:`(B, 4, 4)`
        containing the full 4x4 camera calibration matrix.
      extrinsics: tensor with shape :math:`(B, 4, 4)`
        containing the full 4x4 rotation-translation matrix.
      height: tensor with shape :math:`(B)` containing the image height.
      width: tensor with shape :math:`(B)` containing the image width.
  
  .. note::
      We assume that the class attributes are in batch form in order to take
      advantage of PyTorch parallelism to boost computing performance.
class_docstr_tok: ["Class","that","represents","a","Pinhole","Camera","model",".","Args",":","intrinsics",":","tensor","with","shape",":","math",":","`","(","B",",","4",",","4",")","`","containing","the","full","4x4","camera","calibration","matrix",".","extrinsics",":","tensor","with","shape",":","math",":","`","(","B",",","4",",","4",")","`","containing","the","full","4x4","rotation-translation","matrix",".","height",":","tensor","with","shape",":","math",":","`","(","B",")","`","containing","the","image","height",".","width",":","tensor","with","shape",":","math",":","`","(","B",")","`","containing","the","image","width",".","..","note",":",":","We","assume","that","the","class","attributes","are","in","batch","form","in","order","to","take","advantage","of","PyTorch","parallelism","to","boost","computing","performance","."]
code: def __init__(
      self,
      intrinsics: Tensor,
      extrinsics: Tensor,
      height: Tensor,
      width: Tensor,
  ) -> None:
      # verify batch size and shapes
      self._check_valid([intrinsics, extrinsics, height, width])
      self._check_valid_params(intrinsics, "intrinsics")
      self._check_valid_params(extrinsics, "extrinsics")
      self._check_valid_shape(height, "height")
      self._check_valid_shape(width, "width")
      self._check_consistent_device(
          [intrinsics, extrinsics, height, width]
      )
      # set class attributes
      self.height: Tensor = height
      self.width: Tensor = width
      self._intrinsics: Tensor = intrinsics
      self._extrinsics: Tensor = extrinsics
  
imports: from typing import Iterable, List, Union
  import torch
  from kornia.core import Device, Tensor, eye, stack, zeros
  from kornia.core.check import KORNIA_CHECK_SAME_DEVICE
  from kornia.geometry.conversions import convert_points_from_homogeneous, convert_points_to_homogeneous
  from kornia.geometry.linalg import inverse_transformation, transform_points
  from kornia.utils.helpers import _torch_inverse_cast
label_desc: Use image node_id 1 to create a new PinholeCamera object  with example: obj = PinholeCamera(intrinsics, extrinsics, height, width)