2012-06-11 1 views
10

Vorrei rilevare ellissi con OpenCV per Android, utilizzando il Tutorial 2-Basic incluso nel pacchetto OpenCV 2.4.1 come punto di partenza. Nota che la mia ellisse sarebbe perfetta per Photoshop.Rilevazione ellisse con OpenCV

Da quello che ho capito, l'uso di "HoughCircles" troverà solo cerchi perfetti (o così), lasciando fuori le ellissi.

Qualsiasi aiuto sarebbe molto apprezzato come io sono un principiante totale a OpenCV

Questo è quello che ho provato finora

case Sample2NativeCamera.VIEW_MODE_CANNY: (ignore the Canny mode...) 

     capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME); 
     Imgproc.HoughCircles(mGray, mCircles, Imgproc.CV_HOUGH_GRADIENT, 1, 20); 
     Log.d("Ellipse Points", " X " + mCircles.get(1,1)[0] + mCircles.get(1, 1)[1]); 

     break; 

Se si pensa più informazioni potrebbe essere utile, per favore cerchiamo conoscermi.

+0

Questo codice ha rilevato correttamente i cerchi? – rmtheis

+0

Con alcuni ritocchi, lo ha fatto – zeroxgames

risposta

3

Se avete già un'idea delle dimensioni delle ellissi che stai cercando, quindi provare le seguenti operazioni:

  • Trova bordi Canny nell'immagine
  • Utilizzare una finestra scorrevole, la la dimensione della quale è la lunghezza massima dell'asse maggiore di ellissi che stai cercando.
  • All'interno della finestra, raccogliere tutti i pixel del bordo, selezionare 6 pixel in modo casuale e utilizzare linear least squares per adattarsi a un'ellisse nello general form.
  • Ripetere il passaggio precedente in una procedura simile a RANSAC.
  • Se ci sono abbastanza inlier, si ha un'ellisse.