[GRASS-dev] Implementation of the High Pass Filter Additive Fusion technique (i.fusion.hpf)
Nikos Alexandris
nik at nikosalexandris.net
Wed Nov 13 17:25:03 PST 2013
Dear GRASS GIS users,
together with Nikos Ves, we share the "i.fusion.hpf" idea/proof of concept. At the moment,
we have a custom shell script named `i.fusion.hpf` (an attempt for a proper GRASS add-on),
which implements the High Pass Filter Additive (HPFA) Fusion Technique for Pan-Sharpening
[*]. Nikos V started already porting to Python. How can we proceed in sharing it?
We require some help in testing. Specifically, comparing the results between the steps
implemented in GRASS GIS and the respective "HPF Resolution Merge" in ERDAS. It seems that
GRASS' outputs are slightly more smooth. I will upload some screenshots in the Wiki. Perhaps
I have done something wrong in the order of applying the algorithm's steps (in the shell
script)!?
Note, however, that the script misses the (optional, as explained in the related publication)
histogram matching step. In ERDAS' implementation, it seems that histo-matching is
performed by default. Though, it might be possible to extract the "model" and subtract this
final optional step so as to get 1:1 comparable outputs.
Background
HPFA seems to outperform the well known Pan-Sharpening techniques (incl. Brovey, IHS,
PCA). The algorithm comprises the following steps:
1. Computing ratio of low (Multi-Spectral) to high (Panchromatic) resolutions
2. High Pass Filtering the Panchromatic Image
3. Resampling MSX image to the higher resolution
4. Adding weighted High-Pass-Filetred image to the upsampled MSX image
5. Optionally, matching histogram of Pansharpened image to the one of the original MSX
image
A few more words on the script
+ Stunning!, Crisp and colorful images (- currently after applying color rebalancing manually)
+ Extremely easy to use, i.e.: "i.fusion.hpf pan=Pan_DNs msx=Band1[,Band2,Band3,...]"
+ Grasping and testing the various parameters that define the High-Pass filter's kernel size and
center value is also a matter of short time.
+ It will work with any kind of imagery (after minor modifications)
+ However, it can be easily adapted for GRASS 7 / converted to Python
- The attached script, badly coded by a non-programer, is in Bash for G64.
- Currently works only for integers (with minor tweaking it can work with r.mfilter.fp to crunch
Floating Points as well)
- Lacks of the histogram matching operation
- Something I don't understand about g.tempfile -- how to use it?
Two questions
? Can someone confirm that the part of the existing "i.pansharpen" code that performs
histogram matching (code lines 348 - 431), do so as "linearly stretching an image to match
another image's Mean and StdDev"?
? Would it be desired to get the HPFA algorithm integrated in i.pansharpen?
For the records, the replication of the HPFA fusion technique in GRASS-GIS, as well as the
"filter creation" bash one-liner, were Nikos Ve's ideas. I followed-up with a bash proof of
concept.
Nikos
---
[*] Optimizing the High-Pass Filter Addition Technique for Image Fusion (2008) by Ute G.
Gangkofner, Pushkar S. Pradhan, and Derrold W. Holcomb
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20131114/6ca6f761/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: i.fusion.hpf.tar.gz
Type: application/x-compressed-tar
Size: 8473 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20131114/6ca6f761/attachment-0001.bin>
More information about the grass-dev
mailing list