I'd like to create an object detector based on cascade classifier, the only problem is that LBP and Haar features are not rotation invariant. The first thing that comes to my mind is to rotate the training sample at different angles, but I doubt that the resulting classifier would have good quality, moreover, the object could have stretched proportions. There are many rotation invariant detectors, for example, iPhone recognizes faces in real time in any orientation, so I wonder how do they achieve this? I would prefer to use OpenCV for this.
-
2You should google feature invariant detectors. There are many algorithms but you will have to find the appropriate one that will suite your application. Maybe a good starting point is this doc: epubs.surrey.ac.uk/726872/1/Tuytelaars-FGV-2008.pdf – Adi Feb 14 '13 at 08:07
-
1There is no such thing as best solution in computer-vision. The matter that iPhone recognizes some feature X is irrelevant, it is a single device with known characteristics, which also possibly has further information to easily revert the rotation. Plus, you are mentioning specifically about face-detection which is a single well studied topic with proven good solutions. Since you are not trying to do face detection (per your comment in some answer), it is just better to not even point it since it is a completely different topic. – mmgp Feb 14 '13 at 23:32
-
1I don't think it's irrelevant because some ideas used in face detection could be usable to detect other objects, at least I should give it a try. By the way, I don't see how the rotation could be "reverted". We can determine the orientation of iPhone itself by using accelerometer data, but the rotation of the face can be different and it still works. – lizarisk Feb 15 '13 at 07:56
4 Answers
Check out the object detection framework available at https://github.com/nenadmarkus/pico.
The framework enables you to learn a custom object detector (for example, for finding frontal, upright faces) and then use it at runtime for rotation invariant detection.
This is achieved by scanning the image with a rotated version of the object detector at a number of different orientations. Note that this can be done without cascade retraining or image resampling, and it should work in real-time on modern machines (the provided face detection demo does).
The details are given in the paper available at http://arxiv.org/abs/1305.4537.

- 51
- 1
- 2
Fourier descriptors are rotation invariants (and translation as well as scaling invariants); the idea then would be to train whatever classifier your confortable with on the Fourier Descriptor result (PCA on Fourier descriptor, associated with a SVM seems to be a logical choice).

- 1,675
- 2
- 18
- 47
-
The main problem with contours is the lack of robustness - on images with some noise and background it could be impossible to detect them properly (some background clutter can interfere with the object contour, different contours can merge into one ore one connected contour could split into different parts, etc). But thanks for the great descriptor! – lizarisk Feb 15 '13 at 14:06
for matching logos I think this is what you need: http://www.ijera.com/papers/Vol2_issue5/JW2517421747.pdf

- 16,337
- 15
- 66
- 97
What about some simple solution....

- 1,446
- 10
- 13
-
It works too slowly and unstable for my purposes (I'm trying to detect a small logo on a big picture). – lizarisk Feb 14 '13 at 13:01
-
If you think SURF is slow you can use ORB instead. But don't expect miracles, you have to do your work to make it stable. – Rui Marques Feb 15 '13 at 19:21
-
ORB was performing much worse than SURF and SIFT in my experiments. How can I make it more stable? – lizarisk Feb 16 '13 at 11:02
-
Try BRIEF or FREAK which are claimed to be better than SURF...But with my experience I found SURF is the best*. – G453 Feb 20 '13 at 04:57