code: public static BundleAdjustment<SceneStructureMetric> bundleSparseMetric(@Nullable ConfigBundleAdjustment config ) {
  		if( config == null )
  			config = new ConfigBundleAdjustment();
  
  		UnconstrainedLeastSquaresSchur<DMatrixSparseCSC> minimizer;
  
  		if( config.configOptimizer instanceof ConfigTrustRegion )
  			minimizer = FactoryOptimizationSparse.doglegSchur((ConfigTrustRegion)config.configOptimizer);
  		else
  			minimizer = FactoryOptimizationSparse.levenbergMarquardtSchur((ConfigLevenbergMarquardt)config.configOptimizer);
  
  		return new BundleAdjustmentSchur_DSCC<>(minimizer,
  				new BundleAdjustmentMetricResidualFunction(),
  				new BundleAdjustmentMetricSchurJacobian_DSCC(),
  				new CodecSceneStructureMetric());
  	}
docs: Returns bundle adjustment with a sparse implementation for metric reconstruction. In most situations this is
  what you want to use, however dense bundle adjustment is available if the problem is small and degenerate.
  
  @param config (Optional) configuration
  @return bundle adjustment