code: def growcut(image, state, state_next, window_radius):
      changes = 0
      sqrt_3 = math.sqrt(3.0)
  
      height = image.shape[0]
      width = image.shape[1]
  
      for j in xrange(width):
          for i in xrange(height):
              winning_colony = state[i, j, 0]
              defense_strength = state[i, j, 1]
  
              for jj in xrange(
                  window_floor(j, window_radius),
                  window_ceil(j + 1, width, window_radius),
              ):
                  for ii in xrange(
                      window_floor(i, window_radius),
                      window_ceil(i + 1, height, window_radius),
                  ):
                      if ii == i and jj == j:
                          continue
  
                      d = image[i, j, 0] - image[ii, jj, 0]
                      s = d * d
                      for k in range(1, 3):
                          d = image[i, j, k] - image[ii, jj, k]
                          s += d * d
                      gval = 1.0 - math.sqrt(s) / sqrt_3
  
                      attack_strength = gval * state[ii, jj, 1]
  
                      if attack_strength > defense_strength:
                          defense_strength = attack_strength
                          winning_colony = state[ii, jj, 0]
                          changes += 1
  
              state_next[i, j, 0] = winning_colony
              state_next[i, j, 1] = defense_strength
  
      return changes
  
imports: import math
  import numpy
label_desc: Use image node_id 3 for calling a global function with example usage: growcut(image, state, state_next, window_radius) and returns: changes