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 メンバ | 内容 |
---|---|---|
51 | FVIL.ErrorCode.LICENSE_ERROR | ライセンスキーが見つからない為、実行できません。 または、 FVIL._SetUp.InitVisionLibrary が実行されていません。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | パラメータに誤りがあります。 |
29 | FVIL.ErrorCode.NOT_CALCULABLE | 計算不可能です。 |
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | メモリの確保に失敗しました。 |
Remarks
楕円状に並んだ比較的ばらつきが大きい座標点群に対してロバスト推定法を使い、 最適な楕円のパラメータ(中心座標・主軸副軸半径および傾き)を算出します。
points は座標点群です。5点以上の座標点を入力してください。 但し、ロバスト推定法は統計計算ですので、楕円の検出精度を上げる為にはなるべく多くのデータを指定してください。
weight は下図における重みWのことです。weight の単位は points パラメータと同じです。 例えば、x座標が画素で与えられているなら weight も画素、x座標がmmで与えられているなら weight もmmになります。 データのばらつきが大きいような場合は weight を小さくすることによって高い精度が得られるようになります。
しかし、「データ数が小さい」「データのばらつきが大きい」 という2つのケースでは weight を小さくすることによって 計算に使われるデータが少なくなるため統計効果が低減して、却って精度が悪くなってしまいます。 与えたデータのばらつきの標準偏差の1〜3倍程度を目安としてください。 因みに、理論的にはこの値を無限大にすると最小二乗法と一致します。
尚、 weight を種々変化させて計算させても所望の解答が得られなかった場合は、 与えたデータがばらつきすぎている(分散が大きすぎる)可能性があります。 そのような際には本関数では対応できません。
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |