This software release includes the new and enhanced features listed below. See the following sections:
Sensors and Data Formats
ENVI reads and displays imagery from the following sensors and data formats:
- Deimos-2
- DubaiSat-2
- Pleiades-HR and SPOT mosaic tiles
- GeoPackage vectors
- Google-formatted SkySat-2
- Sentinel-2
Image Processing
Point Clouds
Use the Generate Point Clouds by Dense Image Matching tool to create point clouds in LAS format from two or more satellite images taken from different view points. The following sensors are supported:
- DPPDB with a generic RPC sensor model
- GeoEye-1 in DigitalGlobe format (.til) and PVL format
- IKONOS
- Pleiades-1A
- QuickBird
- SPOT-6
- WorldView-1 through -3
This tool runs on Windows 64-bit platforms and requires a separate license for the ENVI Photogrammetry Module (formerly the ENVI Orthorectification Module), which also includes access to Rigorous Orthorectification.
QUAC
The QUick Atmospheric Correction (QUAC) algorithm was updated to the latest baseline source code from Spectral Sciences, Inc. The following reference summarizes the updated algorithm:
Bernstein, L. S., X. Jin, B. Grebor, and S. Adler-Golden. "Quick Atmospheric Correction Code: Algorithm Description and Recent Upgrades." Optical Engineering 51, No. 11 (2012): 111719-1 to 111719-11.
It contains the following enhancements to improve the accuracy of atmospheric correction:
- Applies mud filtering to exclude highly structured materials.
- Selects endmembers based on a small subset of available bands for most sensors. When a sensor spans both the visible and NIR-SWIR spectral regions, the algorithm excludes bands in the visible region.
- Constrains the gain curve to be constant for wavelengths below 650 nm.
- Suppresses the effects of dense vegetation.
- Removes cloud endmembers for hyperspectral sensors with 940 to 1020 nm water absorption bands.
QUAC also works with images where pixels are masked out or set to NoData, NaN, or Infinity.
GMTED2010
A higher-resolution version of the GMTED2010 (7.5 arc seconds) is available for download from our website. We recommend using this version for RPC Orthorectification and automatic tie point generation in Image Registration because it will significantly improve the accuracy of the results. See the GMTED2010 Overview topic in ENVI Help for details.
New Spectral Indices
The Normalized Difference Mud Index (NDMI) highlights muddy or shallow-water pixels. This index was originally designed as a filter to exclude those pixels and to improve the accuracy of QUick Atmospheric Correction (QUAC).
The Modified Normalized Difference Water Index (MNDWI) enhances open water features while suppressing noise from built-up land, vegetation, and soil. Xu (2006) reported that the MNDWI produced better results than the Normalized Difference Water Index originally developed by McFeeters (1996) in enhancing and extracting water from a background that is dominated by built-up land areas.
The Spectral Indices tool now lists only the spectral indices that are available to compute from an input raster, based on its wavelength metadata. It previously listed all spectral indices, then issued an error message if you selected any that could not be computed for the input raster.
User Interface
Numerous performance enhancements have been included in this release, improving the speed and efficiency of ENVI when working with multiple datasets and raster series animation.
ENVI imagery can now be saved to Geospatial PDF files. Select File > Chip View To > Geospatial PDF to capture all georeferenced data layers displayed in the current view, or use File > Export View To > Geospatial PDF to select and export entire georeferenced raster layers.
Use the Regrid Raster Series tool (under the Spatiotemporal Analysis folder in the Toolbox) to define a custom grid and to regrid a raster series to it. A custom grid definition is a combination of a coordinate system, spatial extent, pixel size, number of rows and columns, and/or tie-point pixel and map coordinates.
Right-click on the Classes folder of an ENVI classification image and select Edit Class Names and Colors to edit the default names and colors of individual classes.
The Clump Classes and Sieve Classes dialogs allow you to preview processing results.
The Edit ENVI Header dialog has been replaced by the Set Raster Metadata dialog. Use this to edit the values of ENVI header fields and to save the results to an ENVI header file. In the Toolbox, select Raster Management > Edit ENVI Header to access the Set Raster Metadata tool.
The Jagwire product, available from NV5 Geospatial Solutions, provides a server that streams imagery and video for display and analysis. Use the redesigned and simplified Remote Connection Manager to connect to Jagwire servers, to perform spatial and time queries on their contents, and to open raster data that represents properties of geographic locations.
The File Selection dialog now includes buttons for subsetting by raster, by vector, by region of interest (ROI), or by map coordinates. Click the Spatial Subset button in the File Selection dialog to access these options.
The File > Save As menu option now includes options for creating a masked raster file. A mask can be defined from another raster, a vector, or one or more ROIs. Click the Mask button in the File Selection dialog to access these options.
The ENVI LiDAR application has been merged into ENVI. To open the ENVI LiDAR window select LiDAR > Launch ENVI LiDAR from the Toolbox, or select Display > ENVI LiDAR from the ENVI menu bar.
Analyze data over time with a spatiotemporal Series Profile. From the main menu, select Display > Profiles > Series to launch the plot window.
ENVI profiles now provide adjustable smoothing to plotted data. Select Options > Curve Smoothing to display the slider control.
Programming
The QUAC task and ENVI_QUAC_DOIT were updated to the latest algorithm from Spectral Sciences, Inc., documented in the following reference:
Bernstein, L.S., X. Jin, B. Grebor, and S. Adler-Golden. "Quick Atmospheric Correction Code: Algorithm Description and Recent Upgrades." Optical Engineering 51, No. 11 (2012): 111719-1 to 111719-11.
Backward-Compatibility Notes
Partial strings are no longer allowed for the TaskName argument of ENVITask because of the growing number of tasks with common strings. For example, you could enter the following at the IDL command line in ENVI 5.2 SP1 and earlier:
IDL> e = ENVI()
IDL> task = ENVITask('iso')
This would assign the task variable to the ISODATAClassification task. Now it issues an error message but also provides the tasks that contain the partial string.
New ENVITasks
Task |
Description |
AdditiveLeeAdaptiveFilter
|
Apply a Lee adaptive filter to smooth noisy data that has an additive component.
|
AdditiveMultiplicativeLeeAdaptiveFilter
|
Apply a Lee adaptive filter to smooth noisy data that has an additive and multiplicative component.
|
BinaryGTThresholdRaster
|
Create a raster where values above a specified threshold are set to 1 and all other values are set to 0.
|
BinaryLTThresholdRaster
|
Create a raster where values below a specified threshold are set to 1 and all other values are set to 0.
|
BitErrorAdaptiveFilter
|
Apply a bit error adaptive filter to a raster.
|
BuildMosaicRaster
|
Build a mosaic raster based on a set of input rasters.
|
CalculateQUACGainOffset
|
Calculate the gain and offset for QUAC on multispectral or hyperspectral imagery.
|
DataValuesMaskRaster
|
Export a data values mask raster to an ENVI-format file.
|
DirectionalFilter
|
Apply a directional filter to a raster.
|
DirectionalKernel
|
Define a directional kernel for use with convolution filtering.
|
EnhancedFrostAdaptiveFilter
|
Apply an enhanced Frost filter to a raster, to reduce speckling while preserving edges.
|
EnhancedLeeAdaptiveFilter
|
Apply an enhanced Lee filter to a raster, to reduce speckling while preserving texture information.
|
ExportColorSlices
|
Export raster color slices to a density slice range (DSR) file.
|
FrostAdaptiveFilter
|
Apply a Frost filter to a raster, to reduce speckling while preserving edges.
|
GammaAdaptiveFilter
|
Apply a gamma filter to a raster, to reduce speckling while preserving edges.
|
GaussianHighPassFilter
|
Apply a Gaussian high pass filter to a raster.
|
GaussianHighPassKernel
|
Define a Gaussian high pass filter for use with convolution filtering.
|
GaussianLowPassFilter
|
Apply a Gaussian low pass filter to a raster.
|
GaussianLowPassKernel
|
Define a Gaussian low pass filter for use with convolution filtering.
|
GeneratePointCloudsByDenseImageMatching
|
Generate 3D point clouds from two or more images taken from different view points using a dense image matching method.
|
GeoJSONToROI |
Convert GeoJSON features to a region of interest (ROI).
|
GeoPackageToShapefile
|
Convert GeoPackage vector files to Shapefile format.
|
GetColorSlices |
Get data ranges and colors from a density slice range (DSR) file.
|
GetSpectrumFromLibrary
|
Retrieve the details of a specified material from a spectral library.
|
HighClipRaster |
Create a new raster where values above a threshold are set to the threshold.
|
HighPassFilter |
Apply a high pass filter to a raster.
|
HighPassKernel |
Define a high pass kernel for use with convolution filtering.
|
KuanAdaptiveFilter
|
Apply a Kuan adaptive filter to a raster.
|
LaplacianFilter |
Apply a Laplacian filter to a raster.
|
LaplacianKernel |
Define a Laplacian kernel for use with convolution filtering.
|
LocalSigmaAdaptiveFilter
|
Apply a Local Sigma adaptive filter to a raster.
|
LowClipRaster |
Create a new raster where values below a threshold are set to the threshold.
|
LowPassFilter |
Apply a low pass filter to a raster.
|
LowPassKernel |
Define a low pass kernel for use with convolution filtering.
|
MaskRaster |
Export a mask raster to an ENVI-format file.
|
MedianFilter |
Apply a median filter to a raster.
|
MultiplicativeLeeAdaptiveFilter
|
Apply a Lee adaptive filter to smooth noisy data that has an multiplicative component.
|
ROIMaskRaster |
Export an ROI mask raster to an ENVI-format file.
|
QuerySpectralLibrary
|
Query a spectral library, returning the names of all spectra in the library.
|
QueryTask |
View property descriptions for a selected ENVITask.
|
QueryTaskCatalog
|
View a list of available tasks in ENVI.
|
RasterConvolution
|
Apply a convolution filter to a raster.
|
RasterHistogram |
Compute the histogram of a raster.
|
RasterMetadataItem
|
Retrieve the value of a given raster metadata key.
|
RegridRasterSeries
|
Reproject a series of rasters to a common spatial grid, using a custom grid definition.
|
ReprojectRaster |
Reproject a raster from one coordinate system to another.
|
ResampleSpectrum
|
Resample a given spectrum to a different set of wavelengths, typically from a hyperspectral image.
|
RobertsFilter |
Apply a Roberts filter to a raster.
|
SetRasterMetadata
|
Set metadata values for a raster that does not have an associated ENVI header file (.hdr). This task creates a new header file and saves it to a specified location on disk.
|
SobelFilter |
Apply a Sobel filter to a raster.
|
SpectralAdaptiveCoherenceEstimator UsingSubspaceBackgroundStatistics
|
Perform Adaptive Coherence Estimator (ACE) target detection analysis, using the mean and covariance from subspace background statistics.
|
SpectralSubspaceBackgroundStatistics
|
Compute background statistics by excluding anomalous pixels.
|
VectorMaskRaster
|
Export a vector mask raster to an ENVI-format file.
|
VectorRecordsToSeparateROI
|
Create individual ROIs from each geometry record in a vector.
|
New Objects and Methods
Object/Method |
Description |
ENVIBinaryGTThresholdRaster
|
Construct an ENVIRaster from a source raster where pixel values above a specified threshold are set to 1 and all others are set to 0.
|
ENVIBinaryLTThresholdRaster
|
Construct an ENVIRaster from a source raster where pixel values below a specified threshold are set to 1 and all others are set to 0.
|
ENVIDataValuesMaskRaster
|
Construct an ENVIRaster from a source raster and a specified data range, where each pixel within the data range will not be masked.
|
ENVIGainOffsetWithThresholdRaster
|
Construct an ENVIRaster from a source raster with gains and offsets applied. Optionally constrain the resulting pixel values to a specified range.
|
ENVIHighClipRaster
|
Construct an ENVIRaster from a source raster where values above a threshold are set to the threshold.
|
ENVIJagwireServer
|
Reference an ENVIJagwireServer object. You can:
-
Query a hash table of raster datasets available on the Jagwire server
-
Query a hash table of dataset metadata
-
Close the Jagwire server connection in ENVI
|
ENVILowClipRaster
|
Construct an ENVIRaster from a source raster where values below a threshold are set to the threshold.
|
ENVIQUACRaster |
Construct an ENVIRaster from a source raster that has QUick Atmospheric Correction (QUAC) applied.
|
ENVIReprojectRaster
|
Construct an ENVIRaster from a source raster that has been reprojected to a different coordinate system.
|
ENVIRoi::GetExtent
|
Return the pixel coordinates boundary of the ROI for a given ENVIRaster.
|
ENVISpectralLibrary
|
Create an ENVI spectral library object.
|
ENVIView::Chip |
Create a new ENVIRaster from the contents of a view.
|
ENVIView::ChipToFile
|
Chip the contents of a view directly to a file.
|
New ENVI LiDAR Objects, Methods, and Tasks
Object/Method/Task
|
Description |
ENVI::OpenPointCloud
|
This method opens one or more point cloud files. It also opens a single ENVI LiDAR project file.
|
ENVI::QueryPointCloud
|
The QueryPointCloud function method opens a single point cloud file.
|
CreatePointCloudSubProject task
|
This task divides an existing ENVI LiDAR project into a number of subprojects for simultaneous processing by a number of ENVI Services Engine (ESE) workers.
|
ENVIPointCloud |
This method is a reference to a point cloud object, to which you can:
- Get points within a circle region
- Get points within a polygon region
- Get spatially sorted points within a given range
- Get points within a rectangle region
- Get points within a specified tile
- Save the ENVIPointCloud object
- Write points to a new LAS file
- Close the ENVIPointCloud object
|
PointCloudFeatureExtraction task
|
This task performs feature extraction on point cloud data. Building, tree, and power line feature extraction can be performed with the purchase of the ENVI Feature Extraction license. It also includes a validate task.
|
ENVIPointCloudFilter
|
This is a reference to an ENVIPointCloud point filter object. It is used to filter the point data that will be returned from the point query methods of the ENVIPointCloud object.
|
ENVIPointCloudMetadata
|
This is a reference to a point cloud metadata object.
|
ENVIPointCloudProductsInfo
|
This object stores the fully-qualified filenames for all products generated by the PointCloudFeatureExtraction task.
|
ENVIPointCloudQuery
|
This method is a reference to a point cloud object that has not been built into an optimized file format (i.e., an ENVI LiDAR .ini file). You can:
- Get spatially sorted points within a given range
- Close the ENVIPointCloudQueryobject
|
ENVIPointCloudSpatialRef
|
This method creates an ENVIPointCloudSpatialRef object, to which you can:
- Convert lat/lon coordinates to map coordinates
- Convert map coordinates to lat/lon coordinates
- Convert coordinates map-to-map
|
ENVIPointCloudViewer
|
This method starts the ENVI LiDAR application and returns an object reference to the instance of the application. You can:
- Open an ENVIPointCloud object in the viewer
- Open a shapefile in the viewer
- Get an ENVIPointCloud object that is already open in the viewer
- Get the view extents
- Set the location of the progress bar in the viewer
- Set the view extents
- Close the viewer
|
ENVISpatialSubsetPointCloud
|
This method creates a new ENVISpatialSubsetPointCloud object which is a spatial subset of an existing ENVIPointCloud object.
|
Messaging
Use the following objects and methods to add progress notification, or messaging, to ENVI API scripts.
Object or Method
|
Description |
ENVI::GetBroadcastChannel
|
This method returns an object reference to the system's broadcast channel.
|
ENVIAbortable |
Use this class to communicate if an abort is requested.
|
ENVIAbortableTaskFromProcedure
|
Use this base class when writing custom tasks that will have a progress dialog with an option to abort the process. This base class has its own set of PreExecute, DoExecute, and PostExecute methods.
|
ENVIBroadcastChannel
|
This is a reference to a broadcast channel object, to which you can:
- Send messages using the Broadcast method
- Subscribe using the Subscribe method
- Unsubscribe using the Unsubscribe method
|
ENVIMessage |
This is an abstract class used as a superclass for other message classes.
|
ENVIMessageHandler
|
This is an abstract class used as a super class for other message classes. ENVIBroadcastChannel calls the ENVIMessageHandler::OnMessage method to forward messages to all of its subscribers.
|
ENVIStartMessage
|
This function constructs an ENVIStartMessage object to send to the ENVIBroadcastChannel. If the ENVI user interface is running, then a progress dialog will appear.
|
ENVIProgressMessage
|
This function constructs an ENVIProgressMessage object to send to the ENVIBroadcastChannel. If the ENVI user interface is running with a progress dialog, the dialog will update.
|
ENVIFinishMessage
|
This function constructs an ENVIFinishMessage object to send to the ENVIBroadcastChannel. If the ENVI user interface is running with a progress dialog, the dialog will close.
|