Click here to Skip to main content
15,665,942 members
Please Sign up or sign in to vote.
5.00/5 (2 votes)
See more: , +
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 similer 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.

(Images used are taken in different times. So the angle,brightness can be different)

Above link shows how book spines looks like
Updated 28-Jun-12 0:06am
Mehdi Gholam 28-Jun-12 6:21am    
Try OCR'ing instead.
email2gtc 28-Jun-12 6:26am    
I was hoping to do is without using ocr as the fonts could be differ for lots of books..

1 solution

You have done well to use histograms to identify similar images. You will have to use pattern recognition[^] to do the rest.

Try separate algorithms for cropping, rotating and scaling the image. For example when a photo of a book spine is provided,
1. You first rotate it such that the spine is in a perfect vertical line.
2. Then the remaining parts of the image should be cropped.
3. Then scale it into a predefined size. For example if you have 8"x1", 6"x1.5", 12"x0.5" spines, you can scale them all to 12"x1.5". So the comparison is much easier.

After doing this, you can use a neural network to identify the similarities. This would be a good one:[^]

Another free (GPL licenced) project:[^]

And don't forget to search in Google Scholar[^]. A project such as this needs a lot of reading.

Good luck!
Share this answer
email2gtc 28-Jun-12 6:41am    
Thank you for the valuable reply.. I will try all that... Between is it possible to do it in a much easy way

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900