Operator Blob_Analysis_2D

オペレーターライブラリ:Blob

Blob_Analysis_2D オペレータは、二値画像内のオブジェクトを検出し、そのプロパティを決定します。このオペレータの出力は、各オブジェクトのプロパティを表す複数のデータストリームです。

[注] Blob_Analysis_2Dはレガシーオペレータです。

Blob_Analysis_2Dオペレータはレガシーオペレータであり、下位互換性を維持する目的でのみ残されています。新しい設計では、代わりにBlobDetector2Dを使用してください。

このオペレータの機能は、VisualAppletsで完全にシミュレートできます。ただし、出力値の順序がハードウェア実装と一致しない場合があることに注意してください。

まず、ブロブ解析オペレータに関する一般的なイントロダクション(セクションLibrary Blob)を必ずお読みください。

パフォーマンス

VisualAppletsのブロブ解析オペレータは、処理速度(つまり帯域幅)が画像コンテンツに依存する数少ないオペレータの1つです。画像内に多数のオブジェクトが存在する場合、大きなオブジェクトリストが作成されます。これにより、オペレータの入力が遅くなる可能性があります。ただし、これは非常に強いノイズを含む画像にのみ適用されます。制御された条件下では、オペレータは十分な速度で動作するはずです。

レイテンシー

このオペレータは最小限のレイテンシで動作します。入力画像は行ごとにブロブ解析に転送されます。オブジェクトがオペレータに完全に転送されるとすぐに、オペレータはオブジェクトの完了を検出し、オブジェクトのフィーチャを出力します。したがって、画像自体の処理がオペレータによって継続されている間に、オブジェクトフィーチャの後処理を開始できます。

DMAおよびその他のいくつかのオペレータは、完了を報告する前にフレーム終了信号を待機することに注意してください。フレーム終了信号は、入力画像の処理が完了したときに生成されます。

入力ポート

ブロブ解析の ImageI 入力は、二値の2次元画像、つまり、Bit Widthが1 Bitで、指定された画像幅と指定された画像高さを持つ画像によって表されます。最大32ピクセルの Parallelism を選択できます。

このオペレータは、前景色が値 ONE を持ち、背景色が値 ZERO を持つことを前提としています。事前の二値化処理において、この要件を満たしていることを確認してください。

出力ポート

各出力ポートは1つのオブジェクトフィーチャ / オブジェクトプロパティを表します。これらのポートにおける各出力値は1つのオブジェクトを表します。したがって、各オブジェクトプロパティは1つのデータストリームになります。出力データストリームの長さは、画像内で見つかったオブジェクトの数と等しくなります。ストリームは複数のサブフレームに分割できます。各出力ポートのデータは、高さ1ピクセルと特定の長さを持ちます。出力は、グレースケール2D画像の形式で表されます。

出力ポートは、オペレータのパラメータと入力のプロパティを使用して設定されます。リンクプロパティを直接変更することはできません。

port ErrorFlagsO は、オーバーフローに関するいくつかのエラーフラグを出力します。各ビットは特別なフラグ用に予約されています。詳細な説明は以下のパラメータ説明に記載されています。概要は次の表のとおりです。

Bit # 説明 オブジェクト関連 注意事項
0, 1 ラベルオーバーフロー いいえ

Blob Analysis は、メモリに保存するには多すぎるオブジェクトを検出しました。2 つの画像ライン内のオブジェクトの最大数を増やすには、オペレーターパラメータ「LabelBits」を変更できます。

このフラグは、検出されてからデータ出力フレームの終わりまで設定されます。これまでに出力されたすべてのオブジェクト Property は有効です。

Blob Analysis 1D オペレーターの場合、このフラグは、次の有効なデータ出力とともに、1 クロックサイクルの間だけハイレベル状態になります。

フラグが設定された後、ブロブ解析の出力によって誤ったオブジェクト Property が生成される可能性があります。十分なオブジェクトラベルが利用可能な場合、オペレーターは正しい機能に戻ります。

2 出力の切り捨て はい

画像内のオブジェクト数が、オペレーターパラメータダイアログで設定された最大出力幅を超えています。このフラグは、出力幅に収まる最後のオブジェクトとともに設定されます。

3 オブジェクトサイズが最大を超えています はい

1D Blob Analysis のオブジェクトが最大高さを超えた場合に、このフラグが設定されます。オペレーターはこの超えたオブジェクトをより小さなオブジェクトに分割します。継続するオブジェクトには、分割の検出を可能にするためにフラグが付けられます。

2D Blob Analysisの場合、フラグは常にゼロに設定されます。

4 面積が切り捨てられます はい

オブジェクトの面積がエラーフラグとともに、面積ビットで許容されるサイズを超えています。

5 重心Xが切り捨てられます はい

X方向の重心が、ビットで許容されるサイズを超えています。

6 重心Yが切り捨てられます はい

Y方向の重心が、ビットで許容されるサイズを超えています。

7 輪郭長がオーバーフローしました はい

輪郭長が、オペレーターでパラメータ設定されたビットの許容範囲を超えています。

表 39:Blob Error Flags の説明


I/O Property

Property 値
オペレータータイプ M
Input Link I, data input
Output Links BoundingX0O、データ出力
BoundingX1O、データ出力
BoundingY0O、データ出力
BoundingY1O、データ出力
AreaO、データ出力
CenterXO、データ出力
CenterYO、データ出力
ContourOrthoO、データ出力
ContourDiaO、データ出力
ErrorFlagsO、データ出力

サポートされているリンクフォーマット

Link Parameter Input Link I 出力リンク BoundingX0O 出力リンク BoundingX1O 出力リンク BoundingY0O 出力リンク BoundingY1O 出力リンク AreaO 出力リンク CenterXO 出力リンク CenterYO Output Link ContourOrthoO Output Link ContourDiaO Output Link ErrorFlagsO
Bit Width 1 auto1 auto2 auto3 auto4 auto5 auto6 auto7 auto8 auto9 8
Arithmetic unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned unsigned
Parallelism {1, 2, 4, 8, 16, 32} 1 1 1 1 1 1 1 1 1 1
Kernel Columns 1 1 1 1 1 1 1 1 1 1 1
Kernel Rows 1 1 1 1 1 1 1 1 1 1 1
Img Protocol VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D VALT_IMAGE2D
Color Format VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY VAF_GRAY
Color Flavor FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE FL_NONE
Max. Img Width any auto10 auto11 auto12 auto13 auto14 auto15 auto16 auto17 auto18 auto19
Max. Img Height any 1 1 1 1 1 1 1 1 1 1

1 2 12 4 5 6 7 8 9

出力 Bit Width は、オブジェクトフィーチャのパラメータ設定によって異なります。フィーチャが無効になっている場合、出力は常に値がゼロの 1 ビットに設定されます。

10 11 12 13 14 15 16 17 18 19

出力の最大画像幅は、パラメータ output_frame_size の設定によって異なります。

パラメーター

label_bits
タイプ static パラメータ
Default 7
範囲 [5, 31]

このパラメータは、オブジェクトの内部的なラベリングに使用されるビット数を設定します。また、2^label_bits によって決定される、2 つの画像行内で共存できるオブジェクトの最大数にも影響します。ブロブ解析に必要な Memory リソースは、ビットが 1 つ追加されるごとにほぼ倍増することに注意してください。このパラメータの適切な値の範囲は 7 ~ 9 ビットであり、ほぼすべてのアプリケーションで十分なはずです。

このアドレス空間のオーバーフローが検出された場合、オペレータはポート「ErrorFlagsO」のビット 0 および 1 にエラーフラグを出力します。これらのフラグは、オーバーフローの検出時に設定され、出力フレームの終了時にリセットされます。

neighborhood
タイプ static パラメータ
Default eight_connected
範囲 {four_connected, eight_connected}

Object Detectionに必要な近傍を選択します。ピクセル近傍の詳細な説明については、'Definition'を参照してください。

output_frame_size
タイプ static パラメータ
Default specify_max_no_of_objects
範囲 {maximum_required, specify_max_no_of_objects}

理論上、画像内に存在し得るオブジェクトの最大数は、入力画像幅 * 入力画像高さ / 2(4近傍を使用したチェッカーパターンに相当)です。このパターンは非常にまれです。そのため、このパラメータを介して画像内のオブジェクトの最大数を設定できます。

max_output_frame_size
タイプ static パラメータ
Default 65536
範囲 [1, 67108864]

出力でのオブジェクトの最大数を選択します。ブロブ解析によって検出されたこれより多いオブジェクトは破棄されます。ただし、「ErrorFlagsO」ポートでは、ビット2のエラーフラグが設定されます。このフラグは、最後のエラーのない有効なオブジェクトと一緒に設定されます。「ouput_frame_size」が「maximum_required」に設定されている場合、このパラメータは無効になります。

bounding_box_x0
タイプ static パラメータ
Default used
範囲 {used, not_used}

バウンディングボックスは、オブジェクトに適合する最小の軸平行矩形を表します。各座標値は画像の左上隅からの相対値です。Bounding box X0 は、各オブジェクトの最も低い x 座標を表します。これは "BoundingX0O" から出力されます。Bit Width は入力画像によって決定されます。バウンディングボックスを使用しない場合、Bit Width は出力で定数ゼロの1ビットに設定されます。

bounding_box_x1
タイプ static パラメータ
Default used
範囲 {used, not_used}

バウンディングボックスは、オブジェクトに適合する最小の軸平行矩形を表します。各座標値は画像の左上隅からの相対値です。Bounding box X1 は、各オブジェクトの最も高い x 座標を表します。これは "BoundingX1O" から出力されます。Bit Width は入力画像から決定されます。バウンディングボックスを使用しない場合、Bit Width は出力で定数ゼロの1ビットに設定されます。

bounding_box_y0
タイプ static パラメータ
Default used
範囲 {used, not_used}

バウンディングボックスは、オブジェクトに適合する最小の軸平行矩形を表します。各座標値は、画像の左上隅からの相対値です。バウンディングボックス Y0 は、各オブジェクトの最も低い y 座標を表します。これは「BoundingY0O」に出力されます。 Bit Widthは入力画像から決定されます。バウンディングボックスを使用しない場合、 Bit Widthは1に設定され、出力には定数ゼロが出力されます。

bounding_box_y1
タイプ static パラメータ
Default used
範囲 {used, not_used}

バウンディングボックスは、オブジェクトに適合する最小の軸平行矩形を表します。各座標値は、画像の左上隅からの相対値です。バウンディングボックス Y1 は、各オブジェクトの最も高い y 座標を表します。これは「BoundingY1O」に出力されます。 Bit Widthは入力画像から決定されます。バウンディングボックスを使用しない場合、 Bit Widthは1に設定され、出力には定数ゼロが出力されます。

area_mode
タイプ static パラメータ
Default use_area_with_maximum_required_bits
範囲 {area_not_used, use_area_with_maximum_required_bits, use_area_with_specified_bits}

オブジェクトの面積は、すべてのオブジェクトの前景ピクセルの合計によって定義されます。このパラメータは、必要な面積モードを選択するために使用されます。「use_area_with_maximum_required_bits」が選択されている場合、オペレータはオブジェクトの最大可能なサイズに必要なビット数を自動的に決定します。オブジェクトの最大可能なサイズは、入力リンク I の最大幅と高さによって異なります。オブジェクトの理論上の最大値は、画像のすべてのピクセルが前景色で構成されている場合、つまり、1つの大きなオブジェクトである白い入力画像の場合に達成されます。

オブジェクトの面積が指定された値より大きくならないことが確実である場合は、これをパラメータ化できます。最大オブジェクトサイズが既知の場合は、「use_area_with_specified_bits」を選択します。パラメータ「area_bits」を使用してビット数を指定します。面積がまったく必要ない場合は、「area_not_used」を選択します。「area_not_used」モードでは、Bit Width は出力で定数ゼロの1に設定されます。

area_bits
タイプ static パラメータ
Default not_used
範囲 {not_used, used}

このパラメータは、パラメータ "area_mode" が "use_area_with_specified_bits" に設定されている場合にのみ有効になります。オブジェクトの面積が、選択したビットで許容されるサイズよりも大きい場合、ブロブ解析は出力リンク "ErrorFlagsO" のビット番号 4 でオーバーフローフラグを出力します。

center_of_gravity_x_mode
タイプ static パラメータ
Default use_cX_with_maximum_required_bits
範囲 {cX_not_used, use_cX_with_maximum_required_bits, use_cX_with_specified_bits}

