Summary

This scenario is supposed to demonstrate how the reflectance of a surface can be inverted from a spectral radiance image and an Atmospheric Database (ADB) file.

The scene is very simple, composed of a flat plate that is assigned a reflectance via the ClassicEmissivity optical property. This property was chosen because it is the most widely used in existing scenes. There are actually two material scenarios:

  • A spectrally flat 2% reflector (gray.sim)

  • A spectrally varying dry grass (grass.sim)

Setup

The two material scenarios share a large number of files. The following summary attempts to describe the key files used by the two simulations:

  • The file geometry/plate.odb contains the ground plane, which is assigned material ID #1.

  • The materials folder has two different material files, which assign either the 2% gray (materials/test1.mat) or dry grass (materials/test2.mat) to material ID #1.

    • The 2% gray reflectance is provided in the file materials/gray.ems as spectrally flat emissivity of 0.98.

    • The dry grass reflectance is provided in the file materials/grass.ems as spectrally varying emissivity.

  • There are two .scene files, which use the same geometry but refer to the respective material files for the 2% gray and dry grass scenarios.

  • The .platform file describes a single pixel sensor that uses the Raw Capture Method to generate spectral radiance output from 0.4 to 2.5 microns at 0.01 micron resolution (211 spectral points, total).

  • The .ppd file places the sensor at 500 km looking nadir.

  • The mls_rural_23km.atm file sets up a Classic Atmosphere using MODTRAN and the mid-latitude summer, rural 23 km visibility conditions defined in the mls_rural_23km.tp5 file. The generated ADB file is named mls_rural_23km.adb.

  • There are two .sim files and the only difference is which .scene file is used (hence, which material is associated with the ground).

If you run either simulation, the radiance output will be in demo.img and some useful truth is in demo_truth.img.

Analysis

To perform the reflectance inversion, we extract the key variables from the input atmospheric database (ADB) file and the output radiance image file.

Extracting from the ADB File

The mls_rural_23km.adb file contains key illumination variables and this section will attempt to explain what there are, where they are located in the ADB file and how they can be used.

Direct Illumination

The SOURCE_PATHS section of the ADB file contains the exoatmospheric solar and lunar irradiance and the respective transmissions for those sources down to the ground (the comment in the ADB file should tell you which column is which variable). What is not in the ADB file (and is not present in these terms) is the declination angle for the Sun and the Moon.

To estimate the solar irradiance reaching the ground, you need to multiply the exoatmospheric solar irradiance (in the ADB) by the solar transmission (in the ADB) and by the cosine of the solar angle (not in the ADB, but output by DIRSIG during a simulation).

Diffuse Illumination

The DOWNWELLED_PATHS section of the ADB file contains the radiance of the sky as a function of zenith (declination) and azimuth (the comment in the ADB file should tell you which column is which variable). Each PATH entry describes a single zenith/azimuth location in the sky dome. The TOTAL entry is the total downwelled irradiance from the entire sky dome, which can be computed by hemispherically integrating all of the PATH entries.

Path Radiance and Transmission

The SENSOR_PATHS section of the ADB file contains the path radiance and transmission from the sensor the ground (the comment in the ADB file should tell you which column is which variable). The section contains multiple PATH entries, for different ZENITH and AZIMUTH samples within the field-of-view. The GROUND_RANGE is the distance from the sensor to the ground (in km).

Extracting the Pixel Radiance

The output radiance for the pixel can be extracted to text in a variety of ways. One of the easiest is to use the DIRSIG image_analyze tool:

$ image_analyze --image=demo.img --operator=extract > grass_pixel.txt

Approximate Radiative Transfer Equation

The DIRSIG radiometry engine employs a suite of radiometry solver objects to compute the radiance for a given line-of-sight (pixel). The radiance reaching a given pixel is the result of multiple solvers computing individual components including (a) the incident solar irradiance onto a surface, (b) the reflected radiance from a surface, (c) the path radiance from the atmosphere, etc. The complexity of each calculation is hard to capture in a single governing equation, but the following approximation is appropriate for the simple conditions created for this example:

\begin{equation*} L_\mathrm{pixel} = \left [ \tau_\mathrm{up}~\frac{\rho}{\pi} E_\mathrm{sun}~\tau_\mathrm{sun} \cos( \theta_\mathrm{sun} ) \right ] + \left [ \tau_\mathrm{up} \int\limits_{\theta=0}^{\pi/2} \int\limits_{\phi=0}^{2\pi} \frac{\rho}{\pi} L_\mathrm{sky}(\theta,\phi) \sin( \theta ) \cos( \theta ) d\theta d\phi \right ] + \left [ L_\mathrm{up} \right ] \end{equation*}

where Lpixel is the pixel radiance at the sensor, Esun is the exoatmospheric solar irradiance, tsun is the solar transmission to the ground, thetasun is the solar declination angle, rho is the hemispherical (Lambertian) reflectance, tup is the upward path transmission (from the ground to the sensor), Lsky(theta,phi) is the sky radiance form a specific solid angle in the hemisphere and Lup is the upward path radiance (from the ground to the sensor).

