code: def rgb_to_luv(
      image: torch.Tensor, eps: float = 1e-12
  ) -> torch.Tensor:
      r"""Convert a RGB image to Luv.
  
      .. image:: _static/img/rgb_to_luv.png
  
      The image data is assumed to be in the range of :math:`[0, 1]`. Luv
      color is computed using the D65 illuminant and Observer 2.
  
      Args:
          image: RGB Image to be converted to Luv with shape :math:`(*, 3, H, W)`.
          eps: for numerically stability when dividing.
  
      Returns:
          Luv version of the image with shape :math:`(*, 3, H, W)`.
  
      Example:
          >>> input = torch.rand(2, 3, 4, 5)
          >>> output = rgb_to_luv(input)  # 2x3x4x5
      """
      if not isinstance(image, torch.Tensor):
          raise TypeError(
              f"Input type is not a torch.Tensor. Got {type(image)}"
          )
  
      if len(image.shape) < 3 or image.shape[-3] != 3:
          raise ValueError(
              f"Input size must have a shape of (*, 3, H, W). Got {image.shape}"
          )
  
      # Convert from sRGB to Linear RGB
      lin_rgb = rgb_to_linear_rgb(image)
  
      xyz_im: torch.Tensor = rgb_to_xyz(lin_rgb)
  
      x: torch.Tensor = xyz_im[..., 0, :, :]
      y: torch.Tensor = xyz_im[..., 1, :, :]
      z: torch.Tensor = xyz_im[..., 2, :, :]
  
      threshold = 0.008856
      L: torch.Tensor = torch.where(
          y > threshold,
          116.0 * torch.pow(y.clamp(min=threshold), 1.0 / 3.0) - 16.0,
          903.3 * y,
      )
  
      # Compute reference white point
      xyz_ref_white: Tuple[float, float, float] = (
          0.95047,
          1.0,
          1.08883,
      )
      u_w: float = (4 * xyz_ref_white[0]) / (
          xyz_ref_white[0]
          + 15 * xyz_ref_white[1]
          + 3 * xyz_ref_white[2]
      )
      v_w: float = (9 * xyz_ref_white[1]) / (
          xyz_ref_white[0]
          + 15 * xyz_ref_white[1]
          + 3 * xyz_ref_white[2]
      )
  
      u_p: torch.Tensor = (4 * x) / (x + 15 * y + 3 * z + eps)
      v_p: torch.Tensor = (9 * y) / (x + 15 * y + 3 * z + eps)
  
      u: torch.Tensor = 13 * L * (u_p - u_w)
      v: torch.Tensor = 13 * L * (v_p - v_w)
  
      out = torch.stack([L, u, v], dim=-3)
  
      return out
  
file_path: kornia/kornia/color/luv.py
imports: from typing import Tuple
  import torch
  from torch import nn
  from .rgb import linear_rgb_to_rgb, rgb_to_linear_rgb
  from .xyz import rgb_to_xyz, xyz_to_rgb
label_desc: Use image node_id 1 for calling a global function with example usage: rgb_to_luv(image, eps) and returns: out