Commit 39b50f1f authored by Manuel Grizonnet's avatar Manuel Grizonnet

Merge branch 'develop' into 'develop'

DOC: Set of proposed edits to the documentation

See merge request !137
parents 14ec6868 889ced06
......@@ -38,7 +38,7 @@ Other packages
Warning! These packages may not be up-to-date with latest OTB
releases. In addition, some features of the library may not be available
on every platform. Some of these are not maintained by OTB-team. If you
on every platform. Some of these are not maintained by the OTB-team. If you
want to get involved in the packaging of OTB for your favourite
platform, please contact us through the developer’s mailing list:
otb-developers@googlegroups.com.
......@@ -93,7 +93,7 @@ You will then need to run:
sudo aptitude install otb-bin otb-bin-qt python-otb
If you are using *Synaptic*, you can add the repositories, update and
install the packages through the graphical interface.
install the packages through the graphical user interface.
For further information about Ubuntu packages go to
`ubuntugis-unstable <https://launchpad.net/~ubuntugis/+archive/ubuntugis-unstable>`__
......
......@@ -84,7 +84,7 @@ necessary to install one of the following packages:
Python bindings
~~~~~~~~~~~~~~~
Starting from OTB 5.8.0, OTB bindings for Python 2.7 are distributed with binary
Starting from OTB 5.8.0, OTB bindings for Python 2.7 are distributed as a binary
package. With OTB 6.4.0, additional bindings for Python 3.5 are also included.
Please note that using a different Python version may not be compatible with
OTB wrappings. If no compatible Python 2.x version is found a
......
......@@ -44,7 +44,7 @@ supplied script ``tools/uninstall_otb.sh``.
Python bindings
~~~~~~~~~~~~~~~
Starting from OTB 5.8.0, OTB bindings for Python 2.7 are distributed with binary
Starting from OTB 5.8.0, OTB bindings for Python 2.7 are distributed as a binary
package. With OTB 6.4.0, additional bindings for Python 3.5 are also included.
Please note that using a different Python version may not be compatible with
OTB wrappings. If no compatible Python 2.x version is found a
......
......@@ -43,7 +43,7 @@ start Visual Studio.
Python bindings
~~~~~~~~~~~~~~~
Starting from OTB 5.8.0, OTB bindings for Python 2.7 are distributed with binary
Starting from OTB 5.8.0, OTB bindings for Python 2.7 are distributed as a binary
package. With OTB 6.4.0, additional bindings for Python 3.5 are also included.
Please note that using a different Python version may not be compatible with
OTB wrappings. If no compatible Python 2.x version is found a
......
......@@ -40,9 +40,9 @@ command-line interface of the Convert application, while
Command-line launcher
---------------------
The command-line application launcher allows to load an application
The command-line application launcher loads an application
plugin, to set its parameters, and execute it using the command line.
Launching the ``otbApplicationLauncherCommandLine`` without argument
Launching the ``otbApplicationLauncherCommandLine`` without any arguments provided,
results in the following help to be displayed:
::
......@@ -200,7 +200,7 @@ modules needs to be properly set with the ``OTB_APPLICATION_PATH``
environment variable. The standard location on Unix systems is
``/usr/lib/otb/applications``. On Windows, the applications are
available in the ``otb-bin`` OSGeo4W package, and the environment is
configured automatically so you don’t need to tweak
configured automatically so ``OTB_APPLICATION_PATH`` doesn't need to be modified
``OTB_APPLICATION_PATH``.
Once your environment is set, you can use OTB applications from Python, just
......@@ -233,7 +233,7 @@ The processing toolbox
^^^^^^^^^^^^^^^^^^^^^^
OTB applications are available from QGIS. Use them from the processing
toolbox, which is accessible with Processing :math:`\rightarrow`
toolbox, which is accessible under Processing :math:`\rightarrow`
ToolBox. Switch to “advanced interface” in the bottom of the application
widget and OTB applications will be there.
......@@ -243,7 +243,7 @@ Using a custom OTB
^^^^^^^^^^^^^^^^^^
If QGIS cannot find OTB, the “applications folder” and “binaries folder”
can be set from the settings in the Processing :math:`\rightarrow`
can be set from the settings found under Processing :math:`\rightarrow`
Settings :math:`\rightarrow` “service provider”.
.. figure:: Art/QtImages/qgis-otb-settings.png
......@@ -278,7 +278,7 @@ parameter:
otbcli_BandMath -inxml saved_applications_parameters.xml
Note that you can also overload parameters from command line at the same
Note that you can also add additional parameters to the command line at the same
time
::
......@@ -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 took only 56 seconds.
among 560 cpus and only took 56 seconds.
Note that this MPI parallel invocation of applications is only
available for command-line calls to OTB applications, and only for
......
Recipes
=======
This chapter presents guidelines to perform various remote sensing and
image processing tasks with either , or both. Its goal is not to be
This chapter presents guidelines to perform various remote sensing and/or
image processing tasks. Its goal is not to be
exhaustive, but rather to familiarise users with the OTB package functionality
and demonstrate how the can be applied.
and demonstrate how they can be applied.
.. toctree::
:maxdepth: 6
......
......@@ -50,8 +50,8 @@ prefix.
// All variables related to anotherImage (input 2) will have the prefix im3
filter->SetNthInput(2, anotherImage);
In this document, we will keep the default convention. Following list
summaries the available variables for input #0 (and so on for every
In this document, we will keep the default convention. The following list
summarises the available variables for input #0 (and so on for every
input).
Variables and their descriptions:
......@@ -80,7 +80,7 @@ Variables and their descriptions:
[variables]
Moreover, we also have the generic variables idxX and idxY that
In addition, we also have the generic variables idxX and idxY that
represent the indices of the current pixel (scalars).
Note that the use of a global statistics will automatically make the
......@@ -256,22 +256,22 @@ needed; one mean value is computed per input). For instance:
.. math:: mean(im1b1N3x3,im1b2N3x3,im1b3N3x3,im1b4N3x3)
Note: a limitation coming from muparserX itself makes impossible to pass
Note: a limitation coming from muparserX itself makes it impossible to pass
all those neighborhoods with a unique variable.
**Function var** This function allows to compute the variance of a given
**Function var** This function computes the variance of a given
vector or neighborhood (the function can take as many inputs as needed;
one var value is computed per input). For instance:
.. math:: var(im1b1N3x3)
**Function median** This function allows to compute the median value of
**Function median** This function computes the median value of
a given vector or neighborhood (the function can take as many inputs as
needed; one median value is computed per input). For instance:
.. math:: median(im1b1N3x3)
**Function corr** This function allows to compute the correlation
**Function corr** This function computes the correlation
between two vectors or matrices of the same dimensions (the function
takes two inputs). For instance:
......
......@@ -208,7 +208,7 @@ parameters:
-``-out`` the output filtered image
The application can be used like this:
The application can be used as follows:
::
......@@ -253,7 +253,7 @@ input parameters:
-``-out`` the output filtered image
The application can be used like this:
The application can be used as follows:
::
......
......@@ -9,7 +9,7 @@ In the ``otbApplication`` module, two main classes can be manipulated :
- ``Registry``, which provides access to the list of available
applications, and can create applications.
- ``Application``, the base class for all applications. This allows to
- ``Application``, the base class for all applications. This allows one to
interact with an application instance created by the ``Registry``.
Here is one example of how to use Python to run the ``Smoothing``
......@@ -69,7 +69,7 @@ Numpy array processing
----------------------
Input and output images to any OTB application in the form of NumPy array is now possible in OTB Python wrapping.
The Python wrapping only exposes OTB Application engine module (called *ApplicationEngine*) which allows to access existing C++ applications.
The Python wrapping only exposes OTB Application engine module (called *ApplicationEngine*) which allows one to access existing C++ applications.
Due to blissful nature of ApplicationEngine's loading mechanism no specific wrapping is required for each application.
NumPy extension to Python wrapping allows data exchange to application as an array rather than a disk file.
......
......@@ -78,11 +78,11 @@ The produced images were then rescaled to intensities ranging from 0 to
Polarimetry
-----------
In conventional imaging radar the measurement is a scalar which is
In conventional imaging radar, the measurement is a scalar which is
proportional to the received back-scattered power at a particular
combination of linear polarization (HH, HV, VH or VV). Polarimetry is
the measurement and interpretation of the polarization of this
measurement which allows to measure various optical properties of a
measurement. It allows for the measurement of various optical properties of a
material. In polarimetry the basic measurement is a :math:`2x2` complex
scattering matrix yielding an eight dimensional measurement space
(Sinclair matrix). For reciprocal targets where :math:`HV=VH`, this
......
......@@ -31,7 +31,7 @@
// The built in functions and operators list is available at:
// \url{http://muparser.sourceforge.net/mup_features.html}.
//
// In order to use this filter, at least one input image is to be
// In order to use this filter, at least one input image should be
// set. An associated variable name can be specified or not by using
// the corresponding SetNthInput method. For the nth input image, if
// no associated variable name has been specified, a default variable
......@@ -57,10 +57,10 @@
// Software Guide : BeginLatex
//
// We start by including the needed header file.
// We start by including the required header file.
// The aim of this example is to compute the Normalized Difference Vegetation Index (NDVI)
// from a multispecral image and perform a threshold on this
// indice to extract area containing a dense vegetation canopy.
// from a multispectral image and then apply a threshold to this
// index to extract areas containing a dense vegetation canopy.
//
// Software Guide : EndLatex
......@@ -82,8 +82,8 @@ int main( int argc, char* argv[])
//
// We start by the classical \code{typedef}s needed for reading and
// writing the images. The \doxygen{otb}{BandMathImageFilter} class
// works with \doxygen{otb}{Image} as input so we need to define additional
// filters to extract each layer of the multispectral image
// works with \doxygen{otb}{Image} as input, so we need to define additional
// filters to extract each layer of the multispectral image.
//
// Software Guide : EndLatex
......@@ -130,9 +130,9 @@ int main( int argc, char* argv[])
// Software Guide : BeginLatex
//
// We need now to extract now each band from the input \doxygen{otb}{VectorImage},
// We now need to extract each band from the input \doxygen{otb}{VectorImage},
// it illustrates the use of the \doxygen{otb}{VectorImageToImageList}.
// Each extracted layer are inputs of the \doxygen{otb}{BandMathImageFilter}:
// Each extracted layer is an input to the \doxygen{otb}{BandMathImageFilter}:
//
// Software Guide : EndLatex
......@@ -183,22 +183,22 @@ int main( int argc, char* argv[])
// Software Guide : BeginLatex
//
// The muParser library offers also the possibility to extended existing built-in functions. For example,
// you can use the OTB expression "ndvi(b3, b4)" with the filter. The mathematical expression would be in
// this case \textit{if($ndvi(b3, b4)>0.4$, 255, 0)}. It will return the same result.
// The muParser library also provides the possibility to extend existing built-in functions. For example,
// you can use the OTB expression "ndvi(b3, b4)" with the filter. In this instance, the mathematical expression would be
// \textit{if($ndvi(b3, b4)>0.4$, 255, 0)}, which would return the same result.
//
// Software Guide : EndLatex
// Software Guide : BeginLatex
//
// Figure~\ref{fig:BandMathImageFilter} shows the result of the threshold over the NDVI indice
// to a Quickbird image.
// Figure~\ref{fig:BandMathImageFilter} shows the result of the threshold applied to the NDVI index
// of a Quickbird image.
// \begin{figure}
// \center
// \includegraphics[width=0.45\textwidth]{qb_ExtractRoad_pretty.eps}
// \includegraphics[width=0.45\textwidth]{qb_BandMath-pretty.eps}
// \itkcaption[Band Math]{From left to right:
// Original image, thresholded NDVI indice.}
// Original image, thresholded NDVI index.}
// \label{fig:BandMathImageFilter}
// \end{figure}
//
......
......@@ -37,12 +37,12 @@
// Software Guide : BeginLatex
//
// In some situation, it is desirable to represent a gray level image in color for easier
// In some situation, it is desirable to represent a gray scale image in color for easier
// interpretation. This is particularly the case if pixel values in the image are used
// to represent some data such as elevation, deformation map,
// interferogram. In this case, it is important to ensure that similar
// values will get similar colors. You can notice how this requirement
// differ from the previous case.
// differs from the previous case.
//
// The following example illustrates the use of the \doxygen{otb}{DEMToImageGenerator} class
// combined with the \doxygen{otb}{ScalarToRainbowRGBPixelFunctor}. You can refer to the
......@@ -112,7 +112,7 @@ int main(int argc, char * argv[])
// Software Guide : BeginLatex
//
// As in the previous example the \doxygen{itk}{ScalarToRGBColormapImageFilter} is
// As in the previous example, the \doxygen{itk}{ScalarToRGBColormapImageFilter} is
// the filter in charge of calling the functor we specify to do the work for
// each pixel. Here it is the \doxygen{otb}{ScalarToRainbowRGBPixelFunctor}.
//
......@@ -189,8 +189,8 @@ int main(int argc, char * argv[])
// Software Guide : BeginLatex
//
// Figure~\ref{fig:RAINBOW_FILTER} shows effect of applying the filter to
// a gray level image.
// Figure~\ref{fig:RAINBOW_FILTER} shows the effect of applying the filter to
// a gray scale image.
//
// \begin{figure}
// \center
......@@ -199,7 +199,7 @@ int main(int argc, char * argv[])
// \includegraphics[width=0.44\textwidth]{DEMToHotImageGenerator.eps}
// \includegraphics[width=0.44\textwidth]{DEMToReliefImageGenerator.eps}
// \itkcaption[Grayscale to color]{The gray level DEM extracted from SRTM
// data (top-left) and the same area in color representation.}
// data (top-left) and the same area represented in color.}
// \label{fig:RAINBOW_FILTER}
// \end{figure}
// Software Guide : EndLatex
......
......@@ -31,8 +31,8 @@
// lighting source and generating the corresponding shadows. This principle is called
// hill shading.
//
// Using a simple functor \doxygen{otb}{HillShadingFunctor} and the dem image generated
// using the \doxygen{otb}{DEMToImageGenerator} (refer to \ref{sec:ReadDEM}) you can easily
// Using a simple functor \doxygen{otb}{HillShadingFunctor} and the DEM image generated
// using the \doxygen{otb}{DEMToImageGenerator} (refer to \ref{sec:ReadDEM}), you can easily
// obtain a representation of the DEM. Better yet, using the
// \doxygen{otb}{ScalarToRainbowRGBPixelFunctor}, combined with the
// \doxygen{otb}{ReliefColormapFunctor} you can easily generate the classic elevation maps.
......@@ -130,7 +130,7 @@ int main(int argc, char * argv[])
}
// Software Guide : BeginLatex
//
// After generating the dem image as in the DEMToImageGenerator example, you can declare
// After generating the DEM image as in the DEMToImageGenerator example, you can declare
// the hill shading mechanism. The hill shading is implemented as a functor doing some
// operations in its neighborhood. A convenient filter called \doxygen{otb}{HillShadingFilter}
// is defined around this mechanism.
......
......@@ -30,15 +30,15 @@
// In this example, we present a system that places measurement vectors into
// two Gaussian classes. The Figure~\ref{fig:BayesianPluginClassifier} shows
// all the components of the classifier system and the data flow. This system
// differs with the previous k-means clustering algorithms in several
// differs from the previous k-means clustering algorithms in several
// ways. The biggest difference is that this classifier uses the
// \subdoxygen{itk}{Statistics}{GaussianMembershipFunction} as membership functions
// instead of the \subdoxygen{itk}{Statistics}{EuclideanDistanceMetric}. Since the
// membership function is different, the membership function requires a
// membership function is different, it requires a
// 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 robust
// estimation algorithms of the two parameters. If we want more a robust
// estimation algorithm, we can replace these estimation algorithms with more
// alternatives without changing other components in the classifier system.
//
......@@ -69,7 +69,7 @@
// Software Guide : BeginLatex
//
// The following two files provides us the parameter estimation algorithms.
// The following two files provides us with the parameter estimation algorithms.
//
// Software Guide : EndLatex
......@@ -95,7 +95,7 @@
// Software Guide : BeginLatex
//
// We will fill the sample with random variables from two normal
// distribution using the \subdoxygen{itk}{Statistics}{NormalVariateGenerator}.
// distributions using the \subdoxygen{itk}{Statistics}{NormalVariateGenerator}.
//
// Software Guide : EndLatex
......@@ -142,9 +142,9 @@ int main(int, char *[])
// The following code snippet creates a NormalVariateGenerator
// object. Since the random variable generator returns values according to
// the standard normal distribution (the mean is zero, and the standard
// deviation is one) before pushing random values into the \code{sample},
// we change the mean and standard deviation. We want two normal (Gaussian)
// distribution data. We have two for loops. Each for loop uses different
// deviation is one), before pushing random values into the \code{sample},
// we change the mean and standard deviation. We need two normally (Gaussian)
// distributed datasets. We have two for loops, within which each uses a different
// mean and standard deviation. Before we fill the \code{sample} with the
// second distribution data, we call \code{Initialize(random seed)} method,
// to recreate the pool of random variables in the
......@@ -190,7 +190,7 @@ int main(int, char *[])
//
// In the following code snippet, notice that the template argument for the
// MeanSampleFilter and CovarianceFilter is \code{ClassSampleType} (i.e.,
// type of Subsample) instead of SampleType (i.e., type of ListSample). This
// type of Subsample) instead of SampleType (i.e. type of ListSample). This
// is because the parameter estimation algorithms are applied to the class
// sample.
//
......@@ -238,8 +238,8 @@ int main(int, char *[])
//
// After creating a SampleClassifierFilter object and a
// MaximumRatioDecisionRule object, we plug in the
// \code{decisionRule} and the \code{sample} to the classifier. Then,
// we specify the number of classes that will be considered using
// \code{decisionRule} and the \code{sample} to the classifier. We
// then specify the number of classes that will be considered using
// the \code{SetNumberOfClasses()} method.
//
// The MaximumRatioDecisionRule requires a vector of \emph{a
......@@ -304,7 +304,7 @@ int main(int, char *[])
// Euclidean distance functions. The distance function (model) has only one
// parameter, the mean (centroid) set by the \code{SetOrigin()} method. To
// plug-in two distance functions, we call the
// \code{AddMembershipFunction()} method. Then invocation of the
// \code{AddMembershipFunction()} method. Finally, the invocation of the
// \code{Update()} method will perform the classification.
//
// Software Guide : EndLatex
......
......@@ -23,11 +23,11 @@
//
// After having generated a classification map, it is possible to
// regularize such a labeled image in order to obtain more homogeneous
// areas, which makes the interpretation of its classes easier. For this
// areas, which facilitates its interpretation. For this
// purpose, the \doxygen{otb}{NeighborhoodMajorityVotingImageFilter} was
// implemented. Like a morphological filter, this filter uses majority
// voting in a ball shaped neighborhood in order to set each pixel of the
// classification map to the more representative label value in its
// classification map to the most representative label value in its
// neighborhood.
//
// In this example we will illustrate its use. We start by including the
......@@ -78,7 +78,7 @@ int main(int itkNotUsed(argc), char * argv[])
// Software Guide : BeginLatex
//
// We can now define the type for the neighborhood majority voting filter,
// which is templated over its input and output images types and over its
// which is templated over its input and output images types as well as its
// structuring element type. Choosing only the input image type in the template
// of this filter induces that, both input and output images types are the same
// and that the structuring element is a ball
......@@ -196,9 +196,9 @@ int main(int itkNotUsed(argc), char * argv[])
// Software Guide : BeginLatex
//
// Moreover, since the majority voting regularization may lead to not unique
// majority labels in the neighborhood, it is important to define which behaviour
// the filter must have in this case. For this purpose, a Boolean parameter is used
// Furthermore, since the majority voting regularization may lead to different
// majority labels in the neighborhood, in this case, it would be important to define
// the filter's behaviour. For this purpose, a Boolean parameter is used
// in the filter to choose whether pixels with more than one majority class are set
// to undecidedValue (true), or to their Original labels (false = default value)
// in the output image.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment