<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://grasswiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E2%9A%A0%EF%B8%8FDucciorocchini</id>
	<title>GRASS-Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://grasswiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E2%9A%A0%EF%B8%8FDucciorocchini"/>
	<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/wiki/Special:Contributions/%E2%9A%A0%EF%B8%8FDucciorocchini"/>
	<updated>2026-05-25T15:11:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Fourier_transforms_for_multitemporal_analysis&amp;diff=19849</id>
		<title>Fourier transforms for multitemporal analysis</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Fourier_transforms_for_multitemporal_analysis&amp;diff=19849"/>
		<updated>2013-11-04T19:21:25Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Fourier transforms for detecting multitemporal landscape fragmentation by remote sensing'''&lt;br /&gt;
'''GRASS GIS and R code used in:'''&lt;br /&gt;
&lt;br /&gt;
Rocchini, D., Metz, M., Ricotta, C., Landa, M., Frigeri, A., Neteler, M. (2013). Fourier transforms for detecting multitemporal landscape fragmentation by remote sensing. International Journal of Remote Sensing, 34: 8907-8916. (IF: 1.138)&lt;br /&gt;
&lt;br /&gt;
GRASS GIS: Fourier transform calculation&lt;br /&gt;
--------------------------------------------------------&lt;br /&gt;
The used data are from the North Carolina set available for free at: &lt;br /&gt;
http://grass.osgeo.org/download/sample-data/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Setting the region of interest based on a Landsat image&lt;br /&gt;
g.region rast=lsat7_2002_10 -p&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Performing PCA on a multitemporal set of images (Landsat images in this case)'''&lt;br /&gt;
&lt;br /&gt;
''1987''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pca input=lsat5_1987_10,lsat5_1987_20,lsat5_1987_30,lsat5_1987_40,lsat5_1987_50,lsat5_1987_70 \&lt;br /&gt;
      output=lsat5_1987_pca &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''2002''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pca input=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70 \&lt;br /&gt;
      output=lsat7_2002_pca&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Showing the first principal component''' &lt;br /&gt;
&lt;br /&gt;
''1987''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
d.mon x0&lt;br /&gt;
d.rast lsat5_1987_pca.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''2002''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
d.mon x1&lt;br /&gt;
d.rast lsat7_2002_pca.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Fourier transform'''&lt;br /&gt;
&lt;br /&gt;
''1987''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fft input=lsat5_1987_pca.1 real=lsat5_1987_pca1.real imaginary=lsat5_1987_pca1.imag&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''2002''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fft input=lsat7_2002_pca.1 real=lsat7_2002_pca1.real imaginary=lsat7_2002_pca1.imag&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Creating Fig. 2 in Rocchini et al. (2013)'''&lt;br /&gt;
&lt;br /&gt;
''1987''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
d.mon x2&lt;br /&gt;
d.rast lsat5_1987_pca1.real&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''2002''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
d.mon x3&lt;br /&gt;
d.rast lsat7_2002_pca1.real&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Additional example with MODIS data: Fig. 6 in Rocchini et al. (2013)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Import data: image covering a temporal period from 2005-02-02 to 2005-03-05 (band 2 being used)''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.in.gdal input=Goodes.EUAS.2005033.band2.tif output=Goodes.EUAS.2005033.band2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Import data: image covering a temporal period from 2005-07-12 to 2005-08-12 (band 2 being used)''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.in.gdal input=Goodes.EUAS.2005193.band2.tif output=Goodes.EUAS.2005193.band2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Fourier transforms'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fft input=Goodes.EUAS.2005033.band2 real=Goodes.EUAS.2005033.band2.real imaginary=Goodes.EUAS.2005033.band2.imag&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fft input=Goodes.EUAS.2005193.band2 real=Goodes.EUAS.2005193.band2.real imaginary=Goodes.EUAS.2005193.band2.imag&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''R: statistical analysis'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Importing the Fourier image from GRASS GIS by the spgrass6 library&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
library(spgrass6)&lt;br /&gt;
fft.images&amp;lt;-readRAST6(c('lsat5_1987_pca1.real','lsat7_2002_pca1.real'), &lt;br /&gt;
    cat=c(F,F), ignore.stderr=TRUE, plugin=NULL)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
''where lsat5_1987_pca1.real and lsat7_2002_pca1.real are the Fourier transform images derived from GRASS GIS''&lt;br /&gt;
&lt;br /&gt;
''Kernel Density Plot: Fig. 4 in Rocchini et al. (2013)''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
library(sm)&lt;br /&gt;
sm.density(fft.images$lsat5_1987_pca1.real, lty=1, lwd=2, ann=T, &lt;br /&gt;
   xlim=c(0,255), ylim=c(0,0.013), xlab='Fourier transform value', col='blue', cex.label=4)&lt;br /&gt;
par(new=T)&lt;br /&gt;
sm.density(fft.images$lsat7_2002_pca1.real,lty=1, lwd=2, ann=F, &lt;br /&gt;
   xlim=c(0,255), ylim=c(0,0.013), xlab=' ', col='red', cex.label=4)&lt;br /&gt;
legend(110, 0.012, c('Density function 1987', 'Density function 2002'), &lt;br /&gt;
   fill = c('blue', 'red'), cex=1.2, box.lty=0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Hexagon binning: Fig. 5 in Rocchini et al. (2013)''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
library(hexbin)&lt;br /&gt;
hbin &amp;lt;- hexbin(fft.images$lsat5_1987_pca1.real, fft.images$lsat7_2002_pca1.real, xbins = 50)&lt;br /&gt;
plot.bin&amp;lt;-plot(hbin, style = 'nested.lattice', legend=F, &lt;br /&gt;
  xlab='Fourier transform value 1987', ylab='Fourier transform value 2002')&lt;br /&gt;
hexVP.abline(plot.bin$plot.vp, 0, 1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Fourier_transforms_for_multitemporal_analysis&amp;diff=19845</id>
		<title>Fourier transforms for multitemporal analysis</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Fourier_transforms_for_multitemporal_analysis&amp;diff=19845"/>
		<updated>2013-10-31T14:15:02Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Fourier transforms for detecting multitemporal landscape fragmentation by remote sensing'''&lt;br /&gt;
'''GRASS GIS and R code used in:'''&lt;br /&gt;
&lt;br /&gt;
Rocchini, D., Metz, M., Ricotta, C., Landa, M., Frigeri, A., Neteler, M. (2013). Fourier transforms for modelling multi-temporal landscape fragmentation: an Open Source approach. International Journal of Remote Sensing, 34: 8907-8916. (IF: 1.138)&lt;br /&gt;
&lt;br /&gt;
GRASS GIS: Fourier transform calculation&lt;br /&gt;
--------------------------------------------------------&lt;br /&gt;
The used data are from the North Carolina set available for free at: &lt;br /&gt;
http://grass.osgeo.org/download/sample-data/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Setting the region of interest based on a Landsat image&lt;br /&gt;
g.region rast=lsat7_2002_10 -p&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Performing PCA on a multitemporal set of images (Landsat images in this case)'''&lt;br /&gt;
&lt;br /&gt;
''1987''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pca input=lsat5_1987_10,lsat5_1987_20,lsat5_1987_30,lsat5_1987_40,lsat5_1987_50,lsat5_1987_70 \&lt;br /&gt;
      output=lsat5_1987_pca &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''2002''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pca input=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70 \&lt;br /&gt;
      output=lsat7_2002_pca&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Showing the first principal component''' &lt;br /&gt;
&lt;br /&gt;
''1987''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
d.mon x0&lt;br /&gt;
d.rast lsat5_1987_pca.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''2002''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
d.mon x1&lt;br /&gt;
d.rast lsat7_2002_pca.1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Fourier transform'''&lt;br /&gt;
&lt;br /&gt;
''1987''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fft input=lsat5_1987_pca.1 real=lsat5_1987_pca1.real imaginary=lsat5_1987_pca1.imag&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''2002''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fft input=lsat7_2002_pca.1 real=lsat7_2002_pca1.real imaginary=lsat7_2002_pca1.imag&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Creating Fig. 2 in Rocchini et al. (2013)'''&lt;br /&gt;
&lt;br /&gt;
''1987''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
d.mon x2&lt;br /&gt;
d.rast lsat5_1987_pca1.real&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''2002''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
d.mon x3&lt;br /&gt;
d.rast lsat7_2002_pca1.real&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Additional example with MODIS data: Fig. 6 in Rocchini et al. (2013)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Import data: image covering a temporal period from 2005-02-02 to 2005-03-05 (band 2 being used)''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.in.gdal input=Goodes.EUAS.2005033.band2.tif output=Goodes.EUAS.2005033.band2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Import data: image covering a temporal period from 2005-07-12 to 2005-08-12 (band 2 being used)''&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.in.gdal input=Goodes.EUAS.2005193.band2.tif output=Goodes.EUAS.2005193.band2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Fourier transforms'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fft input=Goodes.EUAS.2005033.band2 real=Goodes.EUAS.2005033.band2.real imaginary=Goodes.EUAS.2005033.band2.imag&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fft input=Goodes.EUAS.2005193.band2 real=Goodes.EUAS.2005193.band2.real imaginary=Goodes.EUAS.2005193.band2.imag&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''R: statistical analysis'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Importing the Fourier image from GRASS GIS by the spgrass6 library&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
library(spgrass6)&lt;br /&gt;
fft.images&amp;lt;-readRAST6(c('lsat5_1987_pca1.real','lsat7_2002_pca1.real'), &lt;br /&gt;
    cat=c(F,F), ignore.stderr=TRUE, plugin=NULL)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
''where lsat5_1987_pca1.real and lsat7_2002_pca1.real are the Fourier transform images derived from GRASS GIS''&lt;br /&gt;
&lt;br /&gt;
''Kernel Density Plot: Fig. 4 in Rocchini et al. (2013)''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
library(sm)&lt;br /&gt;
sm.density(fft.images$lsat5_1987_pca1.real, lty=1, lwd=2, ann=T, &lt;br /&gt;
   xlim=c(0,255), ylim=c(0,0.013), xlab='Fourier transform value', col='blue', cex.label=4)&lt;br /&gt;
par(new=T)&lt;br /&gt;
sm.density(fft.images$lsat7_2002_pca1.real,lty=1, lwd=2, ann=F, &lt;br /&gt;
   xlim=c(0,255), ylim=c(0,0.013), xlab=' ', col='red', cex.label=4)&lt;br /&gt;
