diff --git a/Modules/Adapters/GdalAdapters/include/otbGeometriesSource.h b/Modules/Adapters/GdalAdapters/include/otbGeometriesSource.h
index 0d87528dd52c736b0648115d0133c3ef1d114859..aa1da8c42e9b794930c464c21ed1b33a68ff7bd1 100644
--- a/Modules/Adapters/GdalAdapters/include/otbGeometriesSource.h
+++ b/Modules/Adapters/GdalAdapters/include/otbGeometriesSource.h
@@ -31,7 +31,7 @@ class Layer;
 class GeometriesSet;
 } // otb namespace
 
-/**\defgroup GeometriesFilters
+/**\defgroup GeometriesFilters Filters of geometries sets
  * \ingroup  gGeometry Filters
  * Filters of geometries sets.
  */
diff --git a/Modules/Adapters/GdalAdapters/include/otbGeometriesToGeometriesFilter.h b/Modules/Adapters/GdalAdapters/include/otbGeometriesToGeometriesFilter.h
index 3e61efceec59b74c7c8b8ed544a62ea461d7f520..f5b9de54a347a66dc4fc795c389dd7a68bfe6a7f 100644
--- a/Modules/Adapters/GdalAdapters/include/otbGeometriesToGeometriesFilter.h
+++ b/Modules/Adapters/GdalAdapters/include/otbGeometriesToGeometriesFilter.h
@@ -180,7 +180,6 @@ struct FieldCopyTransformation
     }
   /**
    * In-place transformation: does nothing.
-   * \param[in] inoutFeature  \c Feature to change.
    * \throw Nothing
    */
     void fieldsTransform(ogr::Feature const& itkNotUsed(inoutFeature)) const
@@ -189,8 +188,8 @@ struct FieldCopyTransformation
     }
   /**
    * By-Copy transformation: copies all fields.
-   * \param[in] inFeature  input \c Feature
-   * \param[in,out] outFeature  output \c Feature
+   * \param [in] inFeature  input \c Feature
+   * \param [in,out] outFeature  output \c Feature
    *
    * \throw itk::ExceptionObject if the fields cannot be copied.
    */
@@ -199,8 +198,8 @@ struct FieldCopyTransformation
   /**
    * Defines the fields in the destination layer.
    * The default action is to copy all fieds from one layer to another.
-   * \param[in] source  source \c Layer
-   * \param[in,out] dest  destination \c Layer
+   * \param [in] source  source \c Layer
+   * \param [in,out] dest  destination \c Layer
    * \throw itk::ExceptionObject in case the operation can't succeed.
    */
   void DefineFields(ogr::Layer const& source, ogr::Layer & dest) const;
diff --git a/Modules/Core/LabelMap/include/otbBandsStatisticsAttributesLabelMapFilter.h b/Modules/Core/LabelMap/include/otbBandsStatisticsAttributesLabelMapFilter.h
index f3de02b9a69504c3c06afbf681e6ec353c3293d3..242affc0cac6a4158d04abd7269e6818edf7cc9f 100644
--- a/Modules/Core/LabelMap/include/otbBandsStatisticsAttributesLabelMapFilter.h
+++ b/Modules/Core/LabelMap/include/otbBandsStatisticsAttributesLabelMapFilter.h
@@ -121,7 +121,7 @@ private:
  * StatisticsAttributesLabelMapFilter on each channel independently
  *
  * The feature name is constructed as:
- * 'STATS' + '::' + 'Band' + #BandIndex + '::' + StatisticName
+ * 'STATS' + '::' + 'Band' + band_index + '::' + statistic_name
  *
  * The ReducedAttributesSet flag allows to tell the internal
  * statistics filter to compute only the main attributes (mean, variance, skewness and kurtosis).
diff --git a/Modules/Core/Transform/include/otbInverseLogPolarTransform.h b/Modules/Core/Transform/include/otbInverseLogPolarTransform.h
index 9be87af8981d69d512b7b2b6cbc3ec391efc6931..7cc4447bb86a74e7078a69c6059db067ed706143 100644
--- a/Modules/Core/Transform/include/otbInverseLogPolarTransform.h
+++ b/Modules/Core/Transform/include/otbInverseLogPolarTransform.h
@@ -88,7 +88,7 @@ public:
   virtual ParametersType& GetParameters(void) const;
     /**
    * Set the Fixed Parameters
-   * \param The Fixed parameters of the transform.
+   * \param param The fixed parameters of the transform.
    */
   virtual void SetFixedParameters( const ParametersType & param)
     { this->m_FixedParameters = param; }
