Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

training SIFT features in OpenCV

I have created a small SIFT application that grabs the keypoints and saves it out to a text file. I am using this to grab information from a logo (say AT&T) and use that to compare against other images with that logo. The problem is many of my images have variations of the logo that, due to the scaling, rotation, or lighting it does not pick it up. I was wondering if it was possible to get a set of images, grab it's keypoints, and run it through some sort of training algorithm to enhance the detection.

I've searched online for ways of training the SIFT keypoints, but they are all in some sort of phd paper that goes into all this mathematical algorithms which, to be honest, throws me off as I haven't taken any math class for awhile.

If anyone has any advice or links to be able to understand how training works or what needs to be done to implement one please let me know. Or if anyone has a simpler means of doing this without SIFT then I would greatly appreciate other forms of detection. Below is a list of what I've tried:

  • SURF
    • Failed as it was returning invalid results
  • Haar characteristics with Adaboosting
    • Failed as I started training 100 positive models with 100 negative images on 7/11/2011 and it is still running as of 7/19/2011
  • Template Matching with various transforms of the same logo with and without thresholding
    • Failed as I would have to exponentially need to create logos based from the number of times it wasn't able to detect any in the image

Thanks in advance

like image 520
Seb Avatar asked Jul 19 '11 14:07

Seb


People also ask

What is SIFT in Opencv?

SIFT (Scale Invariant Fourier Transform) Detector is used in the detection of interest points on an input image. It allows identification of localized features in images which is essential in applications such as: Object Recognition in Images.

How do I extract features using SIFT?

Extract SIFT feature descriptorGet gradient angle direction. Adjusting orientation (To be rotation invariant): Get the gradient angle of the window and Quantize them to 36 values (0, 10, 20, …, 360) Locate dominant corner direction which is most probable angle (angle with max value in 36 bit angle histogram)

What is the difference between SIFT and surf?

SIFT is an algorithm used to extract the features from the images. SURF is an efficient algorithm is same as SIFT performance and reduced in computational complexity. SIFT algorithm presents its ability in most of the situation but still its performance is slow.

What is SIFT used for?

Scale-Invariant Feature Transform (SIFT)—SIFT is an algorithm in computer vision to detect and describe local features in images. It is a feature that is widely used in image processing. The processes of SIFT include Difference of Gaussians (DoG) Space Generation, Keypoints Detection, and Feature Description.


1 Answers

A simple starting point would be to collect SIFT/SURF descriptors of several AT&T logos, and use FLANN on them. Then, take a test image, compute the descriptors and do a range search and determine the nearest-neighbor distance, etc. and try to figure out a metric of "closeness".

like image 78
Jacob Avatar answered Oct 12 '22 14:10

Jacob