3

I am creating an application to recognize books by its spine. What I want to do is take picture of a book spine and match it with a database of books.

I was hoping to use pattern matching and template matching for this. First I was hoping to search book by template matching using templats of book spines saved in database and match them with the taken picture. But this process is very expensive and it takes long time to go through all the images saved in database.

So I thought of using histograms instead. After using histograms and thresholding I was able to find similar images . But the issue is when it comes to books there can be book spines with same colors and even different light conditions. So doing pixle by pixle search and comparison gave lots of false negative results, These image can be differ with different light conditions, little bit of rotation and size.

If you can please guide me the way I can recognize the book by it is spine.

So far I have been using color aveages but it is not enough, what are the other unique features I can use to recognize the book.

enter image description here

Indy9000
  • 8,651
  • 2
  • 32
  • 37
Gihan
  • 2,476
  • 2
  • 27
  • 33
  • 1
    You should resize and recompose your images before uploading – Indy9000 Jun 28 '12 at 09:54
  • Sorry about that ... They are re sized now – Gihan Jun 28 '12 at 09:57
  • Can you not compose an image with both images side by side and upload that instead? – Indy9000 Jun 28 '12 at 09:58
  • 3
    Similar question http://stackoverflow.com/questions/843972/image-comparison-fast-algorithm – Indy9000 Jun 28 '12 at 10:13
  • yeah i went through that... I actually want what kind of unique features i can use for book recognition.. Specially as angles and brightness could be different.. And what components of the book spine (latters,colors...) i can use for recognition and how.. – Gihan Jun 28 '12 at 10:23

2 Answers2

1

You should use a rotation and scale invariant descriptor for comparing your images (after a preprocessing of some sort, thresholding & edge detection maybe), like Fourier descriptor.

Adrien
  • 146
  • 7
0

You could use a SIFT based descriptor for each image and these descriptors can be stored in a hashmap. Then it's a matter of creating the descriptor for the image being searched and loooking up on the hashmap.

Read up on SIFT here

Indy9000
  • 8,651
  • 2
  • 32
  • 37