SortBlobs

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

SortBlobs概要

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

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

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

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

SortBlobsの入力パラメータ

Syntax:SortBlobs(ブロブ,ソートする数,ソート基準,フィクスチャ.行,フィクスチャ.列,フィクスチャ.角度,表示)

ブロブ このパラメータは、ソートの対象となるブロブデータ構造体を含むスプレッドシートのセルを参照します。
ソートする数

返されるブロブの最大数 (1 ~ 4096、デフォルト = 3) を指定します。

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

ブロブの測定方法とソート方法を表します。

0 = X (デフォルト)

x 軸に沿った距離を基準に、距離の短いものから長いものの順 (降順) でソートします。

閉じた

1 = Y

y 軸に沿った距離を基準に、距離の短いものから長いものの順 (降順) でソートします。

閉じた

2 = 角度

フィクスチャ座標系の X 軸からブロブの重心とフィクスチャの原点により定義される線分までの角度 (0 ~ 360 度) を、小さいものから大きいものの順 (降順) にソートします。

閉じた

3 = 角度絶対値

フィクスチャ座標系の x 軸からブロブの重心とフィクスチャの原点により定義される線分までの角度 (-180 ~ 180 度) の絶対値を、小さいものから大きいものの順 (降順) にソートします。

閉じた

4 = 距離

フィクスチャの原点からブロブの重心までの距離を、短いものから長いものの順 (降順) にソートします。

閉じた

5 = グリッド X

まず、フィクスチャの x 軸に沿った距離を基準に距離の短いものから長いものの順 (降順) でソートし、次に y 軸に沿った距離を基準に距離の短いものから長いものの順 (降順) でソートします。

:  SortBlobs 関数は、グリッド X が選択され、CalibrateImage 関数や TransBlobsToWorld 関数の出力などのワールド座標にキャリブレーションされた画像を関数が参照している場合には、#ERR を返します。グリッド X のソートは、ピクセル座標にのみ適用できます。ワールド座標を使用してグリッド X のソート方法を使用するには、SortBlobs 関数によって参照されている ExtractBlobs 関数が、SortBlobs 関数によってピクセル座標でソートされた TransformImage 関数の出力を参照する必要があります。出力データは、その後、TransBlobsToWorld 関数を使用してワールド座標に変換できます。

閉じた

6 = グリッド Y

まず、フィクスチャの y 軸に沿った距離を基準に距離の短いものから長いものの順 (降順) でソートし、次に x 軸に沿った距離を基準に距離の短いものから長いものの順 (降順) でソートします。

:  SortBlobs 関数は、グリッド Y が選択され、CalibrateImage 関数や TransBlobsToWorld 関数の出力などのワールド座標にキャリブレーションされた画像を関数が参照している場合には、#ERR を返します。グリッド Y のソートは、ピクセル座標にのみ適用できます。ワールド座標を使用してグリッド Y のソート方法を使用するには、SortBlobs 関数によって参照されている ExtractBlobs 関数が、SortBlobs 関数によってピクセル座標でソートされた TransformImage 関数の出力を参照する必要があります。出力データは、その後、TransBlobsToWorld 関数を使用してワールド座標に変換できます。

閉じた

7 = 幅

幅値によって広いものから狭いものへソートします。

:  
  • In-Sight 5605 ビジョンシステムは、このパラメータオプションをサポートしていません。
  • In-Sight 5604 ビジョンシステムでは、[幅] オプションと [高さ] オプションは入れ替わります。つまり、幅 = 8 および高さ = 7 となります。
8 = 高さ

高さ値によって高いものから低いものへソートします。

:  
  • In-Sight 5605 ビジョンシステムは、このパラメータオプションをサポートしていません。
  • In-Sight 5604 ビジョンシステムでは、[幅] オプションと [高さ] オプションは入れ替わります。つまり、幅 = 8 および高さ = 7 となります。
フィクスチャ

フィクスチャ入力に対する、ブロブの重心またはビジョンツール関数の画像座標系の出力を定義します。フィクスチャに対してブロブの重心を設定すると、フィクスチャが回転または移動した場合に、フィクスチャに対応して参照されるブロブを確実に回転または移動できます。

デフォルト設定は画像の左上隅で、(0, 0, 0) になります。

画像座標での行オフセット。
画像座標での列オフセット
角度 画像座標系での方位角
表示

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

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

SortBlobsの出力

戻り値 ソートされたブロブを含んでいるブロブデータ構造体。入力パラメータが無効であれば #ERR を返します。
結果

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

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

SortBlobsデータアクセス関数

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

スプレッドシート名 関数名 説明
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 関数を参照してください。

SortBlobs 関数の例

SortBlobs 関数は、フィクスチャからブロブまでの距離を基準に、ブロブデータ構造体で参照されているブロブをソートするために使用されます。この例では、フィクスチャに対するブロブの位置を基準に、一連のブロブをソートするために SortBlobs パラメータ設定を使用する方法を説明します。

DetectBlobs 関数の例で作成されたものと同じ画像とブロブデータ構造体を使用して、SortBlobs 関数がスプレッドシートの空のセルに挿入され、閉じたSortBlobs プロパティシートが自動的に起動されました

この例では、パラメータは、FindBlobs 関数の例によりフィクスチャとして返されたブロブを使用し、前述の DetectBlobs 関数の例で明らかにしたブロブをソートできるように設定されています。

これらの条件に基づいて、SortBlobs パラメータは次のように構成されます。

ブロブ: このパラメータは、以前生成された DetectBlobs ブロブデータ構造体への絶対セル参照として設定されています。

ソートする数: このパラメータは、ソート対象のブロブが 6 つあるため、6 に設定されます。

ソート基準: このパラメータはフィクスチャ原点からの距離に設定されています。このパラメータの設定値を選択すると、計測の起点を判定するためにフィクスチャパラメータを設定する必要があります。

フィクスチャ: このパラメータは、FindBlobs 関数の例の データ構造体で返された行座標および列座標へのセル参照として設定されています。このパラメータの設定値を選択すると、計測やソートは、常に画像内の指定された特徴を原点として行われるようになります。画像内の別の特徴 (エッジなど、点、ブロブなど) を使用することが可能です。例えば、この例では、FindBlobs 関数の例から返されたブロブは、フィクスチャ座標を設定するために使用されます。

表示: デフォルト設定を使用しました。このとき、下の例にあるように、ブロブデータ構造体を含むセルが選択されている場合だけ、結果のグラフィックスが表示されます。

SortBlobs プロパティシートの設定後、ブロブデータ構造体と閉じた結果データテーブルが生成されます。