重心の説明については、'Center of Gravity'を参照してください。

正しい結果を得るには、ブロブ解析後に出力結果を面積で割る必要があることに注意してください。

パラメータが「use_cX_width_maximum_required_bits」に設定されている場合、オペレータは自動的に出力ビット数を決定します。大きな入力画像を使用する場合、必要なビット数が非常に多くなることがあります。

パラメータ値に「use_cX_with_specified_bits」を使用している場合、ビット数を調整可能です。

x方向の重心が不要な場合は、「cX_not_used」を選択して無効にすることができます。

center_of_gravity_x_bits
タイプ static パラメータ
Default 29
範囲 [2, auto]

「center_of_gravity_x_mode」に「use_cX_with_specified_bits」が設定されている場合、ここでビットを変更できます。それ以外の場合、このパラメータは無効になります。

center_of_gravity_x_overflow_flag
タイプ static パラメータ
Default not_used
範囲 {not_used, used}

x方向の重心のビット数を手動で設定した場合、このパラメータが有効になり、「used」に設定できます。オーバーフローが検出された場合、オペレータは出力リンク「ErrorFlagsO」のビット番号5に「1」を出力します。

center_of_gravity_y_mode
タイプ static パラメータ
Default use_cY_with_maximum_required_bits
範囲 {cY_not_used, use_cY_with_maximum_required_bits, use_cY_with_specified_bits}

重心の説明については、'Center of Gravity'を参照してください。

正しい結果を得るには、ブロブ解析後に出力結果を面積で割る必要があることに注意してください。

パラメータが「use_cY_width_maximum_required_bits」に設定されている場合、オペレータは自動的に出力ビット数を決定します。大きな入力画像を使用する場合、必要なビット数が非常に多くなることがあります。

パラメータ値に「use_cY_with_specified_bits」を使用している場合、ビット数を調整可能です。

y方向の重心が不要な場合は、「cY_not_used」を選択して無効にすることができます。

center_of_gravity_y_bits
タイプ static パラメータ
Default 29
範囲 [2, auto]

「center_of_gravity_y_mode」に「use_cY_with_specified_bits」が設定されている場合、ここでビットを変更できます。それ以外の場合、このパラメータは無効になります。

center_of_gravity_y_overflow_flag
タイプ static パラメータ
Default not_used
範囲 {not_used, used}

y方向の重心のビット数を手動で設定した場合、このパラメータが有効になり、「used」に設定できます。オーバーフローが検出された場合、オペレータは出力リンク「ErrorFlagsO」のビット番号6に「1」を出力します。

contour_length_mode
タイプ static パラメータ
Default contour_length_not_used
範囲 {contour_length_not_used, contour_length_used}

オブジェクトの輪郭長には、穴の部分も含め、すべてのエッジが含まれます。詳細な説明については、「Contour Length」を参照してください。

この機能を選択した場合、選択した近傍に応じて、必要なビットをパラメータ「contour_length_bits_orthogonal_connected」および「contour_length_bits_diagonal_connected」で選択できます。4近傍を選択した場合、輪郭長は直交方向でのみ決定できます。8近傍を選択した場合、輪郭長は直交方向と対角方向の両方で決定されます。

contour_length_bits_orthogonal_connected
タイプ static パラメータ
Default 16
範囲 [1, 31]

「contour_length_mode」が「contour_length_used」に設定されている場合、直交接続されたピクセルの輪郭長を表すために必要なビットをここで選択できます。

contour_length_bits_diagonal_connected
タイプ static パラメータ
Default 16
範囲 [1, 31]

「contour_length_mode」が「contour_length_used」に設定されている場合、対角接続されたピクセルの輪郭長を表すために必要なビットをここで選択できます。これは、8近傍が選択されている場合にのみ可能です。それ以外の場合、このパラメータは無効になります。

contour_length_overflow_flag
タイプ static パラメータ
Default not_used
範囲 {not_used, used}

輪郭長によりオーバーフローが発生する可能性があります。このフラグを使用すると、オーバーフローが発生した場合にポート "ErrorFlagsO" のビット番号 7 にエラーフラグが設定されます。

使用例

オペレータ Blob_Analysis_2D の使用方法を以下の例に示します。