2014-09-23 27 views
5

sto provando a valutare i rivelatori SIFT e SURF secondo i criteri di ripetibilità.Risultato Ripetibilità Opencv non ha senso?

scopro che qui di seguito il metodo riesce a trovare ripetibilità, Corrispondenza Sift e SURF

cv::evaluateFeatureDetector(img_1c, img_2c, h12, &key_points_1, &key_points_2, repeatability, corrCounter); 

alcuni dei risultati sono elencati di seguito:

Number Repeatibility Correspond Keypoint 1st Keypoint 2th  
1to2 0.7777778   140  224    180  
1to3 0.7125    114  224    161  
1to4 0.704918    86  224    123  
1to5 0.6853933    61  224    89  
1to6 0.6521739    45  224    69 

per la prima fila ripetibilità può calcolare come - > (correnspond)/min (keypoint1st, keypoint2th) = (140/180) = 0.7777778 ma per le altre righe il suo valore è diverso da quello che computo con la formula precedente.

qualcuno può dire perché sta succedendo?

Saluti.

+0

quale versione openCV usi? – Micka

risposta

4

Penso di aver trovato il problema qui.

Il tasso di ripetibilità è il numero di punti ripetuti tra due immagini considerando il numero totale di punti chiave estratti. Per misurare il numero di punti ripetuti, è necessario tenere conto del fatto che le scene osservate differiscono l'una dall'altra a causa delle loro condizioni di imaging modificate (punto di vista, rotazione + scala, sfocatura, ecc. Nel caso del set di dati Mikolajczyk).

Punti chiave che non vengono rilevati in entrambe le immagini possono alterare la misura ripetibilità modo, solo i punti che si trovano nella scena comune parti influenzare la ripetibilità.

Quello che sta accadendo è che si sta valutando tutti i punti chiave individuati nella seconda immagine per il calcolo di ripetibilità e realtà solo i punti chiave all'interno del omografia dovrebbero essere usati.

Spero che questo aiuti.

+0

Stavo pensando la stessa cosa ma non ne ero sicuro, non so ancora se è il caso. ma grazie per la risposta. aspetterò una risposta migliore se nessuno ha una risposta migliore, accetterò il tuo. – AMH

+0

È possibile confermare se si disegna l'omografia e i punti chiave nella seconda immagine. Se rilevi i punti chiave nell'immagine2 solo all'interno dell'omografia e nelle altre immagini non lo fai, il problema è esattamente quello che ho detto sopra. Per favore fatemi sapere se non sto spiegando bene da qualche parte. – zedv

+0

Come posso recuperare "devono essere utilizzati solo i punti chiave all'interno dell'omografia"? – justHelloWorld

1

Infatti, OpenCV 2.49 utilizza questa riga di codice in evaluation.cpp:

repeatability = minCount ? (float)correspondencesCount/minCount : -1; 

che è il numero di corrispondenze diviso per il numero minore di Keypoint 1st o Keypoint 2th quindi credo che il vostro errore potrebbe essere da qualche altra parte. Puoi pubblicare il tuo codice completo in cui imposti img_1c, ecc. E chiami la funzione e mostri i risultati?

+0

Io uso OpenCV 2.46. trovo che se apporto le modifiche all'immagine mediante la ripetibilità della funzione opencv corrisponda alla formula. ma in qualche modo su Mikolajczyk Dataset questo problema si verifica. – AMH

+0

Ad esempio, se utilizzo il filtro GaussianBlur, la rotazione, l'aggiunta di rumore o ... con i metodi opencv, mi aspetto un risultato di ripetibilità atteso. Io uso lo stesso codice per valutare e trovare i punti chiave delle immagini in entrambi i dataset (dataset di sintesi e set di dati Mikolajczyk) – AMH