This equation has 3 major terms: (a) the directly reflected solar radiance term, (b) the diffusely reflected sky radiance term and (c) the path (upwelled) radiance term. The reflectance rho is divided by pi in all instances because the BRDF of a Lambertian reflector is the total reflectance spread across the solid angle of the hemisphere (and the solid angle of the hemisphere is pi). Because of the Lambertian reflector being used in this scenario, the reflectance does not vary with theta and phi so the reflectance and sky illumination terms can be decoupled, which will allow this term to be simplified. We still need to include the angular variability in the sky, but the total (hemispherical) sky irradiance can be computed as:

\begin{equation*} E_\mathrm{sky} = \int\limits_{\theta=0}^{\pi/2} \int\limits_{\phi=0}^{2\pi} L_\mathrm{sky}(\theta,\phi) \sin( \theta ) \cos( \theta ) d\theta~d\phi \end{equation*}

which allows us to rewrite the reflected sky term in our approximate radiative transfer equation using the total (hemispherical) reflectance and total (hemispherical) sky irradiance:

\begin{equation*} L_\mathrm{pixel} = \left [ \tau_\mathrm{up} \frac{\rho}{\pi} E_\mathrm{sun} \tau_\mathrm{sun} \cos( \theta_\mathrm{sun} ) \right ] + \left [ \tau_\mathrm{up} \frac{\rho}{\pi} E_\mathrm{sky} \right ] + \left [ L_\mathrm{up} \right ] \end{equation*}

Reflectance Retrieval

By solving our approximate radiative transfer equation for rho, and using atmospheric terms from the ADB file with the pixel radiance from output image file, we can retrieve the reflectance of the surface:

\begin{equation*} \rho = \frac{L_\mathrm{pixel} - L_\mathrm{up}} {\tau_\mathrm{up} \frac{1}{\pi} E_\mathrm{sun} \tau_\mathrm{sun} \cos( \theta_\mathrm{sun} ) + \tau_\mathrm{up} \frac{1}{\pi} E_\mathrm{sky}} \end{equation*}

The Excel spreadsheet ReflectanceInversion.xlsx performs this retrieval on a wavelength by wavelength basis. The Excel workbook contains two sheets: one for the 2% gray scenario and one for the dry grass scenario. A screenshot of the sheet for retrieving the 2% gray reflector is shown below:

excel gray sheet
Figure 1. Excel sheet for retrieving the 2% gray reflector.

The columns in the Excel spreadsheet can be mapped to the following data sources:

  • Column B is the pixel radiance from the output radiance image

  • Columns C - G are from the SOURCES section of the ADB file

  • Columns H - K are from the first PATH entry in the SENSOR_PATHS section of the ADB file (this path is for ZENITH = 0.0, which is the straight down (nadir) path being modeled).

  • Columns L - N are from the TOTAL entry in the DOWNWELLED_PATHS section of the ADB file.

  • Column O is the retrieved reflectance.

Important
The TOTAL data in ADB files dating back back to DIRSIG3 contained values that are actually irradiance over Pi. The origin of these unconventional units is not understood. In DIRSIG 4.6 release (and later) this was corrected. If you are reproducing this demo with DIRSIG 4.5.x or earlier, then the formula in the Excel spreadsheet should account for this by not including the 1/pi term associated with the Esky term.

Results

2% Gray Scenario

In the case of the 2% Gray scenario, the retrieved reflectance matches the input value (rho = 0.02) at all wavelengths except those where the atmospheric transmission goes to zero and the calculation is undefined.

excel gray plot
Figure 2. Excel plot of retrieval for the 2% gray reflector.

Dry Grass Scenario

The retrieval for the dry grass scenario is also a close match. In this case the input reflectance is plotted with the retrieved reflectance and the two curves are indistinguishable except where the atmospheric transmission goes to zero and the calculation is undefined.

excel grass plot
Figure 3. Excel plot of retrieval for the dry grass material.

Final Notes

This example is able to achieve a good match to the input reflectance because the radiometric scenario was simple and could be easily represented by an invertable radiative transfer equation. The following conditions would make the process more difficult:

  • Shadowing

    • Although the shadow could be approximated by setting Esun to 0, an object casting a shadow also blocks some portion of the sky. In the reflective region of the spectrum, the sky contains significant asymmetries due to solar scattering, so simply using a fraction of the Lsky term would be a bad approximation of what DIRSIG is doing. Furthermore, DIRSIG doesn’t simply eliminate sky radiance, it finds that part of the hemisphere is an adjacent object reflecting light into the surface. Estimating the light onto and reflected from that shadowing (adjacent) object is another challenge to estimate.

  • Transmission

    • If target has any transmission (for example, a leaf), then the radiance transmitted from the object below would need to be approximated. This object would have to include the transmission lose in the illumination terms, which makes the approximation non trivial.

  • Non-Lambertian

    • The approximate radiative transfer function was able to use a simplified representation of the directly and diffusely reflected illumination because the surface is Lambertian. Once the surface has a non-Lambertian reflectance these terms become significantly more complicated and harder to write in a closed form that can be easily inverted.