diff --git a/Modules/Core/Transform/include/otbLogPolarTransform.h b/Modules/Core/Transform/include/otbLogPolarTransform.h
index f8f82401add1c76160e46770dd6558e7ef1bcbb3..e0e8278fba2d8500f60ffd59299b7990e8153336 100644
--- a/Modules/Core/Transform/include/otbLogPolarTransform.h
+++ b/Modules/Core/Transform/include/otbLogPolarTransform.h
@@ -90,7 +90,7 @@ public:
 
   /**
    * Set the Fixed Parameters
-   * \param The Fixed parameters of the transform.
+   * \param param The fixed parameters of the transform.
    */
   virtual void SetFixedParameters( const ParametersType & param)
     { this->m_FixedParameters = param; }
diff --git a/Modules/Core/VectorDataBase/include/otbDataNode.h b/Modules/Core/VectorDataBase/include/otbDataNode.h
index 9765f7795568a06586843c69a0dbd0bc9a57901c..ba6ba788f2a997bee02ae0d718763cc7a625d870 100644
--- a/Modules/Core/VectorDataBase/include/otbDataNode.h
+++ b/Modules/Core/VectorDataBase/include/otbDataNode.h
@@ -254,7 +254,7 @@ public:
 
   /**
    * Copy the field list from a DataNode
-   * \param datanode where to get the keywordlist to copy.
+   * \param dataNode datanode where to get the keywordlist to copy.
    */
   void CopyFieldList(const DataNode * dataNode);
 
diff --git a/Modules/Feature/Descriptors/include/otbImageToSIFTKeyPointSetFilter.h b/Modules/Feature/Descriptors/include/otbImageToSIFTKeyPointSetFilter.h
index 3dae4d1e84744722c3b011706a8031ec0bd80051..211c7f9fd274385cfc075ad7f0140f887cd7226d 100644
--- a/Modules/Feature/Descriptors/include/otbImageToSIFTKeyPointSetFilter.h
+++ b/Modules/Feature/Descriptors/include/otbImageToSIFTKeyPointSetFilter.h
@@ -106,7 +106,7 @@ public:
  *
  * Orientation is expressed in degree in the range [0, 360] with a precision of 10 degrees.
  *
- * \example FeatureExtraction/SIFTExample.cxx
+ * \example Patented/SIFTExample.cxx
  *
  *
  * \ingroup OTBDescriptors
diff --git a/Modules/Feature/Descriptors/include/otbSiftFastImageFilter.h b/Modules/Feature/Descriptors/include/otbSiftFastImageFilter.h
index e07a0af4a1e95999bc62f272fb3b8eb1d86c7821..8ab518caf8aa18f3d28ae27cd4c15dfacd48c308 100644
--- a/Modules/Feature/Descriptors/include/otbSiftFastImageFilter.h
+++ b/Modules/Feature/Descriptors/include/otbSiftFastImageFilter.h
@@ -41,7 +41,7 @@ namespace otb
  *
  * \sa ImageToSIFTKeyPointSetFilter
  *
- * \example FeatureExtraction/SIFTFastExample.cxx
+ * \example Patented/SIFTFastExample.cxx
  *
  * \ingroup OTBDescriptors
  */
diff --git a/Modules/Filtering/MathParserX/include/otbBandMathXImageFilter.h b/Modules/Filtering/MathParserX/include/otbBandMathXImageFilter.h
index a48fea6f0f47ed711645541964b337e7200e4bce..f259390e069da651bf223a463dcca5eef435010d 100644
--- a/Modules/Filtering/MathParserX/include/otbBandMathXImageFilter.h
+++ b/Modules/Filtering/MathParserX/include/otbBandMathXImageFilter.h
@@ -40,7 +40,7 @@ namespace otb
  *
  * This filter is based on the mathematical parser library muParserX.
  * The built in functions and operators list is available at:
- * \url{http:*articles.beltoforion.de/article.php?a=muparserx}.
+ * http://articles.beltoforion.de/article.php?a=muparserx.
  *
  * In order to use this filter, at least one input image is to be
  * set. An associated variable name can be specified or not by using
