Blob_Analysis_2D 運算子

運算子庫:Blob

Blob_Analysis_2D 運算子可在二進位影像中偵測物件並決定其屬性。此運算子的輸出為多個資料串流,分別代表每個物件的屬性。

[注意] Blob_Analysis_2D 是一個舊版運算子

Blob_Analysis_2D 運算子為舊版運算子,保留此運算子僅為了維持相容性。在新的設計中,請改用 BlobDetector2D。

此運算子的功能可在 VisualApplets 中完全模擬。不過請注意,輸出值的順序可能與硬體實作不盡相同。

請確保您已先閱讀關於 blob 分析運算子的一般介紹(節 Library Blob)。

效能

VisualApplets blob 分析運算子屬於少數處理速度(即頻寬)取決於影像內容的運算子。若影像中有許多物件,就會建立大型物件清單。這可能會導致運算子輸入速度變慢。不過,這僅適用於包含極強雜訊的影像。在受控條件下,此運算子的速度應該足夠快。

延遲

此運算子以最低的延遲運作。輸入影像會逐行傳輸至 blob 分析線路。一旦物件完全傳輸至運算子中,運算子就會偵測物件完成並輸出物件特徵。因此,當運算子仍在處理影像本身時,即可開始對物件特徵進行後續處理。

請注意,DMA 與某些其他運算子會在回報完成之前等待算格結束 (frame end) 訊號。算格結束訊號會在輸入影像完成時產生。

Input Ports

blob 分析的 ImageI 輸入由二進位、二維影像表示,也就是具有 1 Bit 的 Bit Width、指定影像寬度與指定影像高度的影像。您可以選擇最高 32 像素的 Parallelism。

此運算子假設前景值為 1(ONE),背景值為 0(ZERO)。請確保您的前置二值化處理程序符合此要求。

Output Ports

每個輸出連接埠代表一個物件特徵/物件屬性。這些連接埠上的每個輸出值代表一個物件。因此,每個物件屬性會產生一個資料串流。輸出資料串流的長度等於影像中找到的物件數量。這些串流可中斷為多個子算格 (sub-frame)。每個輸出連接埠上的資料高度為 1 像素且具有特定長度。輸出以灰階 2D 影像的形式呈現。

輸出連接埠是使用運算子參數與輸入的 Property 來設定。無法直接變更連結 Property。

連接埠 ErrorFlagsO 會輸出數個溢位錯誤旗標。每個位元皆保留用於特定的旗標。詳細說明請參閱下方的參數說明。下表提供摘要說明:

Bit # 描述 與物件相關 注意事項
0, 1 標籤溢位 no

Blob Analysis 偵測到太多物件,無法全部儲存至記憶體中。若要增加兩行影像內的最大物件數量,可以變更運算子參數「LabelBits」。

此旗標會在偵測到時設定,並持續到資料輸出算格結束為止。目前已輸出的所有物件屬性均有效。

對於 Blob Analysis 1D 運算子,該旗標在下一個有效資料輸出時,僅會在一個時脈週期內維持高階狀態。

設定此旗標後,blob 分析的輸出可能會產生錯誤的物件屬性。如果有足夠的物件標籤可用,運算子將會恢復正常功能。

2 輸出遭截斷 是

影像中的物件數量超過運算子參數對話方塊中設定的最大輸出寬度。此旗標會與符合輸出寬度的最後一個物件一起設定。

3 物件大小超過最大值 是

如果 1D Blob Analysis 的物件超過其最大高度,就會設定此旗標。運算子會將此超出的物件切割成較小的物件。接續的物件會標記此旗標,以便偵測切割情況。

對於 2D Blob Analysis,此旗標會設定為固定的零。

4 區域已截斷 是

物件的區域連同錯誤旗標大於區域位元(Area bits)所允許的大小。

5 重心 X 已截斷 是

X 方向的重心大於位元所允許的大小。

6 重心 Y 已截斷 是

Y 方向的重心大於位元所允許的大小。

