code: public static BundleAdjustment<SceneStructureProjective> bundleSparseProjective(@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 BundleAdjustmentProjectiveResidualFunction(),
  				new BundleAdjustmentProjectiveSchurJacobian_DSCC(),
  				new CodecSceneStructureProjective());
  	}
docs: Returns bundle adjustment with a sparse implementation for projective 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