Fuses several classifications maps of the same image on the basis of class labels.
This application allows you to fuse several classification maps and produces a single more robust classification map. Fusion is done either by mean of Majority Voting, or with the Dempster Shafer combination method on class labels.
- MAJORITY VOTING: for each pixel, the class with the highest number of votes is selected.
- DEMPSTER SHAFER: for each pixel, the class label for which the Belief Function is maximal is selected. This Belief Function is calculated by mean of the Dempster Shafer combination of Masses of Belief, and indicates the belief that each input classification map presents for each label value. Moreover, the Masses of Belief are based on the input confusion matrices of each classification map, either by using the PRECISION or RECALL rates, or the OVERALL ACCURACY, or the KAPPA coefficient. Thus, each input classification map needs to be associated with its corresponding input confusion matrix file for the Dempster Shafer fusion.
- Input pixels with the NODATA label are not handled in the fusion of classification maps. Moreover, pixels for which all the input classifiers are set to NODATA keep this value in the output fused image.
- In case of number of votes equality, the UNDECIDED label is attributed to the pixel.
This application has several output images and supports “multi-writing”. Instead of computing and writing each image independently, the streamed image blocks are written in a synchronous way for each output. The output images will be computed strip by strip, using the available RAM to compute the strip size, and a user defined streaming mode can be specified using the streaming extended filenames (type, mode and value). Note that multi-writing can be disabled using the multi-write extended filename option: &multiwrite=false, in this case the output images will be written one by one. Note that multi-writing is not supported for MPI writers.
-il image1 image2... Mandatory
List of input classification maps to fuse. Labels in each classification image must represent the same class.
The output classification image
-out image [dtype] Mandatory
The output classification image resulting from the fusion of the input classification images.
-method [majorityvoting|dempstershafer] Default value: majorityvoting
Selection of the fusion method and its parameters.
- Majority Voting
Fusion of classification maps by majority voting for each output pixel.
- Dempster Shafer combination
Fusion of classification maps by the Dempster Shafer combination method for each output pixel.
-method.dempstershafer.cmfl filename1 filename2... Mandatory
A list of confusion matrix files (.csv format) to define the masses of belief and the class labels. Each file should be formatted the following way: the first line, beginning with a ‘#’ symbol, should be a list of the class labels present in the corresponding input classification image, organized in the same order as the confusion matrix rows/columns.
Mass of belief measurement
-method.dempstershafer.mob [precision|recall|accuracy|kappa] Default value: precision
Type of confusion matrix measurement used to compute the masses of belief of each classifier.
Masses of belief = Precision rates of each classifier (one rate per class label).
Masses of belief = Recall rates of each classifier (one rate per class label).
- Overall Accuracy
Mass of belief = Overall Accuracy of each classifier (one unique value for all the class labels).
Mass of belief = Kappa coefficient of each classifier (one unique value for all the class labels).
Label for the NoData class
-nodatalabel int Default value: 0
Label for the NoData class. Such input pixels keep their NoData label in the output image and are not handled in the fusion process. By default, ‘nodatalabel = 0’.
Label for the Undecided class
-undecidedlabel int Default value: 0
Label for the Undecided class. Pixels with more than 1 fused class are marked as Undecided. Please note that the Undecided value must be different from existing labels in the input classifications. By default, ‘undecidedlabel = 0’.
From the command-line:
otbcli_FusionOfClassifications -il classification1.tif classification2.tif classification3.tif -method dempstershafer -method.dempstershafer.cmfl classification1.csv classification2.csv classification3.csv -method.dempstershafer.mob precision -nodatalabel 0 -undecidedlabel 10 -out classification_fused.tif
import otbApplication app = otbApplication.Registry.CreateApplication("FusionOfClassifications") app.SetParameterStringList("il", ['classification1.tif', 'classification2.tif', 'classification3.tif']) app.SetParameterString("method","dempstershafer") app.SetParameterString("method.dempstershafer.mob","precision") app.SetParameterInt("nodatalabel", 0) app.SetParameterInt("undecidedlabel", 10) app.SetParameterString("out", "classification_fused.tif") app.ExecuteAndWriteOutput()