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