Image processing
From GRASS-Wiki
This page needs review and enhancement from an expert! Thanks!
Contents |
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.
- A short introduction to image processing in GRASS 6
- Full GRASS 4.0 Image Processing manual (PDF, 47 pages)
- 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)
Orthophotos
- See the i.ortho.photo modules
Preprocessing
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.
Filtering
- i.fft, i.ifft, i.pca, r.mfilter, r.neighbors
Enhancement
- i.landsat.rgb
- i.fusion.brovey
- i.oif
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)
- 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: http://www.cs.unc.edu/~isenburg/lastools/
las2txt | r.in.xyz in=- fs=" "
(see r.in.xyz)
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)
- imagery/i.ortho.photo/libes/: standard lib, in use (i.ortho.photo, photo.*)
- GRASS 5 (! only) image3 lib:
- lib/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
- merge of i.rectify and i.rectify3
- addition of new resampling algorithms such as bilinear, cubic convolution (take from r.proj or upcoming r.resamp.aggreg)
- add other warping methods (maybe thin splines from GDAL?)
- implement/finish linewise ortho-rectification of satellite data