7 輪廓長度溢位 是

輪廓長度大於為運算子所參數化的位元允許的大小。

表 39. Blob 錯誤旗標說明


I/O Properties

Property Value
Operator Type M
Input Link I,資料輸入
輸出連結 BoundingX0O,資料輸出
BoundingX1O,資料輸出
BoundingY0O,資料輸出
BoundingY1O,資料輸出
AreaO,資料輸出
CenterXO,資料輸出
CenterYO,資料輸出
ContourOrthoO,資料輸出
ContourDiaO,資料輸出
ErrorFlagsO,資料輸出

Supported Link Format

Link Parameter Input Link I 輸出連線 BoundingX0O 輸出連線 BoundingX1O 輸出連結 BoundingY0O 輸出連線 BoundingY1O 輸出連結 AreaO 輸出連結 CenterXO 輸出連線 CenterYO 輸出連結 ContourOrthoO 輸出連結 ContourDiaO 輸出連線 ErrorFlagsO
Bit Width 1 auto1 auto2 auto3 auto4 auto5 auto6 auto7 auto8 auto9 8
Arithmetic 無號數 無號數 無號數 無號數 無號數 無號數 無號數 無號數 無號數 無號數 無號數
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 取決於物件特徵的參數設定。如果停用某個特徵,輸出將設為一固定值為零的位元。

10 11 12 13 14 15 16 17 18 19

輸出的最大影像寬度取決於參數 output_frame_size 的設定。

Parameters

label_bits
Type 靜態參數
Default 7
Range [5, 31]

此參數用於設定內部標記物件所需的位元數。它也會影響兩條影像行中可同時存在物件的最大數量,由 2^label_bits 決定。請注意,Blob 分析所需的記憶體資源幾乎會隨著每個附加位元而加倍。此參數的良好數值範圍介於 7 到 9 位元之間,這對於幾乎所有應用來說都已足夠。

如果偵測到此位址空間溢位,運算子會在連接埠「ErrorFlagsO」的第 0 位元和第 1 位元輸出錯誤旗標。這些旗標會在偵測到溢位時設定,並在輸出影格結束時重設。

neighborhood
Type 靜態參數
Default eight_connected
Range {four_connected, eight_connected}

選取 Object Detection 所需的鄰域。如需像素鄰域的詳細說明,請參閱 'Definition'。

output_frame_size
Type 靜態參數
Default specify_max_no_of_objects
Range {maximum_required, specify_max_no_of_objects}

理論上可能出現在影像中的物件最大數量為:輸入影像寬度 * 輸入影像高度 / 2(相當於使用 4 連通鄰域的棋盤圖案)。此種圖案發生的機率相當低。因此,您透過此參數來設定影像中的最大物件數量。

max_output_frame_size
Type 靜態參數
Default 65536
Range [1, 67108864]

選擇輸出的最大物件數量。若 blob analysis 偵測到超過此數量的物件,將會被捨棄。不過,在連接埠「ErrorFlagsO」上,將會設定位元 2 處的錯誤旗標。此旗標會與最後一個有效物件一同設定。如果「ouput_frame_size」設為「maximum_required」,則此參數會停用。

bounding_box_x0
Type 靜態參數
Default used
Range {used, not_used}

邊界框表示剛好包覆物件的最小軸對齊矩形。每個座標值都是相對於影像的左上角。Bounding Box X0 表示每個物件的最低 x 座標。它會輸出於「BoundingX0O」。Bit Width 由輸入影像決定。若未使用邊界框,則 Bit Width 會設為 1 個 bit,且其輸出為固定的零。

bounding_box_x1
Type 靜態參數
Default used
Range {used, not_used}

邊界框表示剛好包覆物件的最小軸對齊矩形。每個座標值都是相對於影像的左上角。Bounding Box X1 表示每個物件的最高 x 座標。它會輸出於「BoundingX1O」。Bit Width 是由輸入影像決定。若未使用邊界框,則 Bit Width 會設為 1 個 bit,且其輸出為固定的零。

