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

:  
  • [検査領域] パラメータは、画像の範囲内で定義されている必要があります。画像の範囲内で定義されていない場合、この関数は #ERR を返します。
  • [検査領域] は、参照されている TrainFlawModel 関数で指定されているものと同じ入力フィクスチャへ自動的にフィクスチャされます。フィクスチャ参照が無効である場合、フィクスチャはデフォルトの 0,0,0 になります。
X フィクスチャ座標での原点の X オフセット。
Y フィクスチャ座標での原点の Y オフセット。
高さ 領域の X 軸に沿った寸法。
領域の Y 軸に沿った寸法。
角度 フィクスチャ座標での角度。
カーブ 領域の X 軸と反対側の境界線との間の角度変位。
外部検査領域/パス

オペレータ I/F 関数が入力されているスプレッドシートのセルへの参照を指定します。このパラメータを使用すると、TrainFlawModel ツールは、[領域] と [フィクスチャ] の設定を無視し、参照先領域に指定された画像領域を検査します。

:  このパラメータが外部領域またはパスの参照として設定されている場合に、この関数の内部領域を使用するには、セル参照に値 0 を入力し、このパラメータを手動で 0 に設定する必要があります。それ以外の場合、この関数は引き続き外部領域またはパスを参照します。
画像の解像度

この関数で使用される画像処理解像度を指定します。それによって、この関数では検査画像をダウンサンプリングすることができます。このパラメータによって、傷検出に使用される解像度、および出力画像と画像上のマーキングの解像度も指定されます。

ヒント :  [中程度] または [粗粒度] の設定を使用すると、関数の実行時間を短縮することができます。また、この設定では画像のノイズやごく小さなばらつきに対する関数の感度を下げることもできます。
:  FlexFlawModel 関数によって返された フレックス傷モデルデータ構造体を [モデル参照] パラメータが参照している場合、このパラメータは無効化され、代わりに FlexFlawModel 関数の [画像の解像度] パラメータの設定が使用されます。
1 = 細粒度 (デフォルト) フル解像度の画像が使用されるように指定します。
2 = 中程度 ハーフ解像度の画像が使用されるように指定します。
3 = 粗粒度 1/4 の解像度の画像が使用されるように指定します。
マスク画像制御

マスク画像の処理方法を制御するための Button 関数または Event 関数への外部参照を指定します。この参照によって、実行時に特定の欠陥を無視するようにマスクを動的に調整することができます。

残余画像の追加 現在の残余画像をマスク画像に追加するための Button 関数または Event 関数への参照を指定します。
Default Mask モデル画像からマスクデータを再生成することによって、マスク画像を最初に登録したときの状態に設定する Button 関数または Event 関数への参照を指定します。
欠陥パラメータ

面積欠陥またはエッジ欠陥、もしくはこの両方の判別で使用する制限値を指定します。面積欠陥は通常、汚れや変色などの欠陥で、ピクセルのグレースケール値の偏差で判断されます。エッジ欠陥は通常、傷や裂け目、余分な特徴などの欠陥で、エッジ特徴の有無に従って判断されます。

:  DetectFlaw 関数を適用したときに、欠陥パラメータの許容範囲が狭く (例えば、15 ピクセル以下)、画像のノイズに見られる変化が小さい場合、この変化については [欠陥を無視] および [残余画像の追加] オプションで考慮されないことがあります。このような状況では、[欠陥を無視] または [残余画像の追加] オプションを適用する前に、欠陥パラメータで使用される許容範囲の拡張を試みてください。
最小コントラスト エッジ欠陥または面積欠陥とみなされるコントラストの最小変化値 (1 ~ 255、デフォルト = 25) を指定します。
正規化

領域から面積欠陥を検査する前に残余画像の明度レベルを正規化するかどうかを指定します。

0 = OFF (デフォルト) 面積欠陥を検査する前にこの関数で明度レベルが正規化されないように指定します。
1 = ON 面積欠陥を検査する前にこの関数で明度レベルが正規化されるように指定します。
面積欠陥タイプ

