Image Information Retrieval Simmilarity

I have been playing around with imgSeek for a while. Quick, easy, a nice entry point to the Content-Based Image Retrieval field. Apart from the problems I had to make it work on my Mandriva box, no complain except for this:

sim(X,X) < 1 (quite often; I may say in my 100 images test)

Oh, my God! Never seen before (except as a bug). I have been working for years on Information Retrieval, and seeing this is like seeing P(X) = 2 or so. How is it possible that the simmilarity between an object and itself is less than one in a [0,1] scale?

Ok, imgSeek is based on the paper:

Charles E. Jacobs, Adam Finkelstein, and David H. Salesin. Fast Multiresolution Image Querying. Proceedings of SIGGRAPH 95. pp. 277-286, August 1995.

I am afraid I will have to get into the paper, if I want to understand how this is possible. If simmilarity values are not sound, I will not be able to used them for a weighted k nearest neighbor attack to pornographic image detection.

2 comentarios:

Ricardo N. Cabral dijo...

The [0,1] scale is artificial. Internally, the similarity ratio for a given image, given as a result of running the querying algorithm described on the paper is a float number with no absolute meaning. It should be considered only relatively to other images. So if sim(x,y) > sim(x,z) then x is more similar to y than it is to z. That's the only kind of conclusion you should get at. Internally imgSeek will normalize the output score calculated for each indexed candidate image by considering the max similarity as being the average similarity achieved by running several similar tests as you did and adding a marging of error so we don't run the risk of getting a result greater than 1.

José María Gómez Hidalgo dijo...

Thank you for your explanation , Ricardo. It is great having you, the very author of imgSeek, reading this post!

I understand. Can be sure that score(x,x) > score(x,y) for each images x and y? In that case, we may always get the score of the query image and set it as the maximum score for normalization. If not, we may just heuristically assign 0.99 to all images y with score(x,y) > score(x,x). I imagine you had this idea before...

Besides, I got accepted an article about imgSeek at the Linux+ magazine (www.lpmagazine.org) (in Spanish). I believe it will be printed the next number (march).