docs: static <Input extends ImageBase<Input>>
  	ImageGradient<Input,GrayF32> createGradient( ImageType<Input> imageType ) {
  		ImageGradient<Input,GrayF32> gradient;
  		ImageType<GrayF32> typeF32 = ImageType.single(GrayF32.class);
  
  		if( imageType.getDataType() != ImageDataType.F32 )
  			throw new IllegalArgumentException("Input image type must be F32");
  
  		if( imageType.getFamily() == ImageType.Family.GRAY) {
  			gradient = FactoryDerivative.gradient(DerivativeType.THREE,imageType, typeF32);
  		} else if( imageType.getFamily() == ImageType.Family.PLANAR ) {
  			ImageType<Planar<GrayF32>> typePF32 = ImageType.pl(imageType.getNumBands(),GrayF32.class);
  			ImageGradient<Planar<GrayF32>,Planar<GrayF32>> gradientMB =
  					FactoryDerivative.gradient(DerivativeType.THREE,typePF32, typePF32);
  			gradient = (ImageGradient)FactoryDerivative.gradientReduce(gradientMB, DerivativeReduceType.MAX_F, GrayF32.class);
  		} else {
  			throw new IllegalArgumentException("Unsupported image type "+imageType);
  		}
  
  		return gradient;
  	}