code: def _rgb_to_lab(rgbs):
      rgbs, n_dim = _check_color_dim(rgbs)
      # convert RGB->XYZ
      xyz = rgbs[
          :, :3
      ].copy()  # a misnomer for now but will end up being XYZ
      over = xyz > 0.04045
      xyz[over] = ((xyz[over] + 0.055) / 1.055) ** 2.4
      xyz[~over] /= 12.92
      xyz = np.dot(xyz, _rgb2xyz_norm)
      over = xyz > 0.008856
      xyz[over] = xyz[over] ** (1.0 / 3.0)
      xyz[~over] = 7.787 * xyz[~over] + 0.13793103448275862
  
      # Convert XYZ->LAB
      L = (116.0 * xyz[:, 1]) - 16
      a = 500 * (xyz[:, 0] - xyz[:, 1])
      b = 200 * (xyz[:, 1] - xyz[:, 2])
      labs = [L, a, b]
      # Append alpha if necessary
      if n_dim == 4:
          labs.append(np.atleast1d(rgbs[:, 3]))
      labs = np.array(labs, order="F").T  # Becomes 'C' order b/c of .T
      return labs
  
file_path: vispy/vispy/color/color_space.py
imports: from __future__ import division
  import numpy
label_desc: Use image node_id 6 for calling a global function with example usage: _rgb_to_lab(rgbs) and returns: labs