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 関数の [角度] 得点は、次の式を使用して計算されます。

[角度] 得点 = [([範囲] + [角度]) - BlobAngleVal] ÷ [範囲] × WeightVal

BlobAngleVal = 参照されているブロブの出力 [角度] の値

WeightVal = [重み] ÷ (すべての重みの値の合計) × 100

角度 最適なブロブの角度 (-360 ~ 360、デフォルト = 0)
範囲: 類似性得点付けでのブロブの角度の許容値 (0 ~ 360、デフォルト = 0)
重み 類似性得点付けでのブロブ角度の相対的な重要度 (0 ~ 100、デフォルト = 0)
面積

このパラメータを使用して、検出されたブロブの最適な [面積] 得点を割り出す得点付けの式を設定します。

閉じた面積を得点付けする式

FindBlobs の [面積] 得点は、BlobAreaVal および [面積] の値に応じて、次の式を使用して計算されます。

BlobAreaVal[面積] の値よりも大きい場合は、この式が使用されます。

[面積] 得点 = [([範囲] + [面積]) - BlobAreaVal] ÷ [範囲] × WeightVal

BlobAreaVal[面積] の値より小さい場合は、この式が使用されます。

[面積] 得点 = [BlobAreaVal - ([面積] - [範囲])] ÷ [範囲] × Weight Val

BlobAreaVal = 参照されているブロブの出力 [範囲] の値

WeightVal = [重み] ÷ (すべての重みの値の合計) × 100

面積 ブロブの最適な面積サイズ (ピクセル単位) (0 ~ 900000、デフォルト = 1000)
範囲 類似性得点付けでのブロブの面積の許容値 (0 ~ 900000、デフォルト = 20000)
重み 類似性得点付けでのブロブ面積の相対的な重要度 (0 ~ 100、デフォルト = 50)
伸長

このパラメータを使用して、検出されたブロブの最適な [伸長] 得点を割り出す得点付けの式を設定します。

閉じた伸長を得点付けする式

FindBlobs 関数の [伸長] 得点は、次の式を使用して計算されます。

[伸長] 得点 = [([範囲] + [伸長]) - BlobElongationVal] ÷ [範囲] × WeightVal

BlobElongationVal = 参照されているブロブの出力 [伸長] の値

WeightVal = [重み] ÷ (すべての重みの値の合計) × 100

伸長 ブロブの最適な伸長 (0 ~ 900000、デフォルト = 1)
範囲 類似性得点付けでのブロブの伸長の許容値 (0 ~ 900000、デフォルト = 2)
重み 類似性得点付けでのブロブ伸長の相対的な重要度 (0 ~ 100、デフォルト = 50)

このパラメータを使用して、検出されたブロブの最適な [穴] 得点を割り出す得点付けの式を設定します。

閉じた穴を得点付けする式

FindBlobs 関数の [穴] 得点は、次の式を使用して計算されます。

[穴] 得点 = [([範囲] + [数]) - BlobHolesVal] ÷ [範囲] × WeightVal

BlobHolesVal = 参照されているブロブの出力 [穴] の値

WeightVal = [重み] ÷ (すべての重みの値の合計) × 100

ブロブの最適な穴の数 (0 ~ 10000、デフォルト = 0)
範囲 類似性得点付けでのブロブの穴の数の許容値 (0 ~ 10000、デフォルト = 2)
重み 類似性得点付けでのブロブの穴の数の相対的な重要度 (0 ~ 100、デフォルト = 0)
周囲長

このパラメータを使用して、検出されたブロブの最適な [周囲長] 得点を割り出す得点付けの式を設定します。

閉じた周囲長を得点付けする式

FindBlobs 関数の [周囲長] 得点は、次の式を使用して計算されます。

[周囲長] 得点 = [([範囲] + [周囲長]) - BlobPerimeterVal] ÷ [範囲] × WeightVal

BlobPerimeterVal = 参照されているブロブの出力 [周囲長] の値

WeightVal = [重み] ÷ (すべての重みの値の合計) × 100

周囲長 ブロブの最適な周囲長 (0 ~ 100000、デフォルト = 1000)
範囲 類似性得点付けでのブロブの周囲長の許容値 (0 ~ 100000、デフォルト = 10000)
重み 類似性得点付けでのブロブ周囲長の相対的な重要度 (0 ~ 100、デフォルト = 50)
拡散

このパラメータを使用して、検出されたブロブの最適な [拡散] 得点を割り出す得点付けの式を設定します。

閉じた拡散を得点付けする式

FindBlobs 関数の [拡散] 得点は、次の式を使用して計算されます。

[拡散] 得点 = [([範囲] + [拡散]) - BlobSpreadVal] ÷ [範囲] × WeightVal

BlobSpreadVal = 参照されているブロブの出力 [拡散] の値

WeightVal = [重み] ÷ (すべての重みの値の合計) × 100

拡散 ブロブの最適な拡散 (0 ~ 900000、デフォルト = 1)
範囲 類似性得点付けでのブロブの拡散の許容値 (0 ~ 900000、デフォルト = 2)
重み 類似性得点付けでのブロブ拡散の相対的な重要度 (0 ~ 100、デフォルト = 50)
表示

画像上の FindBlobs グラフィックスオーバレイの表示モードを指定します。

0 = 非表示 (デフォルト) FindBlobs 関数を含んでいるセルがスプレッドシート内でハイライトされている場合を除き、すべてのグラフィックスが表示されません。
1 = 結果のグラフィックスのみ ブロブの輪郭が常に表示されます。

FindBlobsの出力

戻り値 得点によってソートされ、一致したブロブを含むブロブデータ構造体。入力パラメータが無効であれば #ERR を返します。
結果

FindBlobs 関数を初めてセルに挿入すると、閉じた結果テーブルがスプレッドシートに作成されます。

:  [検出する数] パラメータの値が 0 より大きい場合、FindBlobs 関数は、ブロブデータ構造体内の最初の 10 個のブロブに対応する最大 10 のエントリを含んでいる結果テーブルを自動的に挿入します。より多くのエントリを表示する場合は、最後の行をコピーし、追加の行を末尾に貼り付けることによりテーブルを拡張することができます。新しく貼り付けた行のインデックスの値を必ず繰り上げて、正しいブロブがインデックスされるようにしてください。

FindBlobsデータアクセス関数

FindBlobs ブロブデータ構造体の結果テーブルを作成するために、次のデータアクセス関数がスプレッドシートに自動挿入されます。

スプレッドシート名 関数名 説明

GetRow(ブロブ, ブロブインデックス)

参照されるブロブの重心の Y 座標 (行) を返します。

閉じた

GetCol(ブロブ, ブロブインデックス)

参照されるブロブの重心の X 座標 (列) を返します。

閉じた

角度

GetAngle(ブロブ, ブロブインデックス)

ROI の中心に対するブロブの主軸の角度を返します。

閉じた

GetColor(ブロブ, ブロブインデックス)

参照されるブロブのカラーの値 (0 = 黒、1 = 白) を返します。

得点

GetScore(ブロブ, ブロブインデックス)

ブロブが、FindBlobs 関数の条件にどの程度一致しているかを表します。

面積

GetArea(ブロブ, ブロブインデックス)

参照されるブロブの面積を返します (ピクセル単位)。

閉じた

:  ブロブに穴がある場合、面積の値は、[穴を埋める] チェックボックスが ON か OFF かによって異なります。

伸長

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 のブロブのみが返されることが閉じた保証されます