# InspectEdgePosition

InspectEdgePosition 関数は、InspectEdge 関数によって返されるエッジに関する詳細なエッジ解析を行うためのエッジモデルを構築するために使用します。このデータは、エッジの位置の判別、除外距離エッジの識別、および必要に応じて最適ラインの構築を行うために使用します。

## InspectEdgePosition の概要

スプレッドシートにこの関数を挿入した後に、InspectEdge 関数によって出力された検査データ構造体に対する参照を作成する必要があります。InspectEdge 関数への参照が確立されると、InspectEdgePosition 関数のパラメータを設定することによってエッジモデルが作成されます。エッジモデルでは次の項目が定義されます。

- 最適ラインのタイプ - 直線または円形。
- エッジを検出する方向。
- エッジ変化のタイプ - 白から黒または黒から白。
- 不必要なエッジをフィルタ処理するために使用するエッジ得点付け基準。
- 最適ラインから不必要なエッジをフィルタ処理するために使用する最適ライン基準。

エッジモデルが確立されると、この関数によってエッジ候補がエッジモデルと比較され、モデルからの偏差が報告されます。

## InspectEdgePosition の入力

パラメータ | 説明
InspectEdge | InspectEdge 関数によって返された有効な検査データ構造体を含むスプレッドシートセルへの参照を指定します。
最適ライン | 検出されたエッジから作成する最適ラインの種類を指定します。
0 = なし | 最適ラインを作成しません。ROI の中心を基準に、検出されたエッジの位置を測定します。
1 = 最適直線 | 最適ラインを基準に、検出されたエッジの位置を測定します。
2 = 最適円 | 関数は、検出されたエッジから最適円を作成します。
3 = 自動調整 (デフォルト) | 関数は、参照先領域に基づいて最適直線または最適円のいずれかを自動的に作成します。
4 = 領域 | 最適ラインを作成しません。ROI の中心を基準に、検出されたエッジの位置を測定します。
エッジ方向の検出 | エッジを検出する方向を指定します。エッジを検出する方向をグラフィックス表示するために、暗い緑の矢印が追加されます。最適ラインには、画像内にグラフィックス表示でラベルが付けられます。最初の最適ラインには 0、2 番目の最適ラインには 1 が付けられます。 注: 参照している InspectEdge 関数の対象領域 (ROI) がカーブしている場合、検査はカーブの中心に対して行われます。[エッジ方向の検出] パラメータが [左→右] に設定されている場合は、カーブの中心方向に向かって検査され、[右→左] に設定されている場合はカーブの中心から外側へ向かって検査されます。
0 = 左→右 (デフォルト) | ROI の左から右に向かってエッジを検出します。 例
1 = 右→左 | ROI の右から左に向かってエッジを検出します。 例
第 1エッジ | [エッジ方向の検出] パラメータに従って、検出された最初のエッジのコントラスト変化を指定します。
1 = 黒→白 | エッジは、黒ピクセルから白ピクセルに変化します。
2 = 白→黒 (デフォルト) | エッジは、白ピクセルから黒ピクセルに変化します。
3 = 任意 | エッジは、黒→白または白→黒のいずれかに変化します。関数によって適切な変化が決定されます。変化を指定すると、関数のパフォーマンスが向上します。
エッジ得点 | 指定した基準をエッジが満たすかどうかを判別するために使用する、エッジ得点モードを指定します。
得点しきい値 | 得点付けのしきい値を指定します。この値 (1 ～ 100、デフォルト = 10) より小さい得点のエッジはフィルタで除去されます。
エッジ規則 | 得点を計算するときに最も重要になるエッジのタイプを指定します。
1 = 最初のエッジ | 検出された最初のエッジに注目します。
2 = エッジ強度 | 最強のコントラスト変化を持つエッジに注目します。
3 = 最初のエッジ/エッジ強度 (デフォルト) | 最初に検出され、最強のコントラスト変化を持つエッジに注目します。
コントラスト上限 | エッジとみなすエッジコントラスト変化の上限 (2 ～ 255、デフォルト = 255) を指定します。この値を超えるエッジコントラスト変化を持つエッジの得点は、すべて同じ最高得点になります。
最適ラインの詳細設定 | 最適ラインを構築する方法を指定します。
外れ値の削除 | [最適距離フィルタ] パラメータで指定されている距離より遠い点を最適ラインから削除するように指定します。
0 = OFF (デフォルト) | 除外距離エッジを考慮しません。
1 = ON | 計算時に除外距離エッジを考慮します。
最適距離フィルタ | 最適ライン再計算で利用するためにエッジと元の最適ラインの間に必要な距離をピクセル単位で指定します (有効な範囲は In-Sight ビジョンシステムの画像幅の 1 ～ 3 倍。デフォルト = 2)。この設定は、欠陥が最適ラインに影響を与えないようにする場合に有効です。この設定を有効にするには、[外れ値の削除] がオンになっている必要があります。
最端フィルタ距離 | 除外距離が、まだ最適ラインの一部とみなされる最適ラインからの距離を指定します (有効な範囲は In-Sight ビジョンシステムの画像幅の 1 ～ 3 倍。デフォルト はビジョンシステムの画像幅の 3 倍)。この値より大きなエッジはすべて無視されます。
得点再計算 | 最適ラインにより近いエッジを選択するために、エッジを得点再計算するように指定します。
0 = OFF (デフォルト) | 除外距離を考慮するためにエッジを得点再計算しません。
1 = ON | 計算時に除外距離エッジを考慮するために得点再計算を行います。
再計算 | エッジの得点再計算後に最適ラインの再適合を行うように指定します。この機能を有効にすると、最適ラインの精度が向上しますが、処理時間は長くなります。
0 = OFF (デフォルト) | 最適ラインの再適合を行いません。
1 = ON | エッジの得点再計算後に最適ラインの再適合を行います。
キャリパインデックス | 画像上に表示するキャリパを指定します (キャリパは緑色に囲まれて表示されます)。デフォルトで表示されるキャリパは 0 です。
表示 | 画像上にオーバーレイする InspectEdgePosition グラフィックスの表示モードを指定します。
0 = 非表示 (デフォルト) | InspectEdgePosition 関数を含んでいるセルがスプレッドシート内でハイライトされている場合を除き、すべてのグラフィックスが表示されません。
1 = 結果のグラフィックスのみ | 最適ライン、検出された欠陥、除外距離点とギャップの両方またはどちらかが常に表示されます。
2 = 結果のグラフィックスとキャリパの詳細 | 最適ライン、検出された欠陥、除外距離点とギャップの両方またはどちらか、検出されたエッジ点、およびインデックスで指定されたキャリパウィンドウが常に表示されます。
3 = すべて表示: 入力と結果のグラフィックス | 入力領域、最適ライン、検出された欠陥、除外距離点とギャップの両方またはどちらか、および検出されたエッジ点が常に表示されます。

