WIL説明書(C++)  3.0.0
モジュール | 関数
近似計算 (ロバスト推定法)

詳解

モジュール

 定数
 

関数

FVCL_API FVCL::Data::CFvLine FVCL::Robust::CalcLine (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight)
 直線の算出 (非推奨) [詳解]
 
FVCL_API INT FVCL::Robust::CalcLine (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight, FVCL::Data::CFvLine *line)
 直線の算出 (非推奨) [詳解]
 
FVCL_API FVCL::Data::CFvCircle FVCL::Robust::CalcCircle (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight)
 円の算出 (非推奨) [詳解]
 
FVCL_API INT FVCL::Robust::CalcCircle (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight, FVCL::Data::CFvCircle *circle)
 円の算出 (非推奨) [詳解]
 
FVCL_API FVCL::Data::CFvEllipse FVCL::Robust::CalcEllipse (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight)
 楕円の算出 (非推奨) [詳解]
 
FVCL_API INT FVCL::Robust::CalcEllipse (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight, FVCL::Data::CFvEllipse *ellipse)
 楕円の算出 (非推奨) [詳解]
 
FVCL_API FVCL::Data::CFvEllipse FVCL::Robust::CalcEllipseParallelAxis (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight)
 軸に平行な楕円の算出 [詳解]
 
FVCL_API INT FVCL::Robust::CalcEllipseParallelAxis (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight, FVCL::Data::CFvEllipse *ellipse)
 軸に平行な楕円の算出 [詳解]
 
FVCL_API DOUBLE FVCL::Robust::CalcAverage (const CFvMultiData< DOUBLE > &datas, DOUBLE weight)
 データ平均値計算 [詳解]
 
FVCL_API INT FVCL::Robust::CalcAverage (const CFvMultiData< DOUBLE > &datas, DOUBLE weight, DOUBLE *average)
 データ平均値計算 [詳解]
 
FVCL_API FVCL::Data::CFvPoint FVCL::Robust::CalcCenterOfGravity (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight)
 座標点群の重心計算 [詳解]
 
FVCL_API INT FVCL::Robust::CalcCenterOfGravity (const CFvMultiData< FVCL::Data::CFvPoint > &points, DOUBLE weight, FVCL::Data::CFvPoint *cog)
 座標点群の重心計算 [詳解]
 

関数詳解

FVCL::Robust::CalcLine ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight 
)

直線の算出 (非推奨)

namespace FVCL::Robust

この関数は過去のバージョンとの互換性の為に残しています。
新しい開発では FVCL::CG::FitLine を使用してください。

直線状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って最適な直線を算出します。

引数
[in]points座標点群 (2点以上)
[in]weight重みの閾値
戻り値
算出された直線を返します。
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。 発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
直線状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使い最適な直線を算出します。
points は直線パラメータを算出する座標点群です。 2点以上の座標点を入力してください。 ただし、ロバスト推定法は統計計算ですので、 直線の検出精度を上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータと同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_line.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Robust::CalcLine ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight,
FVCL::Data::CFvLine line 
)

直線の算出 (非推奨)

namespace FVCL::Robust

この関数は過去のバージョンとの互換性の為に残しています。
新しい開発では FVCL::CG::FitLine を使用してください。

直線状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って最適な直線を算出します。

引数
[in]points座標点群 (2点以上)
[in]weight重みの閾値
[out]line算出された直線
戻り値
正常な場合は 0 (FVCL_ErrorCode::_SUCCESS) を返します。
異常があればエラーコードを返します。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
直線状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使い最適な直線を算出します。
points は直線パラメータを算出する座標点群です。 2点以上の座標点を入力してください。 ただし、ロバスト推定法は統計計算ですので、 直線の検出精度を上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータと同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_line.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
line は求められた直線パラメータを返します。
FVCL::Robust::CalcCircle ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight 
)

円の算出 (非推奨)

namespace FVCL::Robust

この関数は過去のバージョンとの互換性の為に残しています。
新しい開発では FVCL::CG::FitCircle を使用してください。

円状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って最適な円を算出します。

引数
[in]points座標点群 (3点以上)
[in]weight重みの閾値
戻り値
算出された円を返します。
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。 発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
円状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使い最適な円を算出します。
points は座標点群です。 3点以上の座標点を入力してください。 ただし、ロバスト推定法は統計計算ですので 円の検出精度を上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータと同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_circle.png
なお、weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Robust::CalcCircle ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight,
FVCL::Data::CFvCircle circle 
)

円の算出 (非推奨)

namespace FVCL::Robust

この関数は過去のバージョンとの互換性の為に残しています。
新しい開発では FVCL::CG::FitCircle を使用してください。

円状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って最適な円を算出します。

引数
[in]points座標点群 (3点以上)
[in]weight重みの閾値
[out]circle算出された円
戻り値
正常な場合は 0 (FVCL_ErrorCode::_SUCCESS) を返します。
異常があればエラーコードを返します。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
円状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使い最適な円を算出します。
points は座標点群です。 3点以上の座標点を入力してください。 ただし、ロバスト推定法は統計計算ですので 円の検出精度を上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータと同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_circle.png
なお、weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
FVCL::Robust::CalcEllipse ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight 
)

楕円の算出 (非推奨)

namespace FVCL::Robust

この関数は過去のバージョンとの互換性の為に残しています。
新しい開発では FVCL::CG::FitEllipse を使用してください。

楕円状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って最適な楕円を算出します。

引数
[in]points座標点群 (5点以上)
[in]weight重みの閾値
戻り値
算出された楕円を返します。
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。 発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
楕円状に並んだ比較的ばらつきが大きい座標点群に対してロバスト推定法を使い、 最適な楕円のパラメータ(中心座標・主軸副軸半径および傾き)を算出します。
points は座標点群です。 5点以上の座標点を入力してください。 ただし、ロバスト推定法は統計計算ですので、 楕円の検出精度を上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータ と同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_ellipse.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Robust::CalcEllipse ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight,
FVCL::Data::CFvEllipse ellipse 
)

楕円の算出 (非推奨)

namespace FVCL::Robust

この関数は過去のバージョンとの互換性の為に残しています。
新しい開発では FVCL::CG::FitEllipse を使用してください。

楕円状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って最適な楕円を算出します。

引数
[in]points座標点群 (5点以上)
[in]weight重みの閾値
[out]ellipse算出された楕円
戻り値
正常な場合は 0 (FVCL_ErrorCode::_SUCCESS) を返します。
異常があればエラーコードを返します。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
楕円状に並んだ比較的ばらつきが大きい座標点群に対してロバスト推定法を使い、 最適な楕円のパラメータ(中心座標・主軸副軸半径および傾き)を算出します。
points は座標点群です。 5点以上の座標点を入力してください。 ただし、ロバスト推定法は統計計算ですので、 楕円の検出精度を上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータ と同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_ellipse.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
FVCL::Robust::CalcEllipseParallelAxis ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight 
)

軸に平行な楕円の算出

namespace FVCL::Robust

楕円状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って最適な楕円を算出します。
CalcEllipse 関数との違いは、楕円の傾きがx軸またはy軸に平行なる事です。

引数
[in]points座標点群 (5点以上)
[in]weight重みの閾値
戻り値
算出された楕円を返します。
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。 発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
楕円状に並んだ比較的ばらつきが大きい座標点群に対してロバスト推定法を使い、 最適な楕円のパラメータ(中心座標・主軸副軸半径)を算出します。 CalcEllipse が任意の傾き角の楕円を求めるのに対して、 本関数はx軸またはy軸に平行な楕円を求める点が異なります。
points は座標点群です。 5点以上の値を入力してください。 ただし、ロバスト推定法は統計計算ですので、 楕円の検出精度を上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータ と同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_ellipse.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
本関数では、楕円の角度は、必ず 0.0 または 90.0 になります。
バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Robust::CalcEllipseParallelAxis ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight,
FVCL::Data::CFvEllipse ellipse 
)

軸に平行な楕円の算出

namespace FVCL::Robust

楕円状に並んだ比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って最適な楕円を算出します。
CalcEllipse 関数との違いは、楕円の傾きがx軸またはy軸に平行なる事です。

引数
[in]points座標点群 (5点以上)
[in]weight重みの閾値
[out]ellipse算出された楕円
戻り値
正常な場合は 0 (FVCL_ErrorCode::_SUCCESS) を返します。
異常があればエラーコードを返します。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
楕円状に並んだ比較的ばらつきが大きい座標点群に対してロバスト推定法を使い、 最適な楕円のパラメータ(中心座標・主軸副軸半径)を算出します。 CalcEllipse が任意の傾き角の楕円を求めるのに対して、 本関数はx軸またはy軸に平行な楕円を求める点が異なります。
points は座標点群です。 5点以上の値を入力してください。 ただし、ロバスト推定法は統計計算ですので、 楕円の検出精度を上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータ と同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_ellipse.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
ellipse は算出された楕円が格納されます。 本関数では、楕円の角度は、必ず 0.0 または 90.0 になります。
FVCL::Robust::CalcAverage ( const CFvMultiData< DOUBLE > &  datas,
DOUBLE  weight 
)

