Hello,

I am building a CBIR system with Corel Database (100 classes of 100 pictures). I have implemented some "current" (non deep learning) descriptors (Sift, Surf, HOG, Color Histogram, HSV histogram, LBP histogram, ORB, Hu Moments of the image, GLCM descriptors (contrast, homogeneity,...)). Also, I implemented FlannMatcher and BFMatcher for Sift, Surf and ORB ; `compareHist` function of OpenCV and its four distances for all the histograms and NORM1,2,INF pour vectors (Hu & GLCM).

However, I get really poor results and bad R/P curve. More precisely, it seems to really depend on the query. For example, for the bear, the best results (Top 50) are reached with GLCM where I get this :

[![results with GLCM][1]][1]

On the other hand, when the query is a playing card (which is rather simple), that gives rather good results, at least with some algorithms such as Sift.

[![results with Sift][2]][2]

I was wondering if it was normal to have so bad and variable results ? Actually, I just used OpenCV functions so I don't see where I could have been wrong...

Could it be relevant to make a weighted sum of some descriptors ? Just by normalizing the distances, weight them add sort the global sum ?

Is there another way to improve "simply" the results ?

Thank you in advance for your help

[1]: https://i.stack.imgur.com/aHZ8q.png

[2]: https://i.stack.imgur.com/oIZlF.png

More Pierre De Handschutter's questions See All
Similar questions and discussions