code: def get_perpendicular(lines: Tensor, points: Tensor) -> Tensor:
      r"""Compute the perpendicular to a line, through the point.
  
      Args:
          lines: tensor containing the set of lines :math:`(*, N, 3)`.
          points:  tensor containing the set of points :math:`(*, N, 2)`.
  
      Returns:
          a tensor with shape :math:`(*, N, 3)` containing a vector of the epipolar
          perpendicular lines. Each line is described as
          :math:`ax + by + c = 0` and encoding the vectors as :math:`(a, b, c)`.
      """
      KORNIA_CHECK_SHAPE(lines, ["*", "N", "3"])
      KORNIA_CHECK_SHAPE(points, ["*", "N", "two"])
      if points.shape[2] == 2:
          points_h: Tensor = convert_points_to_homogeneous(points)
      elif points.shape[2] == 3:
          points_h = points
      else:
          raise AssertionError(points.shape)
      infinity_point = lines * torch.tensor(
          [1, 1, 0], dtype=lines.dtype, device=lines.device
      ).view(1, 1, 3)
      perp: Tensor = points_h.cross(infinity_point, dim=2)
      return perp
  
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 7 for calling a global function with example usage: get_perpendicular(lines, points) and returns: perp