FindBlobs
FindBlobs を使用して、ブロブデータ構造体で返されたブロブのフィルタとソートを行います。
FindBlobs概要
FindBlobs パラメータ設定を使用して、得点を計算する式を作成し、ブロブデータ構造体で参照されているブロブが「最適な」ブロブとどの程度一致するかを計測します。このパラメータ設定に基づいて、FindBlobs 関数は指定した要件を満たすブロブのみを次々に返します。
参照されているブロブデータ構造体内の各ブロブは、2 ステップの分析を受けます。最初に、個別の FindBlobs パラメータ設定のそれぞれで、特定のパラメータ値を評価する式を作成します。例えば、角度の得点を計算するには、[範囲] と [角度] パラメータの [角度] の値と、[範囲] と参照されるブロブの [角度] の値との差を除算して、[重み] の値で乗算します。個別の得点を計算した後、個別のパラメータの得点のそれぞれを加算して、個別の [重み] パラメータ値の合計で除算します。その後この得点は [アクセプトしきい値] の値と比較されて、ブロブが指定した要件を満たすかどうかを判定します。
FindBlobs 関数で抽出されたブロブのフィルタおよびソートを完了すると、新しいブロブデータ構造体とこれに伴う結果テーブルが自動的にスプレッドシートに挿入されます。この結果テーブルは、検出されたブロブが設定されている要件とどの程度一致するかによって、降順にソートされます。
FindBlobs 関数は、欠陥検出のために特徴を分類する際に非常に有用です。例えば、ジョブで表面上の傷を検出しようとする場合に、FindBlobs 関数は [伸長] の値がより高いブロブのみを返すように設定することができます。または、エッジのギザギザの欠陥を検出することが目的であった場合、[周囲長] または [拡散] の値がより高いブロブのみを FindBlobs 関数が返すように設定することができます。
FindBlobsの入力パラメータ
Syntax:FindBlobs(ブロブ,検出する数,アクセプトしきい値,角度.角度,角度.範囲,角度.重み,領域.領域,領域.範囲,領域.重み,伸長.伸長,伸長.範囲,伸長.重み,穴.数,穴.範囲,穴.重み,周囲長.周囲長,周囲長.範囲,周囲長.重み,拡散.拡散,拡散.範囲,拡散.重み,表示)
ブロブ | このパラメータは、フィルタおよびソートの対象となるブロブデータ構造体を含むスプレッドシートのセルを参照します。 | ||||||
検出する数 |
返されるブロブの最大数 (1 ~ 4096、デフォルト = 3) を指定します。[アクセプトしきい値] 設定を上回る得点を持つブロブが、指定した数よりも多く画像内に存在する場合は、最高得点のブロブが選択されます。 注 : [検出する数] パラメータの値が 0 より大きい場合、FindBlobs 関数は、ブロブデータ構造体内の最初の 10 個のブロブに対応する最大 10 のエントリを含んでいる結果テーブルを自動的に挿入します。より多くのエントリを表示する場合は、最後の行をコピーし、追加の行を末尾に貼り付けることによりテーブルを拡張することができます。新しく貼り付けた行のインデックスの値を必ず繰り上げて、正しいブロブがインデックスされるようにしてください。
|
||||||
アクセプトしきい値 |
許容できる一致最低得点を指定します (0 ~ 100、デフォルト = 10)。FindBlobs 関数は、[アクセプトしきい値] を超える一致得点を持つブロブのみを返します。一致得点は、次の式で計算されます。 ([角度] 得点 + [面積] 得点 + [伸長] 得点 + [穴] 得点 + [周囲長] 得点 + [拡散] 得点) × (100 ÷ パラメータの [重み] の値の合計) |
||||||
角度 |
このパラメータを使用して、検出されたブロブの最適な [角度] 得点を割り出す得点付けの式を設定します。
|
||||||
面積 |
このパラメータを使用して、検出されたブロブの最適な [面積] 得点を割り出す得点付けの式を設定します。
|
||||||
伸長 |
このパラメータを使用して、検出されたブロブの最適な [伸長] 得点を割り出す得点付けの式を設定します。
|
||||||
穴 |
このパラメータを使用して、検出されたブロブの最適な [穴] 得点を割り出す得点付けの式を設定します。
|
||||||
周囲長 |
このパラメータを使用して、検出されたブロブの最適な [周囲長] 得点を割り出す得点付けの式を設定します。
|
||||||
拡散 |
このパラメータを使用して、検出されたブロブの最適な [拡散] 得点を割り出す得点付けの式を設定します。
|
||||||
表示 |
画像上の FindBlobs グラフィックスオーバレイの表示モードを指定します。
|
FindBlobsの出力
戻り値 | 得点によってソートされ、一致したブロブを含むブロブデータ構造体。入力パラメータが無効であれば #ERR を返します。 |
結果 |
FindBlobs 関数を初めてセルに挿入すると、 注 : [検出する数] パラメータの値が 0 より大きい場合、FindBlobs 関数は、ブロブデータ構造体内の最初の 10 個のブロブに対応する最大 10 のエントリを含んでいる結果テーブルを自動的に挿入します。より多くのエントリを表示する場合は、最後の行をコピーし、追加の行を末尾に貼り付けることによりテーブルを拡張することができます。新しく貼り付けた行のインデックスの値を必ず繰り上げて、正しいブロブがインデックスされるようにしてください。
|
FindBlobsデータアクセス関数
FindBlobs ブロブデータ構造体の結果テーブルを作成するために、次のデータアクセス関数がスプレッドシートに自動挿入されます。
スプレッドシート名 | 関数名 | 説明 |
行 |
GetRow(ブロブ, ブロブインデックス) |
参照されるブロブの重心の Y 座標 (行) を返します。 |
列 |
GetCol(ブロブ, ブロブインデックス) |
参照されるブロブの重心の X 座標 (列) を返します。 |
角度 |
GetAngle(ブロブ, ブロブインデックス) |
ROI の中心に対するブロブの主軸の角度を返します。 |
色 |
GetColor(ブロブ, ブロブインデックス) |
参照されるブロブのカラーの値 (0 = 黒、1 = 白) を返します。 |
得点 |
GetScore(ブロブ, ブロブインデックス) |
ブロブが、FindBlobs 関数の条件にどの程度一致しているかを表します。 |
面積 |
GetArea(ブロブ, ブロブインデックス) |
参照されるブロブの面積を返します (ピクセル単位)。 |
伸長 |
GetElongation(ブロブ, ブロブインデックス) |
参照されるブロブのピクセルが、ブロブの重心からどの程度伸びているかを表す値を返します。例えば、円の伸長は 0 ですが、釘の伸長の値は大きくなります。 |
穴 |
GetHoles(ブロブ, ブロブインデックス) |
参照されるブロブに含まれている穴の数を返します。 |
周囲長 |
GetPerimeter(ブロブ, ブロブインデックス) |
参照されるブロブを囲む境界線の長さを返します。周囲長は、ブロブの境界線を形成するピクセルの外部エッジをカウントすることにより計算されます。 |
拡散 |
GetSpread(ブロブ, ブロブインデックス) |
参照されるブロブのピクセルが、ブロブの重心からどの程度拡散しているかを表す値を返します。例えば、円形の対象物の拡散値は楕円形の対象物の場合よりも小さくなります。 |
次のデータアクセス関数を使用して、そのほかのデータの取得ができます。
しきい値 | GetThresh(ブロブ) | 画像のセグメント化に使用されたしきい値 |
検出数 | GetNFound(ブロブ) | 検出されたブロブの数 |
最小行 | GetMinRow(ブロブ, ブロブインデックス) |
画像座標フレームの方向を向いた、参照されるブロブの周りを囲む正方形の境界ボックスの一番上の行座標を返します。 注 : 異なる方向を持つ境界ボックスについては、BoundingRectangle 関数を参照してください。
|
最小列 | GetMinCol(ブロブ, ブロブインデックス) |
画像座標フレームの方向を向いた、参照されるブロブの周りを囲む正方形の境界ボックスの左端の列座標を返します。 注 : 異なる方向を持つ境界ボックスについては、BoundingRectangle 関数を参照してください。
|
最大行 | GetMaxRow(ブロブ, ブロブインデックス) |
画像座標フレームの方向を向いた、参照されるブロブの周りを囲む正方形の境界ボックスの一番下の行座標を返します。 注 : 異なる方向を持つ境界ボックスについては、BoundingRectangle 関数を参照してください。
|
最大列 | GetMaxCol(ブロブ, ブロブインデックス) |
画像座標フレームの方向を向いた、参照されるブロブの周りを囲む正方形の境界ボックスの左端の列座標を返します。 注 : 異なる方向を持つ境界ボックスについては、BoundingRectangle 関数を参照してください。
|
FindBlobs の例
FindBlobs 関数を使用して、ブロブデータ構造体で返されたブロブのフィルタとソートを行います。この例では、FindBlobs パラメータ設定で、ブロブのリストを検査し、指定した最適な値に一致するブロブのみを返すように設定する方法を説明します。
DetectBlobs の例で作成されたものと同じ画像とブロブデータ構造体を使用して、FindBlobs 関数がスプレッドシートに挿入され、自動的にFindBlobs プロパティシートが起動されています。この例の目的として、ブロブが検査され、その他の基準に関係なく、1 個以下の穴があるブロブのみを返すようにパラメータが設定されています。
これらの要件に基づいて、FindBlobs パラメータは次のように構成されます。
ブロブ: このパラメータは、以前生成された DetectBlobs ブロブデータ構造体への絶対セル参照として設定されています。
検出する数: このようなブロブが 1 つだけ画像に含まれているので、このパラメータは 1 に設定されています。このパラメータをより高い値に設定すると、この値を下回るブロブが返されたセルは #ERR となります。
アクセプトしきい値: デフォルト設定が使用されています。ブロブに関して確実性が低い状況でこの設定を使用することによって、より低いしきい値で、より多くのブロブが返されることを保証しますが、最適な値との類似性が低下します。
ブロブが検査されて 1 個以下の穴があるブロブのみが返されているので、設定する必要のあるパラメータは、[穴] パラメータだけです。ブロブのその他すべてのプロパティのパラメータは、[重み] 設定が 0 に設定されている場合以外、デフォルト設定のままになります。
穴: この例では、[穴] の [数] の値が 0 に設定されていますが、[範囲] の値は 0 に引き下げられ、[重み] は 100 に設定されています。これによって、得られる FindBlobs データ構造体および結果データテーブルでは、
データ構造体内で値が 0 のブロブのみが返されることが
保証されます。