code: def lookup(img, **kwargs):
      
      luts = np.array(kwargs['luts'], dtype=np.float32) / 255.0
  
      def func(band_data, luts=luts, index=-1):
          # NaN/null values will become 0
          lut = luts[:, index] if len(luts.shape) == 2 else luts
          band_data = band_data.clip(0, lut.size - 1).astype(np.uint8)
  
          new_delay = dask.delayed(_lookup_delayed)(lut, band_data)
          new_data = da.from_delayed(new_delay, shape=band_data.shape,
                                     dtype=luts.dtype)
          return new_data
  
      return apply_enhancement(img.data, func, separate=True, pass_dask=True)
docs: Assign values to channels based on a table.