diff --git a/Modules/Learning/Supervised/include/otbBoostMachineLearningModel.h b/Modules/Learning/Supervised/include/otbBoostMachineLearningModel.h
index 9f1db559d2cdea10cd0b7392417b86323c3c3259..eb82efc56f97ff2dbdef3ccba03a3447793081f2 100644
--- a/Modules/Learning/Supervised/include/otbBoostMachineLearningModel.h
+++ b/Modules/Learning/Supervised/include/otbBoostMachineLearningModel.h
@@ -79,7 +79,7 @@ public:
 
   /** Setters/Getters to the threshold WeightTrimRate.
    *  A threshold between 0 and 1 used to save computational time.
-   *  Samples with summary weight \leq 1 - WeightTrimRate do not participate in the next iteration of training.
+   *  Samples with summary weight \f$ w \leq 1 - WeightTrimRate \f$ do not participate in the next iteration of training.
    *  Set this parameter to 0 to turn off this functionality.
    *  Default is 0.95
    *  \see http://docs.opencv.org/modules/ml/doc/boosting.html#cvboostparams-cvboostparams
diff --git a/Modules/Learning/Supervised/include/otbDecisionTreeMachineLearningModel.h b/Modules/Learning/Supervised/include/otbDecisionTreeMachineLearningModel.h
index 3fe427458e2347ad91025fefdd768ba08523aee8..6e11039327b4cd531343ba470eb390b1eb63375f 100644
--- a/Modules/Learning/Supervised/include/otbDecisionTreeMachineLearningModel.h
+++ b/Modules/Learning/Supervised/include/otbDecisionTreeMachineLearningModel.h
@@ -90,7 +90,7 @@ public:
   itkGetMacro(UseSurrogates, bool);
   itkSetMacro(UseSurrogates, bool);
 
-  /** Cluster possible values of a categorical variable into K \leq max_categories clusters to find
+  /** Cluster possible values of a categorical variable into \f$ K \leq MaxCategories \f$ clusters to find
    *  a suboptimal split. If a discrete variable, on which the training procedure tries to make a split,
    *  takes more than max_categories values, the precise best subset estimation may take a very long time
    *  because the algorithm is exponential. Instead, many decision trees engines (including ML) try to find
diff --git a/Modules/Learning/Supervised/include/otbKNearestNeighborsMachineLearningModel.h b/Modules/Learning/Supervised/include/otbKNearestNeighborsMachineLearningModel.h
index af99bb9da0375e4fee3a1454489ef1d45bba765e..a45608624f67afaa0554a4a00d77f4378244c079 100644
--- a/Modules/Learning/Supervised/include/otbKNearestNeighborsMachineLearningModel.h
+++ b/Modules/Learning/Supervised/include/otbKNearestNeighborsMachineLearningModel.h
@@ -55,14 +55,14 @@ public:
 
   /** Setters/Getters to the number of neighbors to use
    *  Default is 32
-   *  see @http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html
+   *  \see http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html
    */
   itkGetMacro(K, int);
   itkSetMacro(K, int);
 
   /** Setters/Getters to IsRegression flag
    *  Default is False
-   *  see @http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html
+   *  \see http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html
    */
   itkGetMacro(IsRegression, bool);
   itkSetMacro(IsRegression, bool);
diff --git a/Modules/Learning/Supervised/include/otbNeuralNetworkMachineLearningModel.h b/Modules/Learning/Supervised/include/otbNeuralNetworkMachineLearningModel.h
index 4c50e6b9f6d66f02f49b17af44e2653fd59f34f4..ff2d6de384dc71071e8cbc981154c2ccc7f33ff5 100644
--- a/Modules/Learning/Supervised/include/otbNeuralNetworkMachineLearningModel.h
+++ b/Modules/Learning/Supervised/include/otbNeuralNetworkMachineLearningModel.h
@@ -117,14 +117,14 @@ public:
   itkGetMacro(BackPropMomentScale, double);
   itkSetMacro(BackPropMomentScale, double);
 
-  /** Initial value \Delta_0 of update-values \Delta_{ij} in RPROP method.
+  /** Initial value \f$ \Delta_0 \f$ of update-values \f$ \Delta_{ij} \f$ in RPROP method.
    *  Default is 0.1
    *  \see http://docs.opencv.org/modules/ml/doc/neural_networks.html
    */
   itkGetMacro(RegPropDW0, double);
   itkSetMacro(RegPropDW0, double);
 
