Core Base and Multiplier

From Isis Workshop

Jump to: navigation, search

Contents

[edit] Core Base and Multiplier Basics

Recall that a digital Number (DN) is the content of a pixel. These numbers are used to represent real world values such as:

  • Radiance - A measurement describing the amount of electromagnetic energy emitted from an area of a planet.
  • Reflectance - The ratio of reflected energy to incoming energy
  • Elevation - The height above or below a fixed point on the surface of a body
  • Emissivity - A measure describing a substances ability to absorb and radiate electromagnetic energy.

Let's assume we have an 8-bit cube with values representing the elevation in meters. Unfortunately 8-bit pixels have a range of 0 to 255, which is very restrictive for elevation. Isis deals with this problem by using a Core Base and Multiplier. Each DN is really treated as a floating point number in all Isis programs.

In the example to the right, use mouse to examine the values in an 8-bit elevation cube, then change the multiplier and base notice how the values change.

Hold your mouse over the questions to see the answers

Change the multiplier to 100. Re-examine the image. Do the elevations range from 0 to 25500 meters?

Change the base to -500. What is the range of pixel values?

User Defined Applet


[edit] Important Notes:

  • The equation applied to 8-bit and 16-bit cubes is DN = Base + (stored value * Multipler).
  • Base and Multiplier are not used for 32-bit cubes.
  • It is much easier to think of all Isis cubes as 32-bit even though they may be stored as 8-bit or 16-bit.

[edit] Core Base and Multiplier and Isis

Within Isis, every software application dealing with an image cube uses the bit-type of the data and the Base and Multiplier in order to generate a Digital Number (DN) that represents the data. For example, if a cube holds elevation data, the DN of each pixel is the elevation in measurable units (e.g. meters, feet, etc.) of that point on the surface. All Isis applications use the floating point values (i.e., with the base and multiplier applied to the stored pixel value) in their calculations.

The values stored in the Base and Multiplier keywords in the cube label (located in the Pixels Group) are applied to the stored values in 8-bit and 16-bit cubes of the image cube in order to generate DN values using the following equation:

DN value = Base + (Multiplier * stored value)

For example, radiance values in a radiometrically calibrated cube are displayed as floating point values (regardless of the stored value) representing radiance from the surface in radiance units (e.g. µw/(cm2sr)). If the output calibrated image file is an 8-bit cube (i.e. values ranging from 0 to 255), the Base and Multiplier are applied to shift and scale the stored values in order to represent the actual floating point radiance values.

The resulting DNs will vary slightly between 8-bit and 16-bit cubes due to the different number and range of values that can be stored within each bit-type.

For 32-bit cubes, the Base and Multiplier keywords are not used because each pixel DN already directly represents actual floating point value. Processing image data within Isis in 32-bit avoids processing-induced saturation of pixel DN's and bin compression problems.

[edit] Processing Considerations

Choose the Ouput Range Carefully

When processing image data with 8-bit or 16-bit output, you must anticipate the output DN range of the cube you will be creating. This is particularly important if the input DN range will be changed significantly after processing through an Isis application, such as a radiometric calibration application or ratio.

The Isis software automatically computes the Base and Multiplier values based on the provided range of valid output DNs you set for 8- or 16-bit output image cubes. Take care in setting the output range, otherwise valid data may be lost:

  • Minimum too high : Output DNs falling below the MIN value will be set to low saturation
  • Maximum too low  : Output DNs falling above the MAX value will be set to high saturation
  • Range too wide  : Output DNs will be binned (a subrange of DNs are all combine into one DN), reducing the number of discrete DNs in the output

The following examples are gross exaggerations, and are meant only to illustrate some problems you may see creating 8-bit and 16-bit output cubes.

[edit] Original Image

uploaded image: Original Image
Original Image
uploaded image: Histogram of original image. Notice the pixel values are well distributed over the range.
magnifying glass icon
Histogram of original image. Notice the pixel values are well distributed over the range.

Statistics

The following statistics were generated by the stats application.

Group = Results
 From              = original.cub
 Average           = 125.24218105453
 StandardDeviation = 22.665000770265
 Variance          = 513.70225991612
 Median            = 124.90322580645
 Mode              = 126.88172043011
 Skew              = 0.044865021383909
 Minimum           = 1.0
 Maximum           = 254.0
 TotalPixels       = 40000
 ValidPixels       = 39999
 NullPixels        = 0
 LisPixels         = 0
 LrsPixels         = 0
 HisPixels         = 0
 HrsPixels         = 1
End_Group

[edit] Low Saturation Image

uploaded image: Low Saturation
Low Saturation

In this example the range is set to 1:254. By default, the pixels the highpass application generates have values that are centered around 0. Since there will be values less than 1 in the file, setting the minimum of the output range to 1 will cause all of the pixels with values less than 1 to be set to NULL. In this example, over half our pixels have been set to NULL, needlessly throwing out what should be valid data.

Command Line

highpass
 from=original.cub
 to=lowsaturation+8bit+1:254 
 lines=31 samples=31
         

Statistics

