code: def two_percentLinear(
      image: np.ndarray, max_out: int = 255, min_out: int = 0
  ) -> np.ndarray:
      b, g, r = cv2.split(image)
  
      def __gray_process(gray, maxout=max_out, minout=min_out):
          high_value = np.percentile(gray, 98)  # 取得98%直方图处对应灰度
          low_value = np.percentile(gray, 2)
          truncated_gray = np.clip(
              gray, a_min=low_value, a_max=high_value
          )
          processed_gray = (
              (truncated_gray - low_value) / (high_value - low_value)
          ) * (maxout - minout)
          return processed_gray
  
      r_p = __gray_process(r)
      g_p = __gray_process(g)
      b_p = __gray_process(b)
      result = cv2.merge((b_p, g_p, r_p))
      return np.uint8(result)
  
imports: import numpy
  import cv2
  from skimage import exposure
label_desc: Use image node_id 1 for calling a global function with example usage: two_percentLinear(image, max_out, min_out) and returns: np, processed_gray