-  /** Update-values lower limit \Delta_{min} in RPROP method.
+  /** Update-values lower limit \f$ \Delta_{min} \f$ in RPROP method.
    * It must be positive. Default is FLT_EPSILON
    *  \see http://docs.opencv.org/modules/ml/doc/neural_networks.html
    */
diff --git a/Modules/Learning/Supervised/include/otbRandomForestsMachineLearningModel.h b/Modules/Learning/Supervised/include/otbRandomForestsMachineLearningModel.h
index deddd5456f70fe4c31d2932d2b2025dee0c03597..5f2241d005f1596519d06add9ee49170f1c801ee 100644
--- a/Modules/Learning/Supervised/include/otbRandomForestsMachineLearningModel.h
+++ b/Modules/Learning/Supervised/include/otbRandomForestsMachineLearningModel.h
@@ -83,55 +83,21 @@ public:
   //@}
 
   //Setters of RT parameters (documentation get from opencv doxygen 2.4)
-  /* the depth of the tree. A low value will likely underfit and conversely a
-   * high value will likely overfit. The optimal value can be obtained using cross
-   * validation or other suitable methods. */
   itkGetMacro(MaxDepth, int);
   itkSetMacro(MaxDepth, int);
-  /* minimum samples required at a leaf node for it to be split. A reasonable
-   * value is a small percentage of the total data e.g. 1%. */
+
   itkGetMacro(MinSampleCount, int);
   itkSetMacro(MinSampleCount, int);
 
-  /* Termination criteria for regression trees. If all absolute differences
-  * between an estimated value in a node and values of train samples in this node
-  * are less than this parameter then the node will not be split */
   itkGetMacro(RegressionAccuracy, double);
   itkSetMacro(RegressionAccuracy, double);
 
   itkGetMacro(ComputeSurrogateSplit, bool);
   itkSetMacro(ComputeSurrogateSplit, bool);
-  /* Cluster possible values of a categorical variable into K \leq
-   * max_categories clusters to find a suboptimal split. If a discrete variable,
-   * on which the training procedure tries to make a split, takes more than
-   * max_categories values, the precise best subset estimation may take a very
-   * long time because the algorithm is exponential. Instead, many decision
-   * trees engines (including ML) try to find sub-optimal split in this case by
-   * clustering all the samples into max categories clusters that is some
-   * categories are merged together. The clustering is applied only in n>2-class
-   * classification problems for categorical variables with N > max_categories
-   * possible values. In case of regression and 2-class classification the
-   * optimal split can be found efficiently without employing clustering, thus
-   * the parameter is not used in these cases.
-  */
+
   itkGetMacro(MaxNumberOfCategories, int);
   itkSetMacro(MaxNumberOfCategories, int);
 
