Caliper

この関数を使用して、対象物の幅の計測、単一エッジの位置およびエッジペアの位置と間隔の特定などの、エッジに関する検査を実行します。Caliper 関数は最も正確なエッジツール関数ですが、セットアップと構成に時間がかかります。

概要

Caliper 関数を使用して画像を調べ、1 次元のエッジ、周囲のピクセルのグレースケール値の変化を探します。この関数は、画像の指定した部分 ([領域] パラメータで定義) を調べ、黒から白、または白から黒への一方向に、ピクセルのグレースケール値の遷移をスキャンします。単一エッジまたはエッジのペア (予測される幅によって区別されます) は、この関数で探すことができます。

Caliper 関数は、対象物の内部または周囲のエッジの特徴の、正確な位置に関する詳細情報を展開するアプリケーションに有用です。例えば、この関数を使用して、チップのリードのカウント、パーツの幅の計測、または別のビジョンツールで入力として使用するエッジポイントの検出を行うことができます。この関数は、エッジモデルに基づいてエッジまたはエッジペアを探し、ここで潜在的なエッジ候補のピークがシンプルな 1D カーネルを使用して検出され、モデルと得点付け方法に対して得点化されます。

画像内で対象エッジの位置と方向を特定したら、Caliper 関数を適用することができます。

領域の設定

領域を位置決めするときに、目的とするエッジを適切に識別できるように、スキャン方向を設定します。スキャン方向は、検出する最初のエッジの方向を指している必要があります。エッジの位置は、領域の中心に対して、エッジが検出される位置によって特定されます

エッジの分離とエッジモデルの定義

領域内にエッジが配置されると、Caliper 関数は画像内の各エッジ候補の得点を計算します。各エッジの得点は、現在の画像内のエッジと定義された最適なエッジとの類似性に基づいて計算されます。現在の画像内のエッジは「エッジ候補」とみなされますが、最適なエッジは「エッジモデル」と呼ばれます (単一エッジまたはエッジのペア)。

エッジモデル

画像内のエッジ候補が、要求されたエッジと良好にマッチするかどうかを評価するには、対象エッジを正確に表現するモデルを定義する必要があります。エッジモデルを定義するには、最初にエッジのタイプ (単一エッジまたはエッジのペア) を定義します。次に、エッジタイプの内いくつを領域内に配置するかを定義します。その後、極性 (白→黒または黒→白)、モデル内の各エッジの位置 (領域に対するエッジの位置によって指定されます)、およびエッジ間の間隔 (エッジペアを定義する場合) を指定します。

コントラストしきい値が最小であるエッジ検出、ピーク検出

[エッジ幅] パラメータを使用して、入力画像からノイズを除去し、エッジプロファイルのピークを強調します。[最小コントラスト] パラメータを使用して、最小ピーク高さ (コントラストしきい値) を設定します。

エッジモード得点付け

Caliper 関数で領域をフィルタし、指定したコントラストしきい値を超えるエッジピークのリストを作成すると、画像内の各エッジ候補の得点が計算されます。この得点によって、画像内のどのエッジ候補が、実際の対象エッジのインスタンスを、エッジモデルによって定義されているように表しているかを判定します。

Caliper 関数は、得点付け方法と呼ばれるユーザ定義の得点付け基準に基づいて、エッジ候補をエッジモデルと比較することによって、各エッジの得点を計算します。

得点付け方法には次の 2 つの部分があります。

  • 評価するエッジの計測値を定義する、得点付け方法のタイプ。
  • 未処理の計測値と、得点付け方法用に作成されるマッピングされた得点との関係を定義する、得点付け関数。

得点付け方法は複数定義することができます。Caliper 関数は、定義したすべての得点付け方法を画像内の各エッジ候補に適用し、各エッジ候補全体の得点を返します。適切な得点付け方法を定義すると、最高得点のエッジ候補が対象エッジとなります。

得点付け方法の種類

Caliper 関数は、エッジ候補がエッジモデルとどのように異なるかについての、エッジ候補の得点に基づいています。この差異を査定するためにこのツールで使用する特定の計測方法は、ユーザが定義します。指定できる測定方法の種類は、得点付け方法の種類によって呼び出され、コントラスト、位置、サイズ、およびまたがるの 4 種類の得点付け方法があります。

