# Difference between revisions of "Image processing"

m (extended) |
m (→Correction for topographic/terrain effects: note about "Sun's zenith = 90 - Sun's elevation") |
||

Line 68: | Line 68: | ||

* simple "cosine correction" using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high) | * simple "cosine correction" using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high) | ||

* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor. | * In {{cmd|i.topo.corr}} 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 | |||

=== Cloud removal === | === Cloud removal === |

## Revision as of 18:16, 8 January 2013

## 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

The wxGUI offers a convenient tool for single map and bulk import:

- see Importing data

### Satellite Data

#### Ocean Color

#### Sea Surface Temperature (SST)

##### High resolution data

### Orthophotos

## Preprocessing

See also NASA LaRC Satellite Overpass Predictor

### Geometric preprocessing/Georectification

- 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~~(included since 6.4)

### 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 - see tutorial: Atmospheric correction

### 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)
- In i.topo.corr 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

### Cloud removal

- with i.landsat.acca

## Image classification

See the dedicated Image classification page.

## Image segmentation

- i.smap: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation.
- r.seg: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).
- i.segment: Image Segmentation

## Filtering

## Fourier Transform

- i.fft, i.ifft
- see also Image destriping

## Canonical Component Analysis

## Principal Component Analysis

- i.pca
- see also Principal Components Analysis

## Texture

A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:

- r.texture: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis

See here and here for the formulas to calculate texture.

## Time series analysis

- r.series
- see also Time series
- see also Time series development

## Enhancements

### Radiometric Enhancements

- i.landsat.rgb
- Decorrelation stretching with r.colors or r.mapcalc
- Density slicing with r.colors
- Principal Component Analysis with i.pca

### Geometric Enhancements - Image Fusion - Pansharpening

- i.rgb.his and i.his.rgb: can be used for image fusion
- i.fusion.brovey: image fusion of pan-chromatic and color channels
- r.seg 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.
- i.pansharpen: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)

### 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 ideas

- i.spec.unmix: existing GRASS 5 module awaiting complete GRASS 6 update
- Make use of the Spectral Python (SPy) which is a pure Python module for processing hyperspectral image data

### Spectral angle mapping ideas

### Geocoding ideas

- 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)
- New Georectifier: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html

### Image matching ideas

- 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

### Image classification ideas

- pr: C code for classification problems
- GRASS implementation: i.pr.* source code is available here)

### Stereo 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 an i.ortho.photo batch 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:* r.in.lidar and v.in.lidar implemented by Markus Metz (GRASS 7)

(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)~~(done 10/2010)- add other warping methods (maybe lanczos or thin splines from GDAL?): Addons#i.warp
- implement/finish linewise ortho-rectification of satellite data

## Bibliography

- Search for "GRASS GIS Image processing" - Google Scholar
- Search for "GRASS GIS Remote Sensing" - Google Scholar