FindCurve

カーブのある画像領域内で単一の円弧エッジを探します。FindCurve 関数は、領域のローカル座標系に相対的な正の X 方向にスキャンされた、同心円弧セグメントのピクセル値を合計することによって、画像領域の 1 次元プロジェクションを形成します。投影された画像データからエッジ遷移が抽出されます。

FindCurveの入力パラメータ

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

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

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

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

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

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

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

領域の scan direction に対する、特定対象のエッジの極性を指定します。この関数は、指定された極性のエッジだけを報告します。

0 = 黒→白 エッジ極性が黒→白になるように指定します。
1 = 白→黒 エッジ極性が白→黒になるように指定します。
2 = 任意 (デフォルト) エッジ極性が黒→白または白→黒に変化するように指定します。
検索

関数が複数のエッジ候補から 1 つのエッジを選択する際に使用するエッジ選択手法を指定します。

0 = 最高得点 (デフォルト) 最高スコアのエッジが注目されるように指定します。
1 = 最初のエッジ 検出された最初のエッジが注目されるように指定します。
2 = 最後のエッジ 検出された最後のエッジが注目されるように指定します。
アクセプトしきい値 最小許容エッジコントラストを指定します (0 ~ 100、デフォルト = 25)。コントラスト値は、領域内のグレースケールヒストグラムから 0 ~ 100 の範囲で正規化されます。この関数は、コントラストスコアがこの値を下回るエッジを拒否します。
スコアの正規化

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

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

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

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

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

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

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

:  
  • このパラメータを 0 より大きい値に設定すると、関数の速度が低下します。
  • この設定は、現在は無視されています。円環セグメント内では、[角度範囲] の最大値 10 が必ず許可されます。
エッジ幅 エッジ変化が起きるピクセル距離を指定します (1 ~ 50、デフォルト = 3)[エッジ幅] は、エッジが抽出される前に画像をフィルタ処理するために使用されます。
表示

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

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

FindCurveの出力

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

FindCurveデータアクセス関数

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

中心行 GetRow(エッジ, 0, 0) 湾曲の中心の行座標
中心列 GetCol(エッジ, 0, 0) 湾曲の中心の列座標
始点行 GetRow(エッジ, 0, 1) 始点の行座標。
始点列 GetCol(エッジ, 0, 1) 始点の列座標。
終点行 GetRow(エッジ, 0, 2) 終点の行座標。
終点列 GetCol(エッジ, 0, 2) 終点の列座標
半径 GetRadius(エッジ, 0) 円弧の半径
得点 GetScore(エッジ, 0) エッジコントラストの得点。得点は黒→白の場合は正の値、白→黒の場合は負の値になります。