public static <T extends ImageGray> InterestPointDetector<T> sift(ConfigSiftScaleSpace configSS , ConfigSiftDetector configDet , Class<T> imageType ) { if( configSS == null ) configSS = new ConfigSiftScaleSpace(); if( configDet == null ) configDet = new ConfigSiftDetector(); SiftScaleSpace scaleSpace = new SiftScaleSpace(configSS.firstOctave,configSS.lastOctave,configSS.numScales,configSS.sigma0); NonMaxSuppression nonmax = FactoryFeatureExtractor.nonmax(configDet.extract); NonMaxLimiter limiter = new NonMaxLimiter(nonmax,configDet.maxFeaturesPerScale); SiftDetector detector = new SiftDetector(scaleSpace,configDet.edgeR,limiter); return new WrapSiftDetector<>(detector, imageType); } }