docs: public void zeroMeanStdOne(Kernel1D kernel, T input , double maxPixelValue , double delta , T output ) {
  		// check preconditions and initialize data structures
  		initialize(input, output);
  
  		// avoid overflow issues by ensuring that the max pixel value is 1
  		T adjusted = ensureMaxValueOfOne(input, maxPixelValue);
  
  		// take advantage of 2D gaussian kernels being separable
  		if( border == null ) {
  			GConvolveImageOps.horizontalNormalized(kernel, adjusted, output);
  			GConvolveImageOps.verticalNormalized(kernel, output, localMean);
  			GPixelMath.pow2(adjusted, pow2);
  			GConvolveImageOps.horizontalNormalized(kernel, pow2, output);
  			GConvolveImageOps.verticalNormalized(kernel, output, localPow2);
  		} else {
  			GConvolveImageOps.horizontal(kernel, adjusted, output, border);
  			GConvolveImageOps.vertical(kernel, output, localMean, border);
  			GPixelMath.pow2(adjusted, pow2);
  			GConvolveImageOps.horizontal(kernel, pow2, output, border);
  			GConvolveImageOps.vertical(kernel, output, localPow2, border);
  		}
  
  		// Compute the final output
  		if( imageType == GrayF32.class )
  			computeOutput((GrayF32)input, (float)delta, (GrayF32)output, (GrayF32)adjusted);
  		else
  			computeOutput((GrayF64)input, delta, (GrayF64)output, (GrayF64)adjusted);
  	}