NDVI -- Compute NDVI from AVHRR Data

The NDVI task is used to compute NDVI (Normalized Differential Vegetation Index) from the visible channels of an AVHRR scene (channels 1 and 2). The NDVI result has been proven to be a good monitor of vegetation changes.

See Also: MIAVHRR, GDB, AVHRRAD, AVHRCOR, SST

PARAMETERS

Name     Prompt                                  Count     Type
FILE     Database File Name                      1-64      Char
DBIC     Database Input Channel List             0-2       Integer
DBOC     Database Output Channel List            1-1       Integer
AVHRRSEG AVHRR Calibration/Orbit Text Segment    0-1       Integer

FILE

Specifies the PCIDSK database file containing the input AVHRR channels and the output NDVI channel.

EASI> FILE="filespec"

DBIC

Specifies the channels containing the AVHRR visible channels (channels one, and two). If not specified it will default to 1, and 2.

 EASI>DBIC=                                    | Default to 1,2
 EASI>DBIC=3,4

DBOC

Specifies the channel the NDVI value is to be written to. This channel should be 16 bit, or 32 bit real in order to preserve the NDVI values.

 EASI> DBOC=6

AVHRRSEG

Specifies the AVHRR text segment in the input file. The image year and day-of-year values are extracted from this text segment. If AVHRRSEG is not specified, NDVI will search for the first text segment in the input file.

 EASI> AVHRRSEG = 4

DETAILS

The NDVI PACE task computes NDVI (Normalized Differential Vegetation Index) from the visible channels of an AVHRR scene (DBIC) on a user specified file (FILE). Care must be taken to ensure that DBIC[1] refers to data from the first visible band from the AVHRR scene (channel 1), and that DBIC[2] refers to the second visible band (channel 2). If they are reversed, or if other data is used the resulting NDVI result will be meaningless.

The resulting NDVI value is written out to the channel DBOC in the same file. This channel should be of 16 bit, or 32 bit real types to avoid truncating the NDVI result.

The formula used incorporates both time-dependent radiometric calibration and the NDVI computation itself. The NDVI result is then scaled to approximate the results of the GeoComp system, although final results will differ due to different approaches to radiometric calibration. Normally the user should use FIMPORT or MIAVHRR to import the raw AVHRR data. An extra (6th) channel can then be added to the resulting PCIDSK file if desired. Then the NDVI task can be used to compute the NDVI channel. The NDVI task itself is not sensitive to image geometry, and so can be run before or after geometric correction of an AVHRR scene.

The radiometric calibration which is performed requires various coefficients, the values of which change with the satellite, image date, and channel (1 or 2). In particular, the NDVI task has been set up with coefficients which are valid only for NOAA-14 and AVHRR imagery from 1997. However, the NDVI task is implemented as an EASI script, and so it should be easy for users to modify the coefficients and even the equations as desired. The script is $PCIHOME/pro/NDVI.EAS. One of the purposes of this script is to allow users to make modifications where appropriate. It is impractical for PCI to prepare a script which handles every situation because the radiometric calibration coefficients vary over time.

Note that NDVI.EAS reads the input file's AVHRR text segment in order to extract the image year and day-of-year. These quantities are used to compute the number of days since the launch of the satellite for radiometric calibration. If the AVHRR text segment is missing this information, it will be necessary to manually edit the text segment and enter this information before running NDVI. Text segment editing can be achieved using the TEXWRIT and TEXREAD programs. When FIMPORT or MIAVHRR is used to import raw AVHRR data, an AVHRR text segment is automatically created.

Radiometric Calibration

Radiometric calibration refers to the process of calibrating digital signal level counts to apparent sensor radiance. The apparent sensor radiance quantity is used in the computation of the NDVI channel. Radiometric calibration is performed on each pixel with no depedence on location within the image.

The equation for computing apparent sensor radiance is:

 Lstar(i) = (D(i) - O(i,t)) / G(i,t)

 where:        i = channel number (1 or 2)
               t = number of days since the launch of the satellite
            D(i) = raw digital signal level (counts)
          O(i,t) = calibration offset coefficient (counts)
          G(i,t) = calibration gain coefficient (counts/W m^-2 sr^-1 um^-1)
        Lstar(i) = apparent sensor radiance (W m^-2 sr^-1 um^-1)
The O(i,t) and G(i,t) coefficients can be computed as follows:

 G(i,t) = A * t + B

 O(i,t) = C * t + D

 where: A is in units of counts/radiance/day
        B is in units of counts/radiance
        C is in units of counts/day
        D is in units of counts
The values of the A, B, C, and D coefficients vary with the satellite, channel number (1 or 2), and year.