bounding_box_y0
Type 靜態參數
Default used
Range {used, not_used}

邊界框表示剛好包覆物件的最小軸對齊矩形。每個座標值都是相對於影像的左上角。Bounding Box Y0 表示每個物件的最低 y 座標。它會輸出於「BoundingY0O」。Bit Width 由輸入影像決定。若未使用邊界框,則 Bit Width 會設為 1,且其輸出為固定的零。

bounding_box_y1
Type 靜態參數
Default used
Range {used, not_used}

邊界框表示剛好包覆物件的最小軸對齊矩形。每個座標值都是相對於影像的左上角。Bounding Box Y1 表示每個物件的最高 y 座標。它會輸出於「BoundingY1O」。Bit Width 由輸入影像決定。若未使用邊界框,則 Bit Width 會設為 1,且其輸出為固定的零。

area_mode
Type 靜態參數
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」,運算子會自動決定物件可能最大尺寸所需的 bits。物件可能的最大尺寸取決於輸入連結 I 處的最大寬度和高度。如果影像的所有像素都由前景值組成(即白色輸入影像為一個大物件),則可達到物件的理論最大值。

如果使用者可以確定物件的面積不會大於指定的值,則可以進行參數化設定。如果已知最大物件尺寸,請選擇「use_area_with_specified_bits」。使用參數「area_bits」來指定 bit 數量。如果根本不需要面積,請選擇「area_not_used」。在「area_not_used」模式下,Bit Width 會設為 1,且其輸出為固定的零。

area_bits
Type 靜態參數
Default not_used
Range {not_used, used}

只有在參數「area_mode」設為「use_area_with_specified_bits」時,此參數才會啟用。如果物件的面積大於所選 bits 允許的大小,blob analysis 將會在輸出連結「ErrorFlagsO」的位元編號 4 輸出溢位旗標。

center_of_gravity_x_mode
Type 靜態參數
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)的說明,請參閱 '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 靜態參數
Default 29
Range [2, auto]

如果 "center_of_gravity_x_mode" 設為 "use_cX_with_specified_bits",可以在此變更位元數。否則,此參數將會停用。

center_of_gravity_x_overflow_flag
Type 靜態參數
Default not_used
Range {not_used, used}

如果手動設定 X 方向重心的位元數,此參數會被啟動並可設為 "used"。如果偵測到溢位(overflow),算子將會在輸出連結 "ErrorFlagsO" 的第 5 位元輸出 ONE。

center_of_gravity_y_mode
Type 靜態參數
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)的說明,請參閱 '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 靜態參數
Default 29
Range [2, auto]

如果 "center_of_gravity_y_mode" 設為 "use_cY_with_specified_bits",可以在此變更位元數。否則,此參數將會停用。

center_of_gravity_y_overflow_flag
Type 靜態參數
Default not_used
Range {not_used, used}

如果手動設定 Y 方向重心的位元數,此參數會被啟動並可設為 "used"。如果偵測到溢位(overflow),算子將會在輸出連結 "ErrorFlagsO" 的第 6 位元輸出 ONE。

contour_length_mode
Type 靜態參數
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 靜態參數
Default 16
Range [1, 31]

若 "contour_length_mode" 設為 "contour_length_used",可在此選擇表示正交連接像素之輪廓長度所需的位元。

contour_length_bits_diagonal_connected
Type 靜態參數
Default 16
Range [1, 31]

若 "contour_length_mode" 設為 "contour_length_used",可在此選擇表示對角連接像素之輪廓長度所需的位元。這僅在選取 8 連通鄰域時才可行。否則,此參數將會停用。

contour_length_overflow_flag
Type 靜態參數
Default not_used
Range {not_used, used}

輪廓長度可能會導致溢位。如果使用此旗標,若發生溢位,將會在連接埠 "ErrorFlagsO" 的第 7 位元設定錯誤旗標。

Examples of Use

以下範例顯示了 Blob_Analysis_2D 運算子的使用方式: