オペレーターライブラリ: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 の説明
| Property | 値 |
|---|---|
| オペレータータイプ | M |
| Input Link | I, data input |
| Output Links | BoundingX0O、データ出力 BoundingX1O、データ出力 BoundingY0O、データ出力 BoundingY1O、データ出力 AreaO、データ出力 CenterXO、データ出力 CenterYO、データ出力 ContourOrthoO、データ出力 ContourDiaO、データ出力 ErrorFlagsO、データ出力 |
| 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 の使用方法を以下の例に示します。
-
Examples - オペレーター Blob_Analysis_2D の使用方法を示します。 アプレットは入力データを二値化し、ブロブ解析結果を求めます。結果および元画像は、2つのDMAチャネルを使用して出力されます。
-
例 - ブロブ解析オペレーターが入力カメラ画像に適用されます。 このアプレットは、アプレット内でのブロブデータの使用方法を示しています。 このケースでは、最大面積を持つオブジェクトが特定され、その座標を使用して元の画像からオブジェクトが切り出されます。
-
'imaFlex CXP-12 プラットフォームでの FrameBufferMultRoiDyn オペレーターの機能例'
使用例 - オペレーターの使用方法のデモ
-
「印刷検査の例 - Blob ベースの Template Matching を使用した位置補正と欠陥検出」
使用例 - 幾何学的変換と欠陥検出
-
Examples- Geometric Transformation and Defect Detection Using Image Moments

![[注]](../common/images/admon/note.png)



















前へ