この関数で得点付け方法の種類をエッジ候補に適用すると、生スコアとなります。未処理の得点は、得点付け方法の種類によって異なります。得点付け方法の種類とその未処理の得点については、次のセクションで説明します。

コントラストの得点付け方法

エッジ候補を、エッジ候補のコントラストに基づいて得点付けすることができます。エッジのコントラストは、ピクセル単位でのエッジのサイズによって分類されたピクセル値の変化を単位として表されます。コントラストの得点付け方法での未処理の得点は、100 の値がコントラストの 256 (最大限のコントラスト) と等しくなるように正規化されます。エッジペアモデルを指定する場合、未処理の得点は 2 つのエッジのコントラストの平均となります。

位置の得点付け方法

エッジ候補を、領域の中心に対するエッジ候補の位置に基づいて得点付けすることができます。位置は、エッジ候補内の中心とモデルの原点との距離として定義します。対象エッジが領域の中心からの特定の距離であると予測される場合、絶対位置の得点付け方法を定義することができ、未処理の得点はピクセル単位で絶対距離として表されます。エッジペアモデルが使用されており、エッジ候補と、モデルのサイズに相対する領域の中心との間の位置の変動を考慮する必要がある場合、相対的な位置の得点付け方法を定義します。この場合、距離がモデルのサイズと等しかったことを 100 の値が指すように、未処理の得点が正規化されます。

サイズの得点付け方法

エッジペアモデルが使用されている場合、エッジ候補のエッジ間の幅が、エッジモデルのエッジ間の幅とどの程度異なるかに基づいて、エッジ候補を得点付けすることができます。サイズの得点付け方法は絶対的であるように定義することができ、この場合、未処理の得点は絶対的なサイズの差異としてピクセル単位で返されます。モデルのサイズに相対するサイズの差異を識別する必要がある場合、相対的サイズ得点付け方法を定義します。この場合、サイズの差異がモデルのサイズと等しかったことを 100 の値が指すように、未処理の得点が正規化されます。

またがるの得点付け方法

エッジペアモデルが使用されている場合、2 つのエッジが領域の中心のいずれかの側に位置しているかどうかに基づいて、エッジペア候補を得点付けすることができます。このタイプの得点付け方法を使用して、領域の中心に位置すると予測されるエッジのペアによって定義された対象物を見つけることができます。エッジが領域の中心をまたいでいる場合、未処理の得点は 100 として返され、エッジが領域の中心をまたいでいない場合は、0 が返されます。

得点付け関数

それぞれの得点付け方法で、選択した得点付け方法のタイプが未処理の得点を生成します。この未処理の得点が、エッジ候補全体の得点に与える影響は、得点付け関数を定義することによって制御されます。得点付け関数は、未処理の得点をマッピングされた得点にマッピングします。エッジ候補の各得点付け方法のマッピングされた得点が統合され、そのエッジ候補全体の得点となります。

Caliper の入力パラメータ

Syntax:Caliper(画像,フィクスチャ.行,フィクスチャ.列,フィクスチャ.角度,領域.X,領域.Y,領域.高さ,領域.幅,領域.角度,領域.カーブ,エッジモード,検出する数,最小コントラスト,アクセプトしきい値,エッジ幅,エッジ: 第 1,エッジ: 第 2,エッジ: 距離,表示)

画像 画像データ構造体を含んだスプレッドシートセルを参照するように指定します。デフォルトでは、このパラメータは、AcquireImage 画像データ構造体を含むセル A0 を参照しています。また、このパラメータは、ビジョンツールのグラフィックス関数や、座標補正関数により返された、そのほかの画像データ構造体も参照できます。
フィクスチャ フィクスチャ入力、またはビジョンツール関数の画像座標系の出力に関連する対象領域 (ROI) を定義します。フィクスチャに関連する ROI を設定すると、フィクスチャが回転または移動した場合に、フィクスチャに対応して ROI を確実に回転または移動できます。

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

