DetectFlaw
DetectFlaw 関数を使用し、TrainFlawModel 関数によって返された有効な TrainFlawModel データ構造体、または FlexFlawModel 関数によって返された フレックス傷モデルデータ構造体のいずれかに含まれる登録データと、そのときに取り込まれている画像を比較して、欠陥を識別します。DetectFlaw 関数は、面積欠陥、エッジの欠落、および余分なエッジの 3 タイプの傷を識別することができます。
領域の検査では、対象物や部品の表面上の傷や汚れなどの欠陥の有無が検証されます。エッジの検査では、余分なエッジ、またはエッジの欠落がないかどうか、また対象物や部品の境界が一定であるかどうかが確認されます。領域とエッジの欠陥検査を組み合わせることによって、最高レベルの検査を行うことができます。
- 1 つまたは複数の DetectFlaw 関数で 1 つの TrainFlawModel 関数を参照できます。この結果、個々の DetectFlaw 関数は、必要に応じて設定を変え、対象物または部品のさまざまな部分を検査することができます。
- [表示画像] パラメータが [エッジ画像]、[モデル画像]、[マスク画像] または [残余画像] のいずれかに設定されている場合、DetectFlaw の出力画像に対して、さらに画像処理を行うこともできます。例えば、ExtractBlobs 関数の [画像] パラメータを設定して、DetectFlaw 関数の残余画像を入力として使用することによって、追加でブロブ画像解析を行うことが可能です。
- この関数の実行時間を短縮するには、関数の [画像の解像度] パラメータを [中程度] または [粗粒度] に設定します。この結果、画像がダウンサンプリングされ、画像のノイズやごく小さなばらつきに対する関数の感度が低くなります。
DetectFlaw入力パラメータ
Syntax:DetectFlaw(傷モデル参照,検査領域.X,検査領域.Y,検査領域.高さ,検査領域.幅,検査領域.角度,検査領域.カーブ,外部検査領域/パス,画像の解像度,マスク画像制御.残余画像の追加,マスク画像制御.Default Mask,欠陥パラメータ.最小コントラスト,欠陥パラメータ.正規化,欠陥パラメータ.面積欠陥タイプ,欠陥パラメータ.最小面積欠陥サイズ,欠陥パラメータ.エッジ欠陥タイプ,欠陥パラメータ.最小エッジ欠陥サイズ,エッジマーキング描画,傷マーキング描画,表示画像,表示)
[全般] タブ
傷モデル参照 | TrainFlawModel 関数によって返された有効な データ構造体、または FlexFlawModel 関数によって返された フレックス傷モデルデータ構造体のいずれかを含んでいるスプレッドシートセルへの参照を指定します。 | ||||||||||||||||||||||||||||||||
検査領域 |
これは対象領域 (ROI) とも呼ばれ、画像解析の対象となる画像の領域を指定します。変形および回転可能な矩形の画像領域を形成します。このパラメータを選択して、プロパティシートのツールバーにある [領域の最大化] ボタンを押すと、画像全体が対象になるように領域が自動的に拡張されます。 注 :
|
||||||||||||||||||||||||||||||||
外部検査領域/パス |
オペレータ I/F 関数が入力されているスプレッドシートのセルへの参照を指定します。このパラメータを使用すると、TrainFlawModel ツールは、[領域] と [フィクスチャ] の設定を無視し、参照先領域に指定された画像領域を検査します。 注 : このパラメータが外部領域またはパスの参照として設定されている場合に、この関数の内部領域を使用するには、セル参照に値 0 を入力し、このパラメータを手動で 0 に設定する必要があります。それ以外の場合、この関数は引き続き外部領域またはパスを参照します。
|
||||||||||||||||||||||||||||||||
画像の解像度 |
この関数で使用される画像処理解像度を指定します。それによって、この関数では検査画像をダウンサンプリングすることができます。このパラメータによって、傷検出に使用される解像度、および出力画像と画像上のマーキングの解像度も指定されます。 ヒント : [中程度] または [粗粒度] の設定を使用すると、関数の実行時間を短縮することができます。また、この設定では画像のノイズやごく小さなばらつきに対する関数の感度を下げることもできます。
注 : FlexFlawModel 関数によって返された フレックス傷モデルデータ構造体を [モデル参照] パラメータが参照している場合、このパラメータは無効化され、代わりに FlexFlawModel 関数の [画像の解像度] パラメータの設定が使用されます。
|
||||||||||||||||||||||||||||||||
マスク画像制御 |
マスク画像の処理方法を制御するための Button 関数または Event 関数への外部参照を指定します。この参照によって、実行時に特定の欠陥を無視するようにマスクを動的に調整することができます。
|
||||||||||||||||||||||||||||||||
欠陥パラメータ |
面積欠陥またはエッジ欠陥、もしくはこの両方の判別で使用する制限値を指定します。面積欠陥は通常、汚れや変色などの欠陥で、ピクセルのグレースケール値の偏差で判断されます。エッジ欠陥は通常、傷や裂け目、余分な特徴などの欠陥で、エッジ特徴の有無に従って判断されます。 注 : DetectFlaw 関数を適用したときに、欠陥パラメータの許容範囲が狭く (例えば、15 ピクセル以下)、画像のノイズに見られる変化が小さい場合、この変化については [欠陥を無視] および [残余画像の追加] オプションで考慮されないことがあります。このような状況では、[欠陥を無視] または [残余画像の追加] オプションを適用する前に、欠陥パラメータで使用される許容範囲の拡張を試みてください。
|
||||||||||||||||||||||||||||||||
エッジマーキング描画 |
検出されたエッジマークをこの関数で画像上に緑色で描画するかどうかを指定します。出力マーキングは、どのピクセルが、登録されているモデル画像内のピクセルと一致するかを示します。取り込まれた画像のピクセルのうち、登録されているモデル画像内の登録エッジ線分と一致するものは緑色で描画されます。許容値を外れ、エッジ欠陥または面積欠陥に分類されるピクセルは赤色で描画され、その周りは赤色の境界ボックスで囲まれます。
|
||||||||||||||||||||||||||||||||
傷マーキング描画 |
検出された欠陥マークをこの関数で画像上に赤色で描画するかどうかを指定します。出力マーキングは、どのピクセルが、登録されているモデル画像内のピクセルと一致するかを示します。取り込まれた画像のピクセルのうち、登録されているモデル画像内の登録エッジ線分と一致するものは緑色で描画されます。許容値を外れ、エッジ欠陥または面積欠陥に分類されるピクセルは赤色で描画され、その周りは赤色の境界ボックスで囲まれます。
|
||||||||||||||||||||||||||||||||
表示画像 |
この関数によって生成される出力のタイプを指定します。
|
||||||||||||||||||||||||||||||||
表示 |
画像上の DetectFlaw グラフィックスオーバレイの表示モードを指定します。出力マーキングは、どのピクセルが、登録されているモデル画像内のピクセルと一致するかを示します。
|
[マスク編集] タブ
マスク画像の編集コントロール
[マスク画像の編集] コントロールは、参照している データ構造体に保存されたマスク画像を操作する手段として使用します。[マスクの編集] タブが選択されているとき、この画像は表示されますが、[エッジ欠陥タイプ] パラメータが有効である場合はマスクされたエッジがマーキングされ、[面積欠陥タイプ] パラメータが有効である場合はマスク画像が表示されます。
- マスク画像を調整すると、このマスク画像を含む同一の TrainFlawModel 関数を参照しているそのほかの DetectFlaw 関数もすべて調整の影響を受けます。
- DetectFlaw 関数を適用したときに、欠陥パラメータの許容範囲が狭く (例えば、15 ピクセル以下)、画像のノイズに見られる変化が小さい場合、この変化については [欠陥を無視] および [残余画像の追加] オプションで考慮されないことがあります。このような状況では、[欠陥を無視] または [残余画像の追加] オプションを適用する前に、欠陥パラメータで使用される許容範囲の拡張を試みてください。
画像の追加 | 残余画像と残余エッジをマスクに追加するように指定します。この設定は、画像で識別された欠陥を、欠陥ではないものに変更する効果があります。 |
マスク拡大 |
マスク内のピクセル領域を拡張することを指定します。 注 : このオプションを使用するには、[面積欠陥タイプ] を有効にする必要があります。
|
マスク縮小 |
マスク内のピクセル領域を縮小することを指定します。 注 : このオプションを使用するには、[面積欠陥タイプ] を有効にする必要があります。
|
マスク削除 | すべてのマスクデータを削除することを指定します。 |
デフォルトマスク | モデル画像からマスクデータを再生成することによって、マスク画像を最初に登録したときの状態にリセットすることを指定します。 |
[欠陥リスト] タブ
[欠陥リスト] テーブル
[欠陥リスト] は検出された欠陥の一覧表で、内容をソートすることができます。このリストから欠陥を選択すると、画像内でその欠陥がハイライトされます。また、[欠陥を無視] ボタンも有効になります。一度に複数の欠陥を選択するには、Ctrl または Shift キーを押しながらリストから欠陥を選択します。
数値 | 検出された欠陥の順序を 1 から N までの数字で指定します。 |
種類 | 傷のタイプ (余分なエッジ、エッジの欠落、または面積) を指定します。 |
サイズ | 欠陥のサイズをピクセル単位で指定します。 |
コントラスト | 欠陥のコントラストを指定します。 |
行 | 欠陥を囲む境界ボックスの行座標を指定します。 |
列 | 欠陥を囲む境界ボックスの列座標を指定します。 |
高さ | 欠陥を囲む境界ボックスの高さを指定します。 |
幅 | 欠陥を囲む境界ボックスの幅を指定します。 |
[欠陥を無視] ボタン | 選択された欠陥をマスク画像に追加し、今後欠陥として報告されずにリストから削除することを指定します。このボタンを有効にするには、欠陥を選択する必要があります。 |
DetectFlawの出力
戻り値 |
検出された欠陥を含む データ構造体。入力パラメータが無効であれば #ERR を返します。 注 : そのほかのビジョンツールについては、傷検出データ構造体を画像入力として使用することができます。
|
結果 | DetectFlaw 関数を初めてセルに挿入すると、スプレッドシート内に結果テーブルが作成されます。 |
DetectFlawデータアクセス関数
DetectFlaw データ構造体結果テーブルを作成するために、次のデータアクセス関数がスプレッドシートに自動挿入されます。
スプレッドシート名 | 関数名 | 説明 |
---|---|---|
総数 | GetTotalFlawCount(DetectFlaw, Type) | 欠陥のタイプに関係なく、検出された欠陥の総数を返します。 |
傷総面積 | GetTotalFlawSize(DetectFlaw, Type) | 欠陥として分類されたピクセルの総数を返します。 |
カウント | ||
面積 | GetTotalFlawCount(DetectFlaw, Type) | 検出された面積欠陥の総数を返します。 |
欠落エッジ | GetTotalFlawCount(DetectFlaw, Type) | 検出されたエッジの欠落の総数を返します。 |
余分エッジ | GetTotalFlawCount(DetectFlaw, Type) | 検出された余分なエッジの総数を返します。 |
傷サイズ | ||
面積 | GetTotalFlawSize(DetectFlaw, Type) | 面積欠陥として分類されたピクセルの総数を返します。 |
欠落エッジ | GetTotalFlawSize(DetectFlaw, Type) | エッジの欠落として分類されたピクセルの総数を返します。 |
余分エッジ | GetTotalFlawSize(DetectFlaw, Type) | 余分なエッジピクセルとして分類されたピクセルの総数を返します。 |
傷タイプ 注 : 欠陥のタイプ (面積、エッジの欠落、および余分なエッジ) それぞれについて、検出された最初の 5 個の欠陥が表示されます。
|
||
サイズ | GetFlawSize(DetectFlaw, Type, Index) | 欠陥のサイズをピクセル単位で返します。 |
コントラスト | GetFlawContrast(DetectFlaw, Type, Index) | 欠陥のコントラストを返します。 |
行 | GetFlawRow(DetectFlaw, Type, Index) | 傷を囲む境界ボックスの行座標を返します。 |
列 | GetFlawCol(DetectFlaw, Type, Index) | 欠陥を囲む境界ボックスの列座標を返します。 |
高さ | GetFlawHigh(DetectFlaw, Type, Index) | 欠陥を囲む境界ボックスの高さを返します。 |
幅 | GetFlawWide(DetectFlaw, Type, Index) | 欠陥を囲む境界ボックスの幅を返します。 |