# SortBlobs

SortBlobs 関数は、フィクスチャに関してブロブデータ構造体で参照されているブロブをソートするために使用されます。

## SortBlobs の概要

指定された画像フィクスチャ座標系に対する、参照されているブロブの重心の位置を計算することにより、SortBlobs 関数は、x 軸または y 軸に沿ったブロブの距離、フィクスチャの原点またはグリッドからの距離、ブロブの角度や角度絶対値などの測定特性の 1 つを基準にして、参照されているブロブをソートします。

参照されているブロブのデータ構造体に含まれる個々のブログが調査され、[ソート基準] パラメータ設定に基づいてブロブが識別されます。その後、ブロブの距離、またはある決まった位置との角度関係のどちらかを測定することにより、このブロブの位置が計算されます。

SortBlobs 関数により、参照されているブロブのソートが完了すると、新しいブロブデータ構造体とこれに伴う結果テーブルが自動的にスプレッドシートに挿入されます。結果テーブルは、選択されたフィクスチャに対するブロブの距離を基準に、降順でソートされます (最も近いブロブがリストの先頭になります。2 番目に近いブロブはリストの 2 番目…のように並べられます)。

SortBlobs 関数は、複数のブロブが存在し、ほかのブロブに対する個々のブロブの位置を判断する必要のあるインスタンスにおいて非常に有効な関数です。

## SortBlobs の入力

パラメータ | 説明
ブロブ | このパラメータは、ソートの対象となるブロブデータ構造体を含んでいるスプレッドシートセルに対するセル参照を使用します。
ソートする数 | 返されるブロブの最大数 (1 ～ 4096、デフォルト = 3) を指定します。 注: このパラメータの値が 0 より大きい場合、SortBlobs 関数は、ブロブデータ構造体内の最初の 10 個のブロブに対応する最大 10 のエントリを含んでいる結果テーブルを自動的に挿入します。より多くのエントリを表示する場合は、最後の行をコピーし、追加の行を末尾に貼り付けることによりテーブルを拡張することができます。 新しく貼り付けた行のインデックスの値を必ず繰り上げて、正しいブロブがインデックスされるようにしてください。
ソート基準 | ブロブの測定方法とソート方法を表します。
0 = Y (デフォルト) | フィクスチャの Y 座標軸に沿った距離を、短いものから順にソートします。
1 = X | フィクスチャの X 座標軸に沿った距離を、短いものから順にソートします。
2 = 角度 | フィクスチャ座標系の Y 軸から、ブロブの重心とフィクスチャの原点で定義されるラインセグメントまでを反時計回りに測定した角度 (0 ～ 360 度) を、近いものから順に (降順に) ソートします。
3 = 角度絶対値 | フィクスチャ座標系の x 軸から、ブロブの重心とフィクスチャの原点で定義されるラインセグメントまでを測定した角度 (-180 ～ 180 度) の絶対値を、近いものから順に (降順に) ソートします。
4 = 距離 | フィクスチャの原点からブロブの重心までの距離を、近いものから順に (降順に) ソートします。
5 = グリッド Y | まずフィクスチャの Y 座標軸に沿った距離を、次に X 座標軸に沿った距離を、近いものから順に (降順に) ソートします。 注: SortBlobs 関数は、グリッド Y が選択され、CalibrateImage 関数や TransBlobsToWorld 関数の出力などのワールド座標値にキャリブレーションされた画像をこの関数が参照している場合、#ERR を返します。グリッド Y のソートは、ピクセル座標にのみ適用できます。
6 = グリッド X | まず、フィクスチャの X 座標軸に沿った距離を、次に Y 座標軸に沿った距離を、近いものから順に (降順に) ソートします。 注: SortBlobs関数は、グリッド X が選択され、CalibrateImage 関数や TransBlobsToWorld 関数の出力などのワールド座標値にキャリブレーションされた画像をこの関数が参照している場合、#ERR を返します。グリッド X のソートは、ピクセル座標にのみ適用できます。
7 = 幅 | 幅値によって広いものから狭いものへソートします。
8 = 高さ | 高さ値によって高いものから低いものへソートします。
フィクスチャ | Fixture入力に対する、参照先のブロブの重心、またはビジョンツール関数の画像座標系の出力を定義します。フィクスチャに対してブロブの重心を設定すると、フィクスチャが回転または移動した場合に、フィクスチャに対応して参照されるブロブを確実に回転または移動できます。 デフォルト設定は画像の左上隅で、(0, 0, 0) になります。
X | 画像座標での X オフセット。
Y | 画像座標での Y オフセット。
角度 | 画像座標系での画像の X 軸からの回転 (時計回り +/-360 度)。
表示 | 画像上の SortBlobs グラフィックスオーバレイの表示モードを指定します。
0 = 非表示 (デフォルト) | SortBlobs 関数を含んでいるセルがスプレッドシート内でハイライトされている場合を除き、すべてのグラフィックスが表示されません。
1 = 結果のグラフィックスのみ | ブロブの輪郭が常に表示されます。

