code: def get_closest_point_on_epipolar_line(
      pts1: Tensor, pts2: Tensor, Fm: Tensor
  ) -> Tensor:
      """Return closest point on the epipolar line to the correspondence, given the fundamental matrix.
  
      Args:
          pts1: correspondences from the left images with shape :math:`(*, N, (2|3))`. If they are not homogeneous,
                converted automatically.
          pts2: correspondences from the right images with shape :math:`(*, N, (2|3))`. If they are not homogeneous,
                converted automatically.
          Fm: Fundamental matrices with shape :math:`(*, 3, 3)`. Called Fm to avoid ambiguity with torch.nn.functional.
  
      Returns:
          point on epipolar line :math:`(*, N, 2)`.
      """
      if not isinstance(Fm, Tensor):
          raise TypeError(
              f"Fm type is not a torch.Tensor. Got {type(Fm)}"
          )
      if (len(Fm.shape) < 3) or not Fm.shape[-2:] == (3, 3):
          raise ValueError(
              f"Fm must be a (*, 3, 3) tensor. Got {Fm.shape}"
          )
      if pts1.shape[-1] == 2:
          pts1 = convert_points_to_homogeneous(pts1)
      if pts2.shape[-1] == 2:
          pts2 = convert_points_to_homogeneous(pts2)
      line1in2 = compute_correspond_epilines(pts1, Fm)
      perp = get_perpendicular(line1in2, pts2)
      points1_in_2 = convert_points_from_homogeneous(
          line1in2.cross(perp, dim=2)
      )
      return points1_in_2
  
file_path: kornia/kornia/geometry/epipolar/fundamental.py
imports: from typing import Literal, Optional, Tuple
  import torch
  from kornia.core import Tensor, concatenate, ones_like, stack, where, zeros
  from kornia.core.check import KORNIA_CHECK_SHAPE
  from kornia.geometry.conversions import convert_points_from_homogeneous, convert_points_to_homogeneous
  from kornia.geometry.linalg import transform_points
  from kornia.geometry.solvers import solve_cubic
  from kornia.utils.helpers import _torch_svd_cast
label_desc: Use image node_id 8 for calling a global function with example usage: get_closest_point_on_epipolar_line(pts1, pts2, Fm) and returns: points1_in_2