Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recommended values for OpenCV detectMultiScale() parameters

What are the recommended parameters for CascadeClassifier::detectMultiScale() and depending on which factors I should change default parameters?

void CascadeClassifier::detectMultiScale(     const Mat& image,      vector<Rect>& objects,      double scaleFactor=1.1,     int minNeighbors=3,      int flags=0,      Size minSize=Size(),     Size maxSize=Size() ) 
like image 592
torayeff Avatar asked Dec 27 '13 12:12

torayeff


People also ask

What are the parameters of detectMultiScale?

Here is a list of the most common parameters of the detectMultiScale function : scaleFactor : Parameter specifying how much the image size is reduced at each image scale. minNeighbors : Parameter specifying how many neighbors each candidate rectangle should have to retain it. minSize : Minimum possible object size.

What is detectMultiScale in Opencv?

detectMultiScale function is used to detect the faces. This function will return a rectangle with coordinates(x,y,w,h) around the detected face. It takes 3 common arguments — the input image, scaleFactor, and minNeighbours. scaleFactor specifies how much the image size is reduced with each scale.

What is the use of detectMultiScale?

detectMultiScale() [1/3] Detects objects of different sizes in the input image. The detected objects are returned as a list of rectangles. Matrix of the type CV_8U containing an image where objects are detected.

What does Face_cascade detectMultiScale return?

faceCascade. detectMultiScale() returns a list of rectangles so it does not contain the images of the detected faces and you cannot reconstruct the faces purely from that list. If you want to get images of the faces, you will need to: retain a copy of the image in which you originally sought the faces, and.


1 Answers

Amongst these parameters, you need to pay more attention to four of them:

  • scaleFactor – Parameter specifying how much the image size is reduced at each image scale.

    Basically the scale factor is used to create your scale pyramid. More explanation can be found here. In short, as described here, your model has a fixed size defined during training, which is visible in the xml. This means that this size of face is detected in the image if present. However, by rescaling the input image, you can resize a larger face to a smaller one, making it detectable by the algorithm.

    1.05 is a good possible value for this, which means you use a small step for resizing, i.e. reduce size by 5%, you increase the chance of a matching size with the model for detection is found. This also means that the algorithm works slower since it is more thorough. You may increase it to as much as 1.4 for faster detection, with the risk of missing some faces altogether.

  • minNeighbors – Parameter specifying how many neighbors each candidate rectangle should have to retain it.

    This parameter will affect the quality of the detected faces. Higher value results in less detections but with higher quality. 3~6 is a good value for it.

  • minSize – Minimum possible object size. Objects smaller than that are ignored.

    This parameter determine how small size you want to detect. You decide it! Usually, [30, 30] is a good start for face detection.

  • maxSize – Maximum possible object size. Objects bigger than this are ignored.

    This parameter determine how big size you want to detect. Again, you decide it! Usually, you don't need to set it manually, the default value assumes you want to detect without an upper limit on the size of the face.

like image 143
herohuyongtao Avatar answered Sep 18 '22 01:09

herohuyongtao