public class RandError extends Metrics
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
originalLabels, proposedLabels, verbose
Constructor and Description 

RandError(ij.ImagePlus originalLabels,
ij.ImagePlus proposedLabels)
Initialize Rand error metric

Modifier and Type  Method and Description 

static double 
adaptedRandIndex3D(ij.ImagePlus originalLabels,
ij.ImagePlus proposedLabels)
Calculate the Rand index between to 3D clusters, as described by
William M.

static double 
adaptedRandIndexFScore3D(ij.ImagePlus originalLabels,
ij.ImagePlus proposedLabels)
Calculate the Fscore of the Rand index between to 3D clusters, as described by
William M.

static ClassificationStatistics 
adaptedRandIndexStats3D(ij.ImagePlus originalLabels,
ij.ImagePlus proposedLabels)
Calculate the Rand index between to 3D clusters, as described by
William M.

static double[] 
adaptedRandIndexStats3DN2(ij.ImagePlus segA,
ij.ImagePlus segB)
Calculate the Rand index stats between to 3D clusters, as described by
William M.

double 
classicRandIndex(ij.process.ShortProcessor cluster1,
ij.process.ShortProcessor cluster2)
Calculate the Rand index between to clusters, as described by
William M.

double 
foregroundRestrictedRandError(ij.process.ImageProcessor label,
ij.process.ImageProcessor proposal,
double binaryThreshold)
Calculate the foregroundrestricted Rand error between some 2D original
labels and the corresponding proposed labels.

double 
foregroundRestrictedRandIndex(ij.process.ShortProcessor cluster1,
ij.process.ShortProcessor cluster2)
Calculate the Rand index between to clusters, as described by
William M.

double[] 
getForegroundRestrictedGroundTruthDisagreements(ij.process.ShortProcessor cluster1,
ij.process.ShortProcessor cluster2)
Get foregroundrestricted disagreements between prediction and
ground truth labels with N^2 normalization (mergers).

double 
getForegroundRestrictedMetricValue(double binaryThreshold)
Calculate the foregroundrestricted Rand error in 2D between some
original labels and the corresponding proposed labels.

double[] 
getForegroundRestrictedPredictionDisagreements(ij.process.ShortProcessor cluster1,
ij.process.ShortProcessor cluster2)
Get foregroundrestricted disagreements between ground truth and
prediction labels with N^2 normalization (splits).

ClassificationStatistics 
getForegroundRestrictedRandAfterThinningStats(double binaryThreshold,
boolean perSliceAverage)
Calculate the foregroundrestricted Rand score (N^2 normalization) and
its derived statistics in 2D between some original labels and the
corresponding proposed labels after border thinning.

ArrayList<ClassificationStatistics> 
getForegroundRestrictedRandAfterThinningStats(double minThreshold,
double maxThreshold,
double stepThreshold,
boolean perSliceAverage)
Calculate the precisionrecall values based on the foregroundrestricted
Rand score between some 2D original labels and the corresponding
proposed labels (after border thinning).

Callable<ClassificationStatistics> 
getForegroundRestrictedRandAfterThinningStatsConcurrent(ij.process.ImageProcessor image1,
ij.process.ImageProcessor image2,
double binaryThreshold)
Get foregroundrestricted Rand score value and derived statistics
between two images in a concurrent way (to be submitted to an Executor
Service).

ClassificationStatistics 
getForegroundRestrictedRandAfterThinningStatsN2(ij.process.ImageProcessor label,
ij.process.ImageProcessor proposal,
double binaryThreshold)
Calculate the foregroundrestricted Rand precision and recall between
some 2D original labels and the corresponding proposed labels with N^2
normalization.

Callable<Double> 
getForegroundRestrictedRandErrorConcurrent(ij.process.ImageProcessor image1,
ij.process.ImageProcessor image2,
double binaryThreshold)
Get foregroundrestricted Rand error between two images in a concurrent
way (to be submitted to an Executor Service).

double 
getForegroundRestrictedRandIndexMaximalFScore(double minThreshold,
double maxThreshold,
double stepThreshold)
Get the best Fscore of the foregroundrestricted Rand index over a set
of thresholds.

ClassificationStatistics 
getForegroundRestrictedRandIndexStats(double binaryThreshold)
Calculate the foregroundrestricted Rand error (N^2 normalization) and
its derived statistics in 2D between some original labels and the
corresponding proposed labels.

