docs: public static <T extends ImageGray<T>>
  	TemplateMatchingIntensity<T> createIntensity(TemplateScoreType type, Class<T> imageType) {
  		switch (type) {
  			case SUM_DIFF_SQ:
  				if (imageType == GrayU8.class) {
  					return (TemplateMatchingIntensity<T>) new TemplateDiffSquared.U8();
  				} else if (imageType == GrayF32.class) {
  					return (TemplateMatchingIntensity<T>) new TemplateDiffSquared.F32();
  				} else {
  					throw new IllegalArgumentException("Image type not supported. " + imageType.getSimpleName());
  				}
  
  			case NCC:
  				if (imageType == GrayU8.class) {
  					return (TemplateMatchingIntensity<T>) new TemplateNCC.U8();
  				} else if (imageType == GrayF32.class) {
  					return (TemplateMatchingIntensity<T>) new TemplateNCC.F32();
  				} else {
  					throw new IllegalArgumentException("Image type not supported. " + imageType.getSimpleName());
  				}
  
  			case CORRELATION:
  				if (imageType == GrayF32.class) {
  					return (TemplateMatchingIntensity<T>) new TemplateCorrelationFFT();
  				} else {
  					throw new IllegalArgumentException("Image type not supported. " + imageType.getSimpleName());
  				}
  		}
  		throw new IllegalArgumentException("Type not found: " + type);
  	}