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 Harris Geospatial Systems, 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.