Note that the NDVI task does not actually have a radiometric calibration step whereby apparent sensor radiances are generated as (intermediate) channel values. Rather, the radiometric calibration computations are embedded directly within the NDVI computation process. This is done to avoid the loss of precision inherent in writing radiance values into channels of integer type.

Radiometric calibration is performed for channels 1 and 2 only. The thermal AVHRR channels (3, 4, and 5) are not processed at all.

References:

 Teillet, P.M., "An Algorithm for the Radiometric and Atmospheric
 Correction of AVHRR Data in the Solar Reflective Channels",
 Remote Sensing of the Environment 41:185-195, 1992.

Normalized Differential Vegetation Index (NDVI)

The NDVI channel has been proven to be a good monitor of vegetation changes. The steps for computing NDVI are as follows:

 Step 1 - Radiometric calibration

  Assuming that channels 1 and 2 contain raw digital signal level counts,
  we apply the radiometric calibration procedure described earlier in
  order to obtain apparent sensor radiances (Lstar(i)).

 Step 2 - Compute apparent sensor reflectance

  Given apparent sensor radiance as input, compute apparent sensor
  reflectance (RHOstar(i)) as follows:
    RHOstar(i) = [(PI * Ds^2) / (E0(i) * cos(THETAs))] * Lstar(i)

    where:         PI = 3.14159...
                   Ds = Earth-Sun Distance in A.U. (approximately 1)
                   E0 = exo-atmospheric solar irradiance (W/m^2/str/um)
                      = 1605.4 for channel 1 (NOAA-14)
                      = 1028.7 for channel 2 (NOAA-14)
               THETAs = solar zenith angle (degrees)
           RHOstar(i) = apparent sensor reflectance (%)
 Step 3 - Compute NDVI

  Given apparent sensor reflectance as input, compute the NDVI
  channel as follows:
    NDVI = (RHOstar(2) - RHOstar(1)) / (RHOstar(2) + RHOstar(1))
  NDVI values range from -1 to +1.

 Step 4 - Scale the NDVI values

  The NDVI values are scaled to the range, 0 to 20000, using this
  equation:
    Scaled NDVI = (1 + NDVI) * 10000
This scaling is used to approximate the GeoComp NDVI pseudo-channel.

In NDVI.EAS, steps 2 and 3 are actually combined into a single step using this equation:

   NDVI = (E0(1)*Lstar(2)-E0(2)*Lstar(1)) / (E0(1)*Lstar(2)+E0(2)*Lstar(1))
Notice that the dependence on the solar zenith angle and the Earth-Sun distance is removed by combining these two steps into a single equation.

More information about the GeoComp system is available on the WWW:

 http://www.ccrs.emr.ca/gcnet/guides/geocomp/geocomp.html

User-modifiable Values

The NDVI task has been configured for NOAA-14 and AVHRR imagery acquired in 1997. For other satellites, and/or other image years, the following quantities will need to be altered in NDVI.EAS:

EXAMPLES

Example 1

Import a scene, add an extra channel, and then compute the NDVI channel.

 EASI> fili = "avhrr.raw"
 EASI> filo = "avhrr.pix"
 EASI> dbiw = 
 EASI> run fimport                 | Import AVHRR scene

 EASI> file = "avhrr.pix"
 EASI> pcival = 0,0,0,1
 EASI> pciop = "ADD"
 EASI> run pcimod                  | Add channel for NDVI

 EASI> dbic = 1,2
 EASI> dboc = 6
 EASI> avhrrseg =
 EASI> run ndvi                    | Compute NDVI into channel 6
Example 2

Import a scene, geometrically correct it, and then compute the NDVI channel. Note that NDVI can also be computed before geometric correction.

 EASI> fili = "avhrr.raw"
 EASI> filo = "avhrr.pix"
 EASI> dbiw = 
 EASI> run fimport                 | Import AVHRR scene

 EASI> fili = "avhrr.pix"
 EASI> filo = "geocorr.pix"
 EASI> dbic = 1, 2, 3
 EASI> dboc = 1, 2, 3
 EASI> avhrrseg = 3
 EASI> pixres = 4000
 EASI> resample =
 EASI> memsize = 20
 EASI> timemult =
 EASI> run avhrcor                 | Geometric correction

 EASI> fili = "avhrr.pix"
 EASI> filo = "geocorr.pix"
 EASI> dbsl = 3
 EASI> dbos =
 EASI> run iia                     | Transfer AVHRR text segment

 EASI> dbic = 1,2
 EASI> dboc = 3
 EASI> avhrrseg =
 EASI> run ndvi                    | Compute NDVI into channel 3

About PCI Help Gateway