Digital numbers and physical values (reflection/radiance-at-sensor):
Satellite imagery is commonly stored in Digital Numbers (DN) for minimizing the storage volume, i.e. the originally sampled analog physical value (color, temperature, etc) is stored a discrete representation in 8-16 bits. For example, Landsat data are stored in 8bit values (i.e., ranging from 0 to 255); other satellite data may be stored in 10 or 16 bits. Having data stored in DN, it implies that these data are not yet the observed ground reality. Such data are called "at-satellite", for example the amount of energy sensed by the sensor of the satellite platform is encoded in 8 or more bits. This energy is called radiance-at-sensor. To obtain physical values from DNs, satellite image providers use a linear transform equation (y = a * x + b) to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula (x = (y - b) / a).
The GRASS GIS module easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is . For other satellites, can be employed.
Reflection/radiance-at-sensor and surface reflectance
When radiance-at-sensor has been obtained, still the atmosphere influences the signal as recorded at the sensor. This atmospheric interaction with the sun energy reflected back into space by ground/vegetation/soil needs to be corrected. There are two ways to apply atmospheric correction for satellite imagery. The simple way for Landsat is with reflectance, which ranges theoretically from 0 % to 100 %. Note that this level of data correction is the proper level of correction to calculate vegetation indices., using the DOS correction method. The more accurate way is using (which works for many satellite sensors). The atmospherically corrected sensor data represent surface
Image processing in GRASS GIS
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 module
- The imagery screenshots page
The wxGUI offers a convenient tool for single map and bulk import:
- see Importing data
Sea Surface Temperature (SST)
High resolution data
See also, various Whitepapers on High Resolution Satellite Imagery
- Georectification tool is available from the File menu in the GUI.
- , (scanned maps, satellite images)
- (aerial images)
A multi-band image may be grouped and georectified with a single set of ground control points (, , ).
See also the Georeferencing wiki page
Correction for atmospheric effects
- GRASS AddOns) : simple dark-object/Tasseled Cap based haze minimization (from
- Atmospheric correction : more complex correction but based on atmospheric models - see tutorial:
Correction for topographic/terrain effects
In rugged terrain, such correction might be useful to minimize negative effects.
- simple "cosine correction" using , (tends to overshoot when slopes are high)
the following correction methods are implemented: cosine, minnaert, percent, c-factor.
- Note, that for the sun's zenith (in degrees) parameter, the equation "Sun's Zenith = 90 - Sun's Elevation" is generally valid
See the dedicated Image classification page.
- : Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation.
- : Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).
- i.segment: Image Segmentation
- see also Image destriping
Canonical Component Analysis
Principal Component Analysis
- see also Principal Components Analysis
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:
- : In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis
- manual) is used to perform Spectral Unmixing (
- : version for GRASS GIS 7
Time series analysis
- Decorrelation stretching with or
- Density slicing with
- Principal Component Analysis with
Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation
Image fusion and Pansharpening:
- and : can be used for image fusion
- : image fusion of pan-chromatic and color channels
- : Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)
- which performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model). The module generates a piece-wise smooth approximation of the input raster map and a raster map of the discontinuities of the output approximation. The discontinuities of the output approximation are preserved from being smoothed. (Addons)
- : Identifies segments (objects) from imagery data (GRASS 7)
Optimal channel selection for color composites
- 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 ideas
- Make use of the Spectral Python (SPy) which is a pure Python module for processing hyperspectral image data
Spectral angle mapping ideas
- : 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)
- New Georectifier: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html
Image matching ideas
- : 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
Image classification ideas
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.
Bundle block adjustment
Needed to orthorectify a series aerial images taken sequentially with overlap. "Histoical" method which is nowadays interesting for UAV flights with octocopters and such.
Automatec GPC search could be done by "auto-sift".
Available: Octave code which prepares input to anbatch job (contact Markus Neteler).
Lidar LAS format
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org
las2txt | r.in.xyz in=- fs=" "
Update:and implemented by Markus Metz (GRASS 7)
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 ( , photo.*)
- GRASS 5 (! only) image3 lib:
- GRASS 5/6 image proc commands:
- merge of , , i.points3 (see above)
- merge of and i.rectify3 (see above)
addition of new resampling algorithms such as bilinear, cubic convolution (take from(done 10/2010) or )
- add other warping methods (maybe lanczos or thin splines from GDAL?): Addons#i.warp
- implement/finish linewise ortho-rectification of satellite data