Image destriping

From GRASS-Wiki
Jump to navigation Jump to search

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
Workflow of image destriping with FFT

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

See also