/**

@mainpage Deferred Feature Matching and Subset Bundle Adjustment Implementation.

@section MainPage_Intro Introduction

This is the implementation of a structure from motion pipeline for the publication:
<BR>
<CENTER>
<STRONG>Structure from Motion with Deferred Feature Matching and Subset Bundle Adjustment</STRONG>
<BR>
by
<BR>
<I> Andreas Ley, Ronny Hänsch, and Olaf Hellwich </I> 
</CENTER>

The implemented structure from motion pipeline uses Deferred Feature Matching and Subset Bundle Adjustment to
increase the speed and precision of the reconstruction. It performs a sparse reconstruction to estimate the camera
parameters and outputs these to be used by subsequent dense reconstruction algorithms. The intended use case are
reconstructions of a single object of interest with a lot of overlap in the source images.
The source code is released under GPLv3.

@section MainPage_Requirements Requirements

The code base is written in C++14 and Cuda 5.0 and requires 
an AVX capable CPU (Intel Ivybridge architecture or higher) and a Cuda device with a compute capability of at least 3.0
(Kepler architecture or higher) for execution. The entire framework was developed under linux but should be 
easy to port to other OS ecosystems like Windows. Compilation was tested with GCC 4.8.2.

In addition, the following libraries are needed:
<UL>
<LI>Cuda</LI>
<LI>ImageMagick</LI>
<LI>Boost</LI>
<LI>TinyXML</LI>
<LI>GLEW (for some of the GUI tools, not for the main program)</LI>
</UL>

@section MainPage_Structure Structure of the Codebase

The codebase is structured into several libraries and projects. The most important part is the
@ref Page_SFMBackend "backend" which holds the entire implementation of the actual
structure from motion pipeline. A frontend, in the form of a command line program,
is supplied as well (see @ref Page_CommandLineFrontend) which combines the structure from
motion implementation with input and output handling into a fully functional application.

In addition, there are various helper libraries which feature for example common
@ref SFMUtilities_Group "utility functions". Some folders contain test projects or
tools for measuring the reconstruction quality. They are included in this source distribution
for the sake of completeness, but are not well cleaned up.

@section MainPage_Build How to Build the Framework

For the development, Code::Blocks project files and the build system included in Code::Blocks were used.
The Code::Blocks project and workspace files are also included in this source distribution, but additional
Makefiles were also written for the most important parts. The Makefiles are human-readable and can be taken
as a reference when porting to other build systems.

Instruction on how to build the Command Line Frontend, which will trigger a build of the dependent libraries,
can be found @ref Page_CommandLineFrontend "here".

To directly inspect the results of the sparse reconstruction a @ref Page_SparseReconstructionViewer "sparse reconstruction viewer" is included
in the framework.

*/

