楕円の算出 (非推奨)

Namespace: FVIL.Robust
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
public static CFviEllipse CalcEllipse(
	IEnumerable<CFviPoint> points,
	double weight
)
Visual Basic
Public Shared Function CalcEllipse ( 
	points As IEnumerable(Of CFviPoint),
	weight As Double
) As CFviEllipse

Parameters

points
Type: System.Collections.Generic..::..IEnumerable<(Of <(<'CFviPoint>)>)>
座標点群 (5点以上)
weight
Type: System..::..Double
重みの閾値 (与えられたデータのばらつきの標準偏差の1〜3倍程度が目安です)

Return Value

Type: CFviEllipse

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

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

正常に実行できなかった場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。

エラーコード:

ErrorCode メンバ内容
51FVIL.ErrorCode.LICENSE_ERROR ライセンスキーが見つからない為、実行できません。 または、 FVIL._SetUp.InitVisionLibrary が実行されていません。
11FVIL.ErrorCode.INVALID_PARAMETERパラメータに誤りがあります。
29FVIL.ErrorCode.NOT_CALCULABLE計算不可能です。
1FVIL.ErrorCode.FAILED_TO_ALLOCATEメモリの確保に失敗しました。

Remarks

楕円状に並んだ比較的ばらつきが大きい座標点群に対してロバスト推定法を使い、 最適な楕円のパラメータ(中心座標・主軸副軸半径および傾き)を算出します。

points は座標点群です。5点以上の座標点を入力してください。 但し、ロバスト推定法は統計計算ですので、楕円の検出精度を上げる為にはなるべく多くのデータを指定してください。

weight は下図における重みWのことです。weight の単位は points パラメータと同じです。 例えば、x座標が画素で与えられているなら weight も画素、x座標がmmで与えられているなら weight もmmになります。 データのばらつきが大きいような場合は weight を小さくすることによって高い精度が得られるようになります。

しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、却って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1〜3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。

尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。

Exceptions

ExceptionCondition
FVIL..::..CFviExceptionこの例外の原因については、上記のエラーコード表をご参照ください。

See Also