Image processing
Introduction
Satellite imagery and orthophotos (aerial photographs) are handled in GRASS as raster maps and specialized tasks are performed using the imagery (i.*) modules. All general operations are handled by the raster modules.
- imageryintro: A short introduction to image processing in GRASS 6
- Full GRASS 4.0 Image Processing manual (PDF, 47 pages)
- imagery: Imagery module help pages
- Data import is generally handled by the r.in.gdal module
Screenshots
- The imagery screenshots page
Importing
Satellite Data
Ocean Color
Sea Surface Temperature (SST)
High resolution data
Orthophotos
- See the i.ortho.photo modules
Preprocessing
See Satellite Overpass Predictor
Geometric preprocessing/Georectification
- Tcl/Tk georectification tool is available from the File menu in the GUI.
- i.points, i.vpoints (scanned maps, satellite images)
- i.ortho.photo (aerial images)
A multi-band image may be grouped and georectified with a single set of ground control points (i.group, i.target, i.rectify).
See also the Georeferencing wiki page
Radiometric preprocessing
- use r.mapcalc to apply gain/bias formula
- LANDSAT: you can also use i.landsat.toar from GRASS AddOns
Correction for atmospheric effects
- i.landsat.dehaze: simple dark-object/Tasseled Cap based haze minimization (from GRASS AddOns)
- i.atcorr: more complex correction but based on atmospheric models
Correction for topographic/terrain effects
In rugged terrain, such correction might be useful to minimize negative effects.
- simple "cosine correction" using r.sunmask, r.mapcalc (tends to overshoot when slopes are high)
- Minnaert or other corrections with i.topo.corr (from GRASS AddOns)
Cloud removal
- with i.landsat.acca (from GRASS AddOns)
Image classification
Classification methods in GRASS
radiometric unsupervised |
radiometric supervised 1 |
radiometric supervised 2 |
radiometric & geometric supervised | |
Preprocessing | i.cluster | i.class (monitor digitizing) | i.gensig (using training maps) | i.gensigset (using training maps) |
Computation | i.maxlik | i.maxlik | i.maxlik | i.smap |
Interactive setup
- i.class - Generates spectral signatures for an image by allowing the user to outline regions of interest.
- The resulting signature file can be used as input for i.maxlik or as a seed signature file for i.cluster.
Processing
- i.cluster - Generates spectral signatures for land cover types in an image using a clustering algorithm.
- The resulting signature file is used as input for i.maxlik, to generate an unsupervised image classification.
- i.gensig - Generates statistics for i.maxlik from raster map layer.
- i.gensigset - Generate statistics for i.smap from raster map layer.
Unsupervised classification
- i.maxlik - Classifies the cell spectral reflectances in imagery data.
- Classification is based on the spectral signature information generated by either i.cluster, i.class, or i.gensig.
Supervised classification
- i.smap - Performs contextual (image segmentation) image classification using sequential maximum a posteriori (SMAP) estimation.
Further reading classification with GRASS
- Micha Silver: Analyzing acacia tree health in the Arava with GRASS GIS
- Perrygeo: Impervious surface deliniation with GRASS
- Dylan Beaudette: Working with Landsat Data
- Dylan Beaudette: Canopy Quantification via Image Classification
Filtering
Enhancements
Radiometric Enhancements
Geometric Enhancements
Optimal channel selection for color composites
Stereo anaglyphs
- see Stereo anaglyphs
Ideas collection for improving GRASS' Image processing capabilities
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.
Spectral unmixing
- i.spec.unmix (source code)
Spectral angle mapping
- i.spec.sam (source code)
Geocoding
- i.points.auto: automated search of GCPs based on FFT correlation (as improved i.points)
- Reference: M. Neteler, D. Grasso, I. Michelazzi, L. Miori, S. Merler, and C. Furlanello, 2005: An integrated toolbox for image registration, fusion and classification. International Journal of Geoinformatics, 1(1), pp. 51-61 PDF
- i.homography: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)
- support splines from GDAL (see GRASS_AddOns#Imagery_add-ons)
Image classification
- pr: C code for classification problems
- GRASS implementation: i.pr.* source code is available here)
Stereo
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.
Lidar LAS format
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org
las2txt | r.in.xyz in=- fs=" "
(see LIDAR)
Improving the existing code
It might be sensible to merge the various image libraries:
- GRASS 6 standard libs:
- lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)
- imagery/i.ortho.photo/libes/: standard lib, in use (i.ortho.photo, photo.*)
- GRASS 5 (! only) image3 lib:
- libes/image3/: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data (i.points3, i.rectify3)
- GRASS 5/6 image proc commands:
- merge of i.points, i.vpoints, i.points3 (see above)
- merge of i.rectify and i.rectify3 (see above)
- addition of new resampling algorithms such as bilinear, cubic convolution (take from r.proj or r.resamp.aggreg)
- add other warping methods (maybe thin splines from GDAL?): Addons#i.warp
- implement/finish linewise ortho-rectification of satellite data