画像座標での行オフセット。
画像座標での列オフセット
角度画像座標系での方位角
領域 これは対象領域 (ROI) とも呼ばれ、解析の対象となる画像の領域を表します。変換および回転可能な矩形の画像領域を作成します。このパラメータを選択して、プロパティシートのツールバーにある [領域の最大化] ボタンを押すと、画像全体が対象になるように領域が自動的に拡張されます。
Xフィクスチャ座標での原点の X オフセット
Yフィクスチャ座標での原点の Y オフセット
高さ領域の X 軸に沿った寸法。
領域の Y 軸に沿った寸法。
角度フィクスチャ座標での角度。
カーブ領域の X 軸と反対側の境界線との間の角度変位。
:  [フィクスチャ] および [領域] パラメータは、画像の範囲内で定義されている必要があります。画像の範囲内で定義されていない場合、この関数は #ERR を返します。
エッジモード

単一エッジまたはエッジペアのいずれを探すかを指定します。

単一エッジ 指定した基準を満たす単一エッジを領域でサーチし、その位置を返します。このモードでは、位置およびコントラストの得点付け方法を使用できます。
エッジペア 指定した基準を満たすエッジペアを領域内でサーチします。このモードでは、位置コントラストサイズ、およびまたがるの得点付け方法を使用できます。
検出する数 返されるエッジまたはエッジペアの最大数を指定します (1 ~ In-Sight ビジョンシステムの画像の幅 - 1、デフォルト = 1)。特定の In-Sight ビジョンシステムが画像を取り込んでいる場合、検出されるエッジの最大数は画像の幅より 1 少ない数になります (つまり、In-Sight 5100 ビジョンシステムの最大数は 639 で、ビジョンシステムの画像解像度 640×480 より 1 少ない数になります)。得点が アクセプトしきい値 パラメータを超えるエッジまたはエッジペアがこの最大数より多い場合は、最も得点の高いエッジまたはエッジペアが選択されます。 
最小コントラスト エッジまたはエッジペアの最小コントラスト (0 ~ 100、デフォルト = 5) を指定します。このコントラストの値は、領域内のグレースケールヒストグラムから 0 ~ 100 のスケールに正規化されます。この関数は、この設定を上回るコントラストの値を持つエッジまたはエッジペアのみを返します。
アクセプトしきい値 エッジ候補の許容できる最低一致得点 (0 ~ 100、デフォルト = 5) を指定します。この関数は、この値を超える一致得点を持つエッジまたはエッジペアのみを返します。一致得点は、指定したすべての得点付け方法の幾何平均です。
エッジ幅 エッジ変化が起きるピクセル距離を指定します (1 ~ 50、デフォルト = 2)。エッジを抽出する前に、Edge Width を使用して画像をフィルタします。
エッジ: 第 1

領域内のスキャン方向に相対的に、ペアの第 1 エッジの極性を指定します。白→黒または黒→白のいずれかを設定すると、第 1 エッジに指定した極性があるエッジペアのみが報告されます。

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

領域内のスキャン方向に相対的に、ペアの第 2 エッジの極性を指定します。白→黒または黒→白のいずれかを設定すると、第 2 エッジに指定した極性があるエッジペアのみが報告されます。

:  このパラメータは、[エッジモード] パラメータが [エッジペア] に設定されている場合にのみ使用されます。

0 = 黒→白

エッジ極性が黒→白になるように指定します。

1 = 白→黒

エッジ極性が白→黒になるように指定します。

2 = 任意 (デフォルト)

エッジ極性が黒→白または白→黒に変化するように指定します。

エッジ: 距離

エッジペアの 2 つのエッジ間のピクセル距離を指定します (In-Sight ビジョンシステムの幅の 1 ~ 3 倍、デフォルト = 10)。このパラメータは、エッジペアモードの場合のみ使用されます。エッジ間の距離が領域の幅より長い場合、この関数は #ERR を返します。領域が回転も湾曲もしていない場合、この値は [領域] → [幅] の値未満にする必要があります。

:  In-Sight ビジョンシステムの画像の幅は、画像を取り込んでいる特定の In-Sight ビジョンシステムの画像の幅になります (つまり、In-Sight 5100 ビジョンシステムの最大幅は 1920 で、ビジョンシステムの画像解像度 640×480 より 3 倍多い値になります)。
表示

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

0 = 非表示 (デフォルト)

Caliper 関数を含んでいるセルがスプレッドシート内のアクティブセルである場合を除き、すべてのグラフィックスが表示されません。

1 = 結果のグラフィックスのみ

直線エッジが常に表示されます。

2 = 入力と結果のグラフィックス

入力画像領域と直線エッジは常に表示されます。

