SurfaceFX

SurfaceFX 関数で特徴の強調を実行します。照明を使用して、オブジェクトの 3D 特徴を強調する高コントラストの画像を作成し、その他のビジョンツールによって特徴の抽出と検査を行います。この関数は、浮き彫り、浮き出し、スタンプ、エッチング、凹凸、そして欠陥 (欠け、くぼみ、しわ、穴、裂け目など) が生じている表面の特徴を分離することによって、ノイズまたはクラッタ (あるいはその両方) を表面の背景から取り除きます。コントラスト画像が生成されると、その他のビジョンツール (OCRMaxTrainPatMaxRedLineFindPatMaxRedLineDetectBlobsSurfaceFlaw、および InspectEdge) を検査と欠陥検出に使用することができます。

SurfaceFX のアルゴリズムでは、低い角度 (45° 未満) の 4 台の個別の光源から順番に 4 点の画像を取り込む必要があります。光源を円の円周に沿って均等に配置し、オブジェクトを照明の中心に配置する必要があります。取り込みフェーズでは、オブジェクトは静止したままとする必要があり、照明および画像取り込みシーケンスは、オブジェクトの右のクワドラントから開始して時計回りに下のクワドラント、次に左のクワドラント、最後に上のクワドラントとする必要があります。

このアルゴリズムでは次に表面に凹凸がある画像が生成され、隆起した特徴は白で、くぼんだ特徴は黒で表示されます。

:  この関数は、In-Sight ファームウェア 5.4.0 以降を搭載している In-Sight ビジョンシステムでのみ使用可能です。モデル一覧およびサポートされているファームウェアバージョンについては、ファームウェアのバージョンをご参照ください。

SurfaceFX 関数の入力

Syntax:SurfaceFX(,,,,シグマ,輝度,コントラスト,表示)

右、下、左、上

これらの引数は、オブジェクトの右、下、左、または上からの低い角度 (45° 未満) の照明がある、有効な画像または LatchImage データ構造体を含んでいるスプレッドシートのセルを参照している必要があります。

  • = 右から (X の値の小さい方へ) の照明がある、入力画像または LatchImage データ構造体 0
  • = 下から (Y の値の小さい方へ) の照明がある、入力画像または LatchImage データ構造体 1
  • = 左から (X の値の大きい方へ) の照明がある、入力画像または LatchImage データ構造体 2
  • = 上から (Y の値の大きい方へ) の照明がある、入力 画像または LatchImage データ構造体 3
:  
  • 入力画像のデータ構造体が、In-Sight カメラによって取り込まれた画像であるか、別のビジョンツールによって出力された 画像データ構造体であるかにかかわらず、SurfaceFX 関数は入力画像のデータ構造体全体で動作します。したがって、入力 画像データ構造体はすべて同じサイズである必要があります。そうでない場合、このツールは #ERR を報告します。たとえば、取り込まれた画像がそれぞれ Filter 関数 (画像データ構造体を出力します) によって処理された場合、Surface FX 関数に渡される前に、SurfaceFX 関数は Filter 関数の Region パラメータによって定義された取り込み画像の領域を使用し、Filter 関数の Region パラメータをすべて同じ寸法と角度に設定する必要があります。
  • 入力 画像データ構造体を回転させることはできますが、それぞれの入力の回転は同じである必要があります。そうでない場合、この関数は #ERR を報告します。
  • 入力 画像データ構造体は同じロケーションまたはオフセット (あるいはその両方) であることが必要ですが、横方向へのわずかなずれを示す場合があります。しかし、横方向への過剰なずれがあると、表面に凹凸のある画像が低品質で出力される結果につながります。
  • 4 つの入力 画像データ構造体はすべて存在する必要があり、ない場合は関数が #ERR を報告します。
シグマ スムーズネス値 (0 ~ 10。デフォルト = 1) を指定して、出力画像内の高周波ノイズを取り除くことができます。
輝度 出力画像の背景の平均明度 (0 ~ 255。デフォルト = 128) を指定します。
コントラスト 出力画像の表面の特徴と背景ピクセルの明度の差異 (0 ~ 100。デフォルト = 10) を指定します。
表示

画像の上に表示されるグラフィックスオーバレイを指定します。

0 = 非表示 (デフォルト) SurfaceFX 関数を含んでいるセルがスプレッドシート内でハイライトされている場合を除き、使用可能なグラフィックス項目は表示されません。
1 = 結果のグラフィックスのみ 処理された画像が常に表示されます。

SurfaceFX 関数の出力

戻り値 表面に凹凸のある処理済みの画像を含んでいる画像データ構造体を返します。入力パラメータのいずれかが無効であれば #ERR を返します。

SurfaceFX の例

この例では、SurfaceFX 関数を使用して表面の特徴が強調された出力画像を生成し、SurfaceFlaw 関数に渡してさらに検査することを目的としています。SurfaceFX は外部光源を必要とし、光源を制御して照明と画像取り込みシーケンスを結合します。各画像では、画像平面の単一のクワドラント (右、下、左、および上) から低い角度 (45° 未満) の照明が照射される必要があります。各クワドラントに照明が当てられるに従って、画像が取り込まれます。4 点の画像がすべて取り込まれたら、画像を SurfaceFX 関数に渡すことができます。これらの画像は、セルを無効にするか、ラッチされた画像を使用して保存することができます。

この例では、イベント パラメータを対応する Button 関数 (ラッチ1、ラッチ2、ラッチ3、ラッチ4) に設定している 4 つの LatchImage 関数を使用し、それらの 領域 パラメータは共通の EditRegion 関数を共有するので、SurfaceFX 関数に渡された各画像の形状と方向は同じになります。LatchImage 関数によって保存された画像は、異なる 4 方向 (右、下、左、および上) からの照明を使用して取り込まれ、SurfaceFX 関数 (A11) に渡されます。SurfaceFlaw 関数は、SurfaceFX 関数によって出力された 画像データ構造体を参照する 画像 パラメータを使用して、オブジェクトの検査を実行します。

  1. 最初の画像では、側からの照明がアクティブ化されて画像が取り込まれています。次に [ラッチ1] ボタン (セル A5) を押すと、取り込まれた画像は B5 の LatchImage セルに保存されます。

  2. 2 番目の画像では、側からの照明がアクティブ化されて画像が取り込まれています。次に [ラッチ2] ボタン (セル A6) を押すと、取り込まれた画像は B6 の LatchImage セルに保存されます。

  3. 3 番目の画像では、側からの照明がアクティブ化されて画像が取り込まれています。次に [ラッチ3] ボタン (セル A7) を押すと、取り込まれた画像は B7 の LatchImage セルに保存されます。

  4. 4 番目の画像では、側からの照明がアクティブ化されて画像が取り込まれています。次に [ラッチ4] ボタン (セル A8) を押すと、取り込まれた画像は B8 の LatchImage セルに保存されます。

  5. この後 SurfaceFX 関数は、入力画像としての 4 つの LatchImage データ構造体に基づいて実行され、表面のへこみをハイライトする特徴が強調された出力画像を生成します (下記)。

  6. 最後に、SurfaceFlaw 関数は SurfaceFX の出力画像を入力画像として使用し、ローカルの明度とサイズにばらつきのある領域を検出し、画像内の傷を識別します (下記)。