OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
cv::ConjGradSolver クラス

このクラスは、勾配が既知の関数に対する非線形・無制約の最小化を実行するために用いる。 詳細...

#include <opencv2/core/optim.hpp>

Collaboration diagram for cv::ConjGradSolver:

静的公開メンバ関数

static Ptr< ConjGradSolvercreate (const Ptr< MinProblemSolver::Function > &f=Ptr< ConjGradSolver::Function >(), TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 5000, 0.000001))
 この関数は、すぐに使用できる状態の ConjGradSolver オブジェクトへの参照を返す。
 
- Static Public Member Functions inherited from cv::Algorithm
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 ファイルからアルゴリズムを読み込む。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 文字列からアルゴリズムを読み込む。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 ファイルノードからアルゴリズムを読み込む。
 

Additional Inherited Members

- Public Member Functions inherited from cv::MinProblemSolver
virtual Ptr< FunctiongetFunction () const =0
 最適化対象の関数のゲッター。
 
virtual TermCriteria getTermCriteria () const =0
 このアルゴリズムに対して以前に設定された終了条件のゲッター。
 
virtual double minimize (InputOutputArray x)=0
 実際にアルゴリズムを実行し、最小化を行う。
 
virtual void setFunction (const Ptr< Function > &f)=0
 最適化対象の関数のセッター。
 
virtual void setTermCriteria (const TermCriteria &termcrit)=0
 ソルバの終了条件を設定する。
 
- Public Member Functions inherited from cv::Algorithm
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 アルゴリズムの状態をクリアする。
 
virtual bool empty () const
 Algorithm が空の場合(たとえば開始直後や読み込みに失敗した後)に true を返す。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 ファイルストレージからアルゴリズムの引数を読み込む。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 アルゴリズムの引数をファイルストレージに保存する。
 
void write (FileStorage &fs, const String &name) const
 
- Protected Member Functions inherited from cv::Algorithm
void writeFormat (FileStorage &fs) const
 

詳細説明

このクラスは、勾配が既知の関数に対する非線形・無制約の最小化を実行するために用いる。

n 次元ユークリッド空間上で定義された関数に対し、非線形共役勾配法 (Nonlinear Conjugate Gradient method) を用いる。実装は、Jonathan Richard Shewchuk による非常に分かりやすい解説記事 [An Introduction to the Conjugate Gradient Method Without the Agonizing Pain](http://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf) に基づいて行われた。この手法は、線形方程式系を数値的に解くための標準的な共役勾配法(例えば http://en.wikipedia.org/wiki/Conjugate_gradient_method を参照)を適応させたものと見なせる。

この手法は決定論的ではあるものの、むしろヒューリスティックな手法であり、したがって大域的最小値とは限らず局所最小値に収束する可能性があることに注意すべきである。さらに厄介なことに、その挙動の大部分は勾配によって支配されるため、本質的に局所最小値と局所最大値を区別できない。したがって、局所最大値に十分近い点から開始すると、それに収束してしまう場合がある。もう一つの明らかな制約は、関数の勾配を任意の点で計算できる必要があることであり、そのため勾配の解析的な式を用意することが望ましく、計算上の負担はユーザが負うことになる。

後者の責務は、MinProblemSolver::Function インタフェース(最適化対象の関数を表す)の getGradient メソッドを介して果たされる。このメソッドは n 次元空間内の1点を受け取り(第1引数がその点の座標の配列を表す)、その勾配を計算する(結果は第2引数に配列として格納される)。

覚え書き
したがって、ConjGradSolver クラスは、基本となる MinProblemSolver インタフェースに新たなメソッドを何も追加しない。
終了条件は次の条件を満たす必要がある:
termcrit.type == (TermCriteria::MAX_ITER + TermCriteria::EPS) && termcrit.epsilon > 0 && termcrit.maxCount > 0
// または
termcrit.type == TermCriteria::MAX_ITER) && termcrit.maxCount > 0
@ MAX_ITER
ditto
Definition types.hpp:901
@ EPS
the desired accuracy or change in parameters at which the iterative algorithm stops
Definition types.hpp:902

メンバ関数詳解

◆ create()

static Ptr< ConjGradSolver > cv::ConjGradSolver::create ( const Ptr< MinProblemSolver::Function > & f = PtrConjGradSolver::Function >(),
TermCriteria termcrit = TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 5000, 0.000001) )
static

この関数は、すぐに使用できる状態の ConjGradSolver オブジェクトへの参照を返す。

すべての引数は省略可能であるため、この処理は引数をまったく指定せずに呼び出すこともできる。その場合はデフォルト値が用いられる。意味のあるデフォルト値が存在するのは終了条件だけであるため、関数を create() に渡さなかった場合は、得られたオブジェクトに対して MinProblemSolver::setFunction() を呼び出す必要がある。それ以外の場合、2つの方法(create() に渡す方法と、省略して MinProblemSolver::setFunction() を呼び出す方法)は完全に等価である(そして不正な入力が検出された場合は、同じエラーを同じ方法で出力する)。

引数
f最小化される関数へのポインタ。MinProblemSolver::setFunction を通じて渡すものと同様。
termcritアルゴリズムの終了条件。MinProblemSolver::setTermCriteria を通じて渡すものと同様。

このクラス詳解は次のファイルから抽出されました: