2016-08-31 3 views
0

Wenn ich trainiere mein Klassifikator unter Verwendung von lokalen binären Mustern mit opencv_traincascade (LBP), erhalte ich diese auf der Konsole geschrieben:opencv_traincascade Reihe von Funktionen

Number of unique features given windowSize [50,28] : 51408 

Wie wird diese Zahl berechnet?

+1

Sie finden einige Details in http://stackoverflow.com/questions/22565531/understanding-opencv-lbp -implementation –

Antwort

2

Wie bei OpenCV üblich, können Sie den Quellcode überprüfen. Es wird im Wesentlichen aus der Fenstergröße berechnet.

Diese Nummer kommt aus featureEvaluator->getNumFeatures(). Siehe here:

cout << "Number of unique features given windowSize [" 
     << _cascadeParams.winSize.width << "," 
     << _cascadeParams.winSize.height << "] : " 
     << featureEvaluator->getNumFeatures() << "" << endl; 

Diese Funktion numFeatures nur zurückgibt. Siehe here:

int getNumFeatures() const { return numFeatures; } 

Für LPB Merkmalen wird diese Zahl berechnet in generateFeatures:

void CvLBPEvaluator::generateFeatures() 
{ 
    int offset = winSize.width + 1; 
    for(int x = 0; x < winSize.width; x++) 
     for(int y = 0; y < winSize.height; y++) 
      for(int w = 1; w <= winSize.width/3; w++) 
       for(int h = 1; h <= winSize.height/3; h++) 
        if ((x+3*w <= winSize.width) && (y+3*h <= winSize.height)) 
         features.push_back(Feature(offset, x, y, w, h)); 
    numFeatures = (int)features.size(); 
} 
+0

Danke.Kann ich diesen Code auch in Ubuntu finden? –

+0

Schauen Sie in Ihren opencv-Installationsordner. Ich kann jetzt nicht nach dem genauen Pfad suchen, aber es wird da sein: D – Miki

+0

Kennen Sie die obige Erklärung? Ich lerne LBP seit einiger Zeit, kann aber hinter diesen wenigen Codezeilen keine Logik verstehen. Warum werden beispielsweise Breite und Höhe durch 3 geteilt? –

Verwandte Themen