3 = すべて表示: 入力、結果、およびチャート

入力画像領域、直線エッジ、およびエッジのレスポンスチャートが常に表示されます。

Caliper [得点付け方法] タブ

[得点付け方法] タブを使用して、エッジモデルに対してエッジ候補に得点付けするために使用される得点付け関数を選択し、編集します。各エッジ候補について、選択したそれぞれの得点付け方法での未処理の得点を Caliper 関数で計算し、得点付け関数を適用すると、エッジ候補全体の得点が計算されます。全体の得点は、マップされた得点の積の N 番目のルートを取得することによって計算されます。例えば、4 つの得点付け方法が定義されている場合、Caliper 関数では 4 つの得点を乗算し、その結果の 4 番目のルートを取得します (1 つの得点付け関数の結果が 0 の値である場合は、エッジ候補全体の得点も 0 になります)。

:  得点付け方法は少なくとも 1 つ指定する必要があります。指定しないと #ERR が返されます。デフォルトでは、コントラストの得点付け関数が適用されます。

得点付け関数

位置

エッジペアおよび単一エッジに使用可能なこの得点付け方法は、領域の左側または中央を基準とした、エッジまたはエッジペアの相対位置に基づいています。得点付け設定を調整して、領域の左側までの近さに基づいてエッジまたはエッジペアに 0 ~ 100 の範囲の得点を割り当てるように指定します。

[中心領域] チェックボックスがオンの場合 (デフォルトの状態)、外側エッジまたは中央エッジを得点付けの計算の基準に使用し、領域の中心からの相対位置に基づいてエッジまたはエッジペアに得点が付けられます。中央エッジは領域の中心に近いエッジ、外側エッジは中心から離れているエッジです。

[中心領域] チェックボックスがオフの場合、得点付けは、右または左のエッジを得点計算の基準に使用し、領域の左側からの相対位置に基づいて行われます。

[エッジペア距離に正規化する] チェックボックス (エッジペアにのみ使用され、デフォルトでオンになっています) は、エッジペアのエッジ間の距離を [エッジ間の距離] パラメータ値で除算し、その後得点を計算します。これによって、得点計算に実際の値ではなくパーセンテージ値を使用することで、領域内のサイズの変化に適応することができます。

コントラスト エッジペアおよび単一エッジに使用可能なこの得点付け方法は、エッジ候補のコントラスト、つまり、エッジを構成する隣接ピクセル間のコントラストの変化に基づいています。エッジペアでは、2 つのエッジの平均コントラストが使用されます。得点付け設定を調整して、エッジまたはエッジペアに 0 ~ 100 の範囲の得点を割り当てるように指定します。得点計算の基準は、高コントラストのエッジまたは低コントラストのエッジのいずれかとすることができます。
サイズ

エッジペアにのみ使用できるこの得点付け方法は、エッジペア間の距離 (サイズ) に基づいています。得点付け設定を調整して、エッジペアに、そのサイズに基づいて 0 ~ 100 の範囲の得点を割り当てるように指定します。

[エッジペア距離を正規化する] チェックボックスは、得点の計算に実際の距離を使用します。得点計算の基準として、[エッジ間の距離] パラメータにより近い距離またはより離れている距離 (ピクセル単位) を使用します。それ以外の場合、得点計算の基準は、予想された [エッジ間の距離] パラメータ値より長いか、または短いエッジ間の距離になります。

[左右対称モードを使用する] チェックボックスで (デフォルトではオフ)、領域を拡大/縮小することができます。この設定を使用すると、[エッジ間の距離] パラメータ値より短いサイズと長いサイズの両方を指定することができます。この設定によって一方向への変化が受け入れられ、その他は無視されます。例えば、短い距離を許容して、より長い距離により低い得点を付けるように設定することができます。

またがる エッジペアにのみ使用できるこの得点付け方法は、2 つのエッジが、領域の中心の両側に位置しているかどうかに基づいています。このタイプの得点付け方法を使用して、画像領域の中心に位置すると予測されるエッジのペアによって定義された対象物を見つけることができます。エッジペアのエッジが画像領域の中心にまたがらない場合の得点は 0 で、またがる場合は 100 点になります。

得点付け関数の編集

