code: def autocontrast_func(img, cutoff=0):
      """
      same output as PIL.ImageOps.autocontrast
      """
      n_bins = 256
  
      def tune_channel(ch):
          n = ch.size
          cut = cutoff * n // 100
          if cut == 0:
              high, low = ch.max(), ch.min()
          else:
              hist = cv2.calcHist(
                  [ch], [0], None, [n_bins], [0, n_bins]
              )
              low = np.argwhere(np.cumsum(hist) > cut)
              low = 0 if low.shape[0] == 0 else low[0]
              high = np.argwhere(np.cumsum(hist[::-1]) > cut)
              high = (
                  n_bins - 1
                  if high.shape[0] == 0
                  else n_bins - 1 - high[0]
              )
          if high <= low:
              table = np.arange(n_bins)
          else:
              scale = (n_bins - 1) / (high - low)
              offset = -low * scale
              table = np.arange(n_bins) * scale + offset
              table[table < 0] = 0
              table[table > n_bins - 1] = n_bins - 1
          table = table.clip(0, 255).astype(np.uint8)
          return table[ch]
  
      channels = [tune_channel(ch) for ch in cv2.split(img)]
      out = cv2.merge(channels)
      return out
  
imports: import cv2
  import numpy
  import torch
label_desc: Use image node_id 2 for calling a global function with example usage: autocontrast_func(img, cutoff) and returns: out, table