## InspectEdgePosition の出力

戻り値 | 得点順にソートされた、一致したエッジを含む検査データ構造体。入力パラメータが無効であれば #ERR を返します。
結果 | InspectEdgePosition 関数を初めてセルに挿入すると、次の InspectEdge データアクセス関数を使用して、スプレッドシート内に結果テーブルが作成されます。InspectEdgePosition データ構造体結果テーブルは、最も遠い点と最適直線の 2 つのセクションに分けられています。
スプレッドシート名 | 関数名 | 説明
最も遠い点
点 1 /点 2 | GetExtremePosPoints(検査, 片側) | 両側のいずれかでエッジが最適ラインから最も離れているキャリパのインデックスを返します (近い = 0、遠い = 1)。[最適ライン] が [なし] に設定されている場合は、領域のいずれかのエッジに最も近い点を返します。
X | GetEdgePosX(検査, キャリパインデックス, エッジインデックス) | 指定したキャリパのエッジインデックスの位置 (点 1) の X 座標を返します。
Y | GetEdgePosY(検査, キャリパインデックス, エッジインデックス) | 指定したキャリパのエッジインデックスの位置 (点 2) の Y 座標を返します。
最適直線
X0 / Y1 | GetFitEdgePosX(検査, 点インデックス) | 最適直線の指定した点の X 座標を返します。
Y0 / Y1 | GetFitEdgePosY(検査, 点インデックス) | 最適直線の指定した点の Y 座標を返します。
中心 X | GetFitEdgePosCenterX(検査, 点インデックス) | 最適円を指定した場合に挿入され、最適円の中心の X 座標を返します。
中心 Y | GetFitEdgePosCenterY(検査, 点インデックス) | 最適円を指定した場合に挿入され、最適円の中心の Y 座標を返します。
半径 | GetFitEdgePosRadius(検査, 点インデックス) | 最適円を指定した場合に挿入され、最適円の中心からの距離を返します。
InspectEdgePosition 関数の数式はすべて次の条件に適合しています。 注: 検査 = InspectEdgePosition 関数によって出力された検査データ構造体 キャリパインデックス = 0 ～ N (キャリパの総数は、InspectEdgeForDefect 関数が参照している InspectEdge 関数によって出力されたキャリパの数と同じ) エッジペアインデックス = 0 または 1 エッジインデックス = 0 ～ N 点インデックス = 0 ～ 1 (0 = 始まり、1 = 終わり)