code: protected double[][] extractFeaturesInternal(BufferedImage image) {
  		ImageFloat32 boofcvImage = ConvertBufferedImage.convertFromSingle(image, null, ImageFloat32.class);
  		// create the SIFT detector and descriptor in BoofCV v0.15
  		ConfigSiftDetector conf = new ConfigSiftDetector(2, detectThreshold, maxFeaturesPerScale, 5);
  		DetectDescribePoint<ImageFloat32, SurfFeature> sift = FactoryDetectDescribe.sift(null, conf, null,
  				null);
  
  		// specify the image to process
  		sift.detect(boofcvImage);
  		int numPoints = sift.getNumberOfFeatures();
  		double[][] descriptions = new double[numPoints][SIFTLength];
  		for (int i = 0; i < numPoints; i++) {
  			descriptions[i] = sift.getDescription(i).getValue();
  		}
  		return descriptions;
  	}
docs: Detects key points inside the image and computes descriptions at those points.