public static <I extends ImageGray<I>, D extends ImageGray<D>>
	KltTracker<I, D> klt(@Nullable KltConfig config, Class<I> imageType , Class<D> derivType )
	{
		if( config == null )
			config = new KltConfig();
		if( derivType == null )
			derivType = GImageDerivativeOps.getDerivativeType(imageType);

		InterpolateRectangle<I> interpInput = FactoryInterpolation.<I>bilinearRectangle(imageType);
		InterpolateRectangle<D> interpDeriv = FactoryInterpolation.<D>bilinearRectangle(derivType);

		return new KltTracker<>(interpInput, interpDeriv, config);
	}
public static < I extends ImageGray < I > , D extends ImageGray < D > > KltTracker < I , D > klt ( @ Nullable KltConfig config , Class < I > imageType , Class < D > derivType ) { if ( config == null ) config = new KltConfig ( ) ; if ( derivType == null ) derivType = GImageDerivativeOps . getDerivativeType ( imageType ) ; InterpolateRectangle < I > interpInput = FactoryInterpolation . < I > bilinearRectangle ( imageType ) ; InterpolateRectangle < D > interpDeriv = FactoryInterpolation . < D > bilinearRectangle ( derivType ) ; return new KltTracker < > ( interpInput , interpDeriv , config ) ; }
Creates a {@link KltTracker}.

NOTE: The pyramid's structure is determined by the input pyramid that is processed.

@param config KLT configuration
@param imageType Type of input image
@param derivType Type of image derivative
@param <I> Input image type.
@param <D> Derivative image type.
@return Tracker