2013-09-23 17 views
9

voglio usare la funzione OpenCV cv::cornerSubPix() per questo ho bisogno di un altro uno, il cv::TermCriteria la mia domanda è circa l'ultimo parametro di questa funzione:come funziona cv :: TermCriteria in opencv?

cv::TermCriteria(cv::TermCriteria::MAX_ITER + 
       cv::TermCriteria::EPS, 
       50, // max number of iterations 
       0.0001)); // min accuracy 

che cosa fa il min Precisione qui significa?

+0

Vedo che le risposte qui non sono molto dettagliate. Hai trovato una bella spiegazione su TermCriteria? Sto cercando di capirlo proprio ora e non trovo nessuna spiegazione valida. – definera

+0

@ Crash-ID: \ Non mi dispiace, non sto più usando OpenCV quindi ti auguro buona fortuna con il tuo progetto – Engine

+0

Okey, grazie comunque :) – definera

risposta

7

La struttura del TermCriteria è

TermCriteria(

int type, // CV_TERMCRIT_ITER, CV_TERMCRIT_EPS, or both 

int maxCount, 

double epsilon 
); 

In genere si usa il TermCriteria() la funzione di generare la struttura di cui abbiamo bisogno. Il primo argomento di questa funzione è o CV_TERMCRIT_ITER o CV_TERMCRIT_EPS, che indica l'algoritmo che vogliamo interrompere o dopo un certo numero di iterazioni o quando la metrica convergenza raggiunge un certo valore piccolo (rispettivamente). I successivi due argomenti impostano i valori in base ai quali uno, l'altro o entrambi i criteri dovrebbero terminare l'algoritmo.

Il motivo per cui sono disponibili entrambe le opzioni è che è possibile impostare il tipo su CV_TERMCRIT_ITER | CV_TERMCRIT_EPS e quindi fermarsi quando viene raggiunto uno dei due limiti.

3

Il significato esatto del termine epsilon dipende dall'algoritmo per il quale è inteso il criterio di terminazione. (Vedere pp 299-300 del libro Learning OpenCV per qualche dettaglio in più sul cvTermCriteria)

Qui, in particolare, dalla documentation:

... il processo di posizione d'angolo raffinatezza si ferma neanche dopo criteria.maxCount iterazioni o quando la posizione dell'angolo si sposta di in meno di criteria.epsilon in qualche iterazione.

Così il termine Epsilon specifica la precisione si richiede in vostri valori subpixel, ad esempio, un valore pari a 0.0001 significa che si sta chiedendo valori subpixel verso il basso con una precisione di 1/10000th di un pixel. (Vedi p 321 del libro Learning OpenCV)

Problemi correlati