SetDescription("Performs segmentation of an image, with an optional large scale mode to handle large images.");
SetDescription("Performs segmentation of an image, and output either a raster or a vector file. In vector mode, large input datasets are supported.");
// Documentation
// Documentation
SetDocName("Segmentation");
SetDocName("Segmentation");
SetDocLongDescription("This application allows to perform various segmentation algorithm on an multispectral image. "
SetDocLongDescription("This application allows to perform various segmentation algorithm on an multispectral image. "
"Available segmentation algorithms are two different version of Mean-Shift segmentation algorithm (one beeing multi-threaded),"
"Available segmentation algorithms are two different version of Mean-Shift segmentation algorithm (one being multi-threaded),"
" simple pixel based connected components according to a user-defined criterion, and watershed from the gradient of the intensity "
" simple pixel based connected components according to a user-defined criterion, and watershed from the gradient of the intensity "
"(norm of spectral bands vector). The application has two different modes that affects the nature of its output.\n\nIn normal mode,"
"(norm of spectral bands vector). The application has two different modes that affects the nature of its output.\n\nIn raster mode,"
" the output of the application is a classical image of unique labels identifying the segmented regions. The labeled output can be passed to the "
" the output of the application is a classical image of unique labels identifying the segmented regions. The labeled output can be passed to the "
" ColorMapping application to render regions with contrasted colors. Please note that this mode loads the whole input image into memory, and as such "
" ColorMapping application to render regions with contrasted colours. Please note that this mode loads the whole input image into memory, and as such "
" can not handle large images. \n\nTo segment large data, one can use the largescale mode. In this case, the output of the application is a "
" can not handle large images. \n\nTo segment large data, one can use the vector mode. In this case, the output of the application is a "
" vector file or database. The input image is splitted into tiles (whose size can be set using the tilesize parameter), and each tile is loaded, segmented "
" vector file or database. The input image is split into tiles (whose size can be set using the tilesize parameter), and each tile is loaded, segmented "
" with the chosen algorithm, vectorized, and writen into the output file or database. This piece-wise behaviour ensure that memory will never get overloaded, "
" with the chosen algorithm, vectorized, and written into the output file or database. This piece-wise behaviour ensure that memory will never get overloaded, "
" and that images of any size can be processed. There are few more options in the largescale mode. The simplify option allows to simplify the geometry "
" and that images of any size can be processed. There are few more options in the vector mode. The simplify option allows to simplify the geometry "
" (i.e. remove nodes in polygons) according to a user-defined tolerance. The stitch option allows to application to try to stitch together polygons corresponding "
" (i.e. remove nodes in polygons) according to a user-defined tolerance. The stitch option allows to application to try to stitch together polygons corresponding "
" to segmented region that may have been splitted by the tiling scheme. ");
" to segmented region that may have been splitted by the tiling scheme. ");
SetDocLimitations("In normal mode, the application can not handle large input images. Stiching step of largescale mode might become slow with very large input images.");
SetDocLimitations("In raster mode, the application can not handle large input images. Stitching step of vector mode might become slow with very large input images.");
SetParameterDescription("mode","Choice of processing mode, either normal or large-scale.");
SetParameterDescription("mode","Choice of processing mode, either raster or large-scale.");
AddChoice("mode.largescale","Tile-based large-scale segmentation with vector output");
AddChoice("mode.vector","Tile-based large-scale segmentation with vector output");
SetParameterDescription("mode.largescale","In this mode, the application will output a vector file or database, and process the input image piecewise. This allows to perform segmentation of very large images.");
SetParameterDescription("mode.vector","In this mode, the application will output a vector file or database, and process the input image piecewise. This allows to perform segmentation of very large images.");
AddChoice("mode.normal","Standard segmentation with labeled raster output");
AddChoice("mode.raster","Standard segmentation with labeled raster output");
SetParameterDescription("mode.normal","In this mode, the application will output a standard labeled raster. This mode can not handle large data.");
SetParameterDescription("mode.raster","In this mode, the application will output a standard labeled raster. This mode can not handle large data.");