Operator Library: Blob
BlobDetector2D 運算子可用於偵測二進位影像中的物件並決定其屬性。此運算子的輸出為多個資料串流,代表每個物件的屬性。
此 operator 的功能可在 VisualApplets 中 完全模擬。
另請參閱 Library Blob 的簡介。
BlobDetector2D 支援 BoundingBox、Area 以及 Center of Gravity X 和 Y 功能。
![]() |
Center of Gravity X and Y 並非 operator 的 直接輸出 |
|---|---|
|
輸出連接埠 CenterX 與 CenterY 實際上提供的是影像矩陣 M10 (CenterX) 與 M01 (CenterY)。若要擷取物件的重心, 您必須將矩陣除以擷取的面積:
|
運算子會逐行處理輸入的影像。由於運算子 無法預測未來,因此稍後連接的區域一開始可能會顯示為獨立的區域。因此,在此文字中,單行內相連的像素稱為 物件構件 (object artifacts)。BlobDetector2D 運算子會檢查這些物件構件是否與下一行的其他物件構件重疊。這是為了 判斷這些物件是否真為獨立,或是屬於更大物件的一部分。運算子可處理的 物件構件最大數量由 LabelCount 參數定義。若物件構件的數量超過 LabelCount 的值,將會遺失資料且物件結果的完整性 將不再維持。這稱為內容 損毀 (context corruption)。遺失資料的那一行會以 ErrorFlag 可識別的 Line Error 虛擬物件進行標記。受損內容中的所有後續物件都會被標記為此狀態。 一旦內容在影格結束時或透過重新啟動小程式而自動重設,內容損毀即會結束。所有錯誤旗標均列於 'Output Ports' 一節中。
在大多數情況下,防止內文損毀所需的標籤數量 等於行內的最大物件構件數量。 對於 neighborhood = 4 和 neighborhood = 8,所需的精確標籤數量 略有不同:
-
對於 neighborhood = 4,防止內文損毀所需的標籤數量 等於線條 N 位置 X 的任何像素與 線條 N+1 位置 X 的像素之間的 最大物件構件數量。
-
對於 neighborhood = 8,防止內文損毀所需的標籤數量 等於線條 N 位置 X 的任何像素與 線條 N+1 位置 X+1 的像素之間的 最大物件構件數量。
如果您不確定所選的標籤數量是否足以應付您的 使用情境,請在模擬中進行檢查。
具現化 BlobDetector2D 模組時,您可以 定義要建立哪些輸出連接埠。透過啟用/停用連接埠, 對應的功能也會自動啟用/停用。確認 這些連接埠後,您將無法再進行變更。如果您需要其他輸出連接埠,則必須 具現化另一個 BlobDetector2D 模組。
blob 偵測器 operator 屬於少數處理速度( 亦即頻寬)取決於影像內容的 operator。這些 operator 最適合用於 在內聚行內前景與背景像素變化很少的影像。 因此,雜訊或多行中的大量物件構件會 明顯降低資料傳輸量。然而,這僅適用於包含 非常強烈雜訊的影像。
運算子透過逐行處理輸入影像,以最低的延遲運作。 一旦物件的結尾變得明確,運算子就會立即輸出物件特徵。 因此,物件的輸出會發生在其結束的同一行中。 這使得在運算子仍在處理影像本身的同時, 能夠對已完成的物件特徵進行後續處理。
請注意,DMA 和其他一些運算子會等待影格結束信號 才回報完成。影格結束信號會在處理完 輸入影像的最後一行後產生。
運算子的資源消耗取決於啟用的功能、用於功能的 Bit Width 數量以及所選的標籤數量。因此,Basler 建議停用不需要的功能,並在設定 LabelCount 參數時保持謹慎。
![]() |
部分停用 Bounding Box 連接埠無法節省資源 |
|---|---|
|
Bounding box 具有多個輸出連接埠,因此只有在其 所有 連接埠都停用時,該功能才會停用。部分停用 bounding box 連接埠並不能節省資源。 |
![]() |
手動設定最大值可節省資源 |
|---|---|
|
為了節省資源並改善設計的處理方式,如果您知道要偵測的物件的最大值,Basler 建議手動設定連結的 bit widths。 |
Blob 偵測器的 ImageI 輸入預期為 二進位 (像素 bit width 為 1)、2D 影像。運算子支援輸入 影像內的不同行長度,以及空行和空影格。
運算子假設前景值的is ONE,背景值的is ZERO。請確保您在初步二值化過程中符合此要求。
輸出以 VALT_IMAGE2D 影像格式呈現。每個 輸出連接埠代表一個物件特徵/物件屬性。它們是同步的 且共同描述單一物件。每個輸出像素提供 已完成物件或錯誤狀態物件的值。此輸出是 擷取的物件還是錯誤狀態物件,由 ErrorFlagsO 輸出連接埠指示。 代表物件的像素會出現在完成物件的同一行中。 它們會依完成順序輸出。例如,兩個物件在第 10 行結束。 物件 A 的最後一個像素具有 X 座標 42,物件 B 的最後一個像素具有 X 座標 97。因此,物件 A 是運算子輸出連接埠上的第一個像素,物件 B 是 第二個像素。未完成任何物件且未發生錯誤的行 為空白。
輸出連接埠的寬度會根據給定的輸入格式自動調整,以防止特徵資料溢位。或者,您可以手動設定輸出連接埠的寬度。如果您已在運算子 properties 中啟用它們,則可針對 Area / CenterX / CenterY 進行 link bit widths 的手動設定。
ErrorFlagsO 連接埠會輸出用於溢位或額外資訊標籤的多個錯誤旗標。每個位元都保留給特定的旗標。您可以在硬體的執行環境中或在模擬中查看這些錯誤旗標。若要在模擬中查看這些錯誤旗標:
-
將模擬探針新增至 BlobDetector2D 的 ErrorFlagsO 連接埠。
-
將導致溢位的影像新增至模擬中。
-
執行模擬。
-
開啟輸出連接埠的 。
-
捲動至您要檢查的像素,放大以查看像素值,並將像素值設定為 :
-
十六進位值中的有效位元表示有關您的 blob 物件的不同錯誤或狀態資訊。如需詳細資訊,請查看下表。
您可以在下方的參數說明中找到有關錯誤旗標的詳細說明。下表概述了相關內容:
| Bit # | 描述 | 備註 |
|---|---|---|
| 0 | Area Overflow |
物件的 Area 值在其處理歷史中的某個時間點 超過了提供的輸出 bit width。 |
| 1 | CenterX Overflow |
物件的 CenterX 值(影像動差 M10)在其處理歷史記錄中的某個時間點超過了提供的輸出 Bit Width。 |
| 2 | CenterY Overflow |
物件的 CenterY 值(影像動差 M01)在其處理歷史記錄中的某個時間點超過了提供的輸出 Bit Width。 |
| 3, 4 | 保留 |
保留供未來擴充使用。 |
| 5 | Line Error |
表示一個虛擬物件,它標記了一個行,該行中發生的物件偽影數量超過了所選標籤數量的處理能力。可用 Memory 不足以處理更多傳入的資料。 由於這是一個虛擬物件,其他連接埠上的特徵資料值不包含任何有用的資料。雖然特徵值在模擬中顯示為 0,但在硬體中它們可以是任何值。由於較低的 ErrorBits 7-0 與啟用的特徵及其值綁定,這些旗標在硬體中也可能與模擬有所不同。 如果此錯誤旗標存在,它始終是一行的第一個物件輸出。 |
| 6 | ContextCorruption |
產生的物件偽影超過了所選標籤數量的處理能力。可用 memory 不足以處理所有傳入的資料。無法保證被標記物件的完整性。 運算子會在影格結束或重新啟動擷取時 恢復正常功能。後續影像的處理 不會受到先前內容損毀的任何影響。 |
表 37. Blob 錯誤旗標說明
| Property | Value |
|---|---|
| Operator Type | M |
| Input Link | ImageI,資料輸入 |
| 輸出連結 | BoundingX0O, 資料輸出 BoundingX1O, 資料輸出 BoundingY1O, 資料輸出 BoundingHeightO, 資料輸出 AreaO, 資料輸出 CenterXO, 資料輸出 CenterYO, 資料輸出 ErrorFlagsO, 資料輸出 |
|
Bit Width 基於 ImageI 鏈路的輸入最大圖像寬度。計算方式為 |
|
|
bit width 是根據 ImageI
連結的輸入最大影像高度而定。其計算方式為 |
|
|
bit width 是根據 ImageI
連結的輸入最大影像高度而定。其計算方式為 |
|
|
透過參數 AreaBitWidthMode、CenterXBitWidthMode 和 CenterYBitWidthMode,您可以選擇是要手動設定鏈路還是使用自動模式。如果您手動編輯鏈路,允許的範圍為 [1, 48]。 |
|
|
最大影像寬度等於參數 LabelCount + 1。 |
| LabelCount | |
|---|---|
| Type | static parameter |
| Default | 100 |
| Range | [1, (max. Img Width(Input Link I) / 2 + 2] |
|
為了在內部追蹤部分物件,此參數設定可用 標籤的數量。它也會影響一行中可能輸出的 物件最大數量。請注意,BlobDetector2D 運算子所需的資源取決於標籤數量。 此參數的良好數值範圍在 100 到 500 之間, 這對於大多數應用程式來說應該足夠。 如果發生的部分物件多於所選的標籤,則資料會遺失, 且影格的內容會受損。在此情況下,輸出連結 ErrorFlagsO 的第 6 位元為 '1',以 表示提供的資料不再可靠。錯誤位元在偵測到 資料遺失時設定,並在輸出影格結束時重設。 |
|
| Neighborhood | |
|---|---|
| Type | static parameter |
| Default | EightConnected |
| Range | {FourConnected, EightConnected} |
|
此參數選擇物件偵測所需的 Neighborhood。有關像素鄰域的詳細說明,請參閱 'Definition'。 |
|
| AreaBitWidthMode | |
|---|---|
| Type | static parameter |
| Default | AutomaticFrameMaximum |
| Range | {AutomaticFrameMaximum, LinkManuallyEditable} |
|
物體的面積由所有物體前景像素的總和定義。 如果選取了 AutomaticContextMaximum, 運算子會自動設定物件最大大小的位元。 物件可能的最大大小取決於輸入連結 I 處的 最大寬度和高度。當影像的所有像素都由 前景值組成時(即一個大型物件的白色輸入影像), 即可達到物件的理論最大面積。 如果最大可能的 CenterX(影像 矩陣 M10)值已知,或者只有特定 X 座標的物件 受關注,Basler 建議使用 LinkManuallyEditable 模式。這可以節省資源並縮短整個設計的建置時間。 在 LinkManuallyEditable 模式下,您可以在 [1, 48] 的允許範圍內編輯連結的 bit width 屬性。 連結的 bit width 直接轉化為內部用於 計算 Area 特徵的 bit width,因此會 影響整體資源消耗。 如果 bit width 不足以應付物件的 Area 值,將會由 ErrorFlagO 連結(第 0 位元)指出。 |
|
| CenterXBitWidthMode | |
|---|---|
| Type | static parameter |
| Default | AutomaticFrameMaximum |
| Range | {AutomaticFrameMaximum, LinkManuallyEditable} |
|
請參閱「Center of Gravity」以了解 Center of Gravity 功能的說明。 請注意,輸出為影像矩陣 M10。若要接收 中心點 X 的像素座標,請使用 DIV 運算子,或在主機 PC 上將此值除以面積。 如果您設定了 AutomaticContextMaximum,運算子將自動設定輸出位元。物件的最大可能大小取決於輸入連結 I 處的最大寬度和高度。物件的理論最大 CenterX 值是在影像的所有像素都由前景值組成時達到,亦即一個構成大型物件的白色輸入影像。如果使用大型輸入影像,CenterXO 連結的 Bit Width 可能會非常高。 如果最大可能的 CenterX(影像動量 M10)值已知,或者只對特定 X 座標的物體感興趣,Basler 建議使用 LinkManuallyEditable 模式。這可以節省資源並縮短整個設計的建置時間。在 LinkManuallyEditable 模式下,您可以在 [1, 48] 的允許範圍內編輯鏈結的 bit width Property。鏈結的 bit width 直接轉化為內部用於計算 CenterX 功能的 bit width,因此會影響整體資源消耗。 如果 Bit Width 不足以應付物件的 CenterX 值,將會由 ErrorFlagO 連結(位元 1)進行指示。 |
|
| CenterYBitWidthMode | |
|---|---|
| Type | static parameter |
| Default | AutomaticFrameMaximum |
| Range | {AutomaticFrameMaximum, LinkManuallyEditable} |
|
如需關於「Center of Gravity」的說明,請參閱 'Center of Gravity'。 請注意,輸出為影像矩 M01。若要取得「Center of Gravity Y」的像素座標,您可以透過主機 PC 使用 DIV 運算子或將該值除以面積。 如果您設定了 AutomaticContextMaximum,運算子將自動設定輸出位元。物件的最大可能大小取決於輸入連結 I 處的最大寬度和高度。物件的理論最大 CenterY 值是在影像的所有像素都由前景值組成時達到,亦即一個構成大型物件的白色輸入影像。如果使用大型輸入影像,CenterYO 連結的 Bit Width 可能會非常高。 如果已知可能的最大 CenterY(影像動差 M10)值,或者您僅對特定 Y 座標的物體感興趣,Basler 建議使用 LinkManuallyEditable 模式。這可以節省資源並縮短整個設計的編譯時間。在 LinkManuallyEditable 模式下,您可以在允許的範圍 [1, 48] 內編輯 link 的 Bit Width Property。link 的 Bit Width 會直接轉化為內部用於計算 Area 功能的 Bit Width,因此會影響整體資源消耗。 如果 Bit Width 不足以應付物件的 CenterY 值,將會由 ErrorFlagO 連結(位元 2)進行指示。 |
|

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






上一頁

