Having discovered Orfeo ToolBox and it’s very handy QGIS plugin, I set about reviewing each of OTB’s supervised classifiers, to see which one performs the best with the goal of generating a perfect surface mask that I can use in my terrain project within RV4 engine.
Example showing source raster + libsvm_linear classifier:
Example showing source raster + libsvm_rbf classifier:
Example showing source raster + Artificial Neural Network classifier:
Complete list of machine learning classifiers tested:
libsvm_linear – (Support Vector Machines)
boost_discrete – (OpenCV)
dt – (Decision Tree – OpenCV)
ann – (Artificial Neural Network – OpenCV)
bayes – (Normal Bayes – OpenCV)
rf – (Random Forests – OpenCV)
knn – (K-Nearest Neighbors – OpenCV)
sharkrf – (Random Forests classifier based on Shark)
sharkkm – (KMeans unsupervised classifier based on Shark)
Results of the supervised classifiers:
Those in red were not able to generate matching number of classes as listed within Vector Data List (ROI’s).
These are the steps in sequence needed to create any of the above classifications:
I then tested an unsupervised classification using the K-means classifier
Example showing the result of K-means classification + tidied up version:
In the above example I set the K-means classes ‘K’ to 12. I carried out 2 initial merges of classes using the GRASS process ‘r.reclass‘, further merges were made by hand within attributes of classes in the layer properties. ironically given this was an unsupervised classifier it actually took more manual input than the supervised classifiers. Forest seemed to be picked out fairly well, however road and building details were lost to merging.
A useful reference article with overview of key machine learning algorithms: