I understand that the difference between the two are the number and width of the bands. Given a hyperspectral image, is it possible to 'convert' it to multispectral ?

In this paper for example, the authors make use of RGB + Near Infrared (multispectral) for scene recognition. If i have a hyperspectral image and I keep only 4 bands (3 bands for rgb and 1 for NIR) while discarding/ignoring the rest, would I be able to achieve a somewhat similar result or would too much information be lost since the bands are much narrower than multispectral bands ?

Or should I perform some algorithm to combine the bands from the NIR and RGB respectively such that I have a proper multispectral image ?

  • 1
    If you have a hyperspectral image and you drop bands you are loosing considerable information, and for no good reason. If you want to reduce the dimensionality of the data you could perform a PCA. The paper that you linked only had R,G,B,NIR so, they were not throwing away anything. Commented May 27, 2016 at 23:59
  • Hi thanks ! Would my data be somewhat similar if i perform PCA ? What I would like to do is to convert the hyperspectral data to a multi one. For example, given 200 images(bands) from visible to infrared, is there anyway i can merge the narrow bands such that I now have 4 images that is a good representation of the RGB and NIR band ?
    – RuiQi
    Commented May 28, 2016 at 15:30
  • 1
    No because you are collapsing the variation of the 200 bands and that will not be limited to the spectral space you are wanting. Why are you so focused on the RGB,NIR? There is considerable information content in the additional spectra. You seem intent on throwing away data. I think that it may be time for you to talk with a remote sensing expert, start reading some of the foundational work and take some course work because you seem to missing the point. Commented May 28, 2016 at 17:41
  • Hi thanks for your continued help ! I am actually a computer engineering student doing a small project on image processing so I am not an expert in this field. I do not need 200 bands to run my recognition algorithm. I need only 4 bands, RGB + NIR. The data provided consists of 200 bands. I need a multispectral image consisting of 4 bands but I have a hyperspectral image consisting of 200 bands so I am very keen to find out if there is a way to process the 200 images to get the RGB+NIR representation.
    – RuiQi
    Commented May 28, 2016 at 18:28
  • 1
    This is exactly you should talk with somebody well versed in remote sensing. In the hyperspectral data there will be multiple bands in the spectral ranges you desire. You could identify these ranges and perform a pca on each range and then combine them into a four band image of the pea results. Commented May 28, 2016 at 18:34

1 Answer 1


I won't comment much on hyperspectral vs. multispectral as this is quite well discussed in the comments. One example I can think of is where you have airborne hyperspectral data but wish to apply algorithms developed for multispectral satellite data but at a higher resolution rather than developing algorithms specific for hyperspectral data.

I you need to / prefer to work with multispectral imagery there are two main approaches you could use to obtain from hyperspectral data.

  1. Taking a subset of bands

This is the easiest option. A small number of bands are selected coresponding wavelengths you are interested in.

You can do this in ENVI (a commercial image processing package) or using the following command in GDAL (an open source library).

gdal_translate -of ENVI -b 200 -b 150 -b 100 -b 50
                input_hyperspectral.bsq output_multispectral.bsq

Each band will still have a very narrow bandwidth. The disadvantage of this approach is you are throwing away a lot of data. It is a good starting point though and probably sufficient for data visualisation.

  1. Averaging bands over a range of wavelengths

The second approach is to average over a number of bands, so each band has a wider bandwidth (similar to multispectral sensors). The advantage of this is by averaging you will decrease some of the noise in your data.

There are different approaches to spectral averaging, the simplest would be to apply an equal weighting to all bands (wavelengths) within your range which would approximate a rectangular response function. An alternative would be to apply different weights to each wavelength within the window to create a more realistic response. This approach could be used to simulate the response of another multispectral sensor.

Within ENVI the 'Spectral Resampling tool' can be used for this, which assumes a Gaussian response. You could also write something in Python making use of NumPy to do this. If you are working with ENVI BIL files (a common format for hyperspectral data) in Python you may find the 'arsf_envi_reader' I wrote (available from https://github.com/pmlrsg/arsf_tools) useful.

Other options if you are looking to reduce the number of bands while keeping the information content (rather than specific spectral information) are techniques such as PCA (mentioned by @Jeffrey-Evans).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.