Commit 06bdfd0f authored by Christophe Palmann's avatar Christophe Palmann

BandMathX app: long description added (but still to be improved)

parent a3cf3b07
......@@ -51,12 +51,77 @@ private:
void DoInit()
SetDescription("Perform a mathematical operation on multiband images");
SetDescription("This application performs mathematical operations on multiband images.\n"
"Mathematical formula interpretation is done via muParserX libraries");
SetDocName("Band Math X");
SetDocLongDescription("This application performs a mathematical operation on multiband images."
" Mathematical formula interpretation is done via MuParserX libraries");
SetDocLongDescription("The goal of this documentation is to give the user some hints about the syntax used in this application.\n"
"The syntax is mainly constrained by the muparserx library, which can be considered as the core of the application.\n"
"- Fundamentals:\n\n"
"The default prefix name for variables related to the ith input is « im(i+1) » (note the indexing from 1 to N, for N inputs). \n"
"The following list summaries the available variables for input #0 (and so on for every input): \n"
"im1 --> a pixel from first input, made of n components (n bands)\n"
"im1bj --> jth component of a pixel from first input (first band is indexed by 1)\n"
"im1bjNkxp --> a neighbourhood (“N”) of pixels of the jth component from first input, of size kxp\n"
"im1PhyX and im1PhyY --> spacing of first input in X and Y directions (horizontal and vertical)\n"
"\nMoreover, we also have the following generic variables:\n"
"idxX and idxY --> indices of the current pixel\n"
"Always keep in mind that this application only addresses mathematically well-defined formulas.\n"
"For instance, it is not possible to add vectors of different dimensions (this implies the addition of a row vector with a column vector),\n"
"or add a scalar to a vector or a matrix, or divide two vectors, and so on...\n"
"Thus, it is important to remember that a pixel of n components is always represented as a row vector.\n"
"Example :\n\n"
" im1 + im2 \n"
"\nrepresents the addition of pixels from first and second inputs. This expression is consistent only if\n"
"both inputs have the same number of bands.\n"
"Note that it is also possible to use the following expressions to obtain the same result:\n"
" im1b1 + im2b1 \n"
" im1b2 + im2b2 \n"
" ...."
"\n\nNevertheless, the first expression is by far much pleaseant. We call this new functionnality the 'batch mode'\n"
"(performing the same operation in a band-to-band fashion).\n"
"- Operations involving neighborhoods of pixels:\n\n"
"Another new fonctionnality is the possibility to perform operations that involve neighborhoods of pixels.\n"
"Variable related to such neighborhoods are always defined following the pattern imIbJNKxP, where: \n"
"- I is an number identifying the image input (rememeber, input #0 <=> im1, and so on)\n"
"- J is an number identifying the band (remember, first band is indexed by 1)\n"
"- KxP are two numbers that represent the size of the neighborhood (first one is related to the horizontal direction)\n"
"All neighborhood are centred, thus K and P must be odd numbers.\n"
"Many operators come with this new functionnality: conv, mean var median min max...\n"
"For instance, if im1 represents the pixel of 3 bands image:\n\n"
" im1 - mean(im1b1N5x5,im1b2N5x5,im1b3N5x5)\n"
"\ncould represent a high pass filter (Note that by implying three neighborhoods, the operator returned a row vector of three components.\n"
"It is a typical behaviour for several operators of this application).\n"
"- Operators:\n\n"
"In addition to the previous operators, other operators are available:\n"
"- existing operators/functions from muParserX, that were not originally defined for vectors and\n"
"matrices (for instance cos, sin, ...). These new operators/ functions keep the original names to\n"
"which we add the prefix ”v” for vector (vcos, vsin, ...).\n"
"- mult and div operators, that perform element-wise multiplication or division of vector/matrices (for instance im1 div im2)\n"
"- bands, which is a very usefull operator. It allows to select specific bands from an image, and/or to rearrange them in a new vector;\n"
"for instance bands(im1,{1,2,1,1}) produces a vector of 4 components made of band 1, band 2, band 1 and band 1 values from the first input.\n"
"Note that curly brackets must be used in order to select the desired band indices.\n"
"- Application itself:\n\n"
"Setting the list of inputs can be done with the 'il' parameter.\n"
"Setting an expression can be done with the 'exp' parameter.\n"
"Setting the output image can be done with the 'out' parameter.\n"
"Finally, we strongly recommend that the reader takes a look at the cookbook, where additional information can be found.\n"
SetDocLimitations("Only one output is possible (to be improved)");
SetDocSeeAlso(" ");
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