データ平均値計算

namespace FVCL::Robust

与えられたデータに対して、ロバスト推定法を使って平均値を算出します。

引数
[in]datasデータ群 (1点以上)
[in]weight重みの閾値
戻り値
算出された平均値を返します。
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。 発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
与えられたデータ(例えば濃度値やエッジの強さ等)に対して、ロバスト推定法を使って その平均値(つまり理論上の最適値)を算出します。
datas は平均値を計算するスカラデータ(例えば、濃度値など)です。 1点以上の値を入力してください。 ただし、ロバスト推定法は統計計算ですので平均値計算の精度を 上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は datas パラメータと同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_value.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Robust::CalcAverage ( const CFvMultiData< DOUBLE > &  datas,
DOUBLE  weight,
DOUBLE average 
)

データ平均値計算

namespace FVCL::Robust

与えられたデータに対して、ロバスト推定法を使って平均値を算出します。

引数
[in]datasデータ群 (1点以上)
[in]weight重みの閾値
[out]average平均値
戻り値
正常な場合は 0 (FVCL_ErrorCode::_SUCCESS) を返します。
異常があればエラーコードを返します。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
与えられたデータ(例えば濃度値やエッジの強さ等)に対して、ロバスト推定法を使って その平均値(つまり理論上の最適値)を算出します。
datas は平均値を計算するスカラデータ(例えば、濃度値など)です。 1点以上の値を入力してください。 ただし、ロバスト推定法は統計計算ですので平均値計算の精度を 上げるためにはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は datas パラメータと同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_value.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
FVCL::Robust::CalcCenterOfGravity ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight 
)

座標点群の重心計算

namespace FVCL::Robust

比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って重心座標を算出します。

引数
[in]points座標点群 (1点以上)
[in]weight重みの閾値
戻り値
算出された重心座標を返します。
例外
FVCL::CFveException処理に失敗した場合は例外を発行します。 発行された例外インスタンスの GetErrorCode からエラーコードを取得できます。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
比較的ばらつきが大きい座標点群に対して、ロバスト推定法を使ってその重心座標を算出します。
points は重心を計算する座標点群です。 1点以上の値を入力してください。 ただし、ロバスト推定法は統計計算ですので 重心計算の精度を上げるためには、なるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータ と同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_coord.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
バージョン
FVCLbasic v2.0.0.0: 新規追加
FVCL::Robust::CalcCenterOfGravity ( const CFvMultiData< FVCL::Data::CFvPoint > &  points,
DOUBLE  weight,
FVCL::Data::CFvPoint cog 
)

座標点群の重心計算

namespace FVCL::Robust

比較的ばらつきが大きい座標点群に対して、 ロバスト推定法を使って重心座標を算出します。

引数
[in]points座標点群 (1点以上)
[in]weight重みの閾値
[out]cog平均座標値
戻り値
正常な場合は 0 (FVCL_ErrorCode::_SUCCESS) を返します。
異常があればエラーコードを返します。
エラーコード:
定数 内容
51 FVCL_ErrorCode::LICENSE_ERROR ライセンスがありません。
1 FVCL_ErrorCode::FAILED_TO_ALLOCATE メモリの確保に失敗しました。
11 FVCL_ErrorCode::INVALID_PARAMETER 引数に誤りがあります。
29 FVCL_ErrorCode::NOT_CALCULABLE 計算できません。
必要条件:
ヘッダー: FVCLbasic.h
解説:
比較的ばらつきが大きい座標点群に対して、ロバスト推定法を使ってその重心座標を算出します。
points は重心を計算する座標点群です。 1点以上の値を入力してください。 ただし、ロバスト推定法は統計計算ですので 重心計算の精度を上げるためには、なるべく多くのデータを指定してください。
weight は下図における重みWのことです。 weight の単位は points パラメータ と同じです。 例えば、x座標が画素で与えられているなら weight も画素、 x座標がmmで与えられているなら weight もmmになります。
データのばらつきが大きいような場合は weight を小さくすることによって 高い精度が得られるようになります。 しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、返って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1~3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
palrbst2_rbs_coord.png
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。

Documentation copyright © 2007 FAST Corporation. [B-001864]
Generated on 2023年11月02日(木) 10時12分54秒 for WIL説明書(C++) by doxygen 1.8.11