Skip to content

i.fusion.hpf

Fusing high resolution panchromatic and low resolution multi-spectral data based on the High-Pass Filter Addition technique (Gangkofner, 2008).

i.fusion.hpf [-l2ca] pan=name msx=name [,name,...] suffix=basename [ratio=float] [center=string] [center2=string] [modulation=string] [modulation2=string] [trim=float] [--overwrite] [--verbose] [--quiet] [--qq] [--ui]

Example:

i.fusion.hpf pan=name msx=name suffix=hpf

grass.script.run_command("i.fusion.hpf", pan, msx, suffix="hpf", ratio=None, center="low", center2="low", modulation="mid", modulation2="mid", trim=None, flags=None, overwrite=False, verbose=False, quiet=False, superquiet=False)

Example:

gs.run_command("i.fusion.hpf", pan="name", msx="name", suffix="hpf")

Parameters

pan=name [required]
    High resolution Panchromatic image
msx=name [,name,...] [required]
    Low resolution Multi-Spectral image(s)
suffix=basename [required]
    Suffix for output image(s)
    Names of Pan-Sharpened image(s) will end with this suffix
    Default: hpf
ratio=float
    Custom ratio
    Custom ratio overriding standard calculation
    Allowed values: 1.0-10.0
center=string
    Center cell value
    Center cell value of the High-Pass-Filter
    Allowed values: low, mid, high
    Default: low
center2=string
    2nd Pass center cell value
    Center cell value for the second High-Pass-Filter (use -2 flag)
    Allowed values: low, mid, high
    Default: low
modulation=string
    Modulation level
    Modulation level weighting the HPF image determining crispness
    Allowed values: min, mid, max
    Default: mid
modulation2=string
    2nd Pass modulation level (use -2 flag)
    Modulation level weighting the second HPF image determining crispness (use -2 flag)
    Allowed values: min, mid, max
    Default: mid
    min: Minimum: 0.25
    mid: Mid: 0.35
    max: Maximum: 0.5
trim=float
    Trimming factor
    Trim output border pixels by a factor of the pixel size of the low resolution image. A factor of 1.0 may suffice.
-l
    Linearly match histogram of Pan-sharpened output to Multi-Spectral input
    Default: Quantile scaling
-2
    2-Pass Processing (recommended) for large resolution ratio (>=5.5)
-c
    Match color table of Pan-Sharpened output to Multi-Spectral input
-a
    Align output to pan band
    Default: set resolution from pan band
--overwrite
    Allow output files to overwrite existing files
--help
    Print usage summary
--verbose
    Verbose module output
--quiet
    Quiet module output
--qq
    Very quiet module output
--ui
    Force launching GUI dialog

pan : str, required
    High resolution Panchromatic image
    Used as: input, raster, name
msx : str | list[str], required
    Low resolution Multi-Spectral image(s)
    Used as: input, raster, name
suffix : str, required
    Suffix for output image(s)
    Names of Pan-Sharpened image(s) will end with this suffix
    Used as: output, raster, basename
    Default: hpf
ratio : float, optional
    Custom ratio
    Custom ratio overriding standard calculation
    Allowed values: 1.0-10.0
center : str, optional
    Center cell value
    Center cell value of the High-Pass-Filter
    Allowed values: low, mid, high
    Default: low
center2 : str, optional
    2nd Pass center cell value
    Center cell value for the second High-Pass-Filter (use -2 flag)
    Allowed values: low, mid, high
    Default: low
modulation : str, optional
    Modulation level
    Modulation level weighting the HPF image determining crispness
    Allowed values: min, mid, max
    Default: mid
modulation2 : str, optional
    2nd Pass modulation level (use -2 flag)
    Modulation level weighting the second HPF image determining crispness (use -2 flag)
    Allowed values: min, mid, max
    min: Minimum: 0.25
    mid: Mid: 0.35
    max: Maximum: 0.5
    Default: mid
trim : float, optional
    Trimming factor
    Trim output border pixels by a factor of the pixel size of the low resolution image. A factor of 1.0 may suffice.
flags : str, optional
    Allowed values: l, 2, c, a
    l
        Linearly match histogram of Pan-sharpened output to Multi-Spectral input
        Default: Quantile scaling
    2
        2-Pass Processing (recommended) for large resolution ratio (>=5.5)
    c
        Match color table of Pan-Sharpened output to Multi-Spectral input
    a
        Align output to pan band
        Default: set resolution from pan band
overwrite: bool, optional
    Allow output files to overwrite existing files
    Default: False