-  /*  The array of a priori class probabilities, sorted by the class label
-  * value. The parameter can be used to tune the decision tree preferences toward
-  * a certain class. For example, if you want to detect some rare anomaly
-  * occurrence, the training base will likely contain much more normal cases than
-  * anomalies, so a very good classification performance will be achieved just by
-  * considering every case as normal. To avoid this, the priors can be specified,
-  * where the anomaly probability is artificially increased (up to 0.5 or even
-  * greater), so the weight of the misclassified anomalies becomes much bigger,
-  * and the tree is adjusted properly. You can also think about this parameter as
-  * weights of prediction categories which determine relative weights that you
-  * give to misclassification. That is, if the weight of the first category is 1
-  * and the weight of the second category is 10, then each mistake in predicting
-  * the second category is equivalent to making 10 mistakes in predicting the
-  first category. */
-
   std::vector<float> GetPriors() const
   {
     return m_Priors;
@@ -141,29 +107,22 @@ public:
   {
     m_Priors = priors;
   }
-  /* If true then variable importance will be calculated and then it can be
-  retrieved by CvRTrees::get_var_importance(). */
+  
   itkGetMacro(CalculateVariableImportance, bool);
   itkSetMacro(CalculateVariableImportance, bool);
-  /* The size of the randomly selected subset of features at each tree node and
-  * that are used to find the best split(s). If you set it to 0 then the size will
-  be set to the square root of the total number of features. */
+
   itkGetMacro(MaxNumberOfVariables, int);
   itkSetMacro(MaxNumberOfVariables, int);
-  /* The maximum number of trees in the forest (surprise, surprise). Typically
-  * the more trees you have the better the accuracy. However, the improvement in
-  * accuracy generally diminishes and asymptotes pass a certain number of
-  * trees. Also to keep in mind, the number of tree increases the prediction time
-  linearly. */
+
   itkGetMacro(MaxNumberOfTrees, int);
   itkSetMacro(MaxNumberOfTrees, int);
-  /* Sufficient accuracy (OOB error) */
+
   itkGetMacro(ForestAccuracy, float);
   itkSetMacro(ForestAccuracy, float);
-  /* The type of the termination criteria */
+
   itkGetMacro(TerminationCriteria, int);
   itkSetMacro(TerminationCriteria, int);
-  /* Perform regression instead of classification */
+
   itkGetMacro(RegressionMode, bool);
   itkSetMacro(RegressionMode, bool);
 
@@ -193,17 +152,66 @@ private:
   void operator =(const Self&); //purposely not implemented
 
   CvRTrees * m_RFModel;
+  /** The depth of the tree. A low value will likely underfit and conversely a
+   * high value will likely overfit. The optimal value can be obtained using cross
+   * validation or other suitable methods. */
   int m_MaxDepth;
+  /** minimum samples required at a leaf node for it to be split. A reasonable
+   * value is a small percentage of the total data e.g. 1%. */
   int m_MinSampleCount;
+  /** Termination criteria for regression trees. If all absolute differences
+   * between an estimated value in a node and values of train samples in this node
+   * are less than this parameter then the node will not be split */
   float m_RegressionAccuracy;
   bool m_ComputeSurrogateSplit;
+  /** Cluster possible values of a categorical variable into 
+   * \f$ K \leq MaxCategories \f$ 
+   * clusters to find a suboptimal split. If a discrete variable,
+   * on which the training procedure tries to make a split, takes more than
+   * max_categories values, the precise best subset estimation may take a very
+   * long time because the algorithm is exponential. Instead, many decision
+   * trees engines (including ML) try to find sub-optimal split in this case by
+   * clustering all the samples into max categories clusters that is some
+   * categories are merged together. The clustering is applied only in n>2-class
+   * classification problems for categorical variables with N > max_categories
+   * possible values. In case of regression and 2-class classification the
+   * optimal split can be found efficiently without employing clustering, thus
+   * the parameter is not used in these cases.
+   */
   int m_MaxNumberOfCategories;
+  /** The array of a priori class probabilities, sorted by the class label
+   * value. The parameter can be used to tune the decision tree preferences toward
+   * a certain class. For example, if you want to detect some rare anomaly
+   * occurrence, the training base will likely contain much more normal cases than
+   * anomalies, so a very good classification performance will be achieved just by
+   * considering every case as normal. To avoid this, the priors can be specified,
+   * where the anomaly probability is artificially increased (up to 0.5 or even
+   * greater), so the weight of the misclassified anomalies becomes much bigger,
+   * and the tree is adjusted properly. You can also think about this parameter as
+   * weights of prediction categories which determine relative weights that you
+   * give to misclassification. That is, if the weight of the first category is 1
+   * and the weight of the second category is 10, then each mistake in predicting
+   * the second category is equivalent to making 10 mistakes in predicting the
+   * first category. */
   std::vector<float> m_Priors;
+  /** If true then variable importance will be calculated and then it can be
+   * retrieved by CvRTrees::get_var_importance(). */
   bool m_CalculateVariableImportance;
+  /** The size of the randomly selected subset of features at each tree node and
+   * that are used to find the best split(s). If you set it to 0 then the size will
+   * be set to the square root of the total number of features. */
   int m_MaxNumberOfVariables;
+  /** The maximum number of trees in the forest (surprise, surprise). Typically
+   * the more trees you have the better the accuracy. However, the improvement in
+   * accuracy generally diminishes and asymptotes pass a certain number of
+   * trees. Also to keep in mind, the number of tree increases the prediction time
+   *linearly. */
   int m_MaxNumberOfTrees;
+  /** Sufficient accuracy (OOB error) */
   float m_ForestAccuracy;
+  /** The type of the termination criteria */
   int m_TerminationCriteria;
+  /** Perform regression instead of classification */
   bool m_RegressionMode;
 };
 } // end namespace otb