code: public static <T extends ImageGray<T>>
  	InputToBinary<T> localOtsu(ConfigLength regionWidth, double scale, boolean down, boolean otsu2, double tuning, Class<T> inputType) {
  		if( BOverrideFactoryThresholdBinary.localOtsu != null )
  			return BOverrideFactoryThresholdBinary.localOtsu.handle(otsu2,regionWidth, tuning, scale, down, inputType);
  
  		ThresholdLocalOtsu otsu;
  		if(BoofConcurrency.USE_CONCURRENT ) {
  			otsu = new ThresholdLocalOtsu_MT(otsu2, regionWidth, tuning, scale, down);
  		} else {
  			otsu = new ThresholdLocalOtsu(otsu2, regionWidth, tuning, scale, down);
  		}
  		return new InputToBinarySwitch<>(otsu, inputType);
  	}
docs: Applies a local Otsu threshold
  
  @see ThresholdLocalOtsu
  
  @param regionWidth About how wide and tall you wish a block to be in pixels.
  @param scale Scale factor adjust for threshold.  1.0 means no change.
  @param down Should it threshold up or down.
  @param tuning Tuning parameter. 0 = standard Otsu. Greater than 0 will penalize zero texture.
  @param inputType Type of input image
  @return Filter to binary