This function constructs an ENVIRaster from a source raster that has been transformed from a red/green/blue (RGB) to hue/saturation/intensity (HSI) color space. The HSI color space is often used to identify features in image-processing algorithms that are more intuitive and natural to the human eye.
The result is a virtual raster, which has some additional considerations with regard to methods and properties. See Virtual Rasters for more information, including how they differ from ENVITasks.
The equivalent task is RGBToHSIRaster.
Background
ENVI uses the RGB-to-HSI transform described in the following reference:
Gonzalez, R.C., and R.E. Woods. "Color Image Processing." In Digital Image Processing, Third Edition. Pearson Prentice Hall, 2008.
ENVI performs some additional processing steps that you should be aware of:
- It normalizes the original raster pixel values (r) as follows:
- For better visual display, it scales the hue values by 360 so they range from 0 to 1.
Hue
Hue represents the dominant color that humans see in an object. It is measured as an angle on a color wheel, where red is 0°, green is 120°, and blue is 240°.
Saturation
The saturation of a color is a measure of its purity or greyness. The purest colors have values close to 1.0, and greyer colors have values close to 0.0.
Intensity
Intensity is commonly referred to as brightness. It is the average of the RGB values:
Example
e = ENVI()
file = FILEPATH('qb_boulder_msi', ROOT_DIR=e.ROOT_DIR, $
SUBDIRECTORY = ['data'])
raster = e.OpenRaster(file)
subset = raster.Subset(BANDS=[2,1,0])
hsiRaster = ENVIRGBToHSIRaster(subset)
View = e.GetView()
Layer = View.CreateLayer(hsiRaster)
Syntax
ENVIRaster = ENVIRGBToHSIRaster(Input_Raster, ERROR=variable)
Return Value
This routine returns a reference to an ENVIRaster that has been transformed from a red/green/blue (RGB) to hue/saturation/intensity (HSI) color space. For better visual display, ENVI scales the hue values by 360 so they range from 0 to 1.
Arguments
Input_Raster
Specify the input ENVIRaster. It must have three bands in the following order: Red, Green, and Blue.
If your original raster has more than three bands, or if it has red/green/blue bands that are not in the correct order, use ENVISubsetRaster to create a spectral subset for input to ENVIRGBToHSIRaster. Use the BANDS keyword to define a three-band subset, using zero-based band numbers. In the code example above, the original image (qb_boulder_msi) has four bands:
Band |
Color |
Zero-based band number
|
1 |
Blue |
0 |
2 |
Green |
1 |
3 |
Red |
2 |
4 |
Near-infrared |
3 |
To create an RGB raster with the correct band order, the example defines the BANDS array in ENVISubsetRaster as [2, 1, 0] since:
- The zero-based band number for Red is 2
- The zero-based band number for Green is 1
- The zero-based band number for Blue is 0
Methods
This virtual raster inherits methods and properties from ENVIRaster; however the following methods will override the ENVIRaster methods:
Dehydrate
Hydrate
Keywords
ERROR (optional)
Set this keyword to a named variable that will contain any error message issued during execution of this routine. If no error occurs, the ERROR variable will be set to a null string (''). If an error occurs and the routine is a function, then the function result will be undefined.
When this keyword is not set and an error occurs, ENVI returns to the caller and execution halts. In this case, the error message is contained within !ERROR_STATE and can be caught using IDL's CATCH routine. See IDL Help for more information on !ERROR_STATE and CATCH.
See Manage Errors for more information on error handling in ENVI programming.
NAME
Specify a string that identifies the raster.
Version History
ENVI 5.3.2 |
Introduced |
ENVI 5.4 |
Added Dehydrate and Hydrate methods; added NAME keyword
|
API Version
4.3
See Also
ENVIRaster, RGBToHSIRaster Task