2012-07-07 16 views
9

Sto provando a iniziare a lavorare con sift feature extraction usando (C++) OpenCv. Ho bisogno di estrarre le funzioni usando SIFT, abbinarle tra l'immagine originale (ad esempio un libro) e una scena, e successivamente calcolare la posa della fotocamera.Sift Extraction - opencv

Finora ho trovato this algorithm utilizzando SURF. Qualcuno conosce un codice base da cui posso iniziare, o forse un modo per convertire l'algoritmo nel collegamento da SURF a SIFT?

Grazie in anticipo.

MODIFICA: Ok, ho elaborato una soluzione per il problema di vagliatura. Ora sto provando a immaginare la posa della telecamera. Sto cercando di usare: solvePnP, qualcuno può aiutarmi con un esempio?

risposta

5

Controlla il del nuovo sito Web di documenti OpenCV. Ci tutorial con il codice visualizzato:

  1. Feature detection con per esempio SURF
  2. Feature Description
  3. Feature Matching
+0

Grazie, ma questi esempi sono per il surf. Ho bisogno di SIFT, o in qualche modo per convertire un algoritmo da SURF in SIFT. – Filipe

4

Se siete riusciti a trovare le corrispondenze tra l'immagine e la scena, allora vi suggerisco di applicare cv :: findHomography(). Calcolerà la matrice di omografia usando 4 corrispondenze come input.

È possibile convertire direttamente la posa della telecamera dalla matrice di omografia.

0

Per utilizzare SIFT anziché SURF, ho modificato SurfFeatureDetector in SiftFeatureDetector e SurfDescriptorExtractor in SiftDescriptorExtractor. Per alcune immagini, ho trovato che la combinazione rivelatore SURF < -> SIFT descrittore produce risultati relativamente accurati, ma è necessario sperimentare con altre combinazioni (rivelatore FAST - descrittore FREAK o rivelatore ORB - descrittore BRISK), in base alle proprie esigenze.

Si prega di seguire questo tutorial per risolvere la parte omografia della tua domanda: Feature Matching and Homography

Inoltre, forse questo aiuterà: Pose Estimation