FindSegment

画像領域内でエッジのペアを探し、その間の円弧の距離を計算します。FindSegment 関数は、領域の X 方向のピクセル値を合計することによって、画像領域の 1 次元プロジェクションを形成します。投影された画像データからエッジ遷移が抽出されます。そのエッジからエッジへの距離を計算する円弧セグメントは、エッジの抽出に使用される領域から派生します。

FindSegmentの入力パラメータ

Syntax:FindSegment(画像,フィクスチャ.行,フィクスチャ.列,フィクスチャ.角度,領域.X,領域.Y,領域.高さ,領域.幅,領域.角度,領域.カーブ,セグメントの色,検索,アクセプトしきい値,スコアの正規化,角度範囲,エッジ幅,表示)

画像 画像データ構造体を含んだスプレッドシートセルを参照するように指定します。デフォルトでは、このパラメータは、AcquireImage 画像データ構造体を含むセル A0 を参照しています。また、このパラメータは、ビジョンツールのグラフィックス関数や、座標補正関数により返された、そのほかの画像データ構造体も参照できます。
フィクスチャ

フィクスチャ入力、またはビジョンツール関数の画像座標系の出力に関連する対象領域 (ROI) を定義します。フィクスチャに関連する ROI を設定すると、フィクスチャが回転または移動した場合に、フィクスチャに対応して ROI を確実に回転または移動できます。

デフォルト設定は画像の左上隅で、(0, 0, 0) になります。

画像座標での行オフセット。
画像座標での列オフセット
角度 画像座標系での方位角
領域

これは対象領域 (ROI) とも呼ばれ、解析の対象となる画像の領域を表します。変換および回転可能な矩形の画像領域を作成します。このパラメータを選択して、プロパティシートのツールバーにある [領域の最大化] ボタンを押すと、画像全体が対象になるように領域が自動的に拡張されます。

X フィクスチャ座標での原点の X オフセット
Y フィクスチャ座標での原点の Y オフセット
高さ 領域の X 軸に沿った寸法。
領域の Y 軸に沿った寸法。
角度 フィクスチャ座標での角度。
カーブ 領域の X 軸と反対側の境界線との間の角度変位。
:  [フィクスチャ] および [領域] パラメータは、画像の範囲内で定義されている必要があります。画像の範囲内で定義されていない場合、この関数は #ERR を返します。
セグメントの色

探す対象のセグメントの色を指定します。FindSegment 関数は、指定した極性のエッジペアのみを報告します。

0 = 黒 (デフォルト) 黒または白→黒、その後に黒→白の極性を指定します。
1 = 白 白または黒→白、その後に白→黒の極性を指定します。
検索

エッジの選択技術を指定します。

0 = 最も幅の広いセグメント (デフォルト) 指定した [Segment Color] のセグメントを識別することができる、最も遠く離れた 2 つのエッジを検出します。
1 = 最強のエッジ 指定した [Segment Color] のセグメントを識別することができる、最も強いレスポンス得点を持つ 2 つのエッジを検出します。
2 = 最も幅の広い隣接するセグメント 指定した [Segment Color] のセグメントを識別することができ、その間に他のエッジがない 2 つのエッジを検出します。
3 = 最も狭いセグメント 指定した [Segment Color] のセグメントを識別することができる、相互に最も近い 2 つのエッジを検出します。
アクセプトしきい値 最小許容エッジコントラストを指定します (0 ~ 100、デフォルト = 25)。コントラスト値は、領域内のグレースケールヒストグラムから 0 ~ 100 の範囲で正規化されます。この関数は、コントラストスコアがこの値を下回るエッジを拒否します。
スコアの正規化

エッジスコアを領域のグレースケールヒストグラムで正規化するかどうかを指定します。[スコアの正規化] を有効にすると、次の式を使うことで、画像領域内で見つかった最大コントラストで生エッジスコアが正規化されます。

スコア = (生エッジスコア)×(100/最大コントラスト)

生エッジスコアは、エッジ全体のグレースケール階調の差で、最大コントラストは、画像領域内の最大および最小グレースケール階調 (0 ~ 255) の差です。

[スコアの正規化] を無効にすると、低コントラストのエッジのスコアは、高コントラストのエッジよりも低くなります。次の式が使用されます。

スコア = (生エッジスコア)×(100/255)

0 = OFF スコアを正規化しないでください。
1 = ON (デフォルト) スコアを正規化します。
ヒント :  このパラメータは、低コントラスト領域でエッジを見つける場合に有用です。検出対象のエッジが高コントラストだけの場合は、このパラメータを無効にします。
角度範囲

エッジの回転に対する関数の許容範囲を指定します (0 ~ 10、デフォルト = 0)。この関数は、指定された範囲外のエッジも検出しますが、精度は高くないことがあります。

:  このパラメータを 0 より大きい値に設定すると、関数の速度が低下します。
エッジ幅 エッジ変化が起きるピクセル距離を指定します (1 ~ 50、デフォルト = 3)[エッジ幅] は、エッジが抽出される前に画像をフィルタ処理するために使用されます。
表示

画像上の FindSegment グラフィックスオーバレイの表示モードを指定します。

0 = 非表示 (デフォルト) FindSegment 関数を含んでいるセルがスプレッドシート内のアクティブセルである場合を除き、すべてのグラフィックスが表示されません。
1 = 結果のグラフィックスのみ エッジセグメントを定義する 2 つのエッジが常に表示されます。
2 = 入力と結果のグラフィックス 入力画像領域と 2 つのエッジが両方とも常に表示されます。
3 = すべて表示: 入力、結果、およびチャート 入力画像領域、2 つのエッジ、およびエッジのレスポンスチャートが常に表示されます。

FindSegmentの出力

戻り値 直線エッジの一致するペアを含むエッジデータ構造体。入力パラメータが無効であれば #ERR を返します。
結果 FindSegment 関数が初めてセルに挿入されると、スプレッドシート内に結果テーブルが自動的に作成されます。

FindSegmentデータアクセス関数

2 つのデータアクセス関数がスプレッドシートに自動挿入され、結果テーブルが作成されます。

距離 PairDistance(エッジ, 0, 1) セグメントの距離
得点 GetScore(エッジ, 0) セグメントのコントラスト得点

次のデータアクセス関数を使用して、そのほかのデータの取得ができます。

角度 GetAngle(エッジ, インデックス) 指定したエッジの角度。
行 0 GetRow(エッジ, エッジインデックス, 0) 始点の行座標。
列 0 GetCol(エッジ, エッジインデックス, 0) 始点の列座標。
行 1 GetRow(エッジ, エッジインデックス, 1) 終点の行座標。
列 1 GetCol(Edges, エッジインデックス, 1) 終点の列座標