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

このクラスは、関数の非線形・無制約の最小化を実行するために使用される。 さらに...

#include <opencv2/core/optim.hpp>

Collaboration diagram for cv::DownhillSolver:

公開メンバ関数

virtual void getInitStep (OutputArray step) const =0
 downhill simplexアルゴリズムで使用される初期ステップを返す。
 
virtual void setInitStep (InputArray step)=0
 downhill simplexアルゴリズムで使用される初期ステップを設定する。
 
- 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
 
virtual void write (FileStorage &fs) const
 アルゴリズムの引数をファイルストレージに保存する。
 
void write (FileStorage &fs, const String &name) const
 

静的公開メンバ関数

static Ptr< DownhillSolvercreate (const Ptr< MinProblemSolver::Function > &f=Ptr< MinProblemSolver::Function >(), InputArray initStep=Mat_< double >(1, 1, 0.0), TermCriteria termcrit=TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 5000, 0.000001))
 この関数は、すぐに使用できる DownhillSolver オブジェクトへの参照を返す。
 
- 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

- Protected Member Functions inherited from cv::Algorithm
void writeFormat (FileStorage &fs) const
 

詳細説明

このクラスは、関数の非線形・無制約の最小化を実行するために使用される。

n 次元ユークリッド空間上で定義され、Nelder-Mead法(downhill simplex法とも呼ばれる)を用いる**。この手法の基本的な考え方については http://en.wikipedia.org/wiki/Nelder-Mead_method から得られる。

この手法は決定論的ではあるものの、むしろヒューリスティックであり、そのため必ずしも大域的最小値ではなく局所的最小値に収束する可能性があることに注意すべきである。これは反復的な最適化手法であり、各ステップで n+1 個の点でのみ評価された関数の値に関する情報を使用する。これらの点は n 次元空間における シンプレックス として配置される(これがこの手法のもう一つの名前の由来である)。各ステップで関数を評価する新しい点が選ばれ、得られた値が以前のものと比較され、この情報に基づいてシンプレックスはその形状を変化させながら、ゆっくりと局所的最小値へと移動する。したがって、この手法は決定を下すために関数値 のみ を使用しており、これは例えば(同じく optim に実装されている)非線形共役勾配法とは対照的である。

Algorithm は、実行された関数評価の回数が termcrit.maxCount を超えたとき、シンプレックスの頂点における関数値が termcrit.epsilon の範囲内に収まったとき、あるいはシンプレックスが termcrit.epsilon の辺を持つ箱に収まるほど小さくなったときのいずれか最初に達した時点で停止する。ここで termcrit.maxCount はユーザーが定義する正の整数、termcrit.epsilon は正の非整数である。

覚え書き
DownhillSolver は抽象インターフェース cv::MinProblemSolver の派生クラスであり、これは Algorithm インターフェースから派生したもので、optim モジュール内のすべての非線形最適化アルゴリズムに共通する機能をカプセル化するために使用される。
終了条件は次の条件を満たす必要がある:
termcrit.type == (TermCriteria::MAX_ITER + TermCriteria::EPS) && termcrit.epsilon > 0 && termcrit.maxCount > 0
@ MAX_ITER
ditto
Definition types.hpp:904
@ EPS
the desired accuracy or change in parameters at which the iterative algorithm stops
Definition types.hpp:905

メンバ関数詳解

◆ create()

static Ptr< DownhillSolver > cv::DownhillSolver::create ( const Ptr< MinProblemSolver::Function > & f = PtrMinProblemSolver::Function >(),
InputArray initStep = Mat_< double >(1, 1, 0.0),
TermCriteria termcrit = TermCriteria(TermCriteria::MAX_ITER+TermCriteria::EPS, 5000, 0.000001) )
static

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

すべての引数は省略可能であるため、この手続きは引数を一切指定せずに呼び出すこともできる。その場合はデフォルト値が使用される。終了条件についてはデフォルト値が唯一の妥当なものであるため、各引数が create() に与えられなかった場合は、得られたオブジェクトに対して MinProblemSolver::setFunction() および DownhillSolver::setInitStep() を呼び出すべきである。それ以外では、2つの方法(createDownhillSolver() に引数を与えるか、それらを省略して MinProblemSolver::setFunction() および DownhillSolver::setInitStep() を呼び出すか)は完全に等価である(そして無効な入力が検出された場合には、同じ方法で同じエラーを出す)。

引数
f最小化される関数へのポインタ。MinProblemSolver::setFunction を通じて渡すものと同様。
initStep初期ステップ。MinProblemSolver::setInitStep を介して指定するものと同様に、初期シンプレックスを構築するために使用される。
termcritアルゴリズムの終了条件。MinProblemSolver::setTermCriteria を通じて渡すものと同様。

◆ getInitStep()

virtual void cv::DownhillSolver::getInitStep ( OutputArray step) const
pure virtual

downhill simplexアルゴリズムで使用される初期ステップを返す。

引数
stepアルゴリズムで使用される初期ステップ。対応するセッターは列ベクトルも行ベクトルも受け付けるが、このメソッドは行ベクトルを返すことに注意。
参照
DownhillSolver::setInitStep

◆ setInitStep()

virtual void cv::DownhillSolver::setInitStep ( InputArray step)
pure virtual

downhill simplexアルゴリズムで使用される初期ステップを設定する。

ステップは、(DownhillSolver::minimize で与えられる)初期点とともに、初期シンプレックスの形状を決定するために使用される2つの n 次元ベクトルである。大まかに言えば、初期点はシンプレックスの位置(シンプレックスの重心となる)を決定し、ステップはシンプレックスの広がり(各次元のサイズ)を決定する。より正確には、\(s,x_0\in\mathbb{R}^n\) をそれぞれ初期ステップと初期点とすると、シンプレックスの頂点は次のようになる: \(v_0:=x_0-\frac{1}{2} s\) および \(i=1,2,\dots,n\) について \(v_i:=x_0+s_i\)。ここで \(s_i\) は初期ステップの n 番目の座標への射影を表す(射影の結果は \(s_i:=e_i\cdot\left<e_i\cdot s\right>\) で与えられるベクトルとして扱われ、\(e_i\) は正準基底をなす)

引数
stepアルゴリズムで使用される初期ステップ。大まかに言えば、初期シンプレックスの広がり(各次元のサイズ)を決定する。

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