GRASS logo

Note: A new GRASS GIS stable version has been released: GRASS GIS 7. Go directly to the new manual page here


i.smap - Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation.


imagery, classification, supervised, SMAP


i.smap help
i.smap [-mq] group=name subgroup=name signaturefile=name output=name [blocksize=integer] [--overwrite] [--verbose] [--quiet]


Use maximum likelihood estimation (instead of smap)
Run quietly
Allow output files to overwrite existing files
Verbose module output
Quiet module output


Name of input imagery group
Name of input imagery subgroup
Name of file containing signatures
Generated by i.gensigset
Name for output raster map
Size of submatrix to process at one time
Default: 1024


The i.smap program is used to segment multispectral images using a spectral class model known as a Gaussian mixture distribution. Since Gaussian mixture distributions include conventional multivariate Gaussian distributions, this program may also be used to segment multispectral images based on simple spectral mean and covariance parameters.

i.smap has two modes of operation. The first mode is the sequential maximum a posteriori (SMAP) mode [1,2]. The SMAP segmentation algorithm attempts to improve segmentation accuracy by segmenting the image into regions rather than segmenting each pixel separately (see NOTES).

The second mode is the more conventional maximum likelihood (ML) classification which classifies each pixel separately, but requires somewhat less computation. This mode is selected with the -m flag (see below).



Use maximum likelihood estimation (instead of smap). Normal operation is to use SMAP estimation (see NOTES).
Run quietly, without printing messages about program progress. Without this flag, messages will be printed (to stderr) as the program progresses.


imagery group
The imagery group that defines the image to be classified.
imagery subgroup
The subgroup within the group specified that specifies the subset of the band files that are to be used as image data to be classified.
imagery signaturefile
The signature file that contains the spectral signatures (i.e., the statistics) for the classes to be identified in the image. This signature file is produced by the program i.gensigset (see NOTES).
size of submatrix to process at one time
default: 1024
This option specifies the size of the "window" to be used when reading the image data.

This program was written to be nice about memory usage without influencing the resultant classification. This option allows the user to control how much memory is used. More memory may mean faster (or slower) operation depending on how much real memory your machine has and how much virtual memory the program uses.

The size of the submatrix used in segmenting the image has a principle function of controlling memory usage; however, it also can have a subtle effect on the quality of the segmentation in the smap mode. The smoothing parameters for the smap segmentation are estimated separately for each submatrix. Therefore, if the image has regions with qualitatively different behavior, (e.g., natural woodlands and man-made agricultural fields) it may be useful to use a submatrix small enough so that different smoothing parameters may be used for each distinctive region of the image.

The submatrix size has no effect on the performance of the ML segmentation method.

output raster map.
The name of a raster map that will contain the classification results. This new raster map layer will contain categories that can be related to landcover categories on the ground.


If none of the arguments are specified on the command line, i.smap will interactively prompt for the names of the maps and files.


The SMAP algorithm exploits the fact that nearby pixels in an image are likely to have the same class. It works by segmenting the image at various scales or resolutions and using the coarse scale segmentations to guide the finer scale segmentations. In addition to reducing the number of misclassifications, the SMAP algorithm generally produces segmentations with larger connected regions of a fixed class which may be useful in some applications.

The amount of smoothing that is performed in the segmentation is dependent of the behavior of the data in the image. If the data suggests that the nearby pixels often change class, then the algorithm will adaptively reduce the amount of smoothing. This ensures that excessively large regions are not formed.

The module i.smap does not support MASKed or NULL cells. Therefore it might be necessary to create a copy of the classification results using e.g. r.mapcalc:

r.mapcalc "MASKed_map = classification_results"


Supervised classification of LANDSAT
g.region rast=lsat7_2002_10 -p

# store VIZ, NIR, MIR into group/subgroup group=my_lsat7_2002 subgroup=my_lsat7_2002 \

# Now digitize training areas "training" with the digitizer
# and convert to raster model with training out=training use=cat labelcolumn=label

# calculate statistics
i.gensigset trainingmap=training group=my_lsat7_2002 subgroup=my_lsat7_2002 \
            signaturefile=my_smap_lsat7_2002 maxsig=5

i.smap group=my_lsat7_2002 subgroup=my_lsat7_2002 signaturefile=my_smap_lsat7_2002 \

# Visually check result
d.mon x0
d.rast.leg lsat7_2002_smap_classes

# Statistically check result
r.kappa -w classification=lsat7_2002_smap_classes reference=training


SEE ALSO for creating groups and subgroups

r.mapcalc to copy classification result in order to cut out MASKed subareas

i.gensigset to generate the signature file required by this program


Charles Bouman, School of Electrical Engineering, Purdue University

Michael Shapiro, U.S.Army Construction Engineering Research Laboratory

Last changed: $Date: 2014-06-26 15:25:51 -0700 (Thu, 26 Jun 2014) $

Main index - imagery index - Full index

© 2003-2016 GRASS Development Team