CalculateConfusionMatrixFromRaster Task

This task returns a confusion matrix as well as a number of accuracy measurements computed from a classification raster and ground truth regions of interest (ROIs).

The classification raster contains predicted class values from a classification, which are accompanied by class names. The truth ROIs contain the actual, or expected, class names of a particular region of the raster. A confusion matrix is created by comparing the predicted names to the truth names.

Example

The code example below evaluates classifications using a confusion matrix.

PRO EvaluateClassificationUsingConfusionMatrix

    COMPILE_OPT IDL2

 

    ; Start the application

    e = ENVI()

 

    ; Open an input file

    File = Filepath('qb_boulder_msi', Subdir=['data'], $

    Root_Dir=e.Root_Dir)

    Raster = e.OpenRaster(File)

    File2 = Filepath('qb_boulder_roi.xml', Subdir=['data'], $

    Root_Dir=e.Root_Dir)

    Rois = envi.OpenROI(roiFile)

 

    ; Get training statistics

    StatTask = ENVITask('ROIStatistics')

    StatTask.INPUT_RASTER = Raster

    StatTask.INPUT_ROI = Rois

    StatTask.Execute

 

    ; Get the task from the catalog of ENVITasks

    Task = ENVITask('MahalanobisDistanceClassification')

 

    ; Define inputs

    Task.INPUT_RASTER = Raster

    Task.COVARIANCE = StatTask.Covariance

    Task.MEAN = StatTask.Mean

    Task.CLASS_PIXEL_COUNT = StatTask.Roi_Pixel_Count

    Task.CLASS_NAMES = [Rois[0].name, Rois[1].name, Rois[2].name]

    Task.CLASS_COLORS = [[0,0,255], [0,255,0], [255,0,0]]

 

    ; Run the task and display the result

    Task.Execute

    ClassRaster = Task.OUTPUT_RASTER

    View = e.GetView()

    Layer = View.CreateLayer(ClassRaster)

 

    ; Add the output to the Data Manager

    envi.Data.Add, ClassRaster

 

    ; Calculate the confusion matrix

    ConfusionMatrix = ENVICalculateConfusionMatrixFromRaster(ClassRaster, Rois)

 

    ; Print results

    Print, 'Confusion Matrix:'

    Print, ConfusionMatrix.Confusion_Matrix

    Print, 'Errors of commission: '

    Print, Transpose([[ConfusionMatrix.Column_Names+': '], [(ConfusionMatrix.CommissionError()).ToString()]])

    Print, 'Errors of omission: '

    Print, Transpose([[ConfusionMatrix.Column_Names+': '], [(ConfusionMatrix.OmissionError()).ToString()]])

    Print, 'Overall accuracy: ', ConfusionMatrix.Accuracy()

END

Syntax

Result = ENVITask('CalculateConfusionMatrixFromRaster')

Input properties (Set, Get): INPUT_RASTER, INPUT_ROIS

Output properties (Get only): ACCURACY, CLASS_NAMES, COMISSION_ERROR, CONFUSION_MATRIX, F1, KAPPA_COEFFICIENT, OMISSION_ERROR, PRODUCER_ACCURACY, USER_ACCURACY

Properties marked as "Set" are those that you can set to specific values. You can also retrieve their current values any time. Properties marked as "Get" are those whose values you can retrieve but not set.

Methods

This task inherits the following methods from ENVITask:

AddParameter

Execute

Parameter

ParameterNames

RemoveParameter

Properties

This task inherits the following properties from ENVITask:

COMMUTE_ON_DOWNSAMPLE

COMMUTE_ON_SUBSET

DESCRIPTION

DISPLAY_NAME

NAME

REVISION

TAGS

This task also contains the following properties:

ACCURACY

This is the the overall accuracy of the confusion matrix, calculated by summing the number of correctly classified values and dividing by the total number of values.

CLASS_NAMES

This is the list of classes in the order the confusion matrix and the accuracy measurements are generated.

COMISSION_ERROR

Errors of commission represent the fraction of values that were predicted to be in a class but do not belong to that class. They are a measure of false positives. The result is an array with one value per class.

CONFUSION_MATRIX

This is the resulting confusion matrix.

F1

This is the F1 score, which is the harmonic mean of the User Accuracy and Producer Accuracy values. The result is an array with one value per class.

INPUT_RASTER (required)

Specify a classification raster.

INPUT_ROIS (required)

Specify an array of ENVIROIs containing truth data.

ENVIConfusionMatrix is a persistable object that can be saved and restored.

KAPPA_COEFFICIENT

The kappa coefficient measures the agreement between classification and truth values. A kappa value of 1 represents perfect agreement, while a value of 0 represents no agreement.

OMISSION_ERROR

Errors of omission represent the fraction of values that belong to a class but were predicted to be in a different class. They are a measure of false negatives. The result is an array with one value per class.

PRODUCER_ACCURACY

This is the probability that a value in a given class was classified correctly. The result is an array with one value per class.

USER_ACCURACY

This is the probability that a value predicted to be in a certain class really is that class. The result is an array with one value per class.

Version History

ENVI 5.4

Introduced

API Version

4.2

See Also

ENVITask, ENVICalculateConfusionMatrixFromRaster, ENVIConfusionMatrix