code: def homography_i_H_ref(
      pinhole_i: Tensor, pinhole_ref: Tensor
  ) -> Tensor:
      r"""Homography from reference to ith pinhole.
  
      .. note::
          The pinhole model is represented in a single vector as follows:
  
          .. math::
              pinhole = (f_x, f_y, c_x, c_y, height, width,
              r_x, r_y, r_z, t_x, t_y, t_z)
  
          where:
              :math:`(r_x, r_y, r_z)` is the rotation vector in angle-axis
              convention.
  
              :math:`(t_x, t_y, t_z)` is the translation vector.
  
      .. math::
  
          H_{ref}^{i} = K_{i} * T_{ref}^{i} * K_{ref}^{-1}
  
      Args:
          pinhole_i: tensor with pinhole model for ith frame.
          pinhole_ref: tensor with pinhole model for reference frame.
  
      Returns:
          tensors that convert depth points (u, v, d) from pinhole_ref to pinhole_i.
  
      Shape:
          - Input: :math:`(N, 12)` and :math:`(N, 12)`
          - Output: :math:`(N, 4, 4)`
  
      Example:
          pinhole_i = torch.rand(1, 12)    # Nx12
          pinhole_ref = torch.rand(1, 12)  # Nx12
          homography_i_H_ref(pinhole_i, pinhole_ref)  # Nx4x4
      """
      # TODO: Add doctest once having `rtvec_to_pose`.
      if not (len(pinhole_i.shape) == 2 and pinhole_i.shape[1] == 12):
          raise AssertionError(pinhole_i.shape)
      if pinhole_i.shape != pinhole_ref.shape:
          raise AssertionError(pinhole_ref.shape)
      i_pose_base = get_optical_pose_base(pinhole_i)
      ref_pose_base = get_optical_pose_base(pinhole_ref)
      i_pose_ref = torch.matmul(
          i_pose_base, inverse_transformation(ref_pose_base)
      )
      return torch.matmul(
          pinhole_matrix(pinhole_i),
          torch.matmul(i_pose_ref, inverse_pinhole_matrix(pinhole_ref)),
      )
  
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 5 for calling a global function with example usage: homography_i_H_ref(pinhole_i, pinhole_ref) and returns: torch