Operator Library: Blob
Blob_Analysis_2D 運算子可偵測二進位影像中的物件並決定其 Property。此運算子的輸出為多個資料串流,分別代表各個物件的 Property。
![]() |
Blob_Analysis_2D 是一個傳統運算子 |
|---|---|
|
Blob_Analysis_2D 運算子是一個傳統運算子,保留它純粹是為了相容性考量。在庫存設計中,請改用 BlobDetector2D。 |
此運算子的功能可以在 VisualApplets 中完整模擬。不過請注意,輸出數值的順序可能與硬體實作不盡相同。
請務必先閱讀 blob 分析運算子的一般介紹(節 Library Blob)。
VisualApplets blob 分析運算子屬於少數處理速度(即頻寬)取決于影像內容的運算子。若影像中有許多物件,就會建立大型物件清單。這可能會導致運算子輸入變慢。不過,這僅適用於包含極強雜訊的影像。在受控條件下,運算子的速度應該足夠快。
此運算子以最低的延遲運作。輸入影像會逐行傳輸至 blob 分析。一旦某個物件完全傳輸至運算子中,運算子就會偵測物件完成並輸出物件特徵。因此,當影像本身仍在由運算子處理時,即可開始進行物件特徵的後端處理。
請注意,DMA 與其他一些運算子會等待訊框結束訊號後才會回報完成。訊框結束訊號會在輸入影像完成後產生。
blob 分析的 ImageI 輸入由二進位、二維影像(也就是 Bit Width 為 1 Bit、指定影像寬度以及指定影像高度的影像)表示。您可以選擇最高 32 個像素的 Parallelism。
運算子假設前景值的數值為 ONE,背景值的數值為 ZERO。請確保您在初步二值化過程中符合此要求。
每個輸出連接埠代表一個物件特徵 / 物件 Property。這些連接埠上的每個輸出數值代表一個物件。因此,每個物件 Property 會產生一個資料串流。輸出資料串流的長度等於影像中找到的物件數量。這些串流可以中斷為多個子訊框。每個輸出連接埠上的資料高度為 1 個像素,且具有特定的長度。輸出以灰階 2D 影像的形式呈現。
輸出連接埠是使用運算子參數與輸入的 Property 來設定的。無法直接變更連結 Property。
ErrorFlagsO 連接埠會輸出溢位的多個錯誤旗標。每個位元皆保留給特定的旗標。詳細說明請參閱下方的參數說明。下表總結了相關內容:
| Bit # | 描述 | 物件相關 | 備註 |
|---|---|---|---|
| 0, 1 | 標籤溢位 | 否 |
Blob 分析偵測到的物件過多,記憶體無法容納。若要增加兩行影像內的最大物件數量,可以變更運算子參數 "LabelBits"。 此旗標會在偵測到時設定,直至資料輸出訊框結束為止。目前已輸出的所有物件 Property 皆有效。 對於 Blob Analysis 1D 運算子,該旗標只會在下一個有效資料輸出時維持一個時脈週期的高等級狀態。 設定旗標之後,blob 分析的輸出可能會導致錯誤的物件 Property。如果有足夠的物件標籤可用,運算子將恢復正常功能。 |
| 2 | 輸出已截斷 | yes |
影像中的物件數量超過了運算子參數對話方塊中設定的最大輸出寬度。此旗標會與符合輸出寬度的最後一個物件一起設定。 |
| 3 | 物件大小超過最大值 | yes |
如果 1D Blob Analysis 的物件超過其最大高度,就會設定此旗標。運算子會將此超出大小的物件切割成較小的物件。接續的物件會標示此旗標,以便偵測切割情況。 對於 2D Blob Analysis,此旗標設為常數零。 |
| 4 | 區域已截斷 | yes |
物件面積連同錯誤旗標大於面積位元所允許的大小。 |
| 5 | 重心 X 已截斷 | yes |
X 方向的重心大於位元所允許的大小。 |
| 6 | 重心 Y 已截斷 | yes |
Y 方向的重心大於位元所允許的大小。 |
| 7 | 輪廓長度溢位 | yes |
輪廓長度大於為運算子所參數化的位元允許的大小。 |
表 39. Blob 錯誤旗標說明
| Property | Value |
|---|---|
| Operator Type | M |
| Input Link | I, data input |
| 輸出連結 | BoundingX0O, data output BoundingX1O, data output BoundingY0O, data output BoundingY1O, data output AreaO, data output CenterXO, data output CenterYO, data output ContourOrthoO, data output ContourDiaO, data output ErrorFlagsO, data output |
| label_bits | |
|---|---|
| Type | static parameter |
| Default | 7 |
| Range | [5, 31] |
|
此參數設定內部用於標記物件的位元數。它也會影響由 2^label_bits 決定的兩條影像行內可能共存的最大物件數。請注意,blob 分析所需的 Memory 資源幾乎會隨著每個額外位元而加倍。此參數的良好數值範圍在 7 到 9 位元之間,這對於幾乎所有應用來說都應該足夠。 如果偵測到此位址空間溢位,運算子會在連接埠 "ErrorFlagsO" 的第 0 和 1 位元輸出錯誤旗標。這些旗標會在偵測到溢位時設定,並在輸出畫格結束時重設。 |
|
| neighborhood | |
|---|---|
| Type | static parameter |
| Default | eight_connected |
| Range | {four_connected, eight_connected} |
|
選取 Object Detection 所需的鄰域。如需像素鄰域的詳細說明,請參閱 'Definition'。 |
|
| output_frame_size | |
|---|---|
| Type | static parameter |
| Default | specify_max_no_of_objects |
| Range | {maximum_required, specify_max_no_of_objects} |
|
理論上可能填滿影像的最大物件數為:輸入影像寬度 * 輸入影像高度 / 2(等於使用 4-connected 鄰域的棋盤圖案)。這種圖案不太可能發生。因此,您可以透過此參數設定影像中的最大物件數。 |
|
| max_output_frame_size | |
|---|---|
| Type | static parameter |
| Default | 65536 |
| Range | [1, 67108864] |
|
選擇輸出的最大物件數量。任何由斑點分析(blob analysis)偵測到的超出數量的物件將會被捨棄。不過,在連接埠「ErrorFlagsO」上,會在第 2 個 bit 設定一個錯誤旗標。此旗標會與最後一個有效的物件一同設定。如果「ouput_frame_size」設為「maximum_required」,則此參數會停用。 |
|
| bounding_box_x0 | |
|---|---|
| Type | static parameter |
| Default | used |
| Range | {used, not_used} |
|
邊界方框(bounding box)表示適合包覆該物件的最小軸平行矩形。每個座標值皆相對於影像的左上角。Bounding Box X0 表示每個物件的最低 x 座標。它會輸出於「BoundingX0O」。Bit Width 由輸入影像決定。如果未使用邊界方框,則 Bit Width 會設為一個 bit,且其輸出為固定的 0。 |
|
| bounding_box_x1 | |
|---|---|
| Type | static parameter |
| Default | used |
| Range | {used, not_used} |
|
邊界方框(bounding box)表示適合包覆該物件的最小軸平行矩形。每個座標值皆相對於影像的左上角。Bounding Box X1 表示每個物件的最高 x 座標。它會輸出於「BoundingX1O」。Bit Width 是由輸入影像決定。如果未使用邊界方框,則 Bit Width 會設為一個 bit,且其輸出為固定的 0。 |
|
| bounding_box_y0 | |
|---|---|
| Type | static parameter |
| Default | used |
| Range | {used, not_used} |
|
邊界方框(bounding box)表示適合包覆該物件的最小軸平行矩形。每個座標值皆相對於影像的左上角。Bounding Box Y0 表示每個物件的最低 y 座標。它會輸出於「BoundingY0O」。Bit Width 由輸入影像決定。如果未使用邊界方框,則 Bit Width 會設為 1,且其輸出為固定的 0。 |
|
| bounding_box_y1 | |
|---|---|
| Type | static parameter |
| Default | used |
| Range | {used, not_used} |
|
邊界方框(bounding box)表示適合包覆該物件的最小軸平行矩形。每個座標值皆相對於影像的左上角。Bounding Box Y1 表示每個物件的最高 y 座標。它會輸出於「BoundingY1O」。Bit Width 由輸入影像決定。如果未使用邊界方框,則 Bit Width 會設為一個 bit,且其輸出為固定的 0。 |
|
| area_mode | |
|---|---|
| Type | static parameter |
| Default | use_area_with_maximum_required_bits |
| Range | {area_not_used, use_area_with_maximum_required_bits, use_area_with_specified_bits} |
|
物件的面積定義為所有物件前景像素的總和。此參數用於選擇所需的面積模式。若選擇「use_area_with_maximum_required_bits」,運算子會自動決定物件可能的最大尺寸所需的 bit。物件可能的最大尺寸取決於輸入連接鏈 I 處的最大寬度與高度。當影像的所有像素皆由前景值組成(即整個白色輸入影像為一個大物件時),即可達到物件的理論最大值。 如果使用者能確信物件的面積不會大於指定的值,則可以進行此參數設定。如果已知最大物件尺寸,請選擇「use_area_with_specified_bits」。使用「area_bits」參數來指定 bit 數量。如果完全不需要面積,請選擇「area_not_used」。在「area_not_used」模式下,Bit Width 會設為 1,且其輸出為固定的 0。 |
|
| area_bits | |
|---|---|
| Type | static parameter |
| Default | not_used |
| Range | {not_used, used} |
|
此參數僅在「area_mode」參數設為「use_area_with_specified_bits」時啟用。如果物件面積大於所選 bit 允許的大小,斑點分析將會在輸出連接埠「ErrorFlagsO」的第 4 個 bit 輸出一個溢位旗標。 |
|
| center_of_gravity_x_mode | |
|---|---|
| Type | static parameter |
| Default | use_cX_with_maximum_required_bits |
| Range | {cX_not_used, use_cX_with_maximum_required_bits, use_cX_with_specified_bits} |
|
有關重心的說明,請參閱 'Center of Gravity'。 請注意,進行 blob 分析後,必須將輸出除以面積以獲得正確的結果。 如果參數設為 "use_cX_width_maximum_required_bits",運算子將自動決定輸出位元數。如果使用大型輸入影像,所需的位元數可能會非常高。 如果參數值使用 "use_cX_with_specified_bits",則位元數是可以調整的。 如果不需要 x 方向的重心,可以透過選擇 "cX_not_used" 來關閉。 |
|
| center_of_gravity_x_bits | |
|---|---|
| Type | static parameter |
| Default | 29 |
| Range | [2, auto] |
|
如果 "center_of_gravity_x_mode" 設為 "use_cX_with_specified_bits",則可以在此變更位元。否則,此參數將會停用。 |
|
| center_of_gravity_x_overflow_flag | |
|---|---|
| Type | static parameter |
| Default | not_used |
| Range | {not_used, used} |
|
如果手動設定 x 方向重心的位元數,此參數將會啟用並可設為 "used"。如果偵測到溢位,運算子將在輸出連線 "ErrorFlagsO" 的第 5 個位元輸出 1。 |
|
| center_of_gravity_y_mode | |
|---|---|
| Type | static parameter |
| Default | use_cY_with_maximum_required_bits |
| Range | {cY_not_used, use_cY_with_maximum_required_bits, use_cY_with_specified_bits} |
|
有關重心的說明,請參閱 'Center of Gravity'。 請注意,進行 blob 分析後,必須將輸出除以面積以獲得正確的結果。 如果參數設為 "use_cY_width_maximum_required_bits",運算子將自動決定輸出位元數。如果使用大型輸入影像,所需的位元數可能會非常高。 如果參數值使用 "use_cY_with_specified_bits",則位元數是可以調整的。 如果不需要 y 方向的重心,可以透過選擇 "cY_not_used" 來關閉。 |
|
| center_of_gravity_y_bits | |
|---|---|
| Type | static parameter |
| Default | 29 |
| Range | [2, auto] |
|
如果 "center_of_gravity_y_mode" 設為 "use_cY_with_specified_bits",則可以在此變更位元。否則,此參數將會停用。 |
|
| center_of_gravity_y_overflow_flag | |
|---|---|
| Type | static parameter |
| Default | not_used |
| Range | {not_used, used} |
|
如果手動設定 y 方向重心的位元數,此參數將會啟用並可設為 "used"。如果偵測到溢位,運算子將在輸出連線 "ErrorFlagsO" 的第 6 個位元輸出 1。 |
|
| contour_length_mode | |
|---|---|
| Type | static parameter |
| Default | contour_length_not_used |
| Range | {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 | |
|---|---|
| Type | static parameter |
| Default | 16 |
| Range | [1, 31] |
|
如果將 "contour_length_mode" 設為 "contour_length_used",則可在此處選擇表示正交連接像素之輪廓長度所需的位元。 |
|
| contour_length_bits_diagonal_connected | |
|---|---|
| Type | static parameter |
| Default | 16 |
| Range | [1, 31] |
|
如果將 "contour_length_mode" 設為 "contour_length_used",則可在此處選擇表示對角連接像素之輪廓長度所需的位元。這只有在選取 8-connceted 鄰域時才可能。否則,此參數將會停用。 |
|
| contour_length_overflow_flag | |
|---|---|
| Type | static parameter |
| Default | not_used |
| Range | {not_used, used} |
|
輪廓長度可能會導致溢位。如果使用此旗標,若發生溢位,將會在連接埠 "ErrorFlagsO" 的第 7 位元設定一個錯誤旗標。 |
|
以下範例顯示了 Blob_Analysis_2D 運算子的使用方式:
-
範例 - 顯示 operator Blob_Analysis_2D 的用法。 此 applet 會將輸入資料進行二值化並判定 Blob 分析結果。 結果以及原始影像會透過兩個 DMA 通道輸出。
-
範例 - 將 blob 分析運算子套用至輸入相機影像。 此 applet 顯示了 applet 中 blob 資料的使用方式。 在此情況下,會定位出具有最大面積的物件,並使用其座標從原始影像中裁切出該物件。
-
'imaFlex CXP-12 平台上的 FrameBufferMultRoiDyn Operator 功能範例'
範例 - 如何使用此運算子的示範
-
「列印檢查範例 - 使用 Blob Based Template Matching 進行位置校正與缺陷檢測」
範例 - 幾何轉換與缺陷檢測
-
Examples- Geometric Transformation and Defect Detection Using Image Moments

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



















上一頁