Group = Results
 From              = lowsaturation.cub
 Average           = 11.533880695352
 StandardDeviation = 9.9256794761932
 Variance          = 98.519113064124
 Median            = 8.9423264907136
 Mode              = 1.9775171065494
 Skew              = 0.78328769658181
 Minimum           = 1.0
 Maximum           = 126.0
 TotalPixels       = 40000
 ValidPixels       = 19731
 NullPixels        = 20268
 LisPixels         = 0
 LrsPixels         = 0
 HisPixels         = 0
 HrsPixels         = 1
End_Group


[edit] High Saturation Image

uploaded image: High Saturation
High Saturation

In this example the range is set to -123:1. Like above, by default, the pixels the highpass application generates have values that are centered around 0. Since there will be values greater than 1 in the file, setting the maximum of the output range to 1 will cause all of the pixels with values greater than 1 to be set to HRS (High Representation Saturation). In this example, nearly half our pixels have been set to HRS, needlessly throwing out what should be valid data.

Command Line

highpass
 from=original.cub
 to=highsaturation+8bit+-123:1
 lines=31 samples=31
         

Statistics

Group = Results
 From              = highsaturation.cub
 Average           = -10.640719301463
 StandardDeviation = 10.791846466594
 Variance          = 116.46395015854
 Median            = -7.8135106000765
 Mode              = -1.4146604383805
 Skew              = -0.78592909289581
 Minimum           = -122.50988142293
 Maximum           = 0.9999999999954
 TotalPixels       = 40000
 ValidPixels       = 21278
 NullPixels        = 1
 LisPixels         = 0
 LrsPixels         = 0
 HisPixels         = 0
 HrsPixels         = 18721
End_Group

[edit] Wide Saturation Image

uploaded image: Wide Saturation
Wide Saturation

In this example the range is set to -2500:2500. Unlike the above examples, this range encompasses the entire range of the output data, however, the range is much wider than necessary. In order to squeeze all the 5,001 possible values into the 256 possible values that can be stored in our 8-bit output file, ranges of values are combined into a single value that represents that range. Instead of getting a nice distribution of values across the range (like in our original image), now there's only a handful of values representing our data set - this effect is called binning. The effects of binning are most obvious in the image histogram - compare the histogram graph on the left to the histogram graph of the original image above.

Command Line

highpass
 from=original.cub
 to=widesaturation+8bit+-2500:2500
 lines=31 samples=31


Histogram Statistics

The following statistics were generated by the hist application, which also generates the comma-delimited data used to generate the histogram shown left.

Cube:           widesaturation.cub
Band:           1
Average:        -0.00419971
Std Deviation:  16.5516
Variance:       273.957
Median:         9.92006
Mode:           9.92006
Skew:           -1.79878
Minimum:        -128.458
Maximum:        128.458

Total Pixels:    40000
Valid Pixels:    39999
Null Pixels:     0
Lis Pixels:      0
Lrs Pixels:      0
His Pixels:      0
Hrs Pixels:      1
uploaded image: Histogram of wide saturation image Notice that all pixels are in one of a few bins, not well distributed over the range as they should be.
magnifying glass icon
Histogram of wide saturation image Notice that all pixels are in one of a few bins, not well distributed over the range as they should be.

[edit] Tips

  • Isis 3 does not require the base and multiplier to be the same in all input cubes (unlike older versions of Isis)
  • If you're uncertain what the DN range of your output cube will be when you run an application, run the application so it generates a standard 32-bit cube and run stats on the new cube.
  • In general, we recommend always working with 32-bit cubes. If you don't reduce the bit-type to 8-bit or 16-bit, you don't need to worry about saturation, binning, or loss of accuracy while working.

[edit] Related Isis Applications

See the following Isis documentation for information about the applications discussed here:

  • stats - Get statistics about a cube
  • hist - Get histogram data and statistics about a cube
  • highpass - high pass filter


[edit] The Effect on Image Data

If the Base is 0 and Multiplier is 1, the DN values will be the same as the stored values. In this case, values will range from 0 to 255 for an 8-bit cube, and -32768 to 32767 for a 16-bit cube. If these two keywords are not 0 and 1, then the DN range will vary based on whatever you specified for the range when you ran the application. The number of unique values will still be 256 for an 8-bit cube, 65,536 for a 16-bit cube, and ~4 billion for a 32-bit cube.

cubeatt from=file_32bit to=file_8bit+8bit:1:254
cubeatt from=file_32bit to=file_8bit+8bit+0:1.0

[edit] Core Base and Multiplier Summary

The base and multiplier are used to convert 8-bit and 16-bit cube pixel values stored on disk to a digital number (DN). Once converted the DN may represent measurements like radiance or reflectance. 32-bit pixels are not converted using the base and multiplier. They already represent the true measurement.

DN = Base + (stored value * Multiplier)


Be very careful when specifying the bit type for an output cube. Specifying a smaller bit type can cause a loss of data. Specifying a larger bit type will not cause you to lose any data, but will increase the size of the output cube.

Personal tools
Work Shops