識別する面積欠陥のタイプを指定します。このオプションが有効である場合、残余画像から [最小コントラスト] および [最小面積欠陥サイズ] で指定された値を超えるピクセルのブロブがこの関数で識別されます。

0 = なし 面積欠陥の検出を無効にします。
1 = 両方 (デフォルト) 取り込まれた画像のピクセルのうち、登録モデルのピクセルよりも明るいもの、または暗いものが原因で発生している欠陥がこの関数で識別されます。
2 = 白い欠陥 取り込まれた画像のピクセルのうち、登録モデルのピクセルよりも明るいものが原因で発生している欠陥のみがこの関数で識別されます。
3 = 黒い欠陥 取り込まれた画像のピクセルのうち、登録モデルのピクセルよりも暗いものが原因で発生している欠陥のみがこの関数で識別されます。
最小面積欠陥サイズ 最小面積欠陥サイズをピクセル単位で指定します (2 ~ 400000、デフォルト = 30)。この値より小さい領域は欠陥とはみなされません。
エッジ欠陥タイプ

識別するエッジ欠陥のタイプを指定します。

0 = なし この関数でエッジ欠陥は識別されません。
1 = 両方 この関数で [欠落エッジ] と [余分エッジ] の両方の有無を検証します。
2 = 欠落エッジ (デフォルト) モデルにあらかじめ登録されているエッジが、取り込まれた画像にすべて存在することをこの関数で検証します。[最小エッジ欠陥サイズ] で指定された値を超えるエッジの欠落は、欠陥として分類されます。
3 = 余分エッジ 登録モデルに存在しないエッジが、取り込まれた画像にも存在しないことをこの関数で検証します。[最小エッジ欠陥サイズ] で指定された値を超える余分なエッジは、欠陥として分類されます。
最小エッジ欠陥サイズ エッジの欠落、または余分なエッジ、もしくはこの両方として分類するために、エッジの長さの最小値を指定します (2 ~ 1000、デフォルト = 5)。この設定より短いエッジが検出されても欠陥として分類されません。
エッジマーキング描画

検出されたエッジマークをこの関数で画像上に緑色で描画するかどうかを指定します。出力マーキングは、どのピクセルが、登録されているモデル画像内のピクセルと一致するかを示します。取り込まれた画像のピクセルのうち、登録されているモデル画像内の登録エッジ線分と一致するものは緑色で描画されます。許容値を外れ、エッジ欠陥または面積欠陥に分類されるピクセルは赤色で描画され、その周りは赤色の境界ボックスで囲まれます。

0 = OFF (デフォルト) この関数で画像上にエッジマークを描画しないように指定します。
1 = ON この関数で画像上にエッジマークを描画するように指定します。
傷マーキング描画

検出された欠陥マークをこの関数で画像上に赤色で描画するかどうかを指定します。出力マーキングは、どのピクセルが、登録されているモデル画像内のピクセルと一致するかを示します。取り込まれた画像のピクセルのうち、登録されているモデル画像内の登録エッジ線分と一致するものは緑色で描画されます。許容値を外れ、エッジ欠陥または面積欠陥に分類されるピクセルは赤色で描画され、その周りは赤色の境界ボックスで囲まれます。

0 = OFF (デフォルト) この関数で画像上に欠陥マークを赤色で描画しないように指定します。
1 = ON この関数で画像上に欠陥マークを赤色で描画するように指定します。
表示画像

この関数によって生成される出力のタイプを指定します。

0 = 実行時画像 (デフォルト) この関数では、取り込んだ画像を出力画像として生成します。
1 = エッジ画像 この関数では、取り込んだ画像からエッジモデルを出力画像として生成します。このオプションは、[エッジ欠陥タイプ] パラメータが [欠落エッジ]、[余分エッジ]、または [両方] に設定されている場合、もしくはこの関数が FlexFlawModel 関数によって返された フレックス傷モデルデータ構造体を [モデル参照] パラメータで参照している場合にのみ使用できます。
2 = モデル画像 この関数では、フィクスチャおよびスケール (必要に応じて、Flex アルゴリズム) に基づく変換の後、登録されるモデル画像を生成します。
3 = マスク画像 この関数では、フィクスチャおよびスケール (必要に応じて、Flex アルゴリズム) に基づく変換の後、現在のマスク画像を生成します。
4 = 残余画像

