From 8a3af7c0a14fbf09b04e7979d9be1935e16d48a6 Mon Sep 17 00:00:00 2001
From: dmci <daniel.o.mcinerney@gmail.com>
Date: Tue, 30 Oct 2018 21:16:09 +0000
Subject: [PATCH] DOC: suggested edits to the documentation

---
 Documentation/Cookbook/README.md              |  8 +-
 Documentation/Cookbook/rst/AdvancedUse.rst    | 83 +++++++++----------
 Documentation/Cookbook/rst/FAQ.rst            |  4 +-
 .../Cookbook/rst/OTB-Applications.rst         | 40 ++++-----
 .../Cookbook/rst/recipes/bandmathx.rst        | 30 ++++---
 Documentation/Cookbook/rst/recipes/improc.rst | 16 ++--
 .../Cookbook/rst/recipes/optpreproc.rst       | 67 +++++++--------
 .../rst/recipes/residual_registration.rst     | 14 ++--
 .../ChangeDetectionFrameworkExample.cxx       | 18 ++--
 Examples/ChangeDetection/DiffChDet.cxx        |  6 +-
 .../BayesianPluginClassifier.cxx              | 10 +--
 .../BoostAdapters/include/otbBoostDox.h       |  2 +-
 .../BoostAdapters/include/otbStringUtils.h    | 10 +--
 .../include/otbGdalDataTypeBridge.h           |  4 +-
 .../include/otbGeometriesToGeometriesFilter.h | 10 +--
 .../Adapters/GdalAdapters/otb-module.cmake    |  2 +-
 .../app/otbMultivariateAlterationDetector.cxx |  2 +-
 .../app/otbComputeConfusionMatrix.cxx         |  2 +-
 .../app/otbComputeImagesStatistics.cxx        |  6 +-
 .../otbComputePolylineFeatureFromImage.cxx    |  4 +-
 .../include/otbWrapperApplication.h           | 20 ++---
 Modules/Wrappers/QGIS/otb-module.cmake        |  2 +-
 22 files changed, 181 insertions(+), 179 deletions(-)

diff --git a/Documentation/Cookbook/README.md b/Documentation/Cookbook/README.md
index 4d83f1c69a..f51ff765c3 100644
--- a/Documentation/Cookbook/README.md
+++ b/Documentation/Cookbook/README.md
@@ -3,11 +3,11 @@ RST docs for Orfeo Toolbox CookBook
 Introduction
 ============
 
-This is a replacement of old OTB Cookbook which was written in Latex. This version is completely deviate from existing Latex format to reStructured format (rst).
+This is a replacement of the old OTB Cookbook which was written in LaTeX. This version has deviated completely from the existing LaTeX format to reStructured format (rst).
 
-Converting existing latex to rst is not that straightforward. All rst files for OTB applications are generated using python script otbGenerateWrappersRstDoc.py.
-For others in recipes, we used a tool called pandoc to get an initial rst and then edited out errors manually. You do not have to generate them again.
-The old Cookbook in otb-documents is deprecated.
+Converting existing LaTeX to rst is not that straightforward. All rst files for OTB applications are generated using the Python script otbGenerateWrappersRstDoc.py.
+For others files in the Recipes, we used a tool called pandoc to get an initial rst and then manually edit and remove the errors. You do not have to generate them again.
+The old Cookbook in otb-documents is now deprecated.
 
 Requirements
 ============
diff --git a/Documentation/Cookbook/rst/AdvancedUse.rst b/Documentation/Cookbook/rst/AdvancedUse.rst
index b0d444cbc2..740f22b7ba 100644
--- a/Documentation/Cookbook/rst/AdvancedUse.rst
+++ b/Documentation/Cookbook/rst/AdvancedUse.rst
@@ -8,7 +8,7 @@ Environment variables that affect Orfeo ToolBox
 
 The following environment variables are parsed by Orfeo ToolBox. Note
 that they only affect default values, and that settings in extended
-filenames, applications, monteverdi or custom C++ code might override
+filenames, applications, Monteverdi or custom C++ code might override
 those values.
 
 * ``OTB_DEM_DIRECTORY``: Default directory were DEM tiles are
@@ -26,29 +26,29 @@ those values.
   default level is ``INFO``.
 
 In addition to OTB specific environment variables, the following
-environment variable are parsed by third party libraries and also
+environment variables are parsed by third party libraries and also
 affect how OTB works:
 
-* ``GDAL_CACHEMAX``: Gdal has an internal cache mechanism to avoid reading or decoding again image chunks. This environnement variable controls how much memory Gdal can use for caching. By default, Gdal can use up to 5 percents of available RAM on system, which may be a lot. Moreover, caching is only needed if the processing chain is likely to request the same chunk several times, which is not likely  to happen for a standard pixel based OTB pipeline. Setting a lower value allows to allocate more memory to OTB itself (using applications ``-ram`` parameter or ``OTB_MAX_RAM_HINT`` environment variable). If value is small (less than 100 000, it is assumed to be in megabytes, otherwise, it is assumed to be in bytes.
-* ``GDAL_NUM_THREADS``: Gdal can take advantage of multi-threading to decode some formats. This variable controls the number of threads Gdal is allowed to use.
-* ``OPJ_NUM_THREADS``: OpenJpeg can take advantage of mutli-threading when decoding images. This variable controls the number of threads OpenJpeg is allowed to use.
-* ``ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS``: This variable allows to control the number of threads used by ITK for processing. 
+* ``GDAL_CACHEMAX``: GDAL has an internal cache mechanism to avoid reading or decoding again image chunks. This environment variable controls the amount of memory that GDAL can use for caching. By default, GDAL can use up to 5 percent of the system's available RAM, which may be a lot. In addition, caching is only needed if the processing chain is likely to request the same chunk several times, which is unlikely to happen for a standard pixel based OTB pipeline. Setting a lower value facilitates the allocation of more memory to OTB itself (using applications ``-ram`` parameter or ``OTB_MAX_RAM_HINT`` environment variable). If the value is small, i.e. less than 100 000, it is assumed to be in megabytes, otherwise, it is assumed to be in bytes.
+* ``GDAL_NUM_THREADS``: GDAL can take advantage of multi-threading to decode some formats. This variable controls the number of threads GDAL is allowed to use.
+* ``OPJ_NUM_THREADS``: OpenJpeg can take advantage of multi-threading when decoding images. This variable controls the number of threads OpenJpeg is allowed to use.
+* ``ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS``: This variable controls the number of threads used by ITK for processing. 
   
 .. _extended-filenames:
 
 Extended filenames
 ------------------
 
-Extended filenames is an interesting feature of OTB. With it, you can control
-several aspects of the beahvior of the OTB in the OTB-Applications or in our
-own C++ applications. Historically this feature has been desingn to solve
-an issue with how to handle geo-referencing information. 
+Extended filenames are an interesting feature of OTB. With them, it is possible to control
+several aspects of the behavior of OTB in the OTB-Applications or in our
+own C++ applications. Historically this feature was designed to facilitate 
+how geo-referencing information was handled. 
 
 Indeed, there are multiple ways to define geo-referencing information. For
 instance, one can use a geographic transform, a cartographic projection,
 or a sensor model with RPC coefficients. A single image may contain
 several of these elements, such as in the “ortho-ready” products: this
-is a type of product still in sensor geometry (the sensor model is
+is a type of product that is still in sensor geometry (the sensor model is
 supplied with the image) but it also contains an approximative
 geographic transform that can be used to have a quick estimate of the
 image localisation. For instance, your product may contain a “.TIF” file
@@ -56,18 +56,18 @@ for the image, along with a “.RPB” file that contains the sensor model
 coefficients and an “.IMD” file that contains a cartographic projection.
 
 This case leads to the following question: which geo-referencing
-element should be used when opening this image in OTB. In
-fact, it depends on the users need. For an orthorectification
+element should be used when the image is opened in OTB. In
+fact, it depends on the user's requirements. For an orthorectification
 application, the sensor model must be used. In order to specify which
 information should be skipped, a syntax of extended filenames has been
 developed for both reading and writing.
 
-Since the development of this feature we have extend this mechanism for 
-other aspaects: like band or overview selection in reader part or support
-create option of gdal in writer part.The reader and writer extended filename 
+Since the development of this feature, we have extended this mechanism for 
+other aspects. This includes band or overview selection in reader part or support
+create option of GDAL in writer part. The reader and writer extended filename 
 support is based on the same syntax, only the options are different. 
-To benefit from the extended file name mechanism, the following syntax 
-is to be used:
+To benefit from the extended filename mechanism, the following syntax 
+should be used:
 
 ::
 
@@ -82,7 +82,7 @@ Reader options
 
     &geom=<path/filename.geom>
 
--  Contains the file name of a valid geom file
+-  Contains the filename of a valid geom file
 
 -  Use the content of the specified geom file instead of
    image-embedded geometric information
@@ -117,20 +117,20 @@ Reader options
 
 -  Select a subset of bands from the input image
 
--  The syntax is inspired by Python indexing syntax with
-   bands=r1,r2,r3,...,rn where each ri is a band range that can be :
+-  The syntax is inspired by the Python indexing syntax with
+   bands=r1,r2,r3,...,rn where each ri is a band range that can be:
 
    -  a single index (1-based) :
 
-      -  :code:`2` means 2nd band
+      -  :code:`2` means the second band
 
       -  :code:`-1` means last band
 
    -  or a range of bands :
 
-      -  :code:`3:` means 3rd band until the last one
+      -  :code:`3:` means from the third band until the last band 
 
-      -  :code:`:-2` means the first bands until the second to last
+      -  :code:`:-2` means the first band up until the penultimate band 
 
       -  :code:`2:4` means bands 2,3 and 4
 
@@ -158,7 +158,7 @@ Reader options
 
     &skipgeom=<(bool)true>
 
--  Skip geometric information
+-  Skip the geometric information
 
 -  Clears the keyword list
 
@@ -204,9 +204,9 @@ Writer options
 
     &gdal:co:<GDALKEY>=<VALUE>
 
--  To specify a gdal creation option
+-  To specify a GDAL creation option
 
--  For gdal creation option information, see dedicated gdal documentation for each driver. For example, you can find `here <http://www.gdal.org/frmt_gtiff.html>`_ the information about the GeoTiff create options
+-  For GDAL creation option information, see the dedicated GDAL documentation for each driver. For example, you can find `here <http://www.gdal.org/frmt_gtiff.html>`_ the information about the GeoTiff create options
 
 -  None by default
 
@@ -241,7 +241,7 @@ Writer options
 
     &streaming:sizemode=<VALUE>
 
--  Allows to choose how the size of the streaming pieces is computed
+-  Provides the option to choose how the size of the streaming pieces is computed
 
 -  Available values are:
 
@@ -270,8 +270,8 @@ Writer options
 
    -  if sizemode=nbsplits: number of requested splits for streaming
 
--  If not provided, the default value is set to 0 and result in
-   different behaviour depending on sizemode (if set to height or
+-  If not provided, the default value is set to 0 and results in
+   different behaviours depending on sizemode (if set to height or
    nbsplits, streaming is deactivated, if set to auto, value is
    fetched from configuration or cmake configuration file)
 
@@ -338,25 +338,22 @@ The available syntax for boolean options are:
 
    &nodata=(double) value / [int:double, int:double ...]
 
--   This options allows one to set specific nodata values for all or selected bands.
+-    This options allows one to set specific nodata values for all or selected bands. The nodata values can be set in two ways: either using a simple scalar value or band,value pairs. OTB will select either one of them depending on the type of nodata value string specified.
 
-    There are two ways of setting nodata values. simple scalar values of band,value pair.
-    OTB will select either one of them depending on type of nodata value string
-   
--    If value is scalar (without bandindex), it will be applied only to first band of image.
+-    If the value is scalar (without bandindex), it will be applied only to the first band of the image.
 
--    If value is given as "bandindex:value" pair separated by a ":" then
-     nodata value is applied to only those selected band.
+-    If the value is given as "bandindex:value" pair separated by a ":" then
+     the nodata value is applied to only those selected band.
 
-- By default OTB will not alter any existing nodata value.
+-    By default OTB will not alter any existing nodata value.
 
 OGR DataSource options
 ^^^^^^^^^^^^^^^^^^^^^^^
 
-We extended this process to OGR DataSource. There are three different type of
-option : open, creation and layer creation. Those options come from the GDAL 
-API. In order to use them one just need to specify to which of this family 
-the option one want to use is from.
+We extended this process to OGR DataSource. There are three different types of
+options: open, creation and layer creation, which come directly from the GDAL 
+API. In order to use them, one just needs to specify the family that the option is
+from.
 
 For open option :
 
@@ -383,7 +380,7 @@ For layer creation option :
 Examples
 ^^^^^^^^^^^^^^
 
-You can find below some examples:
+Some examples are provided below: 
 
 - Write a file with blockSize equal to 256 and with DEFLATE compression
 
diff --git a/Documentation/Cookbook/rst/FAQ.rst b/Documentation/Cookbook/rst/FAQ.rst
index 83faac13ab..09329e8311 100644
--- a/Documentation/Cookbook/rst/FAQ.rst
+++ b/Documentation/Cookbook/rst/FAQ.rst
@@ -30,10 +30,10 @@ What's in OTB?
 
 -  Geospatial analysis.
 
-For a full list of applications see the :ref:`apprefdoc`.
+For a full list of applications see the chapter :ref:`apprefdoc`.
 For an introduction to the C++ API see the
 `Software Guide <https://www.orfeo-toolbox.org/SoftwareGuide/>`_.
-And for exhaustive descrpition of the C++ API see the
+And for an exhaustive description of the C++ API see the
 `Doxygen <https://www.orfeo-toolbox.org/doxygen/>`_.
 
 What is ORFEO?
diff --git a/Documentation/Cookbook/rst/OTB-Applications.rst b/Documentation/Cookbook/rst/OTB-Applications.rst
index 6b33e545d3..37182505fe 100644
--- a/Documentation/Cookbook/rst/OTB-Applications.rst
+++ b/Documentation/Cookbook/rst/OTB-Applications.rst
@@ -20,7 +20,7 @@ entry points. While the framework can be extended, the Orfeo ToolBox ships with
    ergonomic parameters setting, display of documentation, and progress
    reporting,
 
--  A SWIG interface, which means that any application can be loaded
+-  A SWIG interface, which means that any application can be loaded,
    set-up and executed into a high-level language such as Python or Java
    for instance.
 
@@ -28,20 +28,20 @@ entry points. While the framework can be extended, the Orfeo ToolBox ships with
    the SWIG/Python interface is available with seamless integration within
    QGIS.
 
-The complete list of applications is described in the :ref:`apprefdoc`.
+The complete list of applications is described in the Chapter :ref:`apprefdoc`.
 
-All standard applications share the same implementation and expose
-automatically generated interfaces.
-Thus, the command-line interface is prefixed by ``otbcli_``, while the Qt interface is prefixed by
-``otbgui_``. For instance, calling ``otbcli_Convert`` will launch the
+All standard applications share the same implementation and automatically expose
+generated interfaces.
+However they are accessed in a slightly different way: the command-line interface is prefixed by ``otbcli_``, while the Qt interface is prefixed by
+``otbgui_``. For cwinstance, calling ``otbcli_Convert`` will launch the
 command-line interface of the Convert application, while
-``otbgui_Convert`` will launch its GUI.
+``otbgui_Convert`` will launch the GUI.
 
 Command-line launcher
 ---------------------
 
 The command-line application launcher loads an application
-plugin, to set its parameters, and execute it using the command line.
+plugin, allows for its parameters to be set, and can then be executed from the command line.
 Launching the ``otbApplicationLauncherCommandLine`` without any arguments provided,
 results in the following help to be displayed:
 
@@ -52,23 +52,23 @@ results in the following help to be displayed:
 
 The ``module_name`` parameter corresponds to the application name. The
 ``[MODULEPATH]`` argument is optional and allows the path to the shared library 
-(or plugin) correpsonding to the ``module_name`` to be passed to the launcher.
+(or plugin) corresponding to the ``module_name`` to be passed to the launcher.
 
 It is also possible to set this path with the environment variable
 ``OTB_APPLICATION_PATH``, making the ``[MODULEPATH]`` optional. This
 variable is checked by default when no ``[MODULEPATH]`` argument is
 given. When using multiple paths in ``OTB_APPLICATION_PATH``, one must
-make sure to use the standard path separator of the target system, which
+ensure that the standard path separator of the target system is used, which
 is ``:`` on Unix and ``;`` on Windows.
 
 An error in the application name (i.e. in parameter ``module_name``)
-will make the ``otbApplicationLauncherCommandLine`` lists the name of
+will make the ``otbApplicationLauncherCommandLine`` list the name of
 all applications found in the available path (either ``[MODULEPATH]``
 and/or ``OTB_APPLICATION_PATH``).
 
-To ease the use of the applications, and try avoiding extensive
-environment customization, ready-to-use scripts are provided by the OTB
-installation to launch each application, and takes care of adding the
+To ease the use of the applications, and to avoid extensive
+environment customizations; ready-to-use scripts are provided by the OTB
+installation to launch each application. They take care of adding the
 standard application installation path to the ``OTB_APPLICATION_PATH``
 environment variable.
 
@@ -79,7 +79,7 @@ application with the script called ``otbcli_Orthorectification``.
 Launching an application without parameters, or with incomplete parameters, will cause the
 launcher to display a summary of the parameters. This summary will display the minimum set
 of parameters that are required to execute the application. Here is an
-example with the OrthoRectification application:
+example based on the OrthoRectification application:
 
 ::
 
@@ -125,11 +125,11 @@ example with the OrthoRectification application:
 
 For a detailed description of the application behaviour and parameters,
 please check the application reference documentation presented
-chapter [chap:apprefdoc], page  or follow the ``DOCUMENTATION``
-hyperlink provided in ``otbApplicationLauncherCommandLine`` output.
+in chapter :ref:`apprefdoc`  or follow the ``DOCUMENTATION``
+hyperlink provided in the output of ``otbApplicationLauncherCommandLine``.
 Parameters are passed to the application using the parameter key (which
 might include one or several ``.`` character), prefixed by a ``-``.
-Command-line examples are provided in chapter [chap:apprefdoc], page.
+Command-line examples are provided in the chapter :ref:`apprefdoc`.
 
 Graphical launcher
 ------------------
@@ -193,7 +193,7 @@ environment variable ``PYTHONPATH`` to include this directory so that the module
 becomes available from Python.
 
 On Windows, you can install the ``otb-python`` package, and the module
-will be available from an OSGeo4W shell automatically.
+will be automatically available from an OSGeo4W shell.
 
 As for the command line and GUI launchers, the path to the application
 modules needs to be properly set with the ``OTB_APPLICATION_PATH``
@@ -355,7 +355,7 @@ Here is an example of MPI call on a cluster::
 
 One can see that the registration and pan-sharpening of the
 panchromatic and multi-spectral bands of a Pleiades image has been split
-among 560 cpus and only took 56 seconds.
+between 560 CPUs and only took 56 seconds to complete.
 
 Note that this MPI parallel invocation of applications is only
 available for command-line calls to OTB applications, and only for
diff --git a/Documentation/Cookbook/rst/recipes/bandmathx.rst b/Documentation/Cookbook/rst/recipes/bandmathx.rst
index 54c0d9eb4e..7902bd987d 100644
--- a/Documentation/Cookbook/rst/recipes/bandmathx.rst
+++ b/Documentation/Cookbook/rst/recipes/bandmathx.rst
@@ -20,6 +20,8 @@ A simple example is given below:
 As we can see, the new band math filter works with the class
 otb::VectorImage.
 
+.. _syntax:
+
 Syntax: first elements
 ----------------------
 
@@ -134,8 +136,7 @@ or in more simple terms (and only if im2 contains two components):
 .. math:: im2* \{1,2\}'
 
 Concerning division, this operation is not originally defined between
-two vectors (see next section “New operators and functions”
--[ssec:operators]-).
+two vectors (see next section :ref:`operators`).
 
 Now, let’s go back to the first formula: this one specifies the addition
 of two images band to band. With muParserX lib, we can now define such
@@ -170,6 +171,8 @@ Fundamentally, a neighbourhood is represented as a matrix inside the
 muParserX framework; so the remark about mathematically well-defined
 formulas still stands.
 
+.. _operators:
+
 New operators and functions
 ---------------------------
 
@@ -205,7 +208,7 @@ ones. For instance:
 .. math:: im1 ~  mlt ~ 2.0
 
 Note that the operator ’\*’ could have been used instead of ’pw’ one.
-But ’pw’ is a little bit more permisive, and can tolerate a
+But ’pw’ is a little bit more permissive, and can tolerate a
 one-dimensional vector as the right operand.
 
 **Operators pow and pw** The first operator allows the definition of an
@@ -267,20 +270,20 @@ takes two inputs). For instance:
 
 .. math:: corr(im1b1N3x3,im1b2N3x3)
 
-**Function maj** This function allows to compute the most represented
+**Function maj** This function computes the most represented
 element within a vector or a matrix (the function can take as many
 inputs as needed; one maj element value is computed per input). For
 instance:
 
 .. math:: maj(im1b1N3x3,im1b2N3x3)
 
-**Function vmin and vmax** These functions allow to compute the min or
+**Function vmin and vmax** These functions calculate the min or
 max value of a given vector or neighborhood (only one input). For
 instance:
 
 .. math:: (vmax(im3b1N3x5)+vmin(im3b1N3x5)) ~ div ~ \{2.0\}
 
-**Function cat** This function allows to concatenate the results of
+**Function cat** This function concatenates the results of
 several expressions into a multidimensional vector, whatever their
 respective dimensions (the function can take as many inputs as needed).
 For instance:
@@ -293,8 +296,7 @@ application will call the function ’cat’ automatically. For instance:
 
 .. math:: filter->SetExpression("im3b1 ; vmin(im3b1N3x5) ; median(im3b1N3x5) ; vmax(im3b1N3x5)");
 
-Please, also refer to the next section “Application Programming
-Interface” ([ssec:API]).
+Please, also refer to the next section :ref:`API`. 
 
 **Function ndvi** This function implements the classical normalized
 difference vegetation index; it takes two inputs. For instance:
@@ -302,7 +304,7 @@ difference vegetation index; it takes two inputs. For instance:
 .. math:: ndvi(im1b1,im1b4)
 
 First argument is related to the visible red band, and the second one to
-the near-infrareds band.
+the near-infrared band.
 
 The table below summarises the different functions and operators.
 
@@ -366,6 +368,8 @@ Functions and operators summary:
 
 [variables]
 
+.. _API: 
+
 Application Programming Interface (API)
 ---------------------------------------
 
@@ -381,7 +385,7 @@ of the new band math filter.
     /** Return a pointer on the nth filter input */
     ImageType * GetNthInput(unsigned int idx);
 
-Refer to the section “Syntax: first elements” ([ssec:syntax]) where the
+Refer to the section :ref:`syntax`, where the
 two first functions have already been commented. The function
 GetNthInput is quite clear to understand.
 
@@ -394,13 +398,13 @@ Each time the function SetExpression is called, a new expression is
 pushed inside the filter. **There are as many outputs as there are
 expressions. The dimensions of the outputs (number of bands) are totally
 dependent on the dimensions of the related expressions (see also last
-remark of the section “Syntax: first element” -[ssec:syntax]-).** Thus,
+remark of the section :ref:`syntax`).** Thus,
 the filter always performs a pre-evaluation of each expression, in order
 to guess how to allocate the outputs.
 
 The concatenation of the results of many expressions (whose results can
 have different dimensions) into one unique output is possible. For that
-puropose, semi-colons (“;”) are used as separating characters. For
+purpose, semi-colons (“;”) are used as separating characters. For
 instance:
 
 .. math:: filter->SetExpression("im1 + im2 ; im1b1*im2b1");
@@ -494,7 +498,7 @@ expr. For instance:
       /** Export constants and expressions to a given filename */
       void ExportContext(const std::string& filename);
 
-This function allows the user to export a txt file that saves its
+This function allows the user to export a text file that saves its
 favorite constant or expression definitions. Such a file will be
 reusable by the ImportContext function (see above).
 
diff --git a/Documentation/Cookbook/rst/recipes/improc.rst b/Documentation/Cookbook/rst/recipes/improc.rst
index 6e9e94e977..36aa46f1b9 100644
--- a/Documentation/Cookbook/rst/recipes/improc.rst
+++ b/Documentation/Cookbook/rst/recipes/improc.rst
@@ -70,7 +70,7 @@ input image to the default value for DEM (which is -32768):
 
 The third mode “apply” can be useful if you apply a formula to the
 entire image. This will likely change the values of pixels flagged as
-no-data, but the no-data value in the image metadata doesn’t change. If
+no-data, but the no-data value in the image metadata does not change. If
 you want to fix all no-data pixels to their original value, you can
 extract the mask of the original image and apply it on the output image.
 For instance:
@@ -91,8 +91,8 @@ For instance:
                         -mode.apply.mask mask.tif
 
 You can also use this “apply” mode with an additional parameter
-“mode.apply.ndval”. This parameter allow to set the output nodata value
-applying according to your input mask.
+“mode.apply.ndval”. This parameter sets the output nodata value
+of the input mask.
 
 Segmentation
 ------------
@@ -274,7 +274,7 @@ all the previous steps:
 
 Most of the settings from the previous applications are also exposed in this
 composite application. The range and spatial radius used for the segmentation
-step are half the values used for Mean-Shift smooting, which are obtained from
+step are half the values used for Mean-Shift smoothing, which are obtained from
 LargeScaleMeanShift parameters. There are two output modes: vector (default)
 and raster. When the raster output is chosen, last step (vectorization) is
 skipped.
@@ -295,8 +295,8 @@ Dempster Shafer based Classifier Fusion
 
 This framework is dedicated to perform cartographic validation starting
 from the result of a detection (for example a road extraction), enhance
-the results fiability by using a classifier fusion algorithm. Using a
-set of descriptor, the processing chain validates or invalidates the
+the results viability by using a classifier fusion algorithm. Using a
+set of descriptors, the processing chain validates or invalidates the
 input geometrical features.
 
 Fuzzy Model (requisite)
@@ -341,7 +341,7 @@ for each studied polyline, the chosen descriptors. In this context, the
 *ComputePolylineFeatureFromImage* application can be used for a large
 range of descriptors. It has the following inputs:
 
--  ``-in`` an image (of the sudied scene) corresponding to the chosen
+-  ``-in`` an image (of the studied scene) corresponding to the chosen
    descriptor (NDVI, building Mask…)
 
 -  ``-vd`` a vector data containing polyline of interest
@@ -394,7 +394,7 @@ Second Step: Feature Validation
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 The final application (*VectorDataDSValidation* ) will validate or
-unvalidate the studied samples using `the Dempster-Shafer
+invalidate the studied samples using `the Dempster-Shafer
 theory <http://en.wikipedia.org/wiki/Dempster%E2%80%93Shafer_theory>`_ 
 . Its inputs are:
 
diff --git a/Documentation/Cookbook/rst/recipes/optpreproc.rst b/Documentation/Cookbook/rst/recipes/optpreproc.rst
index e3f00ca3a4..1a39ce8f9e 100644
--- a/Documentation/Cookbook/rst/recipes/optpreproc.rst
+++ b/Documentation/Cookbook/rst/recipes/optpreproc.rst
@@ -10,7 +10,7 @@ Optical radiometric calibration
 In remote sensing imagery, pixel values are referred to as Digital
 Numbers (DN) and they cannot be physically interpreted or compared. They are
 influenced by various factors such as the amount of light flowing through
-the sensor, the gain of the detectors and the analogic to numeric
+the sensor, the gain of the detectors and the analogue to digital
 converter.
 
 Depending on the season, the light and atmospheric conditions, the
@@ -63,7 +63,7 @@ sensors are:
 
 -  Formosat
 
-The *OpticalCalibration* application allows to perform optical
+The *OpticalCalibration* application performs optical
 calibration. The mandatory parameters are the input and output images.
 All other parameters are optional. By default the level of calibration
 is set to TOA (Top Of Atmosphere). The output images are expressed in
@@ -128,7 +128,7 @@ Using either **OTB Applications** or modules from **Monteverdi** , it is
 possible to perform both steps in a row, or step-by-step fusion, as
 described in the above sections.
 
-The *BundleToPerfectSensor* application allows to perform both steps in
+The *BundleToPerfectSensor* application performs both steps in
 a row. Seamless sensor modelling is used to perform zooming and
 registration of the multi-spectral image on the panchromatic image. In
 the case of a Pléiades bundle, a different approach is used: an affine
@@ -157,15 +157,15 @@ application:
 
 There are also optional parameters that can be useful for this tool:
 
--  The ``-elev`` option allows to specify the elevation, either with a
-   DEM formatted for OTB (``-elev.dem`` option, see section [ssec:dem])
+-  The ``-elev`` option specifies the elevation, either with a
+   DEM formatted for OTB (``-elev.dem`` option, see section :ref:`dem`)
    or with an average elevation (``-elev.default`` option). Since
    registration and zooming of the multi-spectral image is performed
    using sensor-models, it may happen that the registration is not
-   perfect in case of landscape with high elevation variation. Using a
-   DEM in this case allows to get better registration.
+   perfect in case of a landscape with a large variation in elevation. In this
+   case a DEM will allow for a better registration to be achieved. 
 
--  The ``-lmSpacing`` option allows to specify the step of the
+-  The ``-lmSpacing`` option specifies the step of the
    registration grid between the multi-spectral image and panchromatic
    image. This is expressed in amount of panchromatic pixels. A lower
    value gives a more precise registration but implies more computation
@@ -173,15 +173,15 @@ There are also optional parameters that can be useful for this tool:
    Default value is 10 pixels, which gives sufficient precision in most
    of the cases.
 
--  The ``-mode`` option allows to select the registration mode for the
+-  The ``-mode`` option selects the registration mode for the
    multi-spectral image. The ``default`` mode uses the sensor model of
    each image to create a generic “MS to Pan” transform. The ``phr``
-   mode uses a simple affine transform (which doesn’t need an elevation
+   mode uses a simple affine transform (which does not need an elevation
    source nor a registration grid).
 
-Pan-sharpening is a quite heavy processing requiring a lot of system
-resource. The ``-ram`` option allows you to limit the amount of memory
-available for the computation, and to avoid overloading your computer.
+Pan-sharpening is a process that requires a lot of system
+resources. The ``-ram`` option allows you to limit the amount of memory
+available for the computation, and also avoids overloading your computer.
 Increasing the available amount of RAM may also result in better
 computation time, seems it optimises the use of the system resources.
 Default value is 256 Mb.
@@ -194,7 +194,7 @@ Figure 5: Pan-sharpened image using Orfeo ToolBox.
 Please also note that since registration and zooming of the
 multi-spectral image with the panchromatic image relies on sensor
 modelling, this tool will work only for images whose sensor models is
-available in **Orfeo ToolBox** (see :ref:`section3` for a detailed
+available in **Orfeo ToolBox** (see Section :ref:`section3` for a detailed
 list). It will also work with ortho-ready products in cartographic
 projection.
 
@@ -204,17 +204,17 @@ Digital Elevation Model management
 ----------------------------------
 
 A Digital Elevation Model (DEM) is a georeferenced image (or collection
-of images) where each pixel corresponds to a local elevation. DEM are
+of images) where each pixel corresponds to a local elevation. DEMs are
 useful for tasks involving sensor to ground and ground to sensor
-coordinate transforms, like during ortho-rectification (see :ref:`section3`). These transforms need to find the intersection
+coordinate transformations, for example, ortho-rectification (see Section :ref:`section3`). These transforms need to find the intersection
 between the line of sight of the sensor and the Earth geoid. If a simple
 spheroid is used as the Earth model, potentially high localisation
 errors can be made in areas where elevation is high or perturbed. Of
 course, DEM accuracy and resolution have a great impact on the precision
 of these transformations.
 
-Two main available DEM, free of charges, and with worldwide cover, are
-both delivered as 1 degree by 1 degree tiles:
+The two principal DEMs that are available free of charges, and with worldwide cover, are
+both delivered as 1 degree by 1 degree tiles. They are:
 
 -  `The Shuttle Radar topographic Mission
    (SRTM) <http://www2.jpl.nasa.gov/srtm/>`_  is a DEM with a resolution of 90 metres,
@@ -232,7 +232,7 @@ are supposed to be located within a single directory. General elevation
 support is also supported from GeoTIFF files.
 
 Whenever an application or **Monteverdi** module requires a DEM, the
-option **elev.dem** allows set the DEM directory. This directory must
+option **elev.dem** sets the DEM directory. This directory must
 contain the DEM tiles, either in DTED or SRTM format or as a GeoTIFF.
 Subdirectories are not supported.
 
@@ -244,7 +244,7 @@ the Earth.
 
 We provide one geoid in the `OTB-Data <https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-data/tree/master/Input/DEM>`_ repository.
 
-In all applications, the option **elev.geoid** allows to manage the path
+In all applications, the option **elev.geoid** manages the path
 to the geoid. Finally, it is also possible to use an average elevation
 in case no DEM is available by using the **elev.default** option.
 
@@ -358,7 +358,7 @@ section.
 Ortho-rectification with **OTB Applications**
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-The *OrthoRectification* application allows to perform
+The *OrthoRectification* application performs 
 ortho-rectification and map re-projection. The simplest way to use it is
 the following command:
 
@@ -378,9 +378,10 @@ parameters:
 -  The region of interest (upper-left corner and size of the image) is
    estimated so as to contain the whole input image extent.
 
-In order to use a Digital Elevation Model (see  :ref:`section2`.) for
-better localisation performances, one can pass the directory containing
-the DEM tiles to the application:
+In order to use a Digital Elevation Model to improve 
+the locational accuracy, one can pass the directory containing
+the DEM tiles to the application as follows. Further information regarding
+the use of DEMs can be found in Section :ref:`section2`.
 
 ::
 
@@ -448,30 +449,30 @@ follows:
                               -outputs.sizex x_size
                               -outputs.sizey y_size
 
-Where the ``-outputs.ulx`` and ``-outputs.uly`` options allow to specify
-the coordinates of the upper-left corner of the output image. The
-``-outputs.sizex`` and ``-outputs.sizey`` options allow to specify the
+Where the ``-outputs.ulx`` and ``-outputs.uly`` options specify
+the coordinates of the upper-left corner of the output image, while the options:
+``-outputs.sizex`` and ``-outputs.sizey`` specify the
 size of the output image.
 
 A few more interesting options are available:
 
--  The ``-opt.rpc`` option allows to use an estimated RPC model instead
+-  The ``-opt.rpc`` option uses an estimated RPC model instead
    of the rigorous SPOT5 model, which speeds-up the processing,
 
--  The ``-opt.gridspacing`` option allows to define the spacing of the
+-  The ``-opt.gridspacing`` option defines the spacing of the
    localisation grid used for ortho-rectification. A coarser grid
    results in speeding-up the processing, but with potential loss of
    accuracy. A standard value would be 10 times the ground spacing of
    the output image.
 
--  The ``-interpolator`` option allows to change the interpolation
+-  The ``-interpolator`` option changes the interpolation
    algorithm between nearest neighbor, linear and bicubic. Default is
    nearest neighbor interpolation, but bicubic should be fine in most
    cases.
 
--  The ``-opt.ram`` option allows to specify the amount of memory
-   available for the processing (in Mb). Default is 256 Mb. Increasing
-   this value to fit the available memory on your computer might
+-  The ``-opt.ram`` option specifies the amount of memory
+   available for the processing (in Mb), with a default value of 256 Mb. Increasing
+   this value to fit the available memory on your computer can
    speed-up the processing.
 
 
diff --git a/Documentation/Cookbook/rst/recipes/residual_registration.rst b/Documentation/Cookbook/rst/recipes/residual_registration.rst
index dbe3d2664f..aeb8615cba 100644
--- a/Documentation/Cookbook/rst/recipes/residual_registration.rst
+++ b/Documentation/Cookbook/rst/recipes/residual_registration.rst
@@ -70,8 +70,8 @@ get a set of point which match in both images.
 The basic idea is to use this set of homologous points and estimate with
 them a residual transformation between the two images.
 
-There is a wide variety of keypoint detector in the literature. They
-allow to detect and describe local features in images. These algorithms
+There is a wide variety of keypoint detectors in the literature, and they 
+allow for the detection and description of local features in images. These algorithms
 provide for each interesting point a “feature description”. This
 descriptor has the property to be invariant to image translation,
 scaling, and rotation, partially invariant to illumination changes and
@@ -90,16 +90,16 @@ The application offers two modes:
    full extent of both images (please note that in this mode large image
    file are not supported).
 
--  The second mode, called *geobins*, allows to set-up spatial binning
+-  The second mode, called *geobins*, allows for the set-up of spatial binning
    so as to get fewer points spread across the entire image. In this
    mode, the corresponding spatial bin in the second image is estimated
    using geographical transform or sensor modeling, and is padded
    according to the user defined precision.
 
 Moreover, in both modes the application can filter matches whose
-co-localization in the first image exceed this precision. Last, the
+co-localization in the first image exceed this precision. Finally, the
 elevation parameters allow to deal more precisely with sensor modelling
-in case of sensor geometry data. The *outvector* option allows to create
+in case of sensor geometry data. The *outvector* option allows for the creation of 
 a vector file with segments corresponding to the localization error
 between the matches.
 
@@ -150,7 +150,7 @@ display in a GIS software.
 
 Please note again that for a proper use of the application, elevation
 must be correctly set (including DEM and geoid file). The map parameters
-allows to choose a map projection in which the accuracy will be
+sets a map projection in which the accuracy will be
 estimated (in meters).
 
 Accuracy values are provided as output of the application (computed
@@ -177,7 +177,7 @@ reference. **Orfeo ToolBox** offers since version 3.16 the possibility
 to use
 hrefhttp://wiki.orfeo-toolbox.org/index.php/ExtendedFileNameextend image
 path to use different metadata file as input. That’s what we are going
-to use there to orthorectify the QuickBird image using the *.geom* file
+to use to orthorectify the QuickBird image using the *.geom* file
 obtained by the **RefineSensorModel** applications. over the first one
 using for the second image estimated sensor model which take into
 account the original sensor model of the slave and which also fit to the
diff --git a/Examples/ChangeDetection/ChangeDetectionFrameworkExample.cxx b/Examples/ChangeDetection/ChangeDetectionFrameworkExample.cxx
index a28764cc15..b41f9b0251 100644
--- a/Examples/ChangeDetection/ChangeDetectionFrameworkExample.cxx
+++ b/Examples/ChangeDetection/ChangeDetectionFrameworkExample.cxx
@@ -26,11 +26,11 @@
 // in OTB. This framework uses the generic programming approach. All
 // change detection filters are
 // \doxygen{otb}{BinaryFunctorNeighborhoodImageFilter}s, that is, they
-// are filters taking two images as input and providing one image as
-// output. The change detection computation itself is performed on a
+// are filters taking two images as input and provide one image as
+// output. The change detection computation itself is performed on 
 // the neighborhood of each pixel of the input images.
 //
-// The first step required to build a change detection filter is to
+// The first step in building a change detection filter is to
 // include the header of the parent class.
 //
 // Software Guide : EndLatex
@@ -54,7 +54,7 @@
 // something accepting the syntax \code{foo()}. This can be
 // implemented using classical C/C++ functions, but it is preferable
 // to implement it using C++ functors. These are classical C++ classes
-// which overload the \code{()} operator. This allows using them with
+// which overload the \code{()} operator. This allows to be used with
 // the same syntax as C/C++ functions.
 //
 // Since change detectors operate on neighborhoods, the functor
@@ -107,7 +107,7 @@ public:
 // the functor used to perform the change detection operation.
 //
 // Inside the class only a few \code{typedef}s and the constructors
-// and destructors have to be declared.
+// and destructors need to be declared.
 //
 // Software Guide : EndLatex
 
@@ -152,8 +152,8 @@ private:
 
 // Software Guide : BeginLatex
 //
-// Pay attention to the fact that no \code{.hxx} file is needed, since
-// filtering operation is implemented in the
+// Pay particular attention to the fact that no \code{.hxx} file is needed, since
+// the filtering operation is implemented in the
 // \doxygen{otb}{BinaryFunctorNeighborhoodImageFilter} class. So all
 // the algorithmics part is inside the functor.
 //
@@ -178,7 +178,7 @@ int main(int argc, char* argv[])
   // Software Guide : BeginLatex
   //
   // As usual, we start by defining the image types. The internal
-  // computations will be performed with floating point precision,
+  // computations will be performed using floating point precision,
   // while the output image will be stored using one byte per pixel.
   //
   // SoftwareGuide : EndLatex
@@ -210,7 +210,7 @@ int main(int argc, char* argv[])
 
   // Software Guide : BeginLatex
   //
-  // The next step is declaring the filter for the change detection.
+  // The next step is to declare the filter for the change detection.
   //
   // SoftwareGuide : EndLatex
 
diff --git a/Examples/ChangeDetection/DiffChDet.cxx b/Examples/ChangeDetection/DiffChDet.cxx
index 3c2e18cbec..31b2b00335 100644
--- a/Examples/ChangeDetection/DiffChDet.cxx
+++ b/Examples/ChangeDetection/DiffChDet.cxx
@@ -107,11 +107,11 @@ int main(int argc, char* argv[])
   //
   //  The change detector will give positive and negative values
   //  depending on the sign of the difference. We are usually
-  //  interested only in the asbolute value of the difference. For
+  //  interested only in the absolute value of the difference. For
   //  this purpose, we will use the \doxygen{itk}{AbsImageFilter}. Also, before
   //  saving the image to a file in, for instance, PNG format, we will
-  //  rescale the results of the change detection in order to use all
-  //  the output pixel type range of values.
+  //  rescale the results of the change detection in order to use the full range
+  //  of values of the output pixel type.
   //
   //  Software Guide : EndLatex
 
diff --git a/Examples/Classification/BayesianPluginClassifier.cxx b/Examples/Classification/BayesianPluginClassifier.cxx
index 1bd3df4736..9bb9678da7 100644
--- a/Examples/Classification/BayesianPluginClassifier.cxx
+++ b/Examples/Classification/BayesianPluginClassifier.cxx
@@ -38,11 +38,11 @@
 // different set of parameters, mean vectors and covariance matrices. We
 // choose the \subdoxygen{itk}{Statistics}{MeanSampleFilter} (sample mean) and the
 // \subdoxygen{itk}{Statistics}{CovarianceSampleFilter} (sample covariance) for the
-// estimation algorithms of the two parameters. If we want more a robust
-// estimation algorithm, we can replace these estimation algorithms with more
+// estimation algorithms of the two parameters. If we want a more robust
+// estimation algorithm, we can replace these estimation algorithms with additional
 // alternatives without changing other components in the classifier system.
 //
-// It is a bad idea to use the same sample for test and training
+// It is a bad idea to use the same sample for both testing and training
 // (parameter estimation) of the parameters. However, for simplicity, in
 // this example, we use a sample for test and training.
 //
@@ -254,8 +254,8 @@ int main(int,  char *[])
   //   \label{eq:bayes2}
   // \end{equation}
   //
-  // The remainder of the code snippet shows how to use user-specified class
-  // labels. The classification result will be stored in a
+  // The remainder of the code snippet demonstrates how user-specified class
+  // labels are used. The classification result will be stored in a
   // MembershipSample object, and for each measurement vector, its
   // class label will be one of the two class labels, 100 and 200
   // (\code{unsigned int}).
diff --git a/Modules/Adapters/BoostAdapters/include/otbBoostDox.h b/Modules/Adapters/BoostAdapters/include/otbBoostDox.h
index 431f99a5bd..4a60b4aa98 100644
--- a/Modules/Adapters/BoostAdapters/include/otbBoostDox.h
+++ b/Modules/Adapters/BoostAdapters/include/otbBoostDox.h
@@ -23,7 +23,7 @@
 
 /**\defgroup boost Boost alike helpers
  * \ingroup  Thematic
- * \brief Various helpers that are likelly to end-up in boost by themselves eventually.
+ * \brief Various helpers that are likely to eventually end-up in boost by themselves.
  * \see http://www.boost.org/
  * @{
  */
diff --git a/Modules/Adapters/BoostAdapters/include/otbStringUtils.h b/Modules/Adapters/BoostAdapters/include/otbStringUtils.h
index 99a91ab82d..429b2ede76 100644
--- a/Modules/Adapters/BoostAdapters/include/otbStringUtils.h
+++ b/Modules/Adapters/BoostAdapters/include/otbStringUtils.h
@@ -69,7 +69,7 @@ Res LexicalCast(In const& in, std::string const& kind) {
  * \param[in] errmsg a msg complement used to build the error message to
 be shown if there is \c lexical_cast exception. See \c
 otb:Utils::LexicalCast().
- * \param delims  delimitter characters (space is default)
+ * \param delims  delimiter characters (space is default)
  * \throw std::bad_alloc in case of exhausted memory
  * \throw std::runtime_error in case an element from the input string
 cannot be converted into a valid \c T instance.
@@ -95,16 +95,16 @@ ConvertStringToVector(std::string const &str, T& ret, std::string const& errmsg,
 }
 
 /**\ingroup Utils
- * split a given std::string of into key value based on given delimitter
- * string. default delimitter is '='. If the string does not have a delimitter
+ * split a given std::string of into key value based on given delimiter
+ * string. The default delimiter is '='. If the string does not have a delimiter
  * the key is set to input string and value is set to defValue.
  * \param[in] str  input string
  * \param key[out] An std::string reference where key will be stored
  * \param value[out] a reference of \cT where value will be stored
- * \param defValue[in] a default value if there is no delimitter fo
+ * \param defValue[in] a default value if there is no delimiter fo
  * \param[in] errmsg a msg complement used to build the error message to
 be shown if there is \c lexical_cast exception. See \cotb:Utils::LexicalCast().
- * \param delims  delimitter characters (space is default)
+ * \param delims  delimiter characters (space is default)
  * \throw std::bad_alloc in case of exhausted memory
  * \throw std::runtime_error in case an element from the input string
 cannot be converted into a valid \c T instance.
diff --git a/Modules/Adapters/GdalAdapters/include/otbGdalDataTypeBridge.h b/Modules/Adapters/GdalAdapters/include/otbGdalDataTypeBridge.h
index 20bfa9d782..78b954b616 100644
--- a/Modules/Adapters/GdalAdapters/include/otbGdalDataTypeBridge.h
+++ b/Modules/Adapters/GdalAdapters/include/otbGdalDataTypeBridge.h
@@ -63,7 +63,7 @@ GDALDataType GetGDALDataType()
    {
       if( sizeof(long) == 8 )
          {
-         //itkWarningMacro(<< "Cast a long (64 bits) image into an int (32 bits) one.")
+         //itkWarningMacro(<< "Cast a long (64 bit) image to an int (32 bit) one.")
          }
       return GDT_Int32;
    }
@@ -71,7 +71,7 @@ GDALDataType GetGDALDataType()
    {
       if( sizeof(unsigned long) == 8 )
          {
-         //itkWarningMacro(<< "Cast an unsigned long (64 bits) image into an unsigned int (32 bits) one.")
+         //itkWarningMacro(<< "Cast an unsigned long (64 bit) image to an unsigned int (32 bit) one.")
          }
       return GDT_UInt32;
    }
diff --git a/Modules/Adapters/GdalAdapters/include/otbGeometriesToGeometriesFilter.h b/Modules/Adapters/GdalAdapters/include/otbGeometriesToGeometriesFilter.h
index 3e604dab36..aab8c89346 100644
--- a/Modules/Adapters/GdalAdapters/include/otbGeometriesToGeometriesFilter.h
+++ b/Modules/Adapters/GdalAdapters/include/otbGeometriesToGeometriesFilter.h
@@ -24,8 +24,8 @@
 /**\ingroup GeometriesFilters
  * \file    otbGeometriesToGeometriesFilter.h
  * \since   OTB v 3.14.0
- * Commons definitions for geometries filter definition.
- * This file contains all the main classes required to define new geometries
+ * Common definitions for geometry filter definitions.
+ * This file contains all the main classes required to define new geometry
  * transformations.
  */
 
@@ -46,7 +46,7 @@ namespace otb
 {
 /**\ingroup GeometriesFilters
  * \class GeometriesToGeometriesFilter
- * Root abstract class for all geometries to geometries filters.
+ * Root abstract class for all geometry to geometry filters.
  * \since OTB v 3.14.0
  *
  * \ingroup OTBGdalAdapters
@@ -203,10 +203,10 @@ struct OTBGdalAdapters_EXPORT FieldCopyTransformation
 
   /**
    * Defines the fields in the destination layer.
-   * The default action is to copy all fieds from one layer to another.
+   * The default action is to copy all fields from one layer to another.
    * \param [in] source  source \c Layer
    * \param [in,out] dest  destination \c Layer
-   * \throw itk::ExceptionObject in case the operation can't succeed.
+   * \throw itk::ExceptionObject in case the operation cannot succeed.
    */
   void DefineFields(ogr::Layer const& source, ogr::Layer & dest) const;
 private:
diff --git a/Modules/Adapters/GdalAdapters/otb-module.cmake b/Modules/Adapters/GdalAdapters/otb-module.cmake
index c985c5fb0e..22eeed5db2 100644
--- a/Modules/Adapters/GdalAdapters/otb-module.cmake
+++ b/Modules/Adapters/GdalAdapters/otb-module.cmake
@@ -18,7 +18,7 @@
 # limitations under the License.
 #
 
-set(DOCUMENTATION "Adapters for the Gdal Library ( for reading and writing  ).")
+set(DOCUMENTATION "Adapters for the GDAL Library ( for reading and writing  ).")
 
 otb_module(OTBGdalAdapters
 ENABLE_SHARED
diff --git a/Modules/Applications/AppChangeDetection/app/otbMultivariateAlterationDetector.cxx b/Modules/Applications/AppChangeDetection/app/otbMultivariateAlterationDetector.cxx
index b2ec075b68..27813b1dde 100644
--- a/Modules/Applications/AppChangeDetection/app/otbMultivariateAlterationDetector.cxx
+++ b/Modules/Applications/AppChangeDetection/app/otbMultivariateAlterationDetector.cxx
@@ -98,7 +98,7 @@ private:
     AddParameter(ParameterType_InputImage,  "in2", "Input Image 2");
     SetParameterDescription("in2","Mutliband image of the scene after perturbations.");
     AddParameter(ParameterType_OutputImage, "out", "Change Map");
-    SetParameterDescription("out","Multiband image containing change maps. Each map will be in range [-1,1], so a floating point output type is advised.");
+    SetParameterDescription("out","Multiband image containing change maps. Each map will be in the range [-1,1], so a floating point output type is advised.");
 
     AddRAMParameter();
 
diff --git a/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx b/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx
index 7db23f6b3a..da9a2e3c48 100644
--- a/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx
+++ b/Modules/Applications/AppClassification/app/otbComputeConfusionMatrix.cxx
@@ -110,7 +110,7 @@ private:
 
   // Documentation
   SetDocName("Confusion matrix Computation");
-  SetDocLongDescription("This application computes the confusion matrix of a classification map relatively to a ground truth. "
+  SetDocLongDescription("This application computes the confusion matrix of a classification map relative to a ground truth dataset. "
       "This ground truth can be given as a raster or a vector data. Only reference and produced pixels with values different "
       "from NoData are handled in the calculation of the confusion matrix. The confusion matrix is organized the following way: "
       "rows = reference labels, columns = produced labels. In the header of the output file, the reference and produced class labels "
diff --git a/Modules/Applications/AppClassification/app/otbComputeImagesStatistics.cxx b/Modules/Applications/AppClassification/app/otbComputeImagesStatistics.cxx
index def5b6b1fb..7ba053d3ee 100644
--- a/Modules/Applications/AppClassification/app/otbComputeImagesStatistics.cxx
+++ b/Modules/Applications/AppClassification/app/otbComputeImagesStatistics.cxx
@@ -53,7 +53,7 @@ private:
       "from a set of images and optionally saves the results in an XML file.");
     SetDocLongDescription("This application computes a global mean and standard deviation "
       "for each band of a set of images and optionally saves the results in an XML file."
-      " The output XML is intended to be used an input "
+      " The output XML is intended to be used as an input "
       "for the TrainImagesClassifier application to normalize samples before learning. "
       "You can also normalize the image with the XML file in the ImageClassifier application.");
 
@@ -66,10 +66,10 @@ private:
     AddDocTag(Tags::Analysis);
 
     AddParameter(ParameterType_InputImageList, "il", "Input images");
-    SetParameterDescription( "il", "List of input images filenames." );
+    SetParameterDescription( "il", "List of input image filenames." );
 
     AddParameter(ParameterType_Float, "bv", "Background Value");
-    SetParameterDescription( "bv", "Background value to ignore in statistics computation." );
+    SetParameterDescription( "bv", "Background value to ignore in computation of statistics." );
     MandatoryOff("bv");
 
     AddParameter(ParameterType_OutputFilename, "out", "Output XML file");
diff --git a/Modules/Applications/AppClassification/app/otbComputePolylineFeatureFromImage.cxx b/Modules/Applications/AppClassification/app/otbComputePolylineFeatureFromImage.cxx
index 1c9c715bed..7092df394f 100644
--- a/Modules/Applications/AppClassification/app/otbComputePolylineFeatureFromImage.cxx
+++ b/Modules/Applications/AppClassification/app/otbComputePolylineFeatureFromImage.cxx
@@ -79,10 +79,10 @@ private:
   void DoInit() override
   {
     SetName("ComputePolylineFeatureFromImage");
-    SetDescription("This application compute for each studied polyline, contained in the input VectorData, the chosen descriptors.");
+    SetDescription("This application computes the chosen descriptors for each studied polyline contained in the input VectorData.");
 
     SetDocName("Compute Polyline Feature From Image");
-    SetDocLongDescription("The first step in the classifier fusion based validation is to compute, for each studied polyline, the chosen descriptors. ");
+    SetDocLongDescription("The first step in the classifier fusion based validation is to compute the chosen descriptors for each studied polyline. ");
     SetDocLimitations("Since it does not rely on streaming process, take care of the size of input image before launching application.");
     SetDocAuthors("OTB-Team");
     SetDocSeeAlso(" ");
diff --git a/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h b/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
index 37646aaeaa..da8aef6b51 100644
--- a/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
+++ b/Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
@@ -115,8 +115,8 @@ public:
 
   /** Run the application.
    *
-   * For pipeline ready application, this only wire
-   * and configure the pipeline, and provides
+   * For pipeline ready application, this only wires
+   * and configures the pipeline, and provides
    * the output image or vector data parameters as pointers.
    *
    * In other cases, the application must handle
@@ -126,7 +126,7 @@ public:
    */
   int Execute();
 
-  /** Run the application, then writes all the output to disk
+  /** Run the application, then write all of the output to disk
    * if they have an associated filename.
    * This is a helper function for wrappers without pipeline support.
    *
@@ -182,7 +182,7 @@ public:
    *  (not automatically computed by the application) */
   bool HasUserValue(std::string paramKey) const;
 
-  /* If a user value was provided clear it and update the other parameters */
+  /* If a user value was provided, clear it and update the other parameters */
   void ClearValue(std::string paramKey);
 
   /* Returns true if the parameter has an associated value.
@@ -271,7 +271,7 @@ public:
   void SetParameterEmpty(std::string parameter, bool value, bool hasUserValueFlag = true);
 
   /** Checks if the application is ready to be executed. It checks that there
-   *  is no parameter missing
+   *  is no missing parameter
    */
   bool IsApplicationReady();
 
@@ -338,7 +338,7 @@ public:
    */
   void SetDefaultOutputComplexPixelType(std::string parameter, ComplexImagePixelType type);
 
- /* Set a minimum int value, must used in the
+  /* Set a minimum int value, must used in the
    * DoInit when setting a value by default
    * for the parameter
    *
@@ -347,7 +347,7 @@ public:
    */
   void SetMinimumParameterIntValue(std::string parameter, int value);
 
- /* Set a maximum int value, must used in the
+  /* Set a maximum int value, must used in the
    * DoInit when setting a value by default
    * for the parameter
    *
@@ -356,7 +356,7 @@ public:
    */
   void SetMaximumParameterIntValue(std::string parameter, int value);
 
- /* Set a minimum int value, must used in the
+  /* Set a minimum int value, must used in the
    * DoInit when setting a value by default
    * for the parameter
    *
@@ -365,7 +365,7 @@ public:
    */
   void SetMinimumParameterFloatValue(std::string parameter, float value);
 
- /* Set a maximum int value, must used in the
+  /* Set a maximum int value, must used in the
    * DoInit when setting a value by default
    * for the parameter
    *
@@ -376,7 +376,7 @@ public:
 
 
   /**
-   * Enable single selection mode for list view if status in true
+   * Enable single selection mode for list view if status is true
    * (default is false).
    *
    * Can be called for types:
diff --git a/Modules/Wrappers/QGIS/otb-module.cmake b/Modules/Wrappers/QGIS/otb-module.cmake
index 4c847249ee..9b118b44b6 100644
--- a/Modules/Wrappers/QGIS/otb-module.cmake
+++ b/Modules/Wrappers/QGIS/otb-module.cmake
@@ -18,7 +18,7 @@
 # limitations under the License.
 #
 
-set(DOCUMENTATION "This module allows to generate application descriptor files for QGIS processing plugin.")
+set(DOCUMENTATION "This module allows for the generation of the application descriptor files for the QGIS processing plugin.")
 
 otb_module(OTBQGIS
   DEPENDS
-- 
GitLab