legend(110, 0.012, c('Density function 1987', 'Density function 2002'), &lt;br /&gt;
   fill = c('blue', 'red'), cex=1.2, box.lty=0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Hexagon binning: Fig. 5 in Rocchini et al. (2013)''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
library(hexbin)&lt;br /&gt;
hbin &amp;lt;- hexbin(fft.images$lsat5_1987_pca1.real, fft.images$lsat7_2002_pca1.real, xbins = 50)&lt;br /&gt;
plot.bin&amp;lt;-plot(hbin, style = 'nested.lattice', legend=F, &lt;br /&gt;
  xlab='Fourier transform value 1987', ylab='Fourier transform value 2002')&lt;br /&gt;
hexVP.abline(plot.bin$plot.vp, 0, 1)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Fourier_transforms_for_multitemporal_analysis&amp;diff=19681</id>
		<title>Fourier transforms for multitemporal analysis</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Fourier_transforms_for_multitemporal_analysis&amp;diff=19681"/>
		<updated>2013-09-03T07:45:53Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: Fourier transforms for multitemporal analysis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Fourier transforms for detecting multitemporal landscape fragmentation by remote sensing'''&lt;br /&gt;
'''GRASS GIS and R code used in:'''&lt;br /&gt;
&lt;br /&gt;
Rocchini, D., Metz, M., Ricotta, C., Landa, M., Frigeri, A., Neteler, M. (2013). Fourier transforms for modelling multi-temporal landscape fragmentation: an Open Source approach. Accepted by International Journal of Remote Sensing. (IF: 1.138)&lt;br /&gt;
&lt;br /&gt;
GRASS GIS: Fourier transform calculation&lt;br /&gt;
--------------------------------------------------------&lt;br /&gt;
The used data are from the North Carolina set available for free at: &lt;br /&gt;
http://grass.osgeo.org/download/sample-data/&lt;br /&gt;
&lt;br /&gt;
Setting the region of interest based on a Landsat image&amp;lt;br /&amp;gt;&lt;br /&gt;
g.region rast=lsat7_2002_10 -p&lt;br /&gt;
'''&lt;br /&gt;
Performing PCA on a multitemporal set of images (Landsat images in this case)''' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''1987''&amp;lt;br /&amp;gt;&lt;br /&gt;
i.pca&lt;br /&gt;
lsat5_1987_10,lsat5_1987_20,lsat5_1987_30,lsat5_1987_40,lsat5_1987_50,lsat5_1987_70 out=lsat5_1987_pca &lt;br /&gt;
&lt;br /&gt;
''2002''&amp;lt;br /&amp;gt;&lt;br /&gt;
i.pca&lt;br /&gt;
lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70 out=lsat7_2002_pca&lt;br /&gt;
&lt;br /&gt;
Showing the first principal component &lt;br /&gt;
&lt;br /&gt;
''1987''&amp;lt;br /&amp;gt;&lt;br /&gt;
d.mon x0&lt;br /&gt;
d.rast lsat5_1987_pca.1&lt;br /&gt;
&lt;br /&gt;
''2002''&amp;lt;br /&amp;gt;&lt;br /&gt;
d.mon x1&lt;br /&gt;
d.rast lsat7_2002_pca.1&lt;br /&gt;
'''&lt;br /&gt;
Fourier transform'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''1987''&amp;lt;br /&amp;gt;&lt;br /&gt;
i.fft lsat5_1987_pca.1 real=lsat5_1987_pca1.real imaginary=lsat5_1987_pca1.imag&lt;br /&gt;
&lt;br /&gt;
''2002''&amp;lt;br /&amp;gt;&lt;br /&gt;
i.fft lsat7_2002_pca.1 real=lsat7_2002_pca1.real imaginary=lsat7_2002_pca1.imag&lt;br /&gt;
&lt;br /&gt;
'''Creating Fig. 2 in Rocchini et al. (2013)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''1987''&amp;lt;br /&amp;gt;&lt;br /&gt;
d.mon x2&lt;br /&gt;
d.rast lsat5_1987_pca1.real&lt;br /&gt;
&lt;br /&gt;
''2002''&amp;lt;br /&amp;gt;&lt;br /&gt;
d.mon x3&lt;br /&gt;
d.rast lsat7_2002_pca1.real&lt;br /&gt;
&lt;br /&gt;
'''Additional example with MODIS data: Fig. 6 in Rocchini et al. (2013)'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Import data: image covering a temporal period from 2005-02-02 to 2005-03-05 (band 2 being used)''&amp;lt;br /&amp;gt;&lt;br /&gt;
r.in.gdal input=Goodes.EUAS.2005033.band2.tif out=Goodes.EUAS.2005033.band2&lt;br /&gt;
&lt;br /&gt;
''Import data: image covering a temporal period from 2005-07-12 to 2005-08-12 (band 2 being used)''&amp;lt;br /&amp;gt;&lt;br /&gt;
r.in.gdal input=Goodes.EUAS.2005193.band2.tif out=Goodes.EUAS.2005193.band2&lt;br /&gt;
&lt;br /&gt;
''Fourier transforms'' &amp;lt;br /&amp;gt;&lt;br /&gt;
i.fft input=Goodes.EUAS.2005033.band2 real=Goodes.EUAS.2005033.band2.real imaginary=Goodes.EUAS.2005033.band2.imag&lt;br /&gt;
&lt;br /&gt;
i.fft input=Goodes.EUAS.2005193.band2 real=Goodes.EUAS.2005193.band2.real imaginary=Goodes.EUAS.2005193.band2.imag&lt;br /&gt;
&lt;br /&gt;
'''R: statistical analysis'''&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Importing the Fourier image from GRASS GIS by the spgrass6 library&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
library(spgrass6)&lt;br /&gt;
fft.images&amp;lt;-readRAST6(c('lsat5_1987_pca1.real','lsat7_2002_pca1.real'), cat=c(F,F), ignore.stderr=TRUE, plugin=NULL)&lt;br /&gt;
''where lsat5_1987_pca1.real and lsat7_2002_pca1.real are the Fourier transform images derived from GRASS GIS&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
''Kernel Density Plot: Fig. 4 in Rocchini et al. (2013)''&amp;lt;br /&amp;gt;&lt;br /&gt;
library(sm)&lt;br /&gt;
sm.density(fft.images$lsat5_1987_pca1.real, lty=1, lwd=2, ann=T, xlim=c(0,255), ylim=c(0,0.013), xlab='Fourier transform value', col='blue', cex.label=4)&lt;br /&gt;
par(new=T)&lt;br /&gt;
sm.density(fft.images$lsat7_2002_pca1.real,lty=1, lwd=2, ann=F, xlim=c(0,255), ylim=c(0,0.013), xlab=' ', col='red', cex.label=4)&lt;br /&gt;
legend(110, 0.012, c('Density function 1987', 'Density function 2002'), fill = c('blue', 'red'), cex=1.2, box.lty=0)&lt;br /&gt;
&lt;br /&gt;
''Hexagon binning: Fig. 5 in Rocchini et al. (2013)''&amp;lt;br /&amp;gt;&lt;br /&gt;
library(hexbin)&lt;br /&gt;
hbin &amp;lt;- hexbin(fft.images$lsat5_1987_pca1.real, fft.images$lsat7_2002_pca1.real, xbins = 50)&lt;br /&gt;
plot.bin&amp;lt;-plot(hbin, style = 'nested.lattice', legend=F, xlab='Fourier transform value 1987', ylab='Fourier transform value 2002')&lt;br /&gt;
hexVP.abline(plot.bin$plot.vp, 0, 1)&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19680</id>
		<title>Image processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19680"/>
		<updated>2013-09-03T07:43:51Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: Fourier transforms for multitemporal analysis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== General introduction ===&lt;br /&gt;
&lt;br /&gt;
'''Digital numbers and physical values (reflection/radiance-at-sensor):'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;at-satellite&amp;quot;, 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 &amp;lt;tt&amp;gt;(y = a * x + b)&amp;lt;/tt&amp;gt; to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula &amp;lt;tt&amp;gt;(x = (y - b) / a)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS module {{cmd|i.landsat.toar}} easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is {{cmd|i.aster.toar}}. For other satellites, {{cmd|r.mapcalc}} can be employed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Reflection/radiance-at-sensor and surface reflectance'''&lt;br /&gt;
&lt;br /&gt;
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 {{cmd|i.landsat.toar}}, using the DOS correction method. The more accurate way is using {{cmd|i.atcorr}} (which works for many satellite sensors). The atmospherically corrected sensor data represent surface {{wikipedia|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.&lt;br /&gt;
&lt;br /&gt;
=== Image processing in GRASS GIS ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|imageryintro}}: A short introduction to image processing in GRASS 6&lt;br /&gt;
* Full [http://grass.osgeo.org/gdp/imagery/grass4_image_processing.pdf GRASS 4.0 Image Processing manual] (PDF, 47 pages)&lt;br /&gt;
* {{cmd|imagery}}: Imagery module help pages&lt;br /&gt;
&lt;br /&gt;
* Data import is generally handled by the {{cmd|r.in.gdal}} module&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
* The [http://grass.osgeo.org/screenshots/remote-sensing/ imagery screenshots] page&lt;br /&gt;
&lt;br /&gt;
== Importing ==&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
=== Satellite Data ===&lt;br /&gt;
&lt;br /&gt;
==== Ocean Color ====&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[MODIS#SeaWiFS|SeaWiFS]]&lt;br /&gt;
&lt;br /&gt;
==== Sea Surface Temperature (SST) ====&lt;br /&gt;
&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[AVHRR]]&lt;br /&gt;
&lt;br /&gt;
==== High Resolution Data ====&lt;br /&gt;
&lt;br /&gt;
* [[IKONOS]]&lt;br /&gt;
* [[QuickBird]]&lt;br /&gt;
* [[WorldView]]&lt;br /&gt;
&lt;br /&gt;
See also, various [http://apollomapping.com/about-us/whitepapers Whitepapers] on High Resolution Satellite Imagery&lt;br /&gt;
&lt;br /&gt;
=== Orthophotos ===&lt;br /&gt;
&lt;br /&gt;
* see [[Orthorectification]]&lt;br /&gt;
* see [[Orthorectification digital camera|Ortho-rectification of oblique photographs]]&lt;br /&gt;
&lt;br /&gt;
== Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
See also [http://www-air.larc.nasa.gov/tools/predict.htm NASA LaRC Satellite Overpass Predictor]&lt;br /&gt;
&lt;br /&gt;
=== Geometric preprocessing/Georectification ===&lt;br /&gt;
&lt;br /&gt;
* Georectification tool is available from the File menu in the GUI.&lt;br /&gt;
* {{cmd|i.points}}, {{cmd|i.vpoints}} (scanned maps, satellite images)&lt;br /&gt;
* {{cmd|i.ortho.photo}} (aerial images)&lt;br /&gt;
&lt;br /&gt;
A multi-band image may be grouped and georectified with a single set of ground control points ({{cmd|i.group}}, {{cmd|i.target}}, {{cmd|i.rectify}}).&lt;br /&gt;
&lt;br /&gt;
See also the [[Georeferencing]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Radiometric  preprocessing ===&lt;br /&gt;
&lt;br /&gt;
* use {{cmd|r.mapcalc}} to apply gain/bias formula&lt;br /&gt;
* [[LANDSAT]]: you can also use {{cmd|i.landsat.toar}} &amp;lt;strike&amp;gt;from [[GRASS AddOns]]&amp;lt;/strike&amp;gt; (included since 6.4)&lt;br /&gt;
&lt;br /&gt;
=== Correction for atmospheric effects ===&lt;br /&gt;
&lt;br /&gt;
Visit the dedicated page on [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
==== Related Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{addonCmd|i.landsat.dehaze}}: simple dark-object/Tasseled Cap based haze minimization (from [[GRASS AddOns]])&lt;br /&gt;
* {{cmd|i.atcorr}}: more complex correction but based on atmospheric models&lt;br /&gt;
&lt;br /&gt;
=== Correction for topographic/terrain effects ===&lt;br /&gt;
&lt;br /&gt;
In rugged terrain, such correction might be useful to minimize negative effects.&lt;br /&gt;
&lt;br /&gt;
* simple &amp;quot;cosine correction&amp;quot; using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high)&lt;br /&gt;
* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor.&lt;br /&gt;
** '''Note,''' that for the sun's zenith (in degrees) parameter, the equation &amp;quot;'''Sun's Zenith''' = '''90''' - '''Sun's Elevation'''&amp;quot; is generally valid&lt;br /&gt;
&lt;br /&gt;
=== Cloud removal ===&lt;br /&gt;
&lt;br /&gt;
* with {{cmd|i.landsat.acca}}&lt;br /&gt;
&lt;br /&gt;
== Image classification ==&lt;br /&gt;
&lt;br /&gt;
See the dedicated [[Image classification]] page.&lt;br /&gt;
&lt;br /&gt;
== Image segmentation ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. &lt;br /&gt;
* {{AddonCmd|r.seg}}: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
* [[GRASS GSoC 2012 Image Segmentation|i.segment]]: Image Segmentation&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mfilter}}, {{cmd|r.neighbors}}&lt;br /&gt;
&lt;br /&gt;
== Fourier Transform ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.fft}}, {{cmd|i.ifft}}&lt;br /&gt;
* see also [[Image destriping]]&lt;br /&gt;
* see also [[Fourier transforms for multitemporal analysis]]&lt;br /&gt;
&lt;br /&gt;
== Canonical Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.cca}}&lt;br /&gt;
&lt;br /&gt;
== Principal Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.pca}}&lt;br /&gt;
* see also [[Principal Components Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Texture ==&lt;br /&gt;
&lt;br /&gt;
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.texture}}: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis&lt;br /&gt;
&lt;br /&gt;
See [http://www.fp.ucalgary.ca/mhallbey/texture_calculations.htm here] and [http://murphylab.web.cmu.edu/publications/boland/boland_node26.html here] for the formulas to calculate texture. See also [http://wiki.landscapetoolbox.org/doku.php/remote_sensing_methods:canopy_texture_mapping canopy texture mapping].&lt;br /&gt;
&lt;br /&gt;
== Spectral unmixing ==&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.unmix}} is used to perform Spectral Unmixing ([https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.spec.unmix/description.html manual])&lt;br /&gt;
* {{AddonSrc|imagery|i.spec.unmix|version=7}}: version for GRASS GIS 7&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.series}}&lt;br /&gt;
* see also [[Time series]]&lt;br /&gt;
* see also [[Time series development]]&lt;br /&gt;
&lt;br /&gt;
== Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Radiometric Enhancements ===&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* Decorrelation stretching with {{cmd|r.colors}} or {{cmd|r.mapcalc}}&lt;br /&gt;
* Density slicing with {{cmd|r.colors}}&lt;br /&gt;
* [[Principal Component Analysis]] with {{cmd|i.pca}}&lt;br /&gt;
&lt;br /&gt;
=== Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation ===&lt;br /&gt;
&lt;br /&gt;
Image fusion and Pansharpening:&lt;br /&gt;
* {{cmd|i.rgb.his}} and {{cmd|i.his.rgb}}: can be used for image fusion&lt;br /&gt;
* {{cmd|i.fusion.brovey}}: image fusion of pan-chromatic and color channels&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}}: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
Segmentation:&lt;br /&gt;
* {{AddonCmd|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. (Addons)&lt;br /&gt;
* {{cmd|i.segment|version=70}}: Identifies segments (objects) from imagery data (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
=== Optimal channel selection for color composites ===&lt;br /&gt;
* {{cmd|i.oif}}&lt;br /&gt;
&lt;br /&gt;
== Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
== Ideas collection for improving GRASS' Image processing capabilities ==&lt;br /&gt;
&lt;br /&gt;
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.&lt;br /&gt;
&lt;br /&gt;
=== Spectral unmixing ideas ===&lt;br /&gt;
&lt;br /&gt;
* Make use of the [http://spectralpython.sourceforge.net/ Spectral Python] (SPy) which is a pure Python module for processing hyperspectral image data&lt;br /&gt;
&lt;br /&gt;
=== Spectral angle mapping ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.sam}}&lt;br /&gt;
&lt;br /&gt;
=== Geocoding ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.homography}}: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)&lt;br /&gt;
* support splines from GDAL (see [[GRASS_AddOns#Imagery_add-ons]])&lt;br /&gt;
* New [[WxGUI#Georectifier|Georectifier]]: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html&lt;br /&gt;
&lt;br /&gt;
=== Image matching ideas ===&lt;br /&gt;
* {{AddonCmd|i.points.auto}}: automated search of GCPs based on FFT correlation (as improved i.points)&lt;br /&gt;
: ''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 [http://www.grassbook.org/neteler/papers/neteler2005_IJG_051-061_draft.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=== Image classification ideas ===&lt;br /&gt;
&lt;br /&gt;
* [http://mpa.itc.it/merler/index.html#ml pr: C code for classification problems]&lt;br /&gt;
* GRASS implementation: i.pr.* source code is available [http://trac.osgeo.org/grass/browser/grass-addons/grass6/imagery/i.pr here])&lt;br /&gt;
&lt;br /&gt;
=== Stereo ideas ===&lt;br /&gt;
&lt;br /&gt;
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.&lt;br /&gt;
* http://grass.osgeo.org/outgoing/grass5/stereo-0.2b.tar.gz&lt;br /&gt;
* [http://grass.osgeo.org/gdp/stereo-grass/index.html Stereo Tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Bundle block adjustment ===&lt;br /&gt;
&lt;br /&gt;
Needed to orthorectify a series aerial images taken sequentially with overlap. &amp;quot;Histoical&amp;quot; method which is nowadays interesting for UAV flights with octocopters and such.&lt;br /&gt;
&lt;br /&gt;
Automatec GPC search could be done by &amp;quot;auto-sift&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Available: Octave code which prepares input to an {{cmd|i.ortho.photo}} batch job (contact Markus Neteler).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt;Lidar LAS format&amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org&lt;br /&gt;
&lt;br /&gt;
    las2txt | r.in.xyz in=- fs=&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Update:'' {{cmd|r.in.lidar|version=70}} and {{cmd|v.in.lidar|version=70}} implemented by Markus Metz (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
(see [[LIDAR]])&lt;br /&gt;
&lt;br /&gt;
=== Improving the existing code ===&lt;br /&gt;
&lt;br /&gt;
It might be sensible to merge the various image libraries:&lt;br /&gt;
&lt;br /&gt;
* GRASS 6 standard libs:&lt;br /&gt;
** lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)&lt;br /&gt;
** imagery/i.ortho.photo/libes/: standard lib, in use ({{cmd|i.ortho.photo}}, photo.*)&lt;br /&gt;
* GRASS 5 (! only) image3 lib:&lt;br /&gt;
** [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/libes/image3 libes/image3/]: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data ([http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.points3 i.points3], [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.rectify3 i.rectify3])&lt;br /&gt;
* GRASS 5/6 image proc commands:&lt;br /&gt;
** merge of {{cmd|i.points}}, {{cmd|i.vpoints}}, i.points3 (see above)&lt;br /&gt;
** merge of {{cmd|i.rectify}} and i.rectify3 (see above)&lt;br /&gt;
** &amp;lt;strike&amp;gt;addition of new resampling algorithms such as bilinear, cubic convolution (take from {{cmd|r.proj}} or {{cmd|r.resamp.aggreg}})&amp;lt;/strike&amp;gt; (done 10/2010)&lt;br /&gt;
** add other warping methods (maybe lanczos or thin splines from GDAL?): [[Addons#i.warp]]&lt;br /&gt;
** implement/finish linewise ortho-rectification of satellite data&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+image+processing &amp;quot;GRASS GIS Image processing&amp;quot;] - Google Scholar&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+remote+sensing &amp;quot;GRASS GIS Remote Sensing&amp;quot;] - Google Scholar&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19679</id>
		<title>Image processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19679"/>
		<updated>2013-09-03T07:43:19Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: Fourier transforms for multitemporal landscape analysis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== General introduction ===&lt;br /&gt;
&lt;br /&gt;
'''Digital numbers and physical values (reflection/radiance-at-sensor):'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;at-satellite&amp;quot;, 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 &amp;lt;tt&amp;gt;(y = a * x + b)&amp;lt;/tt&amp;gt; to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula &amp;lt;tt&amp;gt;(x = (y - b) / a)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS module {{cmd|i.landsat.toar}} easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is {{cmd|i.aster.toar}}. For other satellites, {{cmd|r.mapcalc}} can be employed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Reflection/radiance-at-sensor and surface reflectance'''&lt;br /&gt;
&lt;br /&gt;
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 {{cmd|i.landsat.toar}}, using the DOS correction method. The more accurate way is using {{cmd|i.atcorr}} (which works for many satellite sensors). The atmospherically corrected sensor data represent surface {{wikipedia|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.&lt;br /&gt;
&lt;br /&gt;
=== Image processing in GRASS GIS ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|imageryintro}}: A short introduction to image processing in GRASS 6&lt;br /&gt;
* Full [http://grass.osgeo.org/gdp/imagery/grass4_image_processing.pdf GRASS 4.0 Image Processing manual] (PDF, 47 pages)&lt;br /&gt;
* {{cmd|imagery}}: Imagery module help pages&lt;br /&gt;
&lt;br /&gt;
* Data import is generally handled by the {{cmd|r.in.gdal}} module&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
* The [http://grass.osgeo.org/screenshots/remote-sensing/ imagery screenshots] page&lt;br /&gt;
&lt;br /&gt;
== Importing ==&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
=== Satellite Data ===&lt;br /&gt;
&lt;br /&gt;
==== Ocean Color ====&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[MODIS#SeaWiFS|SeaWiFS]]&lt;br /&gt;
&lt;br /&gt;
==== Sea Surface Temperature (SST) ====&lt;br /&gt;
&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[AVHRR]]&lt;br /&gt;
&lt;br /&gt;
==== High Resolution Data ====&lt;br /&gt;
&lt;br /&gt;
* [[IKONOS]]&lt;br /&gt;
* [[QuickBird]]&lt;br /&gt;
* [[WorldView]]&lt;br /&gt;
&lt;br /&gt;
See also, various [http://apollomapping.com/about-us/whitepapers Whitepapers] on High Resolution Satellite Imagery&lt;br /&gt;
&lt;br /&gt;
=== Orthophotos ===&lt;br /&gt;
&lt;br /&gt;
* see [[Orthorectification]]&lt;br /&gt;
* see [[Orthorectification digital camera|Ortho-rectification of oblique photographs]]&lt;br /&gt;
&lt;br /&gt;
== Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
See also [http://www-air.larc.nasa.gov/tools/predict.htm NASA LaRC Satellite Overpass Predictor]&lt;br /&gt;
&lt;br /&gt;
=== Geometric preprocessing/Georectification ===&lt;br /&gt;
&lt;br /&gt;
* Georectification tool is available from the File menu in the GUI.&lt;br /&gt;
* {{cmd|i.points}}, {{cmd|i.vpoints}} (scanned maps, satellite images)&lt;br /&gt;
* {{cmd|i.ortho.photo}} (aerial images)&lt;br /&gt;
&lt;br /&gt;
A multi-band image may be grouped and georectified with a single set of ground control points ({{cmd|i.group}}, {{cmd|i.target}}, {{cmd|i.rectify}}).&lt;br /&gt;
&lt;br /&gt;
See also the [[Georeferencing]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Radiometric  preprocessing ===&lt;br /&gt;
&lt;br /&gt;
* use {{cmd|r.mapcalc}} to apply gain/bias formula&lt;br /&gt;
* [[LANDSAT]]: you can also use {{cmd|i.landsat.toar}} &amp;lt;strike&amp;gt;from [[GRASS AddOns]]&amp;lt;/strike&amp;gt; (included since 6.4)&lt;br /&gt;
&lt;br /&gt;
=== Correction for atmospheric effects ===&lt;br /&gt;
&lt;br /&gt;
Visit the dedicated page on [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
==== Related Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{addonCmd|i.landsat.dehaze}}: simple dark-object/Tasseled Cap based haze minimization (from [[GRASS AddOns]])&lt;br /&gt;
* {{cmd|i.atcorr}}: more complex correction but based on atmospheric models&lt;br /&gt;
&lt;br /&gt;
=== Correction for topographic/terrain effects ===&lt;br /&gt;
&lt;br /&gt;
In rugged terrain, such correction might be useful to minimize negative effects.&lt;br /&gt;
&lt;br /&gt;
* simple &amp;quot;cosine correction&amp;quot; using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high)&lt;br /&gt;
* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor.&lt;br /&gt;
** '''Note,''' that for the sun's zenith (in degrees) parameter, the equation &amp;quot;'''Sun's Zenith''' = '''90''' - '''Sun's Elevation'''&amp;quot; is generally valid&lt;br /&gt;
&lt;br /&gt;
=== Cloud removal ===&lt;br /&gt;
&lt;br /&gt;
* with {{cmd|i.landsat.acca}}&lt;br /&gt;
&lt;br /&gt;
== Image classification ==&lt;br /&gt;
&lt;br /&gt;
See the dedicated [[Image classification]] page.&lt;br /&gt;
&lt;br /&gt;
== Image segmentation ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. &lt;br /&gt;
* {{AddonCmd|r.seg}}: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
* [[GRASS GSoC 2012 Image Segmentation|i.segment]]: Image Segmentation&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mfilter}}, {{cmd|r.neighbors}}&lt;br /&gt;
&lt;br /&gt;
== Fourier Transform ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.fft}}, {{cmd|i.ifft}}&lt;br /&gt;
* see also [[Image destriping]]&lt;br /&gt;
* see also [[Fourier transforms for multitemporal landscape analysis]]&lt;br /&gt;
&lt;br /&gt;
== Canonical Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.cca}}&lt;br /&gt;
&lt;br /&gt;
== Principal Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.pca}}&lt;br /&gt;
* see also [[Principal Components Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Texture ==&lt;br /&gt;
&lt;br /&gt;
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.texture}}: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis&lt;br /&gt;
&lt;br /&gt;
See [http://www.fp.ucalgary.ca/mhallbey/texture_calculations.htm here] and [http://murphylab.web.cmu.edu/publications/boland/boland_node26.html here] for the formulas to calculate texture. See also [http://wiki.landscapetoolbox.org/doku.php/remote_sensing_methods:canopy_texture_mapping canopy texture mapping].&lt;br /&gt;
&lt;br /&gt;
== Spectral unmixing ==&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.unmix}} is used to perform Spectral Unmixing ([https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.spec.unmix/description.html manual])&lt;br /&gt;
* {{AddonSrc|imagery|i.spec.unmix|version=7}}: version for GRASS GIS 7&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.series}}&lt;br /&gt;
* see also [[Time series]]&lt;br /&gt;
* see also [[Time series development]]&lt;br /&gt;
&lt;br /&gt;
== Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Radiometric Enhancements ===&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* Decorrelation stretching with {{cmd|r.colors}} or {{cmd|r.mapcalc}}&lt;br /&gt;
* Density slicing with {{cmd|r.colors}}&lt;br /&gt;
* [[Principal Component Analysis]] with {{cmd|i.pca}}&lt;br /&gt;
&lt;br /&gt;
=== Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation ===&lt;br /&gt;
&lt;br /&gt;
Image fusion and Pansharpening:&lt;br /&gt;
* {{cmd|i.rgb.his}} and {{cmd|i.his.rgb}}: can be used for image fusion&lt;br /&gt;
* {{cmd|i.fusion.brovey}}: image fusion of pan-chromatic and color channels&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}}: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
Segmentation:&lt;br /&gt;
* {{AddonCmd|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. (Addons)&lt;br /&gt;
* {{cmd|i.segment|version=70}}: Identifies segments (objects) from imagery data (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
=== Optimal channel selection for color composites ===&lt;br /&gt;
* {{cmd|i.oif}}&lt;br /&gt;
&lt;br /&gt;
== Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
== Ideas collection for improving GRASS' Image processing capabilities ==&lt;br /&gt;
&lt;br /&gt;
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.&lt;br /&gt;
&lt;br /&gt;
=== Spectral unmixing ideas ===&lt;br /&gt;
&lt;br /&gt;
* Make use of the [http://spectralpython.sourceforge.net/ Spectral Python] (SPy) which is a pure Python module for processing hyperspectral image data&lt;br /&gt;
&lt;br /&gt;
=== Spectral angle mapping ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.sam}}&lt;br /&gt;
&lt;br /&gt;
=== Geocoding ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.homography}}: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)&lt;br /&gt;
* support splines from GDAL (see [[GRASS_AddOns#Imagery_add-ons]])&lt;br /&gt;
* New [[WxGUI#Georectifier|Georectifier]]: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html&lt;br /&gt;
&lt;br /&gt;
=== Image matching ideas ===&lt;br /&gt;
* {{AddonCmd|i.points.auto}}: automated search of GCPs based on FFT correlation (as improved i.points)&lt;br /&gt;
: ''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 [http://www.grassbook.org/neteler/papers/neteler2005_IJG_051-061_draft.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=== Image classification ideas ===&lt;br /&gt;
&lt;br /&gt;
* [http://mpa.itc.it/merler/index.html#ml pr: C code for classification problems]&lt;br /&gt;
* GRASS implementation: i.pr.* source code is available [http://trac.osgeo.org/grass/browser/grass-addons/grass6/imagery/i.pr here])&lt;br /&gt;
&lt;br /&gt;
=== Stereo ideas ===&lt;br /&gt;
&lt;br /&gt;
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.&lt;br /&gt;
* http://grass.osgeo.org/outgoing/grass5/stereo-0.2b.tar.gz&lt;br /&gt;
* [http://grass.osgeo.org/gdp/stereo-grass/index.html Stereo Tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Bundle block adjustment ===&lt;br /&gt;
&lt;br /&gt;
Needed to orthorectify a series aerial images taken sequentially with overlap. &amp;quot;Histoical&amp;quot; method which is nowadays interesting for UAV flights with octocopters and such.&lt;br /&gt;
&lt;br /&gt;
Automatec GPC search could be done by &amp;quot;auto-sift&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Available: Octave code which prepares input to an {{cmd|i.ortho.photo}} batch job (contact Markus Neteler).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt;Lidar LAS format&amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org&lt;br /&gt;
&lt;br /&gt;
    las2txt | r.in.xyz in=- fs=&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Update:'' {{cmd|r.in.lidar|version=70}} and {{cmd|v.in.lidar|version=70}} implemented by Markus Metz (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
(see [[LIDAR]])&lt;br /&gt;
&lt;br /&gt;
=== Improving the existing code ===&lt;br /&gt;
&lt;br /&gt;
It might be sensible to merge the various image libraries:&lt;br /&gt;
&lt;br /&gt;
* GRASS 6 standard libs:&lt;br /&gt;
** lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)&lt;br /&gt;
** imagery/i.ortho.photo/libes/: standard lib, in use ({{cmd|i.ortho.photo}}, photo.*)&lt;br /&gt;
* GRASS 5 (! only) image3 lib:&lt;br /&gt;
** [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/libes/image3 libes/image3/]: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data ([http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.points3 i.points3], [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.rectify3 i.rectify3])&lt;br /&gt;
* GRASS 5/6 image proc commands:&lt;br /&gt;
** merge of {{cmd|i.points}}, {{cmd|i.vpoints}}, i.points3 (see above)&lt;br /&gt;
** merge of {{cmd|i.rectify}} and i.rectify3 (see above)&lt;br /&gt;
** &amp;lt;strike&amp;gt;addition of new resampling algorithms such as bilinear, cubic convolution (take from {{cmd|r.proj}} or {{cmd|r.resamp.aggreg}})&amp;lt;/strike&amp;gt; (done 10/2010)&lt;br /&gt;
** add other warping methods (maybe lanczos or thin splines from GDAL?): [[Addons#i.warp]]&lt;br /&gt;
** implement/finish linewise ortho-rectification of satellite data&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+image+processing &amp;quot;GRASS GIS Image processing&amp;quot;] - Google Scholar&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+remote+sensing &amp;quot;GRASS GIS Remote Sensing&amp;quot;] - Google Scholar&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19678</id>
		<title>Image processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19678"/>
		<updated>2013-09-03T07:42:20Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: Fourier transforms for multitemporal analysis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== General introduction ===&lt;br /&gt;
&lt;br /&gt;
'''Digital numbers and physical values (reflection/radiance-at-sensor):'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;at-satellite&amp;quot;, 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 &amp;lt;tt&amp;gt;(y = a * x + b)&amp;lt;/tt&amp;gt; to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula &amp;lt;tt&amp;gt;(x = (y - b) / a)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS module {{cmd|i.landsat.toar}} easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is {{cmd|i.aster.toar}}. For other satellites, {{cmd|r.mapcalc}} can be employed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Reflection/radiance-at-sensor and surface reflectance'''&lt;br /&gt;
&lt;br /&gt;
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 {{cmd|i.landsat.toar}}, using the DOS correction method. The more accurate way is using {{cmd|i.atcorr}} (which works for many satellite sensors). The atmospherically corrected sensor data represent surface {{wikipedia|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.&lt;br /&gt;
&lt;br /&gt;
=== Image processing in GRASS GIS ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|imageryintro}}: A short introduction to image processing in GRASS 6&lt;br /&gt;
* Full [http://grass.osgeo.org/gdp/imagery/grass4_image_processing.pdf GRASS 4.0 Image Processing manual] (PDF, 47 pages)&lt;br /&gt;
* {{cmd|imagery}}: Imagery module help pages&lt;br /&gt;
&lt;br /&gt;
* Data import is generally handled by the {{cmd|r.in.gdal}} module&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
* The [http://grass.osgeo.org/screenshots/remote-sensing/ imagery screenshots] page&lt;br /&gt;
&lt;br /&gt;
== Importing ==&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
=== Satellite Data ===&lt;br /&gt;
&lt;br /&gt;
==== Ocean Color ====&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[MODIS#SeaWiFS|SeaWiFS]]&lt;br /&gt;
&lt;br /&gt;
==== Sea Surface Temperature (SST) ====&lt;br /&gt;
&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[AVHRR]]&lt;br /&gt;
&lt;br /&gt;
==== High Resolution Data ====&lt;br /&gt;
&lt;br /&gt;
* [[IKONOS]]&lt;br /&gt;
* [[QuickBird]]&lt;br /&gt;
* [[WorldView]]&lt;br /&gt;
&lt;br /&gt;
See also, various [http://apollomapping.com/about-us/whitepapers Whitepapers] on High Resolution Satellite Imagery&lt;br /&gt;
&lt;br /&gt;
=== Orthophotos ===&lt;br /&gt;
&lt;br /&gt;
* see [[Orthorectification]]&lt;br /&gt;
* see [[Orthorectification digital camera|Ortho-rectification of oblique photographs]]&lt;br /&gt;
&lt;br /&gt;
== Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
See also [http://www-air.larc.nasa.gov/tools/predict.htm NASA LaRC Satellite Overpass Predictor]&lt;br /&gt;
&lt;br /&gt;
=== Geometric preprocessing/Georectification ===&lt;br /&gt;
&lt;br /&gt;
* Georectification tool is available from the File menu in the GUI.&lt;br /&gt;
* {{cmd|i.points}}, {{cmd|i.vpoints}} (scanned maps, satellite images)&lt;br /&gt;
* {{cmd|i.ortho.photo}} (aerial images)&lt;br /&gt;
&lt;br /&gt;
A multi-band image may be grouped and georectified with a single set of ground control points ({{cmd|i.group}}, {{cmd|i.target}}, {{cmd|i.rectify}}).&lt;br /&gt;
&lt;br /&gt;
See also the [[Georeferencing]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Radiometric  preprocessing ===&lt;br /&gt;
&lt;br /&gt;
* use {{cmd|r.mapcalc}} to apply gain/bias formula&lt;br /&gt;
* [[LANDSAT]]: you can also use {{cmd|i.landsat.toar}} &amp;lt;strike&amp;gt;from [[GRASS AddOns]]&amp;lt;/strike&amp;gt; (included since 6.4)&lt;br /&gt;
&lt;br /&gt;
=== Correction for atmospheric effects ===&lt;br /&gt;
&lt;br /&gt;
Visit the dedicated page on [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
==== Related Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{addonCmd|i.landsat.dehaze}}: simple dark-object/Tasseled Cap based haze minimization (from [[GRASS AddOns]])&lt;br /&gt;
* {{cmd|i.atcorr}}: more complex correction but based on atmospheric models&lt;br /&gt;
&lt;br /&gt;
=== Correction for topographic/terrain effects ===&lt;br /&gt;
&lt;br /&gt;
In rugged terrain, such correction might be useful to minimize negative effects.&lt;br /&gt;
&lt;br /&gt;
* simple &amp;quot;cosine correction&amp;quot; using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high)&lt;br /&gt;
* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor.&lt;br /&gt;
** '''Note,''' that for the sun's zenith (in degrees) parameter, the equation &amp;quot;'''Sun's Zenith''' = '''90''' - '''Sun's Elevation'''&amp;quot; is generally valid&lt;br /&gt;
&lt;br /&gt;
=== Cloud removal ===&lt;br /&gt;
&lt;br /&gt;
* with {{cmd|i.landsat.acca}}&lt;br /&gt;
&lt;br /&gt;
== Image classification ==&lt;br /&gt;
&lt;br /&gt;
See the dedicated [[Image classification]] page.&lt;br /&gt;
&lt;br /&gt;
== Image segmentation ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. &lt;br /&gt;
* {{AddonCmd|r.seg}}: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
* [[GRASS GSoC 2012 Image Segmentation|i.segment]]: Image Segmentation&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mfilter}}, {{cmd|r.neighbors}}&lt;br /&gt;
&lt;br /&gt;
== Fourier Transform ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.fft}}, {{cmd|i.ifft}}&lt;br /&gt;
* see also [[Image destriping]]&lt;br /&gt;
* see also [[Fourier transforms for multitemporal analysis]]&lt;br /&gt;
&lt;br /&gt;
== Canonical Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.cca}}&lt;br /&gt;
&lt;br /&gt;
== Principal Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.pca}}&lt;br /&gt;
* see also [[Principal Components Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Texture ==&lt;br /&gt;
&lt;br /&gt;
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.texture}}: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis&lt;br /&gt;
&lt;br /&gt;
See [http://www.fp.ucalgary.ca/mhallbey/texture_calculations.htm here] and [http://murphylab.web.cmu.edu/publications/boland/boland_node26.html here] for the formulas to calculate texture. See also [http://wiki.landscapetoolbox.org/doku.php/remote_sensing_methods:canopy_texture_mapping canopy texture mapping].&lt;br /&gt;
&lt;br /&gt;
== Spectral unmixing ==&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.unmix}} is used to perform Spectral Unmixing ([https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.spec.unmix/description.html manual])&lt;br /&gt;
* {{AddonSrc|imagery|i.spec.unmix|version=7}}: version for GRASS GIS 7&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.series}}&lt;br /&gt;
* see also [[Time series]]&lt;br /&gt;
* see also [[Time series development]]&lt;br /&gt;
&lt;br /&gt;
== Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Radiometric Enhancements ===&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* Decorrelation stretching with {{cmd|r.colors}} or {{cmd|r.mapcalc}}&lt;br /&gt;
* Density slicing with {{cmd|r.colors}}&lt;br /&gt;
* [[Principal Component Analysis]] with {{cmd|i.pca}}&lt;br /&gt;
&lt;br /&gt;
=== Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation ===&lt;br /&gt;
&lt;br /&gt;
Image fusion and Pansharpening:&lt;br /&gt;
* {{cmd|i.rgb.his}} and {{cmd|i.his.rgb}}: can be used for image fusion&lt;br /&gt;
* {{cmd|i.fusion.brovey}}: image fusion of pan-chromatic and color channels&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}}: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
Segmentation:&lt;br /&gt;
* {{AddonCmd|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. (Addons)&lt;br /&gt;
* {{cmd|i.segment|version=70}}: Identifies segments (objects) from imagery data (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
=== Optimal channel selection for color composites ===&lt;br /&gt;
* {{cmd|i.oif}}&lt;br /&gt;
&lt;br /&gt;
== Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
== Ideas collection for improving GRASS' Image processing capabilities ==&lt;br /&gt;
&lt;br /&gt;
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.&lt;br /&gt;
&lt;br /&gt;
=== Spectral unmixing ideas ===&lt;br /&gt;
&lt;br /&gt;
* Make use of the [http://spectralpython.sourceforge.net/ Spectral Python] (SPy) which is a pure Python module for processing hyperspectral image data&lt;br /&gt;
&lt;br /&gt;
=== Spectral angle mapping ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.sam}}&lt;br /&gt;
&lt;br /&gt;
=== Geocoding ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.homography}}: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)&lt;br /&gt;
* support splines from GDAL (see [[GRASS_AddOns#Imagery_add-ons]])&lt;br /&gt;
* New [[WxGUI#Georectifier|Georectifier]]: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html&lt;br /&gt;
&lt;br /&gt;
=== Image matching ideas ===&lt;br /&gt;
* {{AddonCmd|i.points.auto}}: automated search of GCPs based on FFT correlation (as improved i.points)&lt;br /&gt;
: ''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 [http://www.grassbook.org/neteler/papers/neteler2005_IJG_051-061_draft.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=== Image classification ideas ===&lt;br /&gt;
&lt;br /&gt;
* [http://mpa.itc.it/merler/index.html#ml pr: C code for classification problems]&lt;br /&gt;
* GRASS implementation: i.pr.* source code is available [http://trac.osgeo.org/grass/browser/grass-addons/grass6/imagery/i.pr here])&lt;br /&gt;
&lt;br /&gt;
=== Stereo ideas ===&lt;br /&gt;
&lt;br /&gt;
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.&lt;br /&gt;
* http://grass.osgeo.org/outgoing/grass5/stereo-0.2b.tar.gz&lt;br /&gt;
* [http://grass.osgeo.org/gdp/stereo-grass/index.html Stereo Tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Bundle block adjustment ===&lt;br /&gt;
&lt;br /&gt;
Needed to orthorectify a series aerial images taken sequentially with overlap. &amp;quot;Histoical&amp;quot; method which is nowadays interesting for UAV flights with octocopters and such.&lt;br /&gt;
&lt;br /&gt;
Automatec GPC search could be done by &amp;quot;auto-sift&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Available: Octave code which prepares input to an {{cmd|i.ortho.photo}} batch job (contact Markus Neteler).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt;Lidar LAS format&amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org&lt;br /&gt;
&lt;br /&gt;
    las2txt | r.in.xyz in=- fs=&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Update:'' {{cmd|r.in.lidar|version=70}} and {{cmd|v.in.lidar|version=70}} implemented by Markus Metz (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
(see [[LIDAR]])&lt;br /&gt;
&lt;br /&gt;
=== Improving the existing code ===&lt;br /&gt;
&lt;br /&gt;
It might be sensible to merge the various image libraries:&lt;br /&gt;
&lt;br /&gt;
* GRASS 6 standard libs:&lt;br /&gt;
** lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)&lt;br /&gt;
** imagery/i.ortho.photo/libes/: standard lib, in use ({{cmd|i.ortho.photo}}, photo.*)&lt;br /&gt;
* GRASS 5 (! only) image3 lib:&lt;br /&gt;
** [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/libes/image3 libes/image3/]: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data ([http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.points3 i.points3], [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.rectify3 i.rectify3])&lt;br /&gt;
* GRASS 5/6 image proc commands:&lt;br /&gt;
** merge of {{cmd|i.points}}, {{cmd|i.vpoints}}, i.points3 (see above)&lt;br /&gt;
** merge of {{cmd|i.rectify}} and i.rectify3 (see above)&lt;br /&gt;
** &amp;lt;strike&amp;gt;addition of new resampling algorithms such as bilinear, cubic convolution (take from {{cmd|r.proj}} or {{cmd|r.resamp.aggreg}})&amp;lt;/strike&amp;gt; (done 10/2010)&lt;br /&gt;
** add other warping methods (maybe lanczos or thin splines from GDAL?): [[Addons#i.warp]]&lt;br /&gt;
** implement/finish linewise ortho-rectification of satellite data&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+image+processing &amp;quot;GRASS GIS Image processing&amp;quot;] - Google Scholar&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+remote+sensing &amp;quot;GRASS GIS Remote Sensing&amp;quot;] - Google Scholar&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19677</id>
		<title>Image processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19677"/>
		<updated>2013-09-03T07:41:22Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: /* Fourier Transform */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== General introduction ===&lt;br /&gt;
&lt;br /&gt;
'''Digital numbers and physical values (reflection/radiance-at-sensor):'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;at-satellite&amp;quot;, 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 &amp;lt;tt&amp;gt;(y = a * x + b)&amp;lt;/tt&amp;gt; to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula &amp;lt;tt&amp;gt;(x = (y - b) / a)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS module {{cmd|i.landsat.toar}} easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is {{cmd|i.aster.toar}}. For other satellites, {{cmd|r.mapcalc}} can be employed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Reflection/radiance-at-sensor and surface reflectance'''&lt;br /&gt;
&lt;br /&gt;
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 {{cmd|i.landsat.toar}}, using the DOS correction method. The more accurate way is using {{cmd|i.atcorr}} (which works for many satellite sensors). The atmospherically corrected sensor data represent surface {{wikipedia|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.&lt;br /&gt;
&lt;br /&gt;
=== Image processing in GRASS GIS ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|imageryintro}}: A short introduction to image processing in GRASS 6&lt;br /&gt;
* Full [http://grass.osgeo.org/gdp/imagery/grass4_image_processing.pdf GRASS 4.0 Image Processing manual] (PDF, 47 pages)&lt;br /&gt;
* {{cmd|imagery}}: Imagery module help pages&lt;br /&gt;
&lt;br /&gt;
* Data import is generally handled by the {{cmd|r.in.gdal}} module&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
* The [http://grass.osgeo.org/screenshots/remote-sensing/ imagery screenshots] page&lt;br /&gt;
&lt;br /&gt;
== Importing ==&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
=== Satellite Data ===&lt;br /&gt;
&lt;br /&gt;
==== Ocean Color ====&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[MODIS#SeaWiFS|SeaWiFS]]&lt;br /&gt;
&lt;br /&gt;
==== Sea Surface Temperature (SST) ====&lt;br /&gt;
&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[AVHRR]]&lt;br /&gt;
&lt;br /&gt;
==== High Resolution Data ====&lt;br /&gt;
&lt;br /&gt;
* [[IKONOS]]&lt;br /&gt;
* [[QuickBird]]&lt;br /&gt;
* [[WorldView]]&lt;br /&gt;
&lt;br /&gt;
See also, various [http://apollomapping.com/about-us/whitepapers Whitepapers] on High Resolution Satellite Imagery&lt;br /&gt;
&lt;br /&gt;
=== Orthophotos ===&lt;br /&gt;
&lt;br /&gt;
* see [[Orthorectification]]&lt;br /&gt;
* see [[Orthorectification digital camera|Ortho-rectification of oblique photographs]]&lt;br /&gt;
&lt;br /&gt;
== Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
See also [http://www-air.larc.nasa.gov/tools/predict.htm NASA LaRC Satellite Overpass Predictor]&lt;br /&gt;
&lt;br /&gt;
=== Geometric preprocessing/Georectification ===&lt;br /&gt;
&lt;br /&gt;
* Georectification tool is available from the File menu in the GUI.&lt;br /&gt;
* {{cmd|i.points}}, {{cmd|i.vpoints}} (scanned maps, satellite images)&lt;br /&gt;
* {{cmd|i.ortho.photo}} (aerial images)&lt;br /&gt;
&lt;br /&gt;
A multi-band image may be grouped and georectified with a single set of ground control points ({{cmd|i.group}}, {{cmd|i.target}}, {{cmd|i.rectify}}).&lt;br /&gt;
&lt;br /&gt;
See also the [[Georeferencing]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Radiometric  preprocessing ===&lt;br /&gt;
&lt;br /&gt;
* use {{cmd|r.mapcalc}} to apply gain/bias formula&lt;br /&gt;
* [[LANDSAT]]: you can also use {{cmd|i.landsat.toar}} &amp;lt;strike&amp;gt;from [[GRASS AddOns]]&amp;lt;/strike&amp;gt; (included since 6.4)&lt;br /&gt;
&lt;br /&gt;
=== Correction for atmospheric effects ===&lt;br /&gt;
&lt;br /&gt;
Visit the dedicated page on [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
==== Related Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{addonCmd|i.landsat.dehaze}}: simple dark-object/Tasseled Cap based haze minimization (from [[GRASS AddOns]])&lt;br /&gt;
* {{cmd|i.atcorr}}: more complex correction but based on atmospheric models&lt;br /&gt;
&lt;br /&gt;
=== Correction for topographic/terrain effects ===&lt;br /&gt;
&lt;br /&gt;
In rugged terrain, such correction might be useful to minimize negative effects.&lt;br /&gt;
&lt;br /&gt;
* simple &amp;quot;cosine correction&amp;quot; using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high)&lt;br /&gt;
* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor.&lt;br /&gt;
** '''Note,''' that for the sun's zenith (in degrees) parameter, the equation &amp;quot;'''Sun's Zenith''' = '''90''' - '''Sun's Elevation'''&amp;quot; is generally valid&lt;br /&gt;
&lt;br /&gt;
=== Cloud removal ===&lt;br /&gt;
&lt;br /&gt;
* with {{cmd|i.landsat.acca}}&lt;br /&gt;
&lt;br /&gt;
== Image classification ==&lt;br /&gt;
&lt;br /&gt;
See the dedicated [[Image classification]] page.&lt;br /&gt;
&lt;br /&gt;
== Image segmentation ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. &lt;br /&gt;
* {{AddonCmd|r.seg}}: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
* [[GRASS GSoC 2012 Image Segmentation|i.segment]]: Image Segmentation&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mfilter}}, {{cmd|r.neighbors}}&lt;br /&gt;
&lt;br /&gt;
== Fourier Transform ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.fft}}, {{cmd|i.ifft}}&lt;br /&gt;
* see also [[Image destriping]]&lt;br /&gt;
&lt;br /&gt;
== Canonical Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.cca}}&lt;br /&gt;
&lt;br /&gt;
== Principal Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.pca}}&lt;br /&gt;
* see also [[Principal Components Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Texture ==&lt;br /&gt;
&lt;br /&gt;
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.texture}}: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis&lt;br /&gt;
&lt;br /&gt;
See [http://www.fp.ucalgary.ca/mhallbey/texture_calculations.htm here] and [http://murphylab.web.cmu.edu/publications/boland/boland_node26.html here] for the formulas to calculate texture. See also [http://wiki.landscapetoolbox.org/doku.php/remote_sensing_methods:canopy_texture_mapping canopy texture mapping].&lt;br /&gt;
&lt;br /&gt;
== Spectral unmixing ==&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.unmix}} is used to perform Spectral Unmixing ([https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.spec.unmix/description.html manual])&lt;br /&gt;
* {{AddonSrc|imagery|i.spec.unmix|version=7}}: version for GRASS GIS 7&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.series}}&lt;br /&gt;
* see also [[Time series]]&lt;br /&gt;
* see also [[Time series development]]&lt;br /&gt;
&lt;br /&gt;
== Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Radiometric Enhancements ===&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* Decorrelation stretching with {{cmd|r.colors}} or {{cmd|r.mapcalc}}&lt;br /&gt;
* Density slicing with {{cmd|r.colors}}&lt;br /&gt;
* [[Principal Component Analysis]] with {{cmd|i.pca}}&lt;br /&gt;
&lt;br /&gt;
=== Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation ===&lt;br /&gt;
&lt;br /&gt;
Image fusion and Pansharpening:&lt;br /&gt;
* {{cmd|i.rgb.his}} and {{cmd|i.his.rgb}}: can be used for image fusion&lt;br /&gt;
* {{cmd|i.fusion.brovey}}: image fusion of pan-chromatic and color channels&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}}: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
Segmentation:&lt;br /&gt;
* {{AddonCmd|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. (Addons)&lt;br /&gt;
* {{cmd|i.segment|version=70}}: Identifies segments (objects) from imagery data (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
=== Optimal channel selection for color composites ===&lt;br /&gt;
* {{cmd|i.oif}}&lt;br /&gt;
&lt;br /&gt;
== Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
== Ideas collection for improving GRASS' Image processing capabilities ==&lt;br /&gt;
&lt;br /&gt;
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.&lt;br /&gt;
&lt;br /&gt;
=== Spectral unmixing ideas ===&lt;br /&gt;
&lt;br /&gt;
* Make use of the [http://spectralpython.sourceforge.net/ Spectral Python] (SPy) which is a pure Python module for processing hyperspectral image data&lt;br /&gt;
&lt;br /&gt;
=== Spectral angle mapping ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.sam}}&lt;br /&gt;
&lt;br /&gt;
=== Geocoding ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.homography}}: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)&lt;br /&gt;
* support splines from GDAL (see [[GRASS_AddOns#Imagery_add-ons]])&lt;br /&gt;
* New [[WxGUI#Georectifier|Georectifier]]: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html&lt;br /&gt;
&lt;br /&gt;
=== Image matching ideas ===&lt;br /&gt;
* {{AddonCmd|i.points.auto}}: automated search of GCPs based on FFT correlation (as improved i.points)&lt;br /&gt;
: ''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 [http://www.grassbook.org/neteler/papers/neteler2005_IJG_051-061_draft.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=== Image classification ideas ===&lt;br /&gt;
&lt;br /&gt;
* [http://mpa.itc.it/merler/index.html#ml pr: C code for classification problems]&lt;br /&gt;
* GRASS implementation: i.pr.* source code is available [http://trac.osgeo.org/grass/browser/grass-addons/grass6/imagery/i.pr here])&lt;br /&gt;
&lt;br /&gt;
=== Stereo ideas ===&lt;br /&gt;
&lt;br /&gt;
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.&lt;br /&gt;
* http://grass.osgeo.org/outgoing/grass5/stereo-0.2b.tar.gz&lt;br /&gt;
* [http://grass.osgeo.org/gdp/stereo-grass/index.html Stereo Tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Bundle block adjustment ===&lt;br /&gt;
&lt;br /&gt;
Needed to orthorectify a series aerial images taken sequentially with overlap. &amp;quot;Histoical&amp;quot; method which is nowadays interesting for UAV flights with octocopters and such.&lt;br /&gt;
&lt;br /&gt;
Automatec GPC search could be done by &amp;quot;auto-sift&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Available: Octave code which prepares input to an {{cmd|i.ortho.photo}} batch job (contact Markus Neteler).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt;Lidar LAS format&amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org&lt;br /&gt;
&lt;br /&gt;
    las2txt | r.in.xyz in=- fs=&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Update:'' {{cmd|r.in.lidar|version=70}} and {{cmd|v.in.lidar|version=70}} implemented by Markus Metz (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
(see [[LIDAR]])&lt;br /&gt;
&lt;br /&gt;
=== Improving the existing code ===&lt;br /&gt;
&lt;br /&gt;
It might be sensible to merge the various image libraries:&lt;br /&gt;
&lt;br /&gt;
* GRASS 6 standard libs:&lt;br /&gt;
** lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)&lt;br /&gt;
** imagery/i.ortho.photo/libes/: standard lib, in use ({{cmd|i.ortho.photo}}, photo.*)&lt;br /&gt;
* GRASS 5 (! only) image3 lib:&lt;br /&gt;
** [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/libes/image3 libes/image3/]: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data ([http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.points3 i.points3], [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.rectify3 i.rectify3])&lt;br /&gt;
* GRASS 5/6 image proc commands:&lt;br /&gt;
** merge of {{cmd|i.points}}, {{cmd|i.vpoints}}, i.points3 (see above)&lt;br /&gt;
** merge of {{cmd|i.rectify}} and i.rectify3 (see above)&lt;br /&gt;
** &amp;lt;strike&amp;gt;addition of new resampling algorithms such as bilinear, cubic convolution (take from {{cmd|r.proj}} or {{cmd|r.resamp.aggreg}})&amp;lt;/strike&amp;gt; (done 10/2010)&lt;br /&gt;
** add other warping methods (maybe lanczos or thin splines from GDAL?): [[Addons#i.warp]]&lt;br /&gt;
** implement/finish linewise ortho-rectification of satellite data&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+image+processing &amp;quot;GRASS GIS Image processing&amp;quot;] - Google Scholar&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+remote+sensing &amp;quot;GRASS GIS Remote Sensing&amp;quot;] - Google Scholar&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19676</id>
		<title>Image processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19676"/>
		<updated>2013-09-03T07:30:23Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: /* Fourier Transform */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== General introduction ===&lt;br /&gt;
&lt;br /&gt;
'''Digital numbers and physical values (reflection/radiance-at-sensor):'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;at-satellite&amp;quot;, 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 &amp;lt;tt&amp;gt;(y = a * x + b)&amp;lt;/tt&amp;gt; to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula &amp;lt;tt&amp;gt;(x = (y - b) / a)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS module {{cmd|i.landsat.toar}} easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is {{cmd|i.aster.toar}}. For other satellites, {{cmd|r.mapcalc}} can be employed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Reflection/radiance-at-sensor and surface reflectance'''&lt;br /&gt;
&lt;br /&gt;
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 {{cmd|i.landsat.toar}}, using the DOS correction method. The more accurate way is using {{cmd|i.atcorr}} (which works for many satellite sensors). The atmospherically corrected sensor data represent surface {{wikipedia|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.&lt;br /&gt;
&lt;br /&gt;
=== Image processing in GRASS GIS ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|imageryintro}}: A short introduction to image processing in GRASS 6&lt;br /&gt;
* Full [http://grass.osgeo.org/gdp/imagery/grass4_image_processing.pdf GRASS 4.0 Image Processing manual] (PDF, 47 pages)&lt;br /&gt;
* {{cmd|imagery}}: Imagery module help pages&lt;br /&gt;
&lt;br /&gt;
* Data import is generally handled by the {{cmd|r.in.gdal}} module&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
* The [http://grass.osgeo.org/screenshots/remote-sensing/ imagery screenshots] page&lt;br /&gt;
&lt;br /&gt;
== Importing ==&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
=== Satellite Data ===&lt;br /&gt;
&lt;br /&gt;
==== Ocean Color ====&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[MODIS#SeaWiFS|SeaWiFS]]&lt;br /&gt;
&lt;br /&gt;
==== Sea Surface Temperature (SST) ====&lt;br /&gt;
&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[AVHRR]]&lt;br /&gt;
&lt;br /&gt;
==== High Resolution Data ====&lt;br /&gt;
&lt;br /&gt;
* [[IKONOS]]&lt;br /&gt;
* [[QuickBird]]&lt;br /&gt;
* [[WorldView]]&lt;br /&gt;
&lt;br /&gt;
See also, various [http://apollomapping.com/about-us/whitepapers Whitepapers] on High Resolution Satellite Imagery&lt;br /&gt;
&lt;br /&gt;
=== Orthophotos ===&lt;br /&gt;
&lt;br /&gt;
* see [[Orthorectification]]&lt;br /&gt;
* see [[Orthorectification digital camera|Ortho-rectification of oblique photographs]]&lt;br /&gt;
&lt;br /&gt;
== Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
See also [http://www-air.larc.nasa.gov/tools/predict.htm NASA LaRC Satellite Overpass Predictor]&lt;br /&gt;
&lt;br /&gt;
=== Geometric preprocessing/Georectification ===&lt;br /&gt;
&lt;br /&gt;
* Georectification tool is available from the File menu in the GUI.&lt;br /&gt;
* {{cmd|i.points}}, {{cmd|i.vpoints}} (scanned maps, satellite images)&lt;br /&gt;
* {{cmd|i.ortho.photo}} (aerial images)&lt;br /&gt;
&lt;br /&gt;
A multi-band image may be grouped and georectified with a single set of ground control points ({{cmd|i.group}}, {{cmd|i.target}}, {{cmd|i.rectify}}).&lt;br /&gt;
&lt;br /&gt;
See also the [[Georeferencing]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Radiometric  preprocessing ===&lt;br /&gt;
&lt;br /&gt;
* use {{cmd|r.mapcalc}} to apply gain/bias formula&lt;br /&gt;
* [[LANDSAT]]: you can also use {{cmd|i.landsat.toar}} &amp;lt;strike&amp;gt;from [[GRASS AddOns]]&amp;lt;/strike&amp;gt; (included since 6.4)&lt;br /&gt;
&lt;br /&gt;
=== Correction for atmospheric effects ===&lt;br /&gt;
&lt;br /&gt;
Visit the dedicated page on [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
==== Related Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{addonCmd|i.landsat.dehaze}}: simple dark-object/Tasseled Cap based haze minimization (from [[GRASS AddOns]])&lt;br /&gt;
* {{cmd|i.atcorr}}: more complex correction but based on atmospheric models&lt;br /&gt;
&lt;br /&gt;
=== Correction for topographic/terrain effects ===&lt;br /&gt;
&lt;br /&gt;
In rugged terrain, such correction might be useful to minimize negative effects.&lt;br /&gt;
&lt;br /&gt;
* simple &amp;quot;cosine correction&amp;quot; using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high)&lt;br /&gt;
* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor.&lt;br /&gt;
** '''Note,''' that for the sun's zenith (in degrees) parameter, the equation &amp;quot;'''Sun's Zenith''' = '''90''' - '''Sun's Elevation'''&amp;quot; is generally valid&lt;br /&gt;
&lt;br /&gt;
=== Cloud removal ===&lt;br /&gt;
&lt;br /&gt;
* with {{cmd|i.landsat.acca}}&lt;br /&gt;
&lt;br /&gt;
== Image classification ==&lt;br /&gt;
&lt;br /&gt;
See the dedicated [[Image classification]] page.&lt;br /&gt;
&lt;br /&gt;
== Image segmentation ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. &lt;br /&gt;
* {{AddonCmd|r.seg}}: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
* [[GRASS GSoC 2012 Image Segmentation|i.segment]]: Image Segmentation&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mfilter}}, {{cmd|r.neighbors}}&lt;br /&gt;
&lt;br /&gt;
== Fourier Transform ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.fft}}, {{cmd|i.ifft}}&lt;br /&gt;
* see also [[Image destriping]]&lt;br /&gt;
* see also [[Fourier transforms for multitemporal analysis]]&lt;br /&gt;
&lt;br /&gt;
== Canonical Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.cca}}&lt;br /&gt;
&lt;br /&gt;
== Principal Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.pca}}&lt;br /&gt;
* see also [[Principal Components Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Texture ==&lt;br /&gt;
&lt;br /&gt;
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.texture}}: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis&lt;br /&gt;
&lt;br /&gt;
See [http://www.fp.ucalgary.ca/mhallbey/texture_calculations.htm here] and [http://murphylab.web.cmu.edu/publications/boland/boland_node26.html here] for the formulas to calculate texture. See also [http://wiki.landscapetoolbox.org/doku.php/remote_sensing_methods:canopy_texture_mapping canopy texture mapping].&lt;br /&gt;
&lt;br /&gt;
== Spectral unmixing ==&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.unmix}} is used to perform Spectral Unmixing ([https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.spec.unmix/description.html manual])&lt;br /&gt;
* {{AddonSrc|imagery|i.spec.unmix|version=7}}: version for GRASS GIS 7&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.series}}&lt;br /&gt;
* see also [[Time series]]&lt;br /&gt;
* see also [[Time series development]]&lt;br /&gt;
&lt;br /&gt;
== Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Radiometric Enhancements ===&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* Decorrelation stretching with {{cmd|r.colors}} or {{cmd|r.mapcalc}}&lt;br /&gt;
* Density slicing with {{cmd|r.colors}}&lt;br /&gt;
* [[Principal Component Analysis]] with {{cmd|i.pca}}&lt;br /&gt;
&lt;br /&gt;
=== Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation ===&lt;br /&gt;
&lt;br /&gt;
Image fusion and Pansharpening:&lt;br /&gt;
* {{cmd|i.rgb.his}} and {{cmd|i.his.rgb}}: can be used for image fusion&lt;br /&gt;
* {{cmd|i.fusion.brovey}}: image fusion of pan-chromatic and color channels&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}}: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
Segmentation:&lt;br /&gt;
* {{AddonCmd|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. (Addons)&lt;br /&gt;
* {{cmd|i.segment|version=70}}: Identifies segments (objects) from imagery data (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
=== Optimal channel selection for color composites ===&lt;br /&gt;
* {{cmd|i.oif}}&lt;br /&gt;
&lt;br /&gt;
== Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
== Ideas collection for improving GRASS' Image processing capabilities ==&lt;br /&gt;
&lt;br /&gt;
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.&lt;br /&gt;
&lt;br /&gt;
=== Spectral unmixing ideas ===&lt;br /&gt;
&lt;br /&gt;
* Make use of the [http://spectralpython.sourceforge.net/ Spectral Python] (SPy) which is a pure Python module for processing hyperspectral image data&lt;br /&gt;
&lt;br /&gt;
=== Spectral angle mapping ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.sam}}&lt;br /&gt;
&lt;br /&gt;
=== Geocoding ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.homography}}: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)&lt;br /&gt;
* support splines from GDAL (see [[GRASS_AddOns#Imagery_add-ons]])&lt;br /&gt;
* New [[WxGUI#Georectifier|Georectifier]]: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html&lt;br /&gt;
&lt;br /&gt;
=== Image matching ideas ===&lt;br /&gt;
* {{AddonCmd|i.points.auto}}: automated search of GCPs based on FFT correlation (as improved i.points)&lt;br /&gt;
: ''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 [http://www.grassbook.org/neteler/papers/neteler2005_IJG_051-061_draft.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=== Image classification ideas ===&lt;br /&gt;
&lt;br /&gt;
* [http://mpa.itc.it/merler/index.html#ml pr: C code for classification problems]&lt;br /&gt;
* GRASS implementation: i.pr.* source code is available [http://trac.osgeo.org/grass/browser/grass-addons/grass6/imagery/i.pr here])&lt;br /&gt;
&lt;br /&gt;
=== Stereo ideas ===&lt;br /&gt;
&lt;br /&gt;
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.&lt;br /&gt;
* http://grass.osgeo.org/outgoing/grass5/stereo-0.2b.tar.gz&lt;br /&gt;
* [http://grass.osgeo.org/gdp/stereo-grass/index.html Stereo Tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Bundle block adjustment ===&lt;br /&gt;
&lt;br /&gt;
Needed to orthorectify a series aerial images taken sequentially with overlap. &amp;quot;Histoical&amp;quot; method which is nowadays interesting for UAV flights with octocopters and such.&lt;br /&gt;
&lt;br /&gt;
Automatec GPC search could be done by &amp;quot;auto-sift&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Available: Octave code which prepares input to an {{cmd|i.ortho.photo}} batch job (contact Markus Neteler).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt;Lidar LAS format&amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org&lt;br /&gt;
&lt;br /&gt;
    las2txt | r.in.xyz in=- fs=&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Update:'' {{cmd|r.in.lidar|version=70}} and {{cmd|v.in.lidar|version=70}} implemented by Markus Metz (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
(see [[LIDAR]])&lt;br /&gt;
&lt;br /&gt;
=== Improving the existing code ===&lt;br /&gt;
&lt;br /&gt;
It might be sensible to merge the various image libraries:&lt;br /&gt;
&lt;br /&gt;
* GRASS 6 standard libs:&lt;br /&gt;
** lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)&lt;br /&gt;
** imagery/i.ortho.photo/libes/: standard lib, in use ({{cmd|i.ortho.photo}}, photo.*)&lt;br /&gt;
* GRASS 5 (! only) image3 lib:&lt;br /&gt;
** [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/libes/image3 libes/image3/]: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data ([http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.points3 i.points3], [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.rectify3 i.rectify3])&lt;br /&gt;
* GRASS 5/6 image proc commands:&lt;br /&gt;
** merge of {{cmd|i.points}}, {{cmd|i.vpoints}}, i.points3 (see above)&lt;br /&gt;
** merge of {{cmd|i.rectify}} and i.rectify3 (see above)&lt;br /&gt;
** &amp;lt;strike&amp;gt;addition of new resampling algorithms such as bilinear, cubic convolution (take from {{cmd|r.proj}} or {{cmd|r.resamp.aggreg}})&amp;lt;/strike&amp;gt; (done 10/2010)&lt;br /&gt;
** add other warping methods (maybe lanczos or thin splines from GDAL?): [[Addons#i.warp]]&lt;br /&gt;
** implement/finish linewise ortho-rectification of satellite data&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+image+processing &amp;quot;GRASS GIS Image processing&amp;quot;] - Google Scholar&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+remote+sensing &amp;quot;GRASS GIS Remote Sensing&amp;quot;] - Google Scholar&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19675</id>
		<title>Image processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19675"/>
		<updated>2013-09-03T07:28:45Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== General introduction ===&lt;br /&gt;
&lt;br /&gt;
'''Digital numbers and physical values (reflection/radiance-at-sensor):'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;at-satellite&amp;quot;, 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 &amp;lt;tt&amp;gt;(y = a * x + b)&amp;lt;/tt&amp;gt; to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula &amp;lt;tt&amp;gt;(x = (y - b) / a)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS module {{cmd|i.landsat.toar}} easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is {{cmd|i.aster.toar}}. For other satellites, {{cmd|r.mapcalc}} can be employed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Reflection/radiance-at-sensor and surface reflectance'''&lt;br /&gt;
&lt;br /&gt;
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 {{cmd|i.landsat.toar}}, using the DOS correction method. The more accurate way is using {{cmd|i.atcorr}} (which works for many satellite sensors). The atmospherically corrected sensor data represent surface {{wikipedia|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.&lt;br /&gt;
&lt;br /&gt;
=== Image processing in GRASS GIS ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|imageryintro}}: A short introduction to image processing in GRASS 6&lt;br /&gt;
* Full [http://grass.osgeo.org/gdp/imagery/grass4_image_processing.pdf GRASS 4.0 Image Processing manual] (PDF, 47 pages)&lt;br /&gt;
* {{cmd|imagery}}: Imagery module help pages&lt;br /&gt;
&lt;br /&gt;
* Data import is generally handled by the {{cmd|r.in.gdal}} module&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
* The [http://grass.osgeo.org/screenshots/remote-sensing/ imagery screenshots] page&lt;br /&gt;
&lt;br /&gt;
== Importing ==&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
=== Satellite Data ===&lt;br /&gt;
&lt;br /&gt;
==== Ocean Color ====&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[MODIS#SeaWiFS|SeaWiFS]]&lt;br /&gt;
&lt;br /&gt;
==== Sea Surface Temperature (SST) ====&lt;br /&gt;
&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[AVHRR]]&lt;br /&gt;
&lt;br /&gt;
==== High Resolution Data ====&lt;br /&gt;
&lt;br /&gt;
* [[IKONOS]]&lt;br /&gt;
* [[QuickBird]]&lt;br /&gt;
* [[WorldView]]&lt;br /&gt;
&lt;br /&gt;
See also, various [http://apollomapping.com/about-us/whitepapers Whitepapers] on High Resolution Satellite Imagery&lt;br /&gt;
&lt;br /&gt;
=== Orthophotos ===&lt;br /&gt;
&lt;br /&gt;
* see [[Orthorectification]]&lt;br /&gt;
* see [[Orthorectification digital camera|Ortho-rectification of oblique photographs]]&lt;br /&gt;
&lt;br /&gt;
== Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
See also [http://www-air.larc.nasa.gov/tools/predict.htm NASA LaRC Satellite Overpass Predictor]&lt;br /&gt;
&lt;br /&gt;
=== Geometric preprocessing/Georectification ===&lt;br /&gt;
&lt;br /&gt;
* Georectification tool is available from the File menu in the GUI.&lt;br /&gt;
* {{cmd|i.points}}, {{cmd|i.vpoints}} (scanned maps, satellite images)&lt;br /&gt;
* {{cmd|i.ortho.photo}} (aerial images)&lt;br /&gt;
&lt;br /&gt;
A multi-band image may be grouped and georectified with a single set of ground control points ({{cmd|i.group}}, {{cmd|i.target}}, {{cmd|i.rectify}}).&lt;br /&gt;
&lt;br /&gt;
See also the [[Georeferencing]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Radiometric  preprocessing ===&lt;br /&gt;
&lt;br /&gt;
* use {{cmd|r.mapcalc}} to apply gain/bias formula&lt;br /&gt;
* [[LANDSAT]]: you can also use {{cmd|i.landsat.toar}} &amp;lt;strike&amp;gt;from [[GRASS AddOns]]&amp;lt;/strike&amp;gt; (included since 6.4)&lt;br /&gt;
&lt;br /&gt;
=== Correction for atmospheric effects ===&lt;br /&gt;
&lt;br /&gt;
Visit the dedicated page on [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
==== Related Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{addonCmd|i.landsat.dehaze}}: simple dark-object/Tasseled Cap based haze minimization (from [[GRASS AddOns]])&lt;br /&gt;
* {{cmd|i.atcorr}}: more complex correction but based on atmospheric models&lt;br /&gt;
&lt;br /&gt;
=== Correction for topographic/terrain effects ===&lt;br /&gt;
&lt;br /&gt;
In rugged terrain, such correction might be useful to minimize negative effects.&lt;br /&gt;
&lt;br /&gt;
* simple &amp;quot;cosine correction&amp;quot; using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high)&lt;br /&gt;
* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor.&lt;br /&gt;
** '''Note,''' that for the sun's zenith (in degrees) parameter, the equation &amp;quot;'''Sun's Zenith''' = '''90''' - '''Sun's Elevation'''&amp;quot; is generally valid&lt;br /&gt;
&lt;br /&gt;
=== Cloud removal ===&lt;br /&gt;
&lt;br /&gt;
* with {{cmd|i.landsat.acca}}&lt;br /&gt;
&lt;br /&gt;
== Image classification ==&lt;br /&gt;
&lt;br /&gt;
See the dedicated [[Image classification]] page.&lt;br /&gt;
&lt;br /&gt;
== Image segmentation ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. &lt;br /&gt;
* {{AddonCmd|r.seg}}: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
* [[GRASS GSoC 2012 Image Segmentation|i.segment]]: Image Segmentation&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mfilter}}, {{cmd|r.neighbors}}&lt;br /&gt;
&lt;br /&gt;
== Fourier Transform ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.fft}}, {{cmd|i.ifft}}&lt;br /&gt;
* see also [[Image destriping]]&lt;br /&gt;
&lt;br /&gt;
== Canonical Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.cca}}&lt;br /&gt;
&lt;br /&gt;
== Principal Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.pca}}&lt;br /&gt;
* see also [[Principal Components Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Texture ==&lt;br /&gt;
&lt;br /&gt;
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.texture}}: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis&lt;br /&gt;
&lt;br /&gt;
See [http://www.fp.ucalgary.ca/mhallbey/texture_calculations.htm here] and [http://murphylab.web.cmu.edu/publications/boland/boland_node26.html here] for the formulas to calculate texture. See also [http://wiki.landscapetoolbox.org/doku.php/remote_sensing_methods:canopy_texture_mapping canopy texture mapping].&lt;br /&gt;
&lt;br /&gt;
== Spectral unmixing ==&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.unmix}} is used to perform Spectral Unmixing ([https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.spec.unmix/description.html manual])&lt;br /&gt;
* {{AddonSrc|imagery|i.spec.unmix|version=7}}: version for GRASS GIS 7&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.series}}&lt;br /&gt;
* see also [[Time series]]&lt;br /&gt;
* see also [[Time series development]]&lt;br /&gt;
&lt;br /&gt;
== Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Radiometric Enhancements ===&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* Decorrelation stretching with {{cmd|r.colors}} or {{cmd|r.mapcalc}}&lt;br /&gt;
* Density slicing with {{cmd|r.colors}}&lt;br /&gt;
* [[Principal Component Analysis]] with {{cmd|i.pca}}&lt;br /&gt;
&lt;br /&gt;
=== Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation ===&lt;br /&gt;
&lt;br /&gt;
Image fusion and Pansharpening:&lt;br /&gt;
* {{cmd|i.rgb.his}} and {{cmd|i.his.rgb}}: can be used for image fusion&lt;br /&gt;
* {{cmd|i.fusion.brovey}}: image fusion of pan-chromatic and color channels&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}}: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
Segmentation:&lt;br /&gt;
* {{AddonCmd|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. (Addons)&lt;br /&gt;
* {{cmd|i.segment|version=70}}: Identifies segments (objects) from imagery data (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
=== Optimal channel selection for color composites ===&lt;br /&gt;
* {{cmd|i.oif}}&lt;br /&gt;
&lt;br /&gt;
== Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
== Ideas collection for improving GRASS' Image processing capabilities ==&lt;br /&gt;
&lt;br /&gt;
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.&lt;br /&gt;
&lt;br /&gt;
=== Spectral unmixing ideas ===&lt;br /&gt;
&lt;br /&gt;
* Make use of the [http://spectralpython.sourceforge.net/ Spectral Python] (SPy) which is a pure Python module for processing hyperspectral image data&lt;br /&gt;
&lt;br /&gt;
=== Spectral angle mapping ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.sam}}&lt;br /&gt;
&lt;br /&gt;
=== Geocoding ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.homography}}: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)&lt;br /&gt;
* support splines from GDAL (see [[GRASS_AddOns#Imagery_add-ons]])&lt;br /&gt;
* New [[WxGUI#Georectifier|Georectifier]]: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html&lt;br /&gt;
&lt;br /&gt;
=== Image matching ideas ===&lt;br /&gt;
* {{AddonCmd|i.points.auto}}: automated search of GCPs based on FFT correlation (as improved i.points)&lt;br /&gt;
: ''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 [http://www.grassbook.org/neteler/papers/neteler2005_IJG_051-061_draft.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=== Image classification ideas ===&lt;br /&gt;
&lt;br /&gt;
* [http://mpa.itc.it/merler/index.html#ml pr: C code for classification problems]&lt;br /&gt;
* GRASS implementation: i.pr.* source code is available [http://trac.osgeo.org/grass/browser/grass-addons/grass6/imagery/i.pr here])&lt;br /&gt;
&lt;br /&gt;
=== Stereo ideas ===&lt;br /&gt;
&lt;br /&gt;
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.&lt;br /&gt;
* http://grass.osgeo.org/outgoing/grass5/stereo-0.2b.tar.gz&lt;br /&gt;
* [http://grass.osgeo.org/gdp/stereo-grass/index.html Stereo Tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Bundle block adjustment ===&lt;br /&gt;
&lt;br /&gt;
Needed to orthorectify a series aerial images taken sequentially with overlap. &amp;quot;Histoical&amp;quot; method which is nowadays interesting for UAV flights with octocopters and such.&lt;br /&gt;
&lt;br /&gt;
Automatec GPC search could be done by &amp;quot;auto-sift&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Available: Octave code which prepares input to an {{cmd|i.ortho.photo}} batch job (contact Markus Neteler).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt;Lidar LAS format&amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org&lt;br /&gt;
&lt;br /&gt;
    las2txt | r.in.xyz in=- fs=&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Update:'' {{cmd|r.in.lidar|version=70}} and {{cmd|v.in.lidar|version=70}} implemented by Markus Metz (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
(see [[LIDAR]])&lt;br /&gt;
&lt;br /&gt;
=== Improving the existing code ===&lt;br /&gt;
&lt;br /&gt;
It might be sensible to merge the various image libraries:&lt;br /&gt;
&lt;br /&gt;
* GRASS 6 standard libs:&lt;br /&gt;
** lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)&lt;br /&gt;
** imagery/i.ortho.photo/libes/: standard lib, in use ({{cmd|i.ortho.photo}}, photo.*)&lt;br /&gt;
* GRASS 5 (! only) image3 lib:&lt;br /&gt;
** [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/libes/image3 libes/image3/]: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data ([http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.points3 i.points3], [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.rectify3 i.rectify3])&lt;br /&gt;
* GRASS 5/6 image proc commands:&lt;br /&gt;
** merge of {{cmd|i.points}}, {{cmd|i.vpoints}}, i.points3 (see above)&lt;br /&gt;
** merge of {{cmd|i.rectify}} and i.rectify3 (see above)&lt;br /&gt;
** &amp;lt;strike&amp;gt;addition of new resampling algorithms such as bilinear, cubic convolution (take from {{cmd|r.proj}} or {{cmd|r.resamp.aggreg}})&amp;lt;/strike&amp;gt; (done 10/2010)&lt;br /&gt;
** add other warping methods (maybe lanczos or thin splines from GDAL?): [[Addons#i.warp]]&lt;br /&gt;
** implement/finish linewise ortho-rectification of satellite data&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+image+processing &amp;quot;GRASS GIS Image processing&amp;quot;] - Google Scholar&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+remote+sensing &amp;quot;GRASS GIS Remote Sensing&amp;quot;] - Google Scholar&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19674</id>
		<title>Image processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19674"/>
		<updated>2013-09-03T07:28:06Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: Fourier transforms for multitemporal analysis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== General introduction ===&lt;br /&gt;
&lt;br /&gt;
'''Digital numbers and physical values (reflection/radiance-at-sensor):'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;at-satellite&amp;quot;, 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 &amp;lt;tt&amp;gt;(y = a * x + b)&amp;lt;/tt&amp;gt; to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula &amp;lt;tt&amp;gt;(x = (y - b) / a)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS module {{cmd|i.landsat.toar}} easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is {{cmd|i.aster.toar}}. For other satellites, {{cmd|r.mapcalc}} can be employed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Reflection/radiance-at-sensor and surface reflectance'''&lt;br /&gt;
&lt;br /&gt;
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 {{cmd|i.landsat.toar}}, using the DOS correction method. The more accurate way is using {{cmd|i.atcorr}} (which works for many satellite sensors). The atmospherically corrected sensor data represent surface {{wikipedia|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.&lt;br /&gt;
&lt;br /&gt;
=== Image processing in GRASS GIS ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|imageryintro}}: A short introduction to image processing in GRASS 6&lt;br /&gt;
* Full [http://grass.osgeo.org/gdp/imagery/grass4_image_processing.pdf GRASS 4.0 Image Processing manual] (PDF, 47 pages)&lt;br /&gt;
* {{cmd|imagery}}: Imagery module help pages&lt;br /&gt;
&lt;br /&gt;
* Data import is generally handled by the {{cmd|r.in.gdal}} module&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
* The [http://grass.osgeo.org/screenshots/remote-sensing/ imagery screenshots] page&lt;br /&gt;
&lt;br /&gt;
== Importing ==&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
=== Satellite Data ===&lt;br /&gt;
&lt;br /&gt;
==== Ocean Color ====&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[MODIS#SeaWiFS|SeaWiFS]]&lt;br /&gt;
&lt;br /&gt;
==== Sea Surface Temperature (SST) ====&lt;br /&gt;
&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[AVHRR]]&lt;br /&gt;
&lt;br /&gt;
==== High Resolution Data ====&lt;br /&gt;
&lt;br /&gt;
* [[IKONOS]]&lt;br /&gt;
* [[QuickBird]]&lt;br /&gt;
* [[WorldView]]&lt;br /&gt;
&lt;br /&gt;
See also, various [http://apollomapping.com/about-us/whitepapers Whitepapers] on High Resolution Satellite Imagery&lt;br /&gt;
&lt;br /&gt;
=== Orthophotos ===&lt;br /&gt;
&lt;br /&gt;
* see [[Orthorectification]]&lt;br /&gt;
* see [[Orthorectification digital camera|Ortho-rectification of oblique photographs]]&lt;br /&gt;
&lt;br /&gt;
== Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
See also [http://www-air.larc.nasa.gov/tools/predict.htm NASA LaRC Satellite Overpass Predictor]&lt;br /&gt;
&lt;br /&gt;
=== Geometric preprocessing/Georectification ===&lt;br /&gt;
&lt;br /&gt;
* Georectification tool is available from the File menu in the GUI.&lt;br /&gt;
* {{cmd|i.points}}, {{cmd|i.vpoints}} (scanned maps, satellite images)&lt;br /&gt;
* {{cmd|i.ortho.photo}} (aerial images)&lt;br /&gt;
&lt;br /&gt;
A multi-band image may be grouped and georectified with a single set of ground control points ({{cmd|i.group}}, {{cmd|i.target}}, {{cmd|i.rectify}}).&lt;br /&gt;
&lt;br /&gt;
See also the [[Georeferencing]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Radiometric  preprocessing ===&lt;br /&gt;
&lt;br /&gt;
* use {{cmd|r.mapcalc}} to apply gain/bias formula&lt;br /&gt;
* [[LANDSAT]]: you can also use {{cmd|i.landsat.toar}} &amp;lt;strike&amp;gt;from [[GRASS AddOns]]&amp;lt;/strike&amp;gt; (included since 6.4)&lt;br /&gt;
&lt;br /&gt;
=== Correction for atmospheric effects ===&lt;br /&gt;
&lt;br /&gt;
Visit the dedicated page on [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
==== Related Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{addonCmd|i.landsat.dehaze}}: simple dark-object/Tasseled Cap based haze minimization (from [[GRASS AddOns]])&lt;br /&gt;
* {{cmd|i.atcorr}}: more complex correction but based on atmospheric models&lt;br /&gt;
&lt;br /&gt;
=== Correction for topographic/terrain effects ===&lt;br /&gt;
&lt;br /&gt;
In rugged terrain, such correction might be useful to minimize negative effects.&lt;br /&gt;
&lt;br /&gt;
* simple &amp;quot;cosine correction&amp;quot; using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high)&lt;br /&gt;
* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor.&lt;br /&gt;
** '''Note,''' that for the sun's zenith (in degrees) parameter, the equation &amp;quot;'''Sun's Zenith''' = '''90''' - '''Sun's Elevation'''&amp;quot; is generally valid&lt;br /&gt;
&lt;br /&gt;
=== Cloud removal ===&lt;br /&gt;
&lt;br /&gt;
* with {{cmd|i.landsat.acca}}&lt;br /&gt;
&lt;br /&gt;
== Image classification ==&lt;br /&gt;
&lt;br /&gt;
See the dedicated [[Image classification]] page.&lt;br /&gt;
&lt;br /&gt;
== Image segmentation ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. &lt;br /&gt;
* {{AddonCmd|r.seg}}: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
* [[GRASS GSoC 2012 Image Segmentation|i.segment]]: Image Segmentation&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mfilter}}, {{cmd|r.neighbors}}&lt;br /&gt;
&lt;br /&gt;
== Fourier Transform ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.fft}}, {{cmd|i.ifft}}&lt;br /&gt;
* see also [[Image destriping]]&lt;br /&gt;
* see also [[Fourier transforms for multitemporal analysis]]&lt;br /&gt;
&lt;br /&gt;
== Canonical Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.cca}}&lt;br /&gt;
&lt;br /&gt;
== Principal Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.pca}}&lt;br /&gt;
* see also [[Principal Components Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Texture ==&lt;br /&gt;
&lt;br /&gt;
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.texture}}: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis&lt;br /&gt;
&lt;br /&gt;
See [http://www.fp.ucalgary.ca/mhallbey/texture_calculations.htm here] and [http://murphylab.web.cmu.edu/publications/boland/boland_node26.html here] for the formulas to calculate texture. See also [http://wiki.landscapetoolbox.org/doku.php/remote_sensing_methods:canopy_texture_mapping canopy texture mapping].&lt;br /&gt;
&lt;br /&gt;
== Spectral unmixing ==&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.unmix}} is used to perform Spectral Unmixing ([https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.spec.unmix/description.html manual])&lt;br /&gt;
* {{AddonSrc|imagery|i.spec.unmix|version=7}}: version for GRASS GIS 7&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.series}}&lt;br /&gt;
* see also [[Time series]]&lt;br /&gt;
* see also [[Time series development]]&lt;br /&gt;
&lt;br /&gt;
== Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Radiometric Enhancements ===&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* Decorrelation stretching with {{cmd|r.colors}} or {{cmd|r.mapcalc}}&lt;br /&gt;
* Density slicing with {{cmd|r.colors}}&lt;br /&gt;
* [[Principal Component Analysis]] with {{cmd|i.pca}}&lt;br /&gt;
&lt;br /&gt;
=== Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation ===&lt;br /&gt;
&lt;br /&gt;
Image fusion and Pansharpening:&lt;br /&gt;
* {{cmd|i.rgb.his}} and {{cmd|i.his.rgb}}: can be used for image fusion&lt;br /&gt;
* {{cmd|i.fusion.brovey}}: image fusion of pan-chromatic and color channels&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}}: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
Segmentation:&lt;br /&gt;
* {{AddonCmd|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. (Addons)&lt;br /&gt;
* {{cmd|i.segment|version=70}}: Identifies segments (objects) from imagery data (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
=== Optimal channel selection for color composites ===&lt;br /&gt;
* {{cmd|i.oif}}&lt;br /&gt;
&lt;br /&gt;
== Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
== Ideas collection for improving GRASS' Image processing capabilities ==&lt;br /&gt;
&lt;br /&gt;
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.&lt;br /&gt;
&lt;br /&gt;
=== Spectral unmixing ideas ===&lt;br /&gt;
&lt;br /&gt;
* Make use of the [http://spectralpython.sourceforge.net/ Spectral Python] (SPy) which is a pure Python module for processing hyperspectral image data&lt;br /&gt;
&lt;br /&gt;
=== Spectral angle mapping ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.sam}}&lt;br /&gt;
&lt;br /&gt;
=== Geocoding ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.homography}}: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)&lt;br /&gt;
* support splines from GDAL (see [[GRASS_AddOns#Imagery_add-ons]])&lt;br /&gt;
* New [[WxGUI#Georectifier|Georectifier]]: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html&lt;br /&gt;
&lt;br /&gt;
=== Image matching ideas ===&lt;br /&gt;
* {{AddonCmd|i.points.auto}}: automated search of GCPs based on FFT correlation (as improved i.points)&lt;br /&gt;
: ''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 [http://www.grassbook.org/neteler/papers/neteler2005_IJG_051-061_draft.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=== Image classification ideas ===&lt;br /&gt;
&lt;br /&gt;
* [http://mpa.itc.it/merler/index.html#ml pr: C code for classification problems]&lt;br /&gt;
* GRASS implementation: i.pr.* source code is available [http://trac.osgeo.org/grass/browser/grass-addons/grass6/imagery/i.pr here])&lt;br /&gt;
&lt;br /&gt;
=== Stereo ideas ===&lt;br /&gt;
&lt;br /&gt;
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.&lt;br /&gt;
* http://grass.osgeo.org/outgoing/grass5/stereo-0.2b.tar.gz&lt;br /&gt;
* [http://grass.osgeo.org/gdp/stereo-grass/index.html Stereo Tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Bundle block adjustment ===&lt;br /&gt;
&lt;br /&gt;
Needed to orthorectify a series aerial images taken sequentially with overlap. &amp;quot;Histoical&amp;quot; method which is nowadays interesting for UAV flights with octocopters and such.&lt;br /&gt;
&lt;br /&gt;
Automatec GPC search could be done by &amp;quot;auto-sift&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Available: Octave code which prepares input to an {{cmd|i.ortho.photo}} batch job (contact Markus Neteler).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt;Lidar LAS format&amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org&lt;br /&gt;
&lt;br /&gt;
    las2txt | r.in.xyz in=- fs=&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Update:'' {{cmd|r.in.lidar|version=70}} and {{cmd|v.in.lidar|version=70}} implemented by Markus Metz (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
(see [[LIDAR]])&lt;br /&gt;
&lt;br /&gt;
=== Improving the existing code ===&lt;br /&gt;
&lt;br /&gt;
It might be sensible to merge the various image libraries:&lt;br /&gt;
&lt;br /&gt;
* GRASS 6 standard libs:&lt;br /&gt;
** lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)&lt;br /&gt;
** imagery/i.ortho.photo/libes/: standard lib, in use ({{cmd|i.ortho.photo}}, photo.*)&lt;br /&gt;
* GRASS 5 (! only) image3 lib:&lt;br /&gt;
** [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/libes/image3 libes/image3/]: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data ([http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.points3 i.points3], [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.rectify3 i.rectify3])&lt;br /&gt;
* GRASS 5/6 image proc commands:&lt;br /&gt;
** merge of {{cmd|i.points}}, {{cmd|i.vpoints}}, i.points3 (see above)&lt;br /&gt;
** merge of {{cmd|i.rectify}} and i.rectify3 (see above)&lt;br /&gt;
** &amp;lt;strike&amp;gt;addition of new resampling algorithms such as bilinear, cubic convolution (take from {{cmd|r.proj}} or {{cmd|r.resamp.aggreg}})&amp;lt;/strike&amp;gt; (done 10/2010)&lt;br /&gt;
** add other warping methods (maybe lanczos or thin splines from GDAL?): [[Addons#i.warp]]&lt;br /&gt;
** implement/finish linewise ortho-rectification of satellite data&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+image+processing &amp;quot;GRASS GIS Image processing&amp;quot;] - Google Scholar&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+remote+sensing &amp;quot;GRASS GIS Remote Sensing&amp;quot;] - Google Scholar&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19673</id>
		<title>Image processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=19673"/>
		<updated>2013-09-03T07:24:03Z</updated>

		<summary type="html">&lt;p&gt;⚠️Ducciorocchini: new page on Fourier Trasnforms&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
=== General introduction ===&lt;br /&gt;
&lt;br /&gt;
'''Digital numbers and physical values (reflection/radiance-at-sensor):'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;at-satellite&amp;quot;, 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 &amp;lt;tt&amp;gt;(y = a * x + b)&amp;lt;/tt&amp;gt; to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula &amp;lt;tt&amp;gt;(x = (y - b) / a)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS module {{cmd|i.landsat.toar}} easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is {{cmd|i.aster.toar}}. For other satellites, {{cmd|r.mapcalc}} can be employed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Reflection/radiance-at-sensor and surface reflectance'''&lt;br /&gt;
&lt;br /&gt;
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 {{cmd|i.landsat.toar}}, using the DOS correction method. The more accurate way is using {{cmd|i.atcorr}} (which works for many satellite sensors). The atmospherically corrected sensor data represent surface {{wikipedia|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.&lt;br /&gt;
&lt;br /&gt;
=== Image processing in GRASS GIS ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|imageryintro}}: A short introduction to image processing in GRASS 6&lt;br /&gt;
* Full [http://grass.osgeo.org/gdp/imagery/grass4_image_processing.pdf GRASS 4.0 Image Processing manual] (PDF, 47 pages)&lt;br /&gt;
* {{cmd|imagery}}: Imagery module help pages&lt;br /&gt;
&lt;br /&gt;
* Data import is generally handled by the {{cmd|r.in.gdal}} module&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
* The [http://grass.osgeo.org/screenshots/remote-sensing/ imagery screenshots] page&lt;br /&gt;
&lt;br /&gt;
== Importing ==&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
=== Satellite Data ===&lt;br /&gt;
&lt;br /&gt;
==== Ocean Color ====&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[MODIS#SeaWiFS|SeaWiFS]]&lt;br /&gt;
&lt;br /&gt;
==== Sea Surface Temperature (SST) ====&lt;br /&gt;
&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[AVHRR]]&lt;br /&gt;
&lt;br /&gt;
==== High Resolution Data ====&lt;br /&gt;
&lt;br /&gt;
* [[IKONOS]]&lt;br /&gt;
* [[QuickBird]]&lt;br /&gt;
* [[WorldView]]&lt;br /&gt;
&lt;br /&gt;
See also, various [http://apollomapping.com/about-us/whitepapers Whitepapers] on High Resolution Satellite Imagery&lt;br /&gt;
&lt;br /&gt;
=== Orthophotos ===&lt;br /&gt;
&lt;br /&gt;
* see [[Orthorectification]]&lt;br /&gt;
* see [[Orthorectification digital camera|Ortho-rectification of oblique photographs]]&lt;br /&gt;
&lt;br /&gt;
== Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
See also [http://www-air.larc.nasa.gov/tools/predict.htm NASA LaRC Satellite Overpass Predictor]&lt;br /&gt;
&lt;br /&gt;
=== Geometric preprocessing/Georectification ===&lt;br /&gt;
&lt;br /&gt;
* Georectification tool is available from the File menu in the GUI.&lt;br /&gt;
* {{cmd|i.points}}, {{cmd|i.vpoints}} (scanned maps, satellite images)&lt;br /&gt;
* {{cmd|i.ortho.photo}} (aerial images)&lt;br /&gt;
&lt;br /&gt;
A multi-band image may be grouped and georectified with a single set of ground control points ({{cmd|i.group}}, {{cmd|i.target}}, {{cmd|i.rectify}}).&lt;br /&gt;
&lt;br /&gt;
See also the [[Georeferencing]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Radiometric  preprocessing ===&lt;br /&gt;
&lt;br /&gt;
* use {{cmd|r.mapcalc}} to apply gain/bias formula&lt;br /&gt;
* [[LANDSAT]]: you can also use {{cmd|i.landsat.toar}} &amp;lt;strike&amp;gt;from [[GRASS AddOns]]&amp;lt;/strike&amp;gt; (included since 6.4)&lt;br /&gt;
&lt;br /&gt;
=== Correction for atmospheric effects ===&lt;br /&gt;
&lt;br /&gt;
Visit the dedicated page on [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
==== Related Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{addonCmd|i.landsat.dehaze}}: simple dark-object/Tasseled Cap based haze minimization (from [[GRASS AddOns]])&lt;br /&gt;
* {{cmd|i.atcorr}}: more complex correction but based on atmospheric models&lt;br /&gt;
&lt;br /&gt;
=== Correction for topographic/terrain effects ===&lt;br /&gt;
&lt;br /&gt;
In rugged terrain, such correction might be useful to minimize negative effects.&lt;br /&gt;
&lt;br /&gt;
* simple &amp;quot;cosine correction&amp;quot; using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high)&lt;br /&gt;
* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor.&lt;br /&gt;
** '''Note,''' that for the sun's zenith (in degrees) parameter, the equation &amp;quot;'''Sun's Zenith''' = '''90''' - '''Sun's Elevation'''&amp;quot; is generally valid&lt;br /&gt;
&lt;br /&gt;
=== Cloud removal ===&lt;br /&gt;
&lt;br /&gt;
* with {{cmd|i.landsat.acca}}&lt;br /&gt;
&lt;br /&gt;
== Image classification ==&lt;br /&gt;
&lt;br /&gt;
See the dedicated [[Image classification]] page.&lt;br /&gt;
&lt;br /&gt;
== Image segmentation ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. &lt;br /&gt;
* {{AddonCmd|r.seg}}: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
* [[GRASS GSoC 2012 Image Segmentation|i.segment]]: Image Segmentation&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mfilter}}, {{cmd|r.neighbors}}&lt;br /&gt;
&lt;br /&gt;
== Fourier Transform ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.fft}}, {{cmd|i.ifft}}&lt;br /&gt;
* see also [[Image destriping]]&lt;br /&gt;
* see also [[Fourier trasnforms for multitemporal analysis]]&lt;br /&gt;
&lt;br /&gt;
== Canonical Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.cca}}&lt;br /&gt;
&lt;br /&gt;
== Principal Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.pca}}&lt;br /&gt;
* see also [[Principal Components Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Texture ==&lt;br /&gt;
&lt;br /&gt;
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.texture}}: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis&lt;br /&gt;
&lt;br /&gt;
See [http://www.fp.ucalgary.ca/mhallbey/texture_calculations.htm here] and [http://murphylab.web.cmu.edu/publications/boland/boland_node26.html here] for the formulas to calculate texture. See also [http://wiki.landscapetoolbox.org/doku.php/remote_sensing_methods:canopy_texture_mapping canopy texture mapping].&lt;br /&gt;
&lt;br /&gt;
== Spectral unmixing ==&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.unmix}} is used to perform Spectral Unmixing ([https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.spec.unmix/description.html manual])&lt;br /&gt;
* {{AddonSrc|imagery|i.spec.unmix|version=7}}: version for GRASS GIS 7&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.series}}&lt;br /&gt;
* see also [[Time series]]&lt;br /&gt;
* see also [[Time series development]]&lt;br /&gt;
&lt;br /&gt;
== Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Radiometric Enhancements ===&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* Decorrelation stretching with {{cmd|r.colors}} or {{cmd|r.mapcalc}}&lt;br /&gt;
* Density slicing with {{cmd|r.colors}}&lt;br /&gt;
* [[Principal Component Analysis]] with {{cmd|i.pca}}&lt;br /&gt;
&lt;br /&gt;
=== Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation ===&lt;br /&gt;
&lt;br /&gt;
Image fusion and Pansharpening:&lt;br /&gt;
* {{cmd|i.rgb.his}} and {{cmd|i.his.rgb}}: can be used for image fusion&lt;br /&gt;
* {{cmd|i.fusion.brovey}}: image fusion of pan-chromatic and color channels&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}}: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
Segmentation:&lt;br /&gt;
* {{AddonCmd|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. (Addons)&lt;br /&gt;
* {{cmd|i.segment|version=70}}: Identifies segments (objects) from imagery data (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
=== Optimal channel selection for color composites ===&lt;br /&gt;
* {{cmd|i.oif}}&lt;br /&gt;
&lt;br /&gt;
== Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
== Ideas collection for improving GRASS' Image processing capabilities ==&lt;br /&gt;
&lt;br /&gt;
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.&lt;br /&gt;
&lt;br /&gt;
=== Spectral unmixing ideas ===&lt;br /&gt;
&lt;br /&gt;
* Make use of the [http://spectralpython.sourceforge.net/ Spectral Python] (SPy) which is a pure Python module for processing hyperspectral image data&lt;br /&gt;
&lt;br /&gt;
=== Spectral angle mapping ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.sam}}&lt;br /&gt;
&lt;br /&gt;
=== Geocoding ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.homography}}: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)&lt;br /&gt;
* support splines from GDAL (see [[GRASS_AddOns#Imagery_add-ons]])&lt;br /&gt;
* New [[WxGUI#Georectifier|Georectifier]]: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html&lt;br /&gt;
&lt;br /&gt;
=== Image matching ideas ===&lt;br /&gt;
* {{AddonCmd|i.points.auto}}: automated search of GCPs based on FFT correlation (as improved i.points)&lt;br /&gt;
: ''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 [http://www.grassbook.org/neteler/papers/neteler2005_IJG_051-061_draft.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=== Image classification ideas ===&lt;br /&gt;
&lt;br /&gt;
* [http://mpa.itc.it/merler/index.html#ml pr: C code for classification problems]&lt;br /&gt;
* GRASS implementation: i.pr.* source code is available [http://trac.osgeo.org/grass/browser/grass-addons/grass6/imagery/i.pr here])&lt;br /&gt;
&lt;br /&gt;
=== Stereo ideas ===&lt;br /&gt;
&lt;br /&gt;
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.&lt;br /&gt;
* http://grass.osgeo.org/outgoing/grass5/stereo-0.2b.tar.gz&lt;br /&gt;
* [http://grass.osgeo.org/gdp/stereo-grass/index.html Stereo Tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Bundle block adjustment ===&lt;br /&gt;
&lt;br /&gt;
Needed to orthorectify a series aerial images taken sequentially with overlap. &amp;quot;Histoical&amp;quot; method which is nowadays interesting for UAV flights with octocopters and such.&lt;br /&gt;
&lt;br /&gt;
Automatec GPC search could be done by &amp;quot;auto-sift&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Available: Octave code which prepares input to an {{cmd|i.ortho.photo}} batch job (contact Markus Neteler).&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;strike&amp;gt;Lidar LAS format&amp;lt;/strike&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org&lt;br /&gt;
&lt;br /&gt;
    las2txt | r.in.xyz in=- fs=&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Update:'' {{cmd|r.in.lidar|version=70}} and {{cmd|v.in.lidar|version=70}} implemented by Markus Metz (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
(see [[LIDAR]])&lt;br /&gt;
&lt;br /&gt;
=== Improving the existing code ===&lt;br /&gt;
&lt;br /&gt;
It might be sensible to merge the various image libraries:&lt;br /&gt;
&lt;br /&gt;
* GRASS 6 standard libs:&lt;br /&gt;
** lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)&lt;br /&gt;
** imagery/i.ortho.photo/libes/: standard lib, in use ({{cmd|i.ortho.photo}}, photo.*)&lt;br /&gt;
* GRASS 5 (! only) image3 lib:&lt;br /&gt;
** [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/libes/image3 libes/image3/]: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data ([http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.points3 i.points3], [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.rectify3 i.rectify3])&lt;br /&gt;
* GRASS 5/6 image proc commands:&lt;br /&gt;
** merge of {{cmd|i.points}}, {{cmd|i.vpoints}}, i.points3 (see above)&lt;br /&gt;
** merge of {{cmd|i.rectify}} and i.rectify3 (see above)&lt;br /&gt;
** &amp;lt;strike&amp;gt;addition of new resampling algorithms such as bilinear, cubic convolution (take from {{cmd|r.proj}} or {{cmd|r.resamp.aggreg}})&amp;lt;/strike&amp;gt; (done 10/2010)&lt;br /&gt;
** add other warping methods (maybe lanczos or thin splines from GDAL?): [[Addons#i.warp]]&lt;br /&gt;
** implement/finish linewise ortho-rectification of satellite data&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+image+processing &amp;quot;GRASS GIS Image processing&amp;quot;] - Google Scholar&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+remote+sensing &amp;quot;GRASS GIS Remote Sensing&amp;quot;] - Google Scholar&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Ducciorocchini</name></author>
	</entry>
</feed>