## SortBlobs の出力

戻り値 | ソートされたブロブを含んでいるブロブデータ構造体。いずれかの入力パラメータが無効な場合は #ERR を返します。
結果 | SortBlobs 関数を初めてセルに挿入すると、スプレッドシート内に結果テーブルが作成されます。 注: [ソートする数] パラメータの値が 0 より大きい場合、SortBlobs 関数は、ブロブデータ構造体内の最初の 10 個のブロブに対応する最大 10 のエントリを含んでいる結果テーブルを自動的に挿入します。より多くのエントリを表示する場合は、最後の行をコピーし、追加の行を末尾に貼り付けることによりテーブルを拡張することができます。 新しく貼り付けた行のインデックスの値を必ず繰り上げて、正しいブロブがインデックスされるようにしてください。 次のブロブデータアクセス関数がスプレッドシートに自動挿入され、SortBlobs のデータ構造体結果テーブルが作成されます。
ラベル | 関数 | 説明
インデックス |  | ブログインデックス
X | GetX(ブロブ, ブロブインデックス) | 参照されるブロブの重心の X 座標を返します。
Y | GetY(ブロブ, ブロブインデックス) | 参照されるブロブの重心の Y 座標を返します。
角度 | GetAngle(ブロブ, ブロブインデックス) | ROI の中心に対するブロブの主軸の角度を返します。
色 | GetColor(ブロブ, ブロブインデックス) | 参照先のブロブの色の値 (0 = 黒、1 = 白) を返します。
得点 | GetScore(ブロブ, ブロブインデックス) | ブロブが、FindBlobs 関数の条件にどの程度一致しているかを表します。
面積 | GetArea(ブロブ, ブロブインデックス) | 参照先のブロブの面積を返します (ピクセル単位)。 注: ブロブに穴がある場合、面積の値は、[穴を埋める] チェックボックスが ON か OFF かによって異なります。
伸長 | GetElongation(ブロブ, ブロブインデックス) | 参照先のブロブのピクセルが、ブロブの重心からどの程度伸びているかを表す値を返します。例えば、円の伸長は 0 ですが、釘の伸長の値は大きくなります。
穴 | GetHoles(ブロブ, ブロブインデックス) | 参照先のブロブに含まれている穴の数を返します。
周囲長 | GetPerimeter(ブロブ, ブロブインデックス) | 参照先のブロブを囲む境界線の長さを返します。周囲長は、ブロブの境界線を形成するピクセルの外部エッジをカウントすることにより計算されます。
拡散 | GetSpread(ブロブ, ブロブインデックス) | 参照先のブロブのピクセルが、ブロブの重心からどの程度拡散しているかを表す値を返します。例えば、円形の対象物の拡散値は楕円形の対象物の場合よりも小さくなります。