Image destriping: Difference between revisions
Jump to navigation
Jump to search
(+see also) |
|||
Line 1: | Line 1: | ||
== Image destriping with FFT == | == Image destriping with Fast Fourier Transform (FFT) == | ||
In some image maps, artifacts (stripes) are visible. These can be reduced with FFT filtering. | In some image maps, artifacts (stripes) are visible. These can be reduced with FFT filtering ({{cmd|i.fft}}). | ||
First we take a look at the original tile (screenshot upper right map): | |||
<source lang="bash"> | <source lang="bash"> | ||
# set computational region to GDEM map: | # set computational region to GDEM map: | ||
Line 13: | Line 12: | ||
Then we perform '''Fast Fourier Transform''' (FFT; screenshot upper left map): | |||
<source lang="bash"> | <source lang="bash"> | ||
i.fft in=imagemap real=imagemap_real imag=imagemap_imag | i.fft in=imagemap real=imagemap_real imag=imagemap_imag | ||
Line 57: | Line 56: | ||
Note: If the MASK is made larger (more to the center), more aggressive destriping occurs. | Note: If the MASK is made larger (more to the center), more aggressive destriping occurs. | ||
== See also == | |||
* [http://paulbourke.net/miscellaneous/imagefilter/ Image Filtering in the Frequency Domain] | |||
[[Category: Image processing]] | [[Category: Image processing]] |
Revision as of 11:41, 17 February 2012
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
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.