Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public static F_LH_LINE RefineByLSM( F_LH_LINE line, CFviEdgeResultI32 edges, int err_r, int err_q ) |
Visual Basic |
---|
Public Shared Function RefineByLSM ( line As F_LH_LINE, edges As CFviEdgeResultI32, err_r As Integer, err_q As Integer ) As F_LH_LINE |
Parameters
- line
- Type: fvalgcli..::..F_LH_LINE
直線ハフ検出データ
- edges
- Type: FVIL.Edge..::..CFviEdgeResultI32
エッジ点列 (1点以上)
- err_r
- Type: System..::..Int32
ρ方向許容誤差 (0~)
- err_q
- Type: System..::..Int32
θ方向許容誤差 (0~)
Return Value
Type: F_LH_LINE直線係数を最小二乗法で求め直します。
Remarks
指定された1本の直線とエッジ点群から、その直線の近くにあると判定される点群を選び出し、 これらに対して最小二乗法で直線の方程式を求め直します。
line には、 LineHough(CFviEdgeResultI32, CFviLineHoughParam) で得られた結果(複数の直線)の内の1つを指定してください。
edges には、直線の近くにある可能性のあるエッジ点列を指定します。 LineHough(CFviEdgeResultI32, CFviLineHoughParam) で指定したエッジ点列をそのまま入力して構いません。 若しくは、何らかの方法によって候補を絞ったものを入力しても結構です。 このエッジ点列の中から直線上にある点が選ばれます。
err_r 及び err_q は、直線付近のエッジ点群を選び出す為に使用します。 詳しくは、 GetSupportEdges(F_LH_LINE, CFviEdgeResultI32, Int32, Int32, SortType%) の解説をご参照ください。
err_q はエッジ点が直線の真のエッジ点であるかどうかを判定するための値です。 具体的には、直線の向きとエッジ点の向きとの差の絶対値が err_q 以内の場合、 このエッジ点が直線の真のエッジであると判定されます。(下図参照)
処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと FunctionEx メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
51 | FVIL.ErrorCode.LICENSE_ERROR | ライセンスキーが見つからない為、実行できません。 または、 FVIL._SetUp.InitVisionLibrary が実行されていません。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | パラメータに誤りがあります。 |
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | メモリの確保に失敗しました。 |
29 | FVIL.ErrorCode.NOT_CALCULABLE | 計算不可能です。 |
Examples
この関数は、 RefineByLSM(F_LH_LINE, CFviEdgeResultI32, Int32, Int32, Int32%) で直線の上にあるエッジ点の数の取得を省略することと同様です。
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |