public static <T extends ImageGray<T>, II extends ImageGray<II>>
	DetectDescribePoint<T,BrightFeature> surfStable( @Nullable ConfigFastHessian configDetector,
													 @Nullable ConfigSurfDescribe.Stability configDescribe,
													 @Nullable ConfigSlidingIntegral configOrientation,
													 Class<T> imageType ) {

		Class<II> integralType = GIntegralImageOps.getIntegralType(imageType);

		FastHessianFeatureDetector<II> detector = FactoryInterestPointAlgs.fastHessian(configDetector);
		DescribePointSurfMod<II> describe = FactoryDescribePointAlgs.surfStability(configDescribe, integralType);
		OrientationIntegral<II> orientation = FactoryOrientationAlgs.sliding_ii(configOrientation, integralType);

		if(BoofConcurrency.USE_CONCURRENT) {
			return new WrapDetectDescribeSurf_MT<>(detector, orientation, describe);
		} else {
			return new WrapDetectDescribeSurf<>(detector, orientation, describe);
		}
	}
public static < T extends ImageGray < T > , II extends ImageGray < II > > DetectDescribePoint < T , BrightFeature > surfStable ( @ Nullable ConfigFastHessian configDetector , @ Nullable ConfigSurfDescribe . Stability configDescribe , @ Nullable ConfigSlidingIntegral configOrientation , Class < T > imageType ) { Class < II > integralType = GIntegralImageOps . getIntegralType ( imageType ) ; FastHessianFeatureDetector < II > detector = FactoryInterestPointAlgs . fastHessian ( configDetector ) ; DescribePointSurfMod < II > describe = FactoryDescribePointAlgs . surfStability ( configDescribe , integralType ) ; OrientationIntegral < II > orientation = FactoryOrientationAlgs . sliding_ii ( configOrientation , integralType ) ; if ( BoofConcurrency . USE_CONCURRENT ) { return new WrapDetectDescribeSurf_MT < > ( detector , orientation , describe ) ; } else { return new WrapDetectDescribeSurf < > ( detector , orientation , describe ) ; } }
<p>
Creates a SURF descriptor.  SURF descriptors are invariant to illumination, orientation, and scale.
BoofCV provides two variants. Creates a variant which is designed for stability. Different descriptors are
created for color and gray-scale images.
</p>

<p>
[1] Add tech report when its finished.  See SURF performance web page for now.
</p>

@see DescribePointSurfPlanar
@see FastHessianFeatureDetector
@see boofcv.alg.feature.describe.DescribePointSurfMod

@param configDetector Configuration for SURF detector.  Null for default.
@param configDescribe Configuration for SURF descriptor.  Null for default.
@param configOrientation Configuration for region orientation.  Null for default.
@param imageType Specify type of input image.
@return SURF detector and descriptor