code: def rgb_to_lab(image: torch.Tensor) -> torch.Tensor:
      r"""Convert a RGB image to Lab.
  
      .. image:: _static/img/rgb_to_lab.png
  
      The input RGB image is assumed to be in the range of :math:`[0, 1]`. Lab
      color is computed using the D65 illuminant and Observer 2.
  
      Args:
          image: RGB Image to be converted to Lab with shape :math:`(*, 3, H, W)`.
  
      Returns:
          Lab version of the image with shape :math:`(*, 3, H, W)`.
          The L channel values are in the range 0..100. a and b are in the range -128..127.
  
      Example:
          >>> input = torch.rand(2, 3, 4, 5)
          >>> output = rgb_to_lab(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)
  
      # normalize for D65 white point
      xyz_ref_white = torch.tensor(
          [0.95047, 1.0, 1.08883],
          device=xyz_im.device,
          dtype=xyz_im.dtype,
      )[..., :, None, None]
      xyz_normalized = torch.div(xyz_im, xyz_ref_white)
  
      threshold = 0.008856
      power = torch.pow(xyz_normalized.clamp(min=threshold), 1 / 3.0)
      scale = 7.787 * xyz_normalized + 4.0 / 29.0
      xyz_int = torch.where(xyz_normalized > threshold, power, scale)
  
      x: torch.Tensor = xyz_int[..., 0, :, :]
      y: torch.Tensor = xyz_int[..., 1, :, :]
      z: torch.Tensor = xyz_int[..., 2, :, :]
  
      L: torch.Tensor = (116.0 * y) - 16.0
      a: torch.Tensor = 500.0 * (x - y)
      _b: torch.Tensor = 200.0 * (y - z)
  
      out: torch.Tensor = torch.stack([L, a, _b], dim=-3)
  
      return out
  
file_path: kornia/kornia/color/lab.py
imports: 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_lab(image) and returns: out