code: public static <T extends ImageGray<T>>
  	DescribeImageDense<T,TupleDesc_F64> sift(@Nullable ConfigDenseSift config , Class<T> imageType ) {
  		if( config == null )
  			config = new ConfigDenseSift();
  
  		config.checkValidity();
  
  		ConfigSiftDescribe c = config.sift;
  
  		Class derivType = GImageDerivativeOps.getDerivativeType(imageType);
  
  		DescribeDenseSiftAlg alg = new DescribeDenseSiftAlg(c.widthSubregion,c.widthGrid,
  				c.numHistogramBins,c.weightingSigmaFraction,c.maxDescriptorElementValue,1,1,derivType);
  
  		return new DescribeImageDenseSift(alg,config.sampling.periodX,config.sampling.periodY,imageType);
  	}
docs: Creates a dense SIFT descriptor.
  
  @see DescribeDenseSiftAlg
  
  @param config Configuration for SIFT descriptor. null for defaults.
  @param imageType Type of input image
  @return Dense SIFT