OpenCV 4.5.3(日本語機械翻訳)
静的公開メンバ関数 | 全メンバ一覧
cv::ConjGradSolver クラス

This class is used to perform the non-linear non-constrained minimization of a function with known gradient, [詳解]

#include <optim.hpp>

cv::MinProblemSolverを継承しています。

静的公開メンバ関数

static Ptr< ConjGradSolver > create (const Ptr< MinProblemSolver::Function > &f=Ptr< ConjGradSolver::Function >(), TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 5000, 0.000001))
この関数は,すぐに使用可能なConjGradSolverオブジェクトを作成します。[【詳解】(英語]
- 基底クラス cv::Algorithm に属する継承静的公開メンバ関数
template<typename _Tp >
static Ptr< _Tp > read (const FileNode &fn)
ファイル・ノードからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > load (const String &filename, const String &objname=String())
ファイルからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > loadFromString (const String &strModel, const String &objname=String())
文字列からアルゴリズムを読み込む[【詳解】(英語]

その他の継承メンバ

- 基底クラス cv::MinProblemSolver に属する継承公開メンバ関数
virtual Ptr< Function > getFunction () const =0
最適化された関数のゲッター。[【詳解】(英語]
virtual void setFunction (const Ptr< Function > &f)=0
最適化された関数のセッター。[【詳解】(英語]
virtual TermCriteria getTermCriteria () const =0
このアルゴリズムに以前に設定された最終基準のゲッター。[【詳解】(英語]
virtual void setTermCriteria (const TermCriteria &termcrit)=0
ソルバーの最終基準を設定する。[【詳解】(英語]
virtual double minimize (InputOutputArray x)=0
実際にアルゴリズムを実行し、最小化を行います。[【詳解】(英語]
- 基底クラス cv::Algorithm に属する継承公開メンバ関数
virtual CV_WRAP void clear ()
アルゴリズムの状態をクリアする[【詳解】(英語]
virtual void write (FileStorage &fs) const
アルゴリズムのパラメーターをファイルストレージに格納[【詳解】(英語]
CV_WRAP void write (const Ptr< FileStorage > &fs, const String &name=String()) const
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
virtual CV_WRAP void read (const FileNode &fn)
アルゴリズム・パラメータをファイル・ストレージから読み込みます。[【詳解】(英語]
virtual CV_WRAP bool empty () const
が空の場合はtrueを返します。Algorithmが空の場合は真を返します。[【詳解】(英語]
virtual CV_WRAP void save (const String &filename) const
virtual CV_WRAP String getDefaultName () const
- 基底クラス cv::Algorithm に属する継承限定公開メンバ関数
void writeFormat (FileStorage &fs) const

詳解

このクラスは,勾配が既知の関数の非線形非制約最小化を行うために使用されます.

で定義されたn-次元ユークリッド空間上で定義された、勾配が既知の関数の非線形非制約最小化を行うために使用します。非線形共役勾配法. その実装は、美しく明快な解説記事[An Introduction to the Conjugate Gradient Method Without the Agonizing Pain]に基づいて行われました(http://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf) Jonathan Richard Shewchuk氏によるものです。この方法は、標準的な共役勾配法を応用したものと考えられます(例えばhttp://en.wikipedia.org/wiki/Conjugate_gradient_methodを参照してください)を線形方程式系を数値的に解くために応用したものと考えられます。

この方法は、決定論的ではありますが、むしろ発見的な方法であり、したがって、グローバルなものではなく、ローカルなミニマムに収束する可能性があることに注意する必要があります。さらに悲惨なことに、この手法のほとんどの挙動は勾配に支配されているため、本質的に局所的な最小値と最大値を区別することができない。したがって、局所的な最大値に十分近いところからスタートすれば、そこに収束する可能性があります。もう1つの明らかな制限は、任意の点における関数の勾配を計算することが可能でなければならないということです。したがって、勾配の解析的な表現を持つことが望ましく、計算上の負担はユーザーが負うべきです。

後者の責任を果たすためにはMinProblemSolver::Functionインターフェース(最適化される関数を表します)の getGradient メソッドによって実現されます。このメソッドはn-次元空間の点を受け取り(第1引数はその点の座標の配列),その勾配を計算します(第2引数に配列として格納されます).

覚え書き
クラスConjGradSolverこのメソッドは、基本的なMinProblemSolverインターフェイスに新しいメソッドを追加するものではありません。
用語の基準は以下の条件を満たす必要があります。
termcrit.type == (TermCriteria::MAX_ITER + TermCriteria::EPS) && termcrit.epsilon > 0 && termcrit.maxCount > 0
// or
termcrit.type == TermCriteria::MAX_ITER) && termcrit.maxCount > 0
@ MAX_ITER
ditto
Definition: core/types.hpp:861
@ EPS
the desired accuracy or change in parameters at which the iterative algorithm stops
Definition: core/types.hpp:862
int type
Definition: core/types_c.h:919

関数詳解

create()

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

この関数は,すぐに使用可能なConjGradSolverオブジェクトを作成します。

すべてのパラメータはオプションであるため、パラメータがまったくない場合でもこの手続きを呼び出すことができます。この場合は、デフォルト値が使用されます。ターミナル基準のデフォルト値は、唯一の賢明なものであるためです。MinProblemSolver::setFunction()に関数が与えられていない場合は、得られたオブジェクトに対してcreate(). それ以外の場合は、2つの方法(それをcreate()に渡すか、それを見逃してMinProblemSolver::setFunction()を呼び出す)は,全く同等です(無効な入力が検出された場合には,同じようにエラーが発生します)。

引数
f で送信したものと同様に,最小化される関数へのポインタを指定します.MinProblemSolver::setFunction.
termcrit アルゴリズムへの末端の基準は、以下の方法で提出したものと同様です。MinProblemSolver::setTermCriteria.

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