// The following text is included in the main documentation page by doxygen
/*! \mainpage msm : Manchester Shape Model library
* Classes to model 2D shape and shape variation.
*
* A shape is represented as a set of points, stored in a msm_points
* object, which encodes the co-ordinates in a vector (x0,y0,x1,y1,...).
*
* Shape is defined as that variation in geometry which is invariant
* to some class of transformations.  Usually one considers 
* similarity transformations (scale, rotation and translation),
* though others are also used.  To build a model from sets of shapes,
* one first aligns the shapes to remove the effects of the global
* transform.
* 
* The alignment and representation of transformations
* is encoded using the msm_aligner objects.
*
* Available msm_aligner classes include:
* - msm_translation_aligner  : Translation (tx,ty)
* - msm_zoom_aligner : Scale and translation 
* - msm_similarity_aligner : Scale, rotation and translation
*
* The shape model itself is a linear model of the form
* - shape = mean + P*b
* where mean is the mean shape, P is a matrix of modes of variation
* and b is a vector of shape parameters.
*
* This information is stored in the msm_ref_shape_model class.
* The derived msm_shape_model class also stores information about
* the msm_aligner and default pose associated with the model.
*
* The shape model can be built from a set of msm_points objects using
* the msm_shape_model_builder.
*
* An instance of a shape in the reference frame is defined by
* the shape parameters, b.  
* This is encoded in the msm_ref_shape_instance class.
*
* An instance of a shape in a target frame is defined by 
* - A set of shape parameters, b
* - A pose (the parameters defining the model to world frame transform)
* This information is encoded in the msm_shape_instance class.
* This class also has functions to best fit to sets of points,
* with various weighting options allowed to indicate the importance
* of individual points in the match.
*
* Other useful classes:
* - msm_wt_mat_2d : Representation of a 2x2 symmetric matrix of weights
* - msm_curve : Defines how to join the dots in a model to form a curve
* - msm_curves: Vector of msm_curve objects defining how to draw the object
*
* \section utils Utils
* The utils subdirectory contains a range of useful classes and
* functions to manipulate the models, for instance to draw shapes
* to an eps file, or to generate a set of shapes illustrating a
* mode of variation.
*
* \section tools Tools
* The tools subdirectory contains programmes to build or use
* shape models.
* - msm_build_shape_model : Construct a shape model from a set of files
* - msm_draw_shape_modes : Generate EPS files displaying modes of a model
* - msm_draw_points_on_image : Generate an EPS file showing points + curves on an image
* - msm_plot_aligned_shapes : Generate EPS file showing scatterplots of aligned shapes
* - msm_get_shape_params: Compute shape parameters for each example and save to a file
*/