ArrayList<ClassificationStatistics> 
getForegroundRestrictedRandIndexStats(double minThreshold,
double maxThreshold,
double stepThreshold)
Calculate the precisionrecall values based on the foregroundrestricted
Rand index between some 2D original labels and the corresponding
proposed labels.

Callable<ClassificationStatistics> 
getForegroundRestrictedRandIndexStatsConcurrent(ij.process.ImageProcessor image1,
ij.process.ImageProcessor image2,
double binaryThreshold)
Get foregroundrestricted Rand index value and derived statistics
between two images in a concurrent way (to be submitted to an Executor
Service).

ClassificationStatistics 
getForegroundRestrictedRandIndexStatsN2(ij.process.ImageProcessor label,
ij.process.ImageProcessor proposal,
double binaryThreshold)
Calculate the foregroundrestricted Rand precision and recall between
some 2D original labels and the corresponding proposed labels with N^2
normalization.

ClassificationStatistics 
getForegroundRestrictedRandIndexStatsN2(ij.process.ShortProcessor cluster1,
ij.process.ShortProcessor cluster2)
Get foregroundrestricted Rand statistics (precision and recall) with
N^2 normalization.

ClassificationStatistics[] 
getForegroundRestrictedRandIndexStatsPerSlice(double binaryThreshold)
Calculate the foregroundrestricted Rand index (N^2 normalization) and
its derived statistics in 2D between some original labels and the
corresponding proposed labels.

double 
getMaximalVRandAfterThinning(double minThreshold,
double maxThreshold,
double stepThreshold,
boolean perSliceAverage)
Get the best V_Rand after thinning over a set of thresholds.

double 
getMetricValue(double binaryThreshold)
Calculate the Rand error in 2D between some original labels
and the corresponding proposed labels.

Callable<Double> 
getRandErrorConcurrent(ij.process.ImageProcessor image1,
ij.process.ImageProcessor image2,
double binaryThreshold)
Get standard Rand error between two images in a concurrent way
(to be submitted to an Executor Service).

double 
getRandIndexMaximalFScore(double minThreshold,
double maxThreshold,
double stepThreshold)
Get the best Fscore of the standard Rand index over a set of thresholds.

ClassificationStatistics 
getRandIndexStats(double binaryThreshold)
Calculate the standard Rand index and its derived statistics in 2D between
some original labels and the corresponding proposed labels.

ArrayList<ClassificationStatistics> 
getRandIndexStats(double minThreshold,
double maxThreshold,
double stepThreshold)
Calculate the precisionrecall values based on standard Rand index
between some 2D original labels and the corresponding proposed labels.

ClassificationStatistics 
getRandIndexStats(ij.process.ShortProcessor cluster1,
ij.process.ShortProcessor cluster2)
Calculate the standard Rand index between to clusters, as described by
William M.

Callable<ClassificationStatistics> 
getRandIndexStatsConcurrent(ij.process.ImageProcessor image1,
ij.process.ImageProcessor image2,
double binaryThreshold)
Get standard Rand index value and derived statistics between two images
in a concurrent way (to be submitted to an Executor Service).

static void 
main(String[] args)
Main method for calculating the Rand error metrics
from the command line

double 
randError(ij.process.ImageProcessor label,
ij.process.ImageProcessor proposal,
double binaryThreshold)
Calculate the standard Rand error between some 2D original labels
and the corresponding proposed labels.

ClassificationStatistics 
randIndexStats(ij.process.ImageProcessor label,
ij.process.ImageProcessor proposal,
double binaryThreshold)
Calculate the standard Rand index between some 2D original labels
and the corresponding proposed labels.

void 
setVerboseMode(boolean verbose)
Set verbose mode

getMinimumMetricValue
public RandError(ij.ImagePlus originalLabels, ij.ImagePlus proposedLabels)
originalLabels
 original labels (single 2D image or stack)proposedLabels
 proposed new labels (single 2D image or stack of the same as as the original labels)public double getMetricValue(double binaryThreshold)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
getMetricValue
in class Metrics
binaryThreshold
 threshold value to binarize proposal (larger than 0 and smaller than 1)public double getForegroundRestrictedMetricValue(double binaryThreshold)
binaryThreshold
 threshold value to binarize proposal (larger than 0 and smaller than 1)public ClassificationStatistics getRandIndexStats(double binaryThreshold)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