verbose: bool, optional
    Verbose module output
    Default: False
quiet: bool, optional
    Quiet module output
    Default: False
superquiet: bool, optional
    Very quiet module output
    Default: False

DESCRIPTION

i.fusion.hpf is an implementation of the High Pass Filter Additive (HPFA) Fusion Technique. It combines high-resolution panchromatic data with lower resolution multispectral data, resulting in an output with both excellent detail and a realistic representation of original multispectral scene colors. The process involves a convolution using a High Pass Filter (HPF) on the high resolution data, then combining this with the lower resolution multispectral data. Optionally, a linear histogram matching technique is performed in a way that matches the resulting Pan-Sharpened image to the statistical mean and standard deviation of the original multi-spectral image.

Background

  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
Figure:
 ____________________________________________________________________________
+                                                                            +
| Pan Img ->  High Pass Filter  ->  HP Img                                   |
|                                      |                                     |
|                                      v                                     |
| MSx Img ->  Weighting Factors ->  Weighted HP Img                          |
|       |                              |                                     |
|       |                              v                                     |
|       +------------------------>  Addition to MSx Img  =>  Fused MSx Image |
+____________________________________________________________________________+

Source: Gangkofner, 2008

NOTES

  • Grasping and testing the various parameters that define the High-Pass filter's kernel size and center value is a matter of short time.
  • Works with any number and type of raster imagery (8-bit, 16-bit)
  • The "black border" effect, possibly caused due to a non-perfect match of the high vs. the low resolution of the input images, can be trimmed out by using the trim option --a floating point "trimming factor" with which to multiply the pixel size of the low resolution image-- and shrink the extent of the output image.

EXAMPLE

The module is fairly easy to use. Arbitrary examples:

Pansharpening of one band

i.fusion.hpf pan=Panchromatic msx=Red

Pansharpening of multiple bands

i.fusion.hpf pan=Panchromatic msx=Red,Green,Blue,NIR

North Carolina: pansharpening of multiple bands

Example using the North Carolina sample dataset, landsat mapset:

# pansharpening of R, G, B, NIR
g.region raster=lsat7_2002_80 -p
i.fusion.hpf pan=lsat7_2000_80 msx=lsat7_2000_10,lsat7_2000_20,lsat7_2000_30,lsat7_2000_40 suffix=_hpf

# visual comparison
d.mon wx0
d.rgb b=lsat7_2000_10 g=lsat7_2000_20 r=lsat7_2000_30

# color balance pansharpened scene
i.colors.enhance b=lsat7_2000_10_hpf g=lsat7_2000_20_hpf r=lsat7_2000_30_hpf
d.rgb b=lsat7_2000_10_hpf g=lsat7_2000_20_hpf r=lsat7_2000_30_hpf

image-alt
Figure: Original Landsat 7 RGB color composite at 28.5m resolution (North Carolina, Raleigh subset)

image-alt
Figure: Pansharpened Landsat 7 RGB color composite at 14.25m resolution(North Carolina, Raleigh subset)

Further examples

Various illustrated examples detailed in the document i.fusion.hpf, implementation of the High Pass Filter Additive (HPFA) Image Fusion Technique (PDF)

TODO

  • Go through Submitting Python
  • Access input raster by row I/O
  • Support for parallel processing
  • Proper command history tracking.
  • Add timestamps (r.timestamp, temporal framework)
  • Deduplicate code where applicable
  • Make verbose level messages shorter, yet more informative (ie report center cell)
  • Test if it compiles in other systems
  • Check options to integrate in i.pansharpen. Think of FFM methods vs. Others?
  • Improve Documentation.lyx

REFERENCES

  • Gangkofner, U. G., Pradhan, P. S., and Holcomb, D. W. (2008). Optimizing the high-pass filter addition technique for image fusion. PHOTOGRAMMETRIC ENGINEERING & REMOTE SENSING, 74(9):1107--1118.
  • "ERDAS IMAGINE." Accessed March 19, 2015. ERDAS IMAGINE Help.
  • Aniruddha Ghosh & P.K. Joshi (2013) Assessment of pan-sharpened very high-resolution WorldView-2 images, International Journal of Remote Sensing, 34:23, 8336-8359

SEE ALSO

i.pansharpen

AUTHORS

Nikos Alexandris
Panagiotis Mavrogiorgos

SOURCE CODE

Available at: i.fusion.hpf source code (history)
Latest change: Thursday Mar 20 21:36:57 2025 in commit 7286ecf