Fourier transforms for multitemporal analysis

From GRASS-Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Fourier transforms for detecting multitemporal landscape fragmentation by remote sensing GRASS GIS and R code used in:

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. (DOI) (IF: 1.138)

GRASS GIS: Fourier transform calculation


The used data are from the North Carolina set available for free at: http://grass.osgeo.org/download/sample-data/

# Setting the region of interest based on a Landsat image
g.region rast=lsat7_2002_10 -p

Performing PCA on a multitemporal set of images (Landsat images in this case)

1987

i.pca input=lsat5_1987_10,lsat5_1987_20,lsat5_1987_30,lsat5_1987_40,lsat5_1987_50,lsat5_1987_70 \
      output=lsat5_1987_pca

2002

i.pca input=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70 \
      output=lsat7_2002_pca

Showing the first principal component

1987

d.mon x0
d.rast lsat5_1987_pca.1

2002

d.mon x1
d.rast lsat7_2002_pca.1

Fourier transform

1987

i.fft input=lsat5_1987_pca.1 real=lsat5_1987_pca1.real imaginary=lsat5_1987_pca1.imag

2002

i.fft input=lsat7_2002_pca.1 real=lsat7_2002_pca1.real imaginary=lsat7_2002_pca1.imag

Creating Fig. 2 in Rocchini et al. (2013)

1987

d.mon x2
d.rast lsat5_1987_pca1.real

2002

d.mon x3
d.rast lsat7_2002_pca1.real

Additional example with MODIS data: Fig. 6 in Rocchini et al. (2013)

Import data: image covering a temporal period from 2005-02-02 to 2005-03-05 (band 2 being used)

r.in.gdal input=Goodes.EUAS.2005033.band2.tif output=Goodes.EUAS.2005033.band2

Import data: image covering a temporal period from 2005-07-12 to 2005-08-12 (band 2 being used)

r.in.gdal input=Goodes.EUAS.2005193.band2.tif output=Goodes.EUAS.2005193.band2

Fourier transforms

i.fft input=Goodes.EUAS.2005033.band2 real=Goodes.EUAS.2005033.band2.real imaginary=Goodes.EUAS.2005033.band2.imag
i.fft input=Goodes.EUAS.2005193.band2 real=Goodes.EUAS.2005193.band2.real imaginary=Goodes.EUAS.2005193.band2.imag

R: statistical analysis

Importing the Fourier image from GRASS GIS by the spgrass6 library

library(spgrass6)
fft.images<-readRAST6(c('lsat5_1987_pca1.real','lsat7_2002_pca1.real'), 
    cat=c(F,F), ignore.stderr=TRUE, plugin=NULL)

where lsat5_1987_pca1.real and lsat7_2002_pca1.real are the Fourier transform images derived from GRASS GIS

Kernel Density Plot: Fig. 4 in Rocchini et al. (2013)

library(sm)
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)
par(new=T)
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)
legend(110, 0.012, c('Density function 1987', 'Density function 2002'), 
   fill = c('blue', 'red'), cex=1.2, box.lty=0)

Hexagon binning: Fig. 5 in Rocchini et al. (2013)

library(hexbin)
hbin <- hexbin(fft.images$lsat5_1987_pca1.real, fft.images$lsat7_2002_pca1.real, xbins = 50)
plot.bin<-plot(hbin, style = 'nested.lattice', legend=F, 
  xlab='Fourier transform value 1987', ylab='Fourier transform value 2002')
hexVP.abline(plot.bin$plot.vp, 0, 1)