OpenCV 4.5.3(日本語機械翻訳)
|
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オブジェクトを作成します。[【詳解】(英語]
|
|
![]() |
|
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()) |
文字列からアルゴリズムを読み込む[【詳解】(英語]
|
|
その他の継承メンバ |
|
![]() |
|
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 |
実際にアルゴリズムを実行し、最小化を行います。[【詳解】(英語]
|
|
![]() |
|
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 |
![]() |
|
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引数に配列として格納されます).
|
static |
この関数は,すぐに使用可能なConjGradSolverオブジェクトを作成します。
すべてのパラメータはオプションであるため、パラメータがまったくない場合でもこの手続きを呼び出すことができます。この場合は、デフォルト値が使用されます。ターミナル基準のデフォルト値は、唯一の賢明なものであるためです。MinProblemSolver::setFunction()に関数が与えられていない場合は、得られたオブジェクトに対してcreate(). それ以外の場合は、2つの方法(それをcreate()に渡すか、それを見逃してMinProblemSolver::setFunction()を呼び出す)は,全く同等です(無効な入力が検出された場合には,同じようにエラーが発生します)。
f | で送信したものと同様に,最小化される関数へのポインタを指定します.MinProblemSolver::setFunction. |
termcrit | アルゴリズムへの末端の基準は、以下の方法で提出したものと同様です。MinProblemSolver::setTermCriteria. |