code: public static BundleAdjustment<SceneStructureMetric> bundleDenseMetric(boolean robust,
  																		   @Nullable ConfigBundleAdjustment config ) {
  		if( config == null )
  			config = new ConfigBundleAdjustment();
  
  		UnconstrainedLeastSquaresSchur<DMatrixRMaj> minimizer;
  
  		if( config.configOptimizer instanceof ConfigTrustRegion )
  			minimizer = FactoryOptimization.doglegSchur(robust,(ConfigTrustRegion)config.configOptimizer);
  		else
  			minimizer = FactoryOptimization.levenbergMarquardtSchur(robust,(ConfigLevenbergMarquardt)config.configOptimizer);
  
  		return new BundleAdjustmentSchur_DDRM<>(minimizer,
  				new BundleAdjustmentMetricResidualFunction(),
  				new BundleAdjustmentMetricSchurJacobian_DDRM(),
  				new CodecSceneStructureMetric());
  	}
docs: Returns bundle adjustment with a dense implementation for metric reconstruction. While much slower than a
  sparse solver, a dense solver can handle systems which are degenerate.
  
  @param robust If true a smaller but robust solver will be used.
  @param config (Optional) configuration
  @return bundle adjustment