得点付け関数は、低いおよび高い入力値と出力値を指定することで定義します。得点付け関数には、片側と両側の 2 つのタイプの得点付け関数があります。

片側得点付け関数

この得点付け関数は、xC、x1、x0、y1、および y0 の値を定義することによって設定します。y0 と y1 に定義される値は、0 ~ 100 である必要があります。xC、x1、および x0 に指定される値は、負の値を含むことができ (xC、x1、および x0 ポイントの 1 つ以上がゼロ未満の未処理の得点となることが予測される場合に、負の値を指定します)、選択された得点付け方法のタイプによってその範囲が決まります。定義された得点付け関数は、次のように入力得点を出力得点にマッピングします。

  • x0 を超える入力値は、出力得点 y0 にマッピングされます。
  • xC を下回る入力値は、出力得点 0 にマッピングされます。
  • xc ~ x1 の入力値は、得点 y1 にマッピングされます。
  • x1 ~ x0 の入力値は、y1 ~ y0 の得点の範囲に直線的にマッピングされます。

上記に示される得点付け関数は、コントラストの得点付け方法のように、高い入力得点から高い出力得点が得られる場合に適しています。ここでは、エッジのコントラストが大きいほど、得られる得点が高くなります。

両側得点付け関数

エッジペアを使用している場合に、エッジモデルより小さいエッジ候補に、エッジモデルより大きいエッジ候補とは異なる得点を付けるように、両側得点付け関数を定義することができます。上記の図は、エッジモデルより小さいエッジ候補よりも、エッジモデルより大きいエッジ候補の許容度が高くなっている、両側得点付け関数の例を示しています。この例では、エッジ候補がエッジモデルとまったく同じサイズである場合、入力得点は 0.0 となり、エッジ候補がエッジモデルより小さい場合は、入力得点は 0 未満になり、エッジ候補がエッジモデルより大きい場合は、入力得点は 0 より大きくなります。

両側得点付け関数が指定されている場合、未処理の得点が正規化され、エッジモデルのサイズと同じ分量だけエッジモデルより小さいエッジ候補が、入力得点 -100 を受け取るようにし、エッジモデルのサイズと同じ分量だけエッジモデルより大きいエッジ候補は、入力得点 100 を受け取るようにします。

Caliper の出力

戻り値 ペアエッジを含むエッジデータ構造体。入力パラメータが無効であれば #ERR を返します。
結果

Caliper 関数を初めてセルに挿入すると、スプレッドシート内に結果テーブルが自動的に作成されます。

エッジモードに [単一エッジ] が選択されている場合、結果テーブルには、各エッジの、インデックス、行 0、列 0、行 1、列 1、得点、コントラスト、および位置が含まれます。インデックスは 0 から始まり、表示される行数は [検出する数] の設定値と等しくなります。

エッジモードに [エッジペア] が選択されている場合、結果テーブルには、各エッジのインデックス、行 0、列 0、行 1、および列 1 と、そのペアの最初のエッジの得点、コントラスト、位置、および距離が含まれます。インデックスは 0 から始まり、表示される行数は [検出する数] の設定値の 2 倍になります。

Caliper データアクセス関数

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

行 0 GetRow(エッジ, エッジインデックス, 0) 指定されたエッジの 1 番目の始点の行座標
列 0 GetCol(エッジ, エッジインデックス, 0) 指定されたエッジの 1 番目の始点の列座標
行 1 GetRow(エッジ, エッジインデックス, 1) 指定されたエッジの 2 番目の終点の行座標
列 1 GetCol(エッジ, エッジインデックス, 1) 指定されたエッジの 2 番目の終点の列座標
得点 GetScore(エッジ, エッジインデックス) エッジまたはエッジペアの得点。指定したすべての得点付け関数の幾何平均です。
コントラスト GetContrast(エッジ, エッジインデックス) エッジの前景と背景の間の平均コントラスト (グレースケール階調で、0 ~ 255)。コントラストは黒→白の場合は正の値、白→黒の場合は負の値。
位置 GetPosition(エッジ, エッジインデックス) エッジまたはエッジペアの中心の、画像領域の左側からの相対的な X 位置。
距離 GetEdgeDistance(エッジ, エッジインデックス) エッジモードに [エッジペア] が選択されている場合の、エッジペア間の距離。エッジモードに [単一エッジ] が選択されている場合は、#ERR が返ります。