# FindBlobs

FindBlobs を使用して、重み付けした一連の理想値により、ブロブ構造体のブロブのフィルタ処理と得点付けを行います。

## FindBlobs の概要

FindBlobs パラメータ設定を使用して、得点を計算する式を作成し、ブロブデータ構造体で参照されているブロブが「理想的な」ブロブとどの程度一致するかを計測します。このパラメータ設定に基づいて、FindBlobs 関数は指定した要件を満たすブロブのみを返します。

参照されているブロブデータ構造体内の各ブロブには、2 ステップの解析が行われます。最初に、個別の FindBlobs パラメータ設定のそれぞれで、特定のパラメータ値を評価する式を作成します。例えば、角度得点を計算するには、[範囲] と [角度] パラメータの角度値と、[範囲] と参照されるブロブの角度値の差を除算して、[重み] の値で乗算します。個々の得点を計算した後、各パラメータ得点をそれぞれ加算して、個々の [重み] パラメータ値の合計で除算します。その後この得点を [アクセプトしきい値] の値と比較して、ブロブが指定した要件を満たすかどうかを判定します。

FindBlobs 関数で抽出したブロブをフィルタ処理してソートすると、新しいブロブデータ構造体とこれに伴う結果テーブルが自動的にスプレッドシートに挿入されます。この結果テーブルは、検出されたブロブが設定されている要件にどの程度一致するかによって、降順にソートされます。

FindBlobs 関数は、欠陥検出のために特徴を分類する際に非常に有用です。例えば、ジョブで表面の傷を検出する場合に、[伸長] の値が大きいブロブのみを返すように FindBlobs 関数を設定することができます。また、エッジのギザギザの欠陥を検出する場合、[周囲長] または [拡散] の値が大きいブロブのみを返すように FindBlobs 関数を設定することができます。

## FindBlobs の入力

パラメータ | 説明
ブロブ | このパラメータは、フィルタ処理とソートの対象となるブロブデータ構造体へのセル参照を使用します。
検出する数 | このパラメータは、返されるブロブの最大数 (1 ～ 4096、デフォルト = 3) を指定します。画像に [アクセプトしきい値] 設定を上回る得点を持つブロブがこの最大値より多く存在する場合は、得点の高いブロブが選択されます。 注: [検出する数] パラメータの値が 0 より大きい場合、FindBlobs 関数は、ブロブデータ構造体内の最初の 10 個のブロブに対応する最大 10 のエントリを含む結果テーブルを自動的に挿入します。より多くのエントリを表示する場合は、最後の行をコピーし、追加の行を末尾に貼り付けることによりテーブルを拡張することができます。 新しく貼り付けた行のインデックスの値を必ず繰り上げて、正しいブロブがインデックスされるようにしてください。
アクセプトしきい値 | 許容できる一致最低得点を指定します (0 ～ 100、デフォルト = 10)。FindBlobs 関数は、[アクセプトしきい値] を上回る一致得点を持つブロブのみを返します。一致得点は、次の式で計算されます。 (角度得点 + 面積得点 + 伸長得点 + 穴得点 + 周囲長得点 + 拡散得点) × (100 ÷ パラメータの重み値の合計)
角度 | このパラメータを使用して、検出されたブロブの理想的な角度得点 (+/- CCW 度) を割り出す得点付けの式を設定します。 角度の得点付けの式 FindBlobs 関数の角度得点は、次の式を使用して計算されます。 角度得点 = [(範囲 + 角度) - BlobAngleVal] ÷ 範囲 × WeightVal BlobAngleVal = 参照されているブロブの出力の角度値 WeightVal = 重み ÷ (すべての重み値の合計) × 100
角度 | ブロブの理想的な角度 (-360 ～ 360、デフォルト = 0)。
範囲 | 類似性得点付けでのブロブの角度の許容値 (0 ～ 360、デフォルト = 0)。
重み | 類似性得点付けでのブロブ角度の相対的な重要度 (0 ～ 100、デフォルト = 0)。
面積 | このパラメータを使用して、検出されたブロブの理想的な面積得点を割り出す得点付けの式を設定します。 面積の得点付けの式 FindBlobs 関数の面積得点は、BlobAreaVal と [面積] の値に応じて、次の式を使用して計算されます。 BlobAreaVal が [面積] の値より大きい場合は、次の式が使用されます。 面積得点 = [(範囲 + 面積) - BlobAreaVal] ÷ 範囲 × WeightVal BlobAreaVal が [面積] の値より小さい場合は、次の式が使用されます。 面積得点 = [BlobAreaVal - (面積 - 範囲)] ÷ 範囲 × WeightVal 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 のエントリを含む結果テーブルを自動的に挿入します。より多くのエントリを表示する場合は、最後の行をコピーし、追加の行を末尾に貼り付けることによりテーブルを拡張することができます。 新しく貼り付けた行のインデックスの値を必ず繰り上げて、正しいブロブがインデックスされるようにしてください。 ブロブデータアクセス関数を使用して、その他のデータ要素を取得できます。
スプレッドシートのラベル | 関数 | 説明
--- | --- | ---
インデックス |  | ブロブのインデックスで指定された位置。
X | GetX(ブロブ, ブロブインデックス) | 参照されるブロブの重心の X 座標を返します。
Y | GetY(ブロブ, ブロブインデックス) | 参照されるブロブの重心の Y 座標を返します。
角度 | GetAngle(ブロブ, ブロブインデックス) | ROI の中心に対するブロブの主軸の角度を返します。
色 | GetColor(ブロブ, ブロブインデックス) | 参照先のブロブの色の値 (0 = 黒、1 = 白) を返します。
得点 | GetScore(ブロブ, ブロブインデックス) | ブロブが、FindBlobs 関数の条件にどの程度一致しているかを表します。
面積 | GetArea(ブロブ, ブロブインデックス) | 参照先のブロブの面積を返します (ピクセル単位)。 注: ブロブに穴がある場合、面積の値は、[穴を埋める] チェックボックスが ON か OFF かによって異なります。
伸長 | GetElongation(ブロブ, ブロブインデックス) | 参照先のブロブのピクセルが、ブロブの重心からどの程度伸びているかを表す値を返します。例えば、円の伸長は 0 ですが、釘の伸長の値は大きくなります。
穴 | GetHoles(ブロブ, ブロブインデックス) | 参照先のブロブに含まれている穴の数を返します。
周囲長 | GetPerimeter(ブロブ, ブロブインデックス) | 参照先のブロブを囲む境界線の長さを返します。周囲長は、ブロブの境界線を形成するピクセルの外部エッジをカウントすることにより計算されます。
拡散 | GetSpread(ブロブ, ブロブインデックス) | 参照先のブロブのピクセルが、ブロブの重心からどの程度拡散しているかを表す値を返します。例えば、円形の対象物の拡散値は楕円形の対象物の場合よりも小さくなります。