code: def otsu(image, nbins=256):
      """
      Return threshold value based on Otsu's method.
      Copied from scikit-image to remove dependency.
  
      Parameters
      ----------
      image : array
          Input image.
      nbins : int
          Number of bins used to calculate histogram. This value is ignored for
          integer arrays.
  
      Returns
      -------
      threshold : float
          Threshold value.
      """
      hist, bin_centers = np.histogram(image, nbins)
      hist = hist.astype(float)
  
      # class probabilities for all possible thresholds
      weight1 = np.cumsum(hist)
      weight2 = np.cumsum(hist[::-1])[::-1]
  
      # class means for all possible thresholds
      mean1 = np.cumsum(hist * bin_centers[1:]) / weight1
      mean2 = (
          np.cumsum((hist * bin_centers[1:])[::-1]) / weight2[::-1]
      )[::-1]
  
      # Clip ends to align class 1 and class 2 variables:
      # The last value of `weight1`/`mean1` should pair with zero values in
      # `weight2`/`mean2`, which do not exist.
      variance12 = (
          weight1[:-1] * weight2[1:] * (mean1[:-1] - mean2[1:]) ** 2
      )
  
      idx = np.argmax(variance12)
      threshold = bin_centers[:-1][idx]
      return threshold
  
label_desc: Use image node_id 1 for calling a global function with example usage: otsu(image, nbins) and returns: threshold