code: public static <T extends ImageGray<T>>
  	InputToBinary<T> localSauvola(ConfigLength width, boolean down, float k, Class<T> inputType)
  	{
  		if( BOverrideFactoryThresholdBinary.localSauvola != null )
  			return BOverrideFactoryThresholdBinary.localSauvola.handle(width, k, down, inputType);
  
  		InputToBinary<GrayF32> sauvola;
  		if( BoofConcurrency.USE_CONCURRENT ) {
  			sauvola = new ThresholdSauvola_MT(width, k, down);
  		} else {
  			sauvola = new ThresholdSauvola(width, k, down);
  		}
  		return new InputToBinarySwitch<>(sauvola,inputType);
  	}
docs: @see ThresholdSauvola
  
  @param width Width of square region.
  @param down Should it threshold up or down.
  @param k User specified threshold adjustment factor.  Must be positive. Try 0.3
  @param inputType Type of input image
  @return Filter to binary