2013-09-23 8 views
9

cv::TermCriteria私の質問は、この関数の最後のパラメータについてです:cv :: TermCriteriaはどのようにopencvで動作しますか?私は別のものを必要とするためにOpenCVの機能<code>cv::cornerSubPix()</code>を使用したい

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

ここで分精度が何を意味するのでしょうか?

+0

私はここの答えは本当に詳細ではない参照してください。 TermCriteriaに関する素晴らしい説明を見つけましたか?私は今それを理解しようとしており、何の説明もしていない。 – definera

+0

@クラッシュID:\申し訳ありませんが、私はもうOpenCVを使用していませんので、あなたのプロジェクトで幸運を祈ってください – Engine

+0

おかげで、とにかく:) – definera

答えて

7

TermCriteriaの構造

TermCriteria(

int type, // CV_TERMCRIT_ITER, CV_TERMCRIT_EPS, or both 

int maxCount, 

double epsilon 
); 

通常我々が生成するTermCriteria()機能を使用しています構造が必要です。この関数の 最初の引数は、我々はどちらか 収束メトリックは、いくつかの小さな値に達したときに(それぞれ)いくつかの反復回数や後を終了したいアルゴリズムを伝えている、のいずれかCV_TERMCRIT_ITERまたはCV_TERMCRIT_EPSです。次の2つの引数 は、これらの条件の一方、他方、または両方がアルゴリズムを終了するべき値を設定します。

両方のオプションがある理由は、タイプをに設定できるからです。CV_TERMCRIT_ITER | CV_TERMCRIT_EPSとなり、いずれかの制限値に達すると停止します。

3

イプシロン項の正確な意味は、終了基準が意図されているアルゴリズムに依存します。 documentationから、具体的には、ここで

を(cvTermCriteriaにいくつかの詳細についてはLearning OpenCV本の頁299から300を参照してください):

...コーナー位置洗練のプロセスは criteria.maxCount回の反復の後のいずれかに停止またはある程度の反復でコーナー位置が より小さくてcriteria.epsilonより小さい場合。

だから、イプシロン用語は、あなたのサブピクセル値に必要と精度を指定し、例えば0.0001の値は、ピクセルの1 /第万の精度までのサブピクセル値を求めていることを意味します。 (Learning OpenCV本のp321を参照してください)

関連する問題