binaryThreshold
 threshold value to binarize proposal (larger than 0 and smaller than 1)public ClassificationStatistics getForegroundRestrictedRandIndexStats(double binaryThreshold)
binaryThreshold
 threshold value to binarize proposal (larger than 0 and smaller than 1)public ClassificationStatistics getForegroundRestrictedRandAfterThinningStats(double binaryThreshold, boolean perSliceAverage)
binaryThreshold
 threshold value to binarize proposal (larger than 0 and smaller than 1)perSliceAverage
 flag to return Fscore value averaged per slice (macroaveraged Fscore)public ClassificationStatistics[] getForegroundRestrictedRandIndexStatsPerSlice(double binaryThreshold)
binaryThreshold
 threshold value to binarize proposal ([0 1])public ArrayList<ClassificationStatistics> getRandIndexStats(double minThreshold, double maxThreshold, double stepThreshold)
@article{Rand71,label author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
minThreshold
 minimum threshold value to binarize the input imagesmaxThreshold
 maximum threshold value to binarize the input imagesstepThreshold
 threshold step value to use during binarizationpublic ArrayList<ClassificationStatistics> getForegroundRestrictedRandIndexStats(double minThreshold, double maxThreshold, double stepThreshold)
minThreshold
 minimum threshold value to binarize the input imagesmaxThreshold
 maximum threshold value to binarize the input imagesstepThreshold
 threshold step value to use during binarizationpublic ArrayList<ClassificationStatistics> getForegroundRestrictedRandAfterThinningStats(double minThreshold, double maxThreshold, double stepThreshold, boolean perSliceAverage)
minThreshold
 minimum threshold value to binarize the input imagesmaxThreshold
 maximum threshold value to binarize the input imagesstepThreshold
 threshold step value to use during binarizationperSliceAverage
 flag to return values averaging per slice (macroaverage)public Callable<Double> getRandErrorConcurrent(ij.process.ImageProcessor image1, ij.process.ImageProcessor image2, double binaryThreshold)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
image1
 first imageimage2
 second imagebinaryThreshold
 threshold to apply to both imagespublic Callable<Double> getForegroundRestrictedRandErrorConcurrent(ij.process.ImageProcessor image1, ij.process.ImageProcessor image2, double binaryThreshold)
image1
 ground truth 2D imageimage2
 proposal 2D imagebinaryThreshold
 threshold to apply to both imagespublic Callable<ClassificationStatistics> getRandIndexStatsConcurrent(ij.process.ImageProcessor image1, ij.process.ImageProcessor image2, double binaryThreshold)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
image1
 first imageimage2
 second imagebinaryThreshold
 threshold to apply to both imagespublic Callable<ClassificationStatistics> getForegroundRestrictedRandIndexStatsConcurrent(ij.process.ImageProcessor image1, ij.process.ImageProcessor image2, double binaryThreshold)
image1
 groundtruth imageimage2
 proposed labels imagebinaryThreshold
 threshold to apply to both imagespublic Callable<ClassificationStatistics> getForegroundRestrictedRandAfterThinningStatsConcurrent(ij.process.ImageProcessor image1, ij.process.ImageProcessor image2, double binaryThreshold)
image1
 groundtruth imageimage2
 proposed labels imagebinaryThreshold
 threshold to apply to both imagespublic double randError(ij.process.ImageProcessor label, ij.process.ImageProcessor proposal, double binaryThreshold)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
label
 2D image with the original labelsproposal
 2D image with the proposed labelsbinaryThreshold
 threshold value to binarize the input imagespublic double foregroundRestrictedRandError(ij.process.ImageProcessor label, ij.process.ImageProcessor proposal, double binaryThreshold)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
label
 2D image with the original labelsproposal
 2D image with the proposed labelsbinaryThreshold
 threshold value to binarize the input imagespublic ClassificationStatistics randIndexStats(ij.process.ImageProcessor label, ij.process.ImageProcessor proposal, double binaryThreshold)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
label
 2D image with the original labelsproposal
 2D image with the proposed labelsbinaryThreshold
 threshold value to binarize the input imagespublic ClassificationStatistics getForegroundRestrictedRandIndexStatsN2(ij.process.ImageProcessor label, ij.process.ImageProcessor proposal, double binaryThreshold)
label
 2D image with the original (ground truth) binary labelsproposal
 2D image with the proposed label probabilitiesbinaryThreshold
 threshold value to binarize the input imagespublic ClassificationStatistics getForegroundRestrictedRandAfterThinningStatsN2(ij.process.ImageProcessor label, ij.process.ImageProcessor proposal, double binaryThreshold)
label
 2D image with the original (ground truth) binary labelsproposal
 2D image with the proposed label probabilitiesbinaryThreshold
 threshold value to binarize the input imagespublic double classicRandIndex(ij.process.ShortProcessor cluster1, ij.process.ShortProcessor cluster2)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
cluster1
 2D segmented image (objects are labeled with different numbers)cluster2
 2D segmented image (objects are labeled with different numbers)public double foregroundRestrictedRandIndex(ij.process.ShortProcessor cluster1, ij.process.ShortProcessor cluster2)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
cluster1
 ground truth, 2D segmented image (objects are labeled with different numbers)cluster2
 prediction, 2D segmented image (objects are labeled with different numbers)public static double adaptedRandIndex3D(ij.ImagePlus originalLabels, ij.ImagePlus proposedLabels)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
originalLabels
 ground truth, 3D segmented image (objects are labeled with different numbers)proposedLabels
 prediction, 3D segmented image (objects are labeled with different numbers)public static ClassificationStatistics adaptedRandIndexStats3D(ij.ImagePlus originalLabels, ij.ImagePlus proposedLabels)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
originalLabels
 ground truth, 3D segmented image (objects are labeled with different numbers)proposedLabels
 prediction, 3D segmented image (objects are labeled with different numbers)public static double[] adaptedRandIndexStats3DN2(ij.ImagePlus segA, ij.ImagePlus segB)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
segA
 ground truth, 3D segmented image (objects are labeled with different numbers)segB
 prediction, 3D segmented image (objects are labeled with different numbers)public static double adaptedRandIndexFScore3D(ij.ImagePlus originalLabels, ij.ImagePlus proposedLabels)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
originalLabels
 ground truth, 3D segmented image (objects are labeled with different numbers)proposedLabels
 prediction, 3D segmented image (objects are labeled with different numbers)public ClassificationStatistics getRandIndexStats(ij.process.ShortProcessor cluster1, ij.process.ShortProcessor cluster2)
@article{Rand71, author = {William M. Rand}, title = {Objective criteria for the evaluation of clustering methods}, journal = {Journal of the American Statistical Association}, year = {1971}, volume = {66}, number = {336}, pages = {846850}, doi = {10.2307/2284239) }
cluster1
 ground truth, 2D segmented image (objects are labeled with different numbers)cluster2
 prediction, 2D segmented image (objects are labeled with different numbers)public ClassificationStatistics getForegroundRestrictedRandIndexStatsN2(ij.process.ShortProcessor cluster1, ij.process.ShortProcessor cluster2)
cluster1
 ground truth clustercluster2
 proposed clusterpublic double[] getForegroundRestrictedGroundTruthDisagreements(ij.process.ShortProcessor cluster1, ij.process.ShortProcessor cluster2)
cluster1
 ground truth clustercluster2
 proposed clusterpublic double[] getForegroundRestrictedPredictionDisagreements(ij.process.ShortProcessor cluster1, ij.process.ShortProcessor cluster2)
cluster1
 ground truth clustercluster2
 proposed clusterpublic double getRandIndexMaximalFScore(double minThreshold, double maxThreshold, double stepThreshold)
minThreshold
 minimum threshold value to binarize the input imagesmaxThreshold
 maximum threshold value to binarize the input imagesstepThreshold
 threshold step value to use during binarizationpublic double getForegroundRestrictedRandIndexMaximalFScore(double minThreshold, double maxThreshold, double stepThreshold)
minThreshold
 minimum threshold value to binarize the input imagesmaxThreshold
 maximum threshold value to binarize the input imagesstepThreshold
 threshold step value to use during binarizationpublic double getMaximalVRandAfterThinning(double minThreshold, double maxThreshold, double stepThreshold, boolean perSliceAverage)
minThreshold
 minimum threshold value to binarize the input imagesmaxThreshold
 maximum threshold value to binarize the input imagesstepThreshold
 threshold step value to use during binarizationperSliceAverage
 flag to calculate macro or microaveraged Rand scorepublic static void main(String[] args)
args
 arguments to decide the actionpublic void setVerboseMode(boolean verbose)
setVerboseMode
in class Metrics
verbose
 true to display more information in the standard outputCopyright © 2015–2021 Fiji. All rights reserved.