Basically what you have here is a difference between object detection and object recognition. Let me clear that out for you:
- Object recognition means that you know the object beforehand. You know its shape, you know its specific properties. With that knowledge you want to scan an entire scene and see if these properties reoccur. Once they do and enough matches have been found, a recognition can be performed.
- Object detection tries to tackle the largest problem of object recognition. Take for example you want to find cows in an image. You know how a cow actually looks like, but you still have alot of variation in between different cows (e.g. different position of black and white regions). This is called intra-class variability. Humans for example are the most variate class you can probably use as an example (different clothing, different sizes, gender differences, ...). What object detection basically does is creating an abstract model of the 'class' of objects that you want to find. It then uses again that model to scan a given scene and look for matches between the model and the scene. If enough overlap is found, then a detection is returned.
Knowing that you can easily say which techniques to use where:
- Detection techniques like the cascade classifier of Viola&Jones, an SVM classifier or even a random forest classifier, are all ways to perform object detection.
- Recognition techniques are based on similar points which can be extracted as interesting feature points by a feature detector, then a region around the point is converted to a abstract form, called a feature description done by a feature descriptor. Finally a matcher is used to look for samelike structures among these descriptions.
Does this make it more clear for you?