docs: public static double min( ImageBase input ) {
  		if( input instanceof ImageGray) {
  			if (GrayU8.class == input.getClass()) {
  				return ImageStatistics.min((GrayU8) input);
  			} else if (GrayS8.class == input.getClass()) {
  				return ImageStatistics.min((GrayS8) input);
  			} else if (GrayU16.class == input.getClass()) {
  				return ImageStatistics.min((GrayU16) input);
  			} else if (GrayS16.class == input.getClass()) {
  				return ImageStatistics.min((GrayS16) input);
  			} else if (GrayS32.class == input.getClass()) {
  				return ImageStatistics.min((GrayS32) input);
  			} else if (GrayS64.class == input.getClass()) {
  				return ImageStatistics.min((GrayS64) input);
  			} else if (GrayF32.class == input.getClass()) {
  				return ImageStatistics.min((GrayF32) input);
  			} else if (GrayF64.class == input.getClass()) {
  				return ImageStatistics.min((GrayF64) input);
  			} else {
  				throw new IllegalArgumentException("Unknown Image Type: " + input.getClass().getSimpleName());
  			}
  		} else if( input instanceof ImageInterleaved ) {
  			if (InterleavedU8.class == input.getClass()) {
  				return ImageStatistics.min((InterleavedU8) input);
  			} else if (InterleavedS8.class == input.getClass()) {
  				return ImageStatistics.min((InterleavedS8) input);
  			} else if (InterleavedU16.class == input.getClass()) {
  				return ImageStatistics.min((InterleavedU16) input);
  			} else if (InterleavedS16.class == input.getClass()) {
  				return ImageStatistics.min((InterleavedS16) input);
  			} else if (InterleavedS32.class == input.getClass()) {
  				return ImageStatistics.min((InterleavedS32) input);
  			} else if (InterleavedS64.class == input.getClass()) {
  				return ImageStatistics.min((InterleavedS64) input);
  			} else if (InterleavedF32.class == input.getClass()) {
  				return ImageStatistics.min((InterleavedF32) input);
  			} else if (InterleavedF64.class == input.getClass()) {
  				return ImageStatistics.min((InterleavedF64) input);
  			} else {
  				throw new IllegalArgumentException("Unknown Image Type: " + input.getClass().getSimpleName());
  			}
  		} else if( input instanceof Planar ){
  			Planar pl = (Planar)input;
  			int N = pl.getNumBands();
  			if( N == 0 )
  				throw new IllegalArgumentException("Must have at least one band");
  			double result = min(pl.bands[0]);
  			for (int i = 1; i < N; i++) {
  				result = Math.min(result,min(pl.bands[i]));
  			}
  			return result;
  		} else {
  			throw new IllegalArgumentException("Image type not yet supported "+input.getClass().getSimpleName());
  		}
  	}