Flower classification

The classification process is two-fold, with one method based on the scale-invariant feature transform (SIFT) algorithm1, which makes use of keypoints, and the other on the HSV color space, using image patches.

First, an array of training images is supplied as input, where each image is of a known flower type, and descriptors are generated for both the SIFT and the HSV method. Subsequently, cluster centers are found from these descriptors by using the k-means algorithm, where initial cluster centers may be specified or randomly generated. The resulting clusters are saved as visual words.

Next, object histograms are generated from the descriptors and visual words, which are used for Multiboost2 training. Afterwards, the training stage is completed.

Now the testing stage kicks off, allowing users to specify an image for which the flower type is unknown. As with the training stage, descriptor files are generated, which, along with the aforementioned visual words, are used as input for the object histogram creation. Finally, Multiboost is used for testing the object histograms against the training set to obtain the classification.

The results are analyzed, and we conclude that the HSV method is almost twice as good for this particular type of classification, with a success rate of around 84%. It should be noted that our application can be used for other datasets as well.

This project was implemented in C++ with OpenCV.

[1] Object recognition from local scale-invariant features (ICCV 1999). DG Lowe.

[2] MultiBoost: a multi-purpose boosting package (JMLR 2012). D Benbouzid, R Busa-Fekete, N Casagrande, F-D Collin, B Kégl.

This project was finished on the 3rd of February, 2012