Overview

FOTO for FOurier transform Textural Ordination

Predicting stand structure parameters for tropical forests from remotely sensed data by defining an index of canopy texture from the ordination of the Fourier spectra computed for tropical rain forest images.

References:
  • Couteron, P., Pelissier, R., Nicolini, E. A., & Paget, D. (2005). Predicting tropical forest stand structure parameters from Fourier transform of very high‐resolution remotely sensed canopy images. Journal of applied ecology, 42(6), 1121-1128.
    https://doi.org/10.1111/j.1365-2664.2005.01097.x
  • Proisy, C., Couteron, P., & Fromard, F. (2007). Predicting and mapping mangrove biomass from canopy grain analysis using Fourier-based textural ordination of IKONOS images. Remote Sensing of Environment, 109(3), 379-392.
    https://doi.org/10.1016/j.rse.2007.01.009
  • Barbier, N., & Couteron, P. (2015). Attenuating the bidirectional texture variation of satellite images of tropical forest canopies. Remote Sensing of Environment, 171, 245-260.
    https://doi.org/10.1016/j.rse.2015.10.007

: README

Fourier Transform Textural Ordination in Python

Freely adapted from https://github.com/CaussesCevennes/FOTO.py

List of authors

Description

FOTO (Fourier Textural Ordination) is an algorithm allowing texture
characterization and comparison, and is fully
described in Textural ordination based on Fourier spectral
decomposition: a method to analyze and compare landscape patterns

(Pierre Couteron, Nicolas Barbier and Denis Gautier, 2006)

Installation

Use PIP in a terminal to install fototex:
shell script
$ pip install fototex

Usage

In memory against HDF5

  • Regarding computation performances, in case you have a strong machine
    with extended memory, or if you have small images to treat, you can
    implement the algorithm "in memory":
    python
    from fototex.foto import Foto
    foto = Foto("path/to/your/image", method='block', band=1, in_memory=True)
    foto.run(window_size=11)

  • Otherwise, in case of large images or a limited machine, it is possible
    to implement the algorithm with HDF5 data storage. In that case, Foto
    runs an incremental PCA, that you may customize, assisted with HDF5
    storage:
    python
    from fototex.foto import Foto
    foto = Foto("path/to/your/image", method="moving_window", in_memory=False, data_chunk_size=40000)
    foto.run(window_size=11)

The argument data_chunk_size gives information on the reading/writing
rate to h5 files.

DC component

When computing the R-spectra, you may keep the DC
component of the FFT, such as:
python
from fototex.foto import Foto
foto = Foto("path/to/your/image", method="moving_window", in_memory=False, data_chunk_size=40000)
foto.run(window_size=11, nb_sample=5, keep_dc_component=True)

In that case, it is important to keep in mind that R will
range from 0 to nb_sample - 1 (in the example,
R=0, 1, 2, 3, 4). Otherwise, it will range from 1 to
nb_sample (here, R=1, 2, 3, 4, 5).

Standardize

If you want to standardize the values of the power spectrum
over the image (dividing by the variance of each given window),
you may add the option (False by default):
python
from fototex.foto import Foto
foto = Foto("path/to/your/image", method="moving_window", in_memory=False, data_chunk_size=40000)
foto.run(window_size=11, standardize=True)