# Image destriping

From GRASS-Wiki

## Image destriping with Fast Fourier Transform (FFT)

In some image maps, artifacts (stripes) are visible. These can be reduced with FFT filtering (i.fft).

First we take a look at the original tile (screenshot upper right map):

```
# set computational region to GDEM map:
g.region rast=imagemap -p
d.mon x0
d.rast imagemap
```

Then we perform **Fast Fourier Transform** (FFT; screenshot upper left map):

```
i.fft in=imagemap real=imagemap_real imag=imagemap_imag
d.mon x1
d.rast imagemap_imag
d.rast imagemap_real
```

Create a **MASK** in order to remove noise (screenshot upper left map):

```
# digitize filter mask to reduce noise
r.digit filter #not working in Grass v7
d.rast filter
r.mask -i filter
d.rast imagemap_real
```

**Inverse FFT** to get filtered GDEM back (screenshot lower left map):

```
i.ifft real=imagemap_real imag=imagemap_imag output=imagemap_filtered
r.mask -r
d.mon x2
d.rast imagemap_filtered
r.colors imagemap_filtered color=elevation
d.rast imagemap_filtered
```

Calculate the **differences** (screenshot lower right diagram):

```
# validate with differences map:
r.mapcalc "diff = imagemap - imagemap_filtered"
r.colors diff color=differences
d.mon x3
d.rast.leg diff
# done
```

Note: If the MASK is made larger (more to the center), more aggressive destriping occurs.

## See also

- https://www.mapbox.com/blog/debanding-the-world/ (about Landsat7 SLC off debanding)
- Image Filtering in the Frequency Domain
- Landsat 7 destriping