SurfaceFlaw
SurfaceFlaw 関数を使用して、検査対象の対象物や部品のスクラッチ、刃こぼれ、裂け目などの欠陥を示す、ローカルな明度のばらつきを検出します。
概要
SurfaceFlaw 関数は、生産プロセスの欠陥である、ローカルな明度のばらつきとカラーのばらつきのある領域を検出するように設計されています。この関数は、2 種類の内部フィルタ操作 (エッジ状の欠陥の検出に使用する [高速検出]、またはブロブ状の欠陥の検出に使用する [明るい傷]、[暗い傷]、[両方]) を使用します。しきい値を設定し、ブロブ解析を適用して欠陥の有無を判断する前に、最初に、カラーまたはグレースケールに急な変動のあったエッジと領域をハイライトします。
SurfaceFlaw 関数はスタンドアローン関数です。モデルを使用する必要がないため、設定が簡略化され実行時間が改善されます。モデルを組み込まないため、この関数は実行時の照明のばらつきを考慮し、欠陥を正確に検出することができます。ただし、DetectFlaw 関数、FlexFlawModel 関数、および TrainFlawModel 関数が備えているような、発生する可能性のあるばらつきを補正する機能はないため、部品のプロセスのばらつきを調整することはできません。このため、SurfaceFlaw 関数は、検査される部品の領域が均一である、つまり、明度に急な変動があると欠陥として分類されるアプリケーションに適しています。部品にプロセスのばらつきがある場合、ほかの Flaw Detection 関数でばらつきが考慮される必要があります。
SurfaceFlaw 関数の設定
SurfaceFlaw 関数の設定では、欠陥の有無の判別に使用されるしきい値を確立します。開始前に、検査対象となる部品の画像のデータベースを収集します。これには、誤差のない状態の部品画像と、一般的な誤差を示す画像が含まれます。画像は [記録/再生のオプション] ダイアログを使用してロードします。
まず最初に、誤差のない状態の部品の画像をロードします。SurfaceFlaw 関数をスプレッドシートに挿入し、検査対象の画像領域を囲むように [領域] を調整します。[領域] を設定するときは、ラベルや、文字またはロゴのエッジなどの無関係な特徴は含めないようにします。検査対象に部品のエッジを含める場合、領域がエッジに対して平行に位置される必要があります (円形の領域についても同様に、部品のエッジに対して円形のカーブ領域が平行)。ただし、エッジを超えないようにします。
関数のパラメータが欠陥を特定しないように設定されていることを確認します。SurfaceFlaw 関数には、[表示画像] パラメータが含まれています。このパラメータによって、パラメータでの調整がどのように関数に影響するかを示す視覚的フィードバックが提供されます。四角形の赤ボックス内に検出される傷がすべて含まれるように、[画像表示] パラメータを [傷候補] に設定します。
パラメータを調整する際は、[サンプル係数] と [平滑化係数] パラメータを調整することを推奨します。勾配の少ない傷を検出したり、低コントラストの大きな傷を検出したりするには、[サンプル化係数] を大きくします。[サンプル係数] パラメータを大きくすると、小さな欠陥や疑似欠陥を除外することができます。
これらのパラメータを調整したら、[検出タイプ]、[検出サイズ]、および [検出軸] パラメータのさまざまなオプションを使用します。この関数には、エッジ状の欠陥と、ブロブ状の欠陥の、2 種類の欠陥の検出方法があります。[検出タイプ] パラメータを [高速検出] に設定すると、「領域」タイプの欠陥のエッジに対してエッジ状の欠陥を検出するエロージョン/ダイレーションフィルタを実行します。これにより、欠陥の面積全体ではなく、欠陥の境界ボックスの周囲長として欠陥のサイズが報告されます。この設定は、スクラッチや裂け目などの欠陥を検出するのに有用です。
[検出タイプ] のオプション ([明るい傷]、[暗い傷]、または [両方]) は、ボトムハットフィルタとトップハットフィルタの組み合わせを使用してブロブ状の欠陥を検出します。これにより、ピクセルサイズに基づいて欠陥を検出することができます。このオプションは、斑点、染み、汚れなどの欠陥の面積を基準にして欠陥を検出するのに有用です。ただし、この 3 種類の [検出タイプ] オプションは、一般的により長い処理時間を必要とします。
[検出タイプ] パラメータを [高速検出] に設定する必要のあるほとんどのアプリケーションで、[検出サイズ] は通常、1 に設定するのが適切です。[明るい傷]、[暗い傷]、または [両方] に設定する必要のあるアプリケーションでは、[検出サイズ] パラメータは、検出対象の欠陥の半径よりも大きいサイズに設定する必要があります。
最後に、[最小傷面積]、[最大傷面積] および [最小コントラスト] パラメータを調整し、欠陥がそれぞれ適切に検出され、ハイライトされることを確認します。
誤差のない状態の部品を正しく検査したら、欠陥の含まれる部品の画像をロードします。ここでも、関数が目的の欠陥を正しく特定するまでパラメータを調整するプロセスを実行します。欠陥が特定されたら、誤差のない状態の部品の画像を再ロードして、欠陥が含まれていない画像として正しく検査されることを確認します。データベースのすべての画像が正常に設定されると、実行時の検査向けの関数の準備が整います。
SurfaceFlawの入力パラメータ
Syntax:SurfaceFlaw(画像,フィクスチャ.行,フィクスチャ.列,フィクスチャ.角度,領域.X,領域.Y,領域.高さ,領域.幅,領域.角度,領域.カーブ,外部定義領域,歪みのない画像,サンプル係数,自動平滑化,平滑化係数,検出タイプ,検出サイズ,検出軸,傷データの計算,傷形の計算,最小傷面積,最大傷面積,最小コントラスト,タイムアウト,表示画像,表示行,表示列,表示)
画像データ構造体を含んだスプレッドシートセルを参照するように指定します。デフォルトでは、このパラメータは、AcquireImage 画像データ構造体を含むセル A0 を参照しています。また、このパラメータは、ビジョンツールのグラフィックス関数や、座標補正関数により返された、そのほかの画像データ構造体も参照できます。 注 :
|
|||||||||||||
フィクスチャ入力、またはビジョンツール関数の画像座標系の出力に関連する対象領域 (ROI) を定義します。フィクスチャに関連する ROI を設定すると、フィクスチャが回転または移動した場合に、フィクスチャに対応して ROI を確実に回転または移動できます。 デフォルト設定は画像の左上隅で、(0, 0, 0) になります。
|
|||||||||||||
これは対象領域 (ROI) とも呼ばれ、解析の対象となる画像の領域を表します。変換および回転可能な矩形の画像領域を作成します。このパラメータを選択して、プロパティシートのツールバーにある [領域の最大化] ボタンを押すと、画像全体が対象になるように領域が自動的に拡張されます。 注 : 別のビジョンツール関数またはオペレータ I/F 関数の出力に対する ROI を定義する場合、領域座標へのセル参照を設定する代わりに、[外部定義領域] パラメータを使用します。[外部定義領域] パラメータはフィクスチャの動きを正しく考慮しますが、セル参照は正しく機能しない可能性があり、フィクスチャの動きを参照する関数は #ERR を返すことがあります。
|
|||||||||||||
注 : :[フィクスチャ] および [領域] パラメータは、画像の範囲内で定義されている必要があります。画像の範囲内で定義されていない場合、この関数は #ERR を返します。
|
|||||||||||||
外部定義領域 |
オペレータ I/F 関数、または Mask 関数によって出力された 注 : このパラメータが外部定義領域の参照として設定されている場合に、この関数の内部領域を使用するには、セル参照に値 0 を入力し、このパラメータを手動で 0 に設定する必要があります。それ以外の場合、この関数は引き続き外部定義領域を参照します。
|
||||||||||||
歪みのない画像 |
画像処理を先に進める前に、カーブや角度のある対象領域 (ROI) から歪みを取り除くかどうかを指定します。このパラメータは、欠陥を特定の軸 (X または Y) に沿ってのみ検出する場合に使用すると有用です。検出カーネルは ROI の方向や形に関係なく、常に画像の X 軸および Y 軸に沿って処理するようになります。画像内で「対角」の直線エッジに沿って欠陥を検出するには、最初に画像の歪みを取り除く必要があります。 注 :
|
||||||||||||
サンプリング係数 | 入力画像をサンプリングする量 (1 ~ 99999、デフォルト = 1) を指定します。これにより解像度を下げます。サンプリングは関数の実行時間を短縮するのに有用ですが、精度に影響を与えます。画像のサブサンプリングは欠陥のコントラストが低く、少しずつ移動するような場合に有用です。サブサンプリングによってピクセルがより密接するため、変化がより短く急になります。適切なサンプリング値を決定する際、値 1 はサンプリングを実行しないことを示します。つまり、入力画像はフル解像度で使用されます。値を高くすると解像度と精度が低くなりますが、実行時間はより速くなります。 | ||||||||||||
画像を滑らかにする最適な平滑化係数を選択するかどうかを指定します。最適な平滑化係数を選択することによって、通常、パフォーマンスを向上させることができます。 注 : [自動平滑化] パラメータはデフォルトでオフになっています。このパラメータをオンにするには、[サンプル係数] パラメータを 1 より大きい値に設定する必要があります。[サンプル係数] パラメータを 1 より大きい値に設定し、[自動平滑化] を使用しない場合は、パラメータをオフにし、代わりに [サンプル係数] パラメータを使用して適切な値を設定します。
|
|||||||||||||
画像を滑らかにする係数 (0 ~ 99999、デフォルト = 0) を指定します。最適な値を決定する際は、[サンプル係数] パラメータに指定した値に近い値から開始します。平滑化を指定しない場合、値を 0 に設定します。 注 : [自動平滑数] パラメータがオンに設定されている場合、このパラメータは使用できません。
|
|||||||||||||
画像に適用して欠陥の有無を判別する画像処理のタイプを指定します。 注 : 画像処理のタイプに [明るい傷]、[暗い傷]、または [両方] を選択する場合、[検出サイズ] パラメータに検出する欠陥の最大サイズを設定する必要があります。
|
|||||||||||||
検出サイズ |
検出した近傍のサイズ (1 ~ 99999、デフォルト = 1) をピクセル単位で指定します。このパラメータは、[検出タイプ] パラメータで使用する処理近傍またはカーネルを構築するために使用します。 注 : [高速検出] 以外の [検出タイプ] 操作では、サイズ値に、検出する欠陥の最大の長さまたは幅以上の値を設定する必要があります。
|
||||||||||||
検出軸 |
欠陥候補を検出する軸を指定します。このパラメータはカーネルの高さも決定します。例えば、このパラメータを [X および Y] に設定し、[検出サイズ] を 1 に設定すると、カーネルは 3 × 3 グリッドになります。このパラメータを [X] に設定し、[検出サイズ] を 1 に設定すると、カーネルは 1 × 3 グリッドになります。
|
||||||||||||
傷データの計算 |
検出された個々の欠陥の面積、明度、境界ボックスを計算するかどうかを指定します。 注 :
|
||||||||||||
傷形の計算 |
検出された個々の欠陥の周辺長および真円度を計算するかどうかを指定します。真円度は、欠陥がどのくらい円状であるかを単位のない数値で示します。完璧な真円は、値 1.0 です。伸長した欠陥は、1 より大きい値になります。数値が増えると伸長がさらに大きくなることを示します。点状の欠陥は 0 に近い値になります。 注 : このパラメータを有効にするには、[傷データの計算] パラメータを ON にしておく必要があります。
|
||||||||||||
最小傷面積 | 検出する欠陥の最小サイズをピクセル単位で指定します (1 ~ 99999、デフォルト = 30)。 | ||||||||||||
最大傷面積 | 検出する欠陥の最大サイズをピクセル単位で指定します (1 ~ 99999、デフォルト = 99999)。値 0 は最大サイズを指定しません。 | ||||||||||||
最小コントラスト | 欠陥の検出に使用する明度しきい値を指定します (1 ~ 255、デフォルト = 20)。傷を検出するには、明度は背景の値と異なる必要があります。 | ||||||||||||
タイムアウト (ミリ秒) | この関数による欠陥のサーチ時間をミリ秒単位で指定します (0 ~ 30000、デフォルト = 0/タイムアウトなし)。指定された時間が経過すると、実行は停止し、#ERR が返されます。値を 0 に設定すると設定値が無効になり、タイムアウトは適用されません。 | ||||||||||||
表示画像 |
表示する出力画像を指定します。 注 : この画像は表示のためにのみ使用されます。別の関数への入力として使用することはできません。
|
||||||||||||
表示行 |
表示画像が表示される行座標 (デフォルト = 0) を左上隅を基準に指定します。 注 :
このパラメータは次の条件下で有効になります。
|
||||||||||||
表示列 |
表示画像が表示される列座標 (デフォルト = 0) を左上隅を基準に指定します。 注 :
このパラメータは次の条件下で有効になります。
|
||||||||||||
画像上にオーバレイする SurfaceFlaw グラフィックスの表示モードを指定します。
|
SurfaceFlawの出力
戻り値 | 表示画像データと検出された欠陥を含む SurfaceFlaw データ構造体。入力パラメータが無効であれば #ERR を返します。 |
結果 |
この関数が初めてセルに挿入されると、スプレッドシート内に結果テーブルが作成されます。 注 : [傷データの計算] パラメータを無効にすると、すべての検出された欠陥の総面積のみを返します。すべての欠陥を合わせた総面積を返すには、GetTotalFlawArea データアクセス関数を使用します。
|
SurfaceFlawデータアクセス関数
次のデータアクセス関数が、SurfaceFlaw データ構造体結果テーブルを作成するためにスプレッドシートに自動挿入されます。
スプレッドシート名 | 関数名 | 説明 |
傷総サイズ | GetTotalFlawArea(傷検査) | すべての欠陥の面積を足した総面積を返します。 |
インデックス | N/A | 面積内で最大から最小までソートされた、インデックス付き欠陥を返します。 |
行 | GetRow(傷検査, インデックス) | 欠陥を囲む境界ボックスの行座標をピクセル単位で返します。 |
列 | GetCol(傷検査, インデックス) | 欠陥を囲む境界ボックスの列座標をピクセル単位で返します。 |
高さ | GetHigh(傷検査, インデックス) | 欠陥を囲む境界ボックスの高さ値をピクセル単位で返します。 |
幅 | GetWide(傷検査, インデックス) | 欠陥を囲む境界ボックスの幅の値をピクセル単位で返します。 |
面積 | GetArea(傷検査, インデックス) | 欠陥の面積をピクセル単位で返します。 |
周囲長 | GetPerimeter(傷検査, インデックス) | 欠陥の周辺長をピクセル単位で返します。 |
明度 | GetAverageIntensity(傷検査, インデックス) | 欠陥の平均ピクセル明度の値を返します。 |
真円度 | GetRoundedness(傷検査, インデックス) | 欠陥の真円度をピクセル単位で返します。 |