この関数では、欠陥検出分析に基づいて、残余画像を生成します。

:  残余画像を出力画像として使用している場合は [面積欠陥] を有効にしておく必要があります。有効にしていないと、エッジ欠陥は描画されますが、出力画像は生成されず、エラーメッセージが表示されます。
表示

画像上の DetectFlaw グラフィックスオーバレイの表示モードを指定します。出力マーキングは、どのピクセルが、登録されているモデル画像内のピクセルと一致するかを示します。

:  DetectFlaw プロパティシートが開いているときに、[エッジマーキング描画] および [傷マーキング描画] パラメータが有効にされていると、画像上にはすべてのマーキングが描画されます。
0 = 非表示 (デフォルト) DetectFlaw 関数を含んでいるセルがスプレッドシート内でハイライトされている場合を除き、すべてのグラフィックスが表示されません。
1 = 結果のグラフィックスのみ 有効にされているマーキング、欠陥、および入力領域は常に表示されます。
2 = すべて表示: 入力と結果のグラフィックス

入力領域、検出された欠陥、および検出されたエッジは常に表示されます。

:  検出された欠陥やエッジを表示するには、[エッジマーキング描画] および [傷マーキング描画] パラメータを有効にしておく必要があります。

[マスク編集] タブ

マスク画像の編集コントロール

[マスク画像の編集] コントロールは、参照している データ構造体に保存されたマスク画像を操作する手段として使用します。[マスクの編集] タブが選択されているとき、この画像は表示されますが、[エッジ欠陥タイプ] パラメータが有効である場合はマスクされたエッジがマーキングされ、[面積欠陥タイプ] パラメータが有効である場合はマスク画像が表示されます。

:  
  • マスク画像を調整すると、このマスク画像を含む同一の TrainFlawModel 関数を参照しているそのほかの DetectFlaw 関数もすべて調整の影響を受けます。
  • DetectFlaw 関数を適用したときに、欠陥パラメータの許容範囲が狭く (例えば、15 ピクセル以下)、画像のノイズに見られる変化が小さい場合、この変化については [欠陥を無視] および [残余画像の追加] オプションで考慮されないことがあります。このような状況では、[欠陥を無視] または [残余画像の追加] オプションを適用する前に、欠陥パラメータで使用される許容範囲の拡張を試みてください。
画像の追加 残余画像と残余エッジをマスクに追加するように指定します。この設定は、画像で識別された欠陥を、欠陥ではないものに変更する効果があります。
マスク拡大

マスク内のピクセル領域を拡張することを指定します。

:  このオプションを使用するには、[面積欠陥タイプ] を有効にする必要があります。
マスク縮小

マスク内のピクセル領域を縮小することを指定します。

:  このオプションを使用するには、[面積欠陥タイプ] を有効にする必要があります。
マスク削除 すべてのマスクデータを削除することを指定します。
デフォルトマスク モデル画像からマスクデータを再生成することによって、マスク画像を最初に登録したときの状態にリセットすることを指定します。

[欠陥リスト] タブ

[欠陥リスト] テーブル

[欠陥リスト] は検出された欠陥の一覧表で、内容をソートすることができます。このリストから欠陥を選択すると、画像内でその欠陥がハイライトされます。また、[欠陥を無視] ボタンも有効になります。一度に複数の欠陥を選択するには、Ctrl または Shift キーを押しながらリストから欠陥を選択します。

:  DetectFlaw 関数を適用したときに、欠陥パラメータの許容範囲が狭く (例えば、15 ピクセル以下)、画像のノイズに見られる変化が小さい場合、この変化については [欠陥を無視] および [残余画像の追加] オプションで考慮されないことがあります。このような状況では、[欠陥を無視] または [残余画像の追加] オプションを適用する前に、欠陥パラメータで使用される許容範囲の拡張を試みてください。
数値 検出された欠陥の順序を 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) 欠陥を囲む境界ボックスの幅を返します。