1. 程式人生 > >matlab bwlabel標記連通區域

matlab bwlabel標記連通區域

[L,num] = bwlabel(BW,n)

這裡num返回的就是BW中連通區域的個數。返回一個和BW大小相同的L矩陣,包含了標記了BW中每個連通區域的類別標籤,這些標籤的值為12num(連通區域的個數)。n的值為48,表示是按4連通尋找區域,還是8連通尋找,預設為8

    通俗的說,這個函式的作用是用來找這個二值影象中的連通區域的,對於不同的符合條件的連通區域(4連通,8連通)分別用不同的標號加以區別,結果儲存在L這個矩陣裡,而num裡儲存的是輸入影象中連通區域的總數。

    舉例說明:
    BW =
    1     1     1     0     0     0     0     0
    1     1     1     0     1     1     0     0
    1     1     1     0     1     1     0     0
    1     1     1     0     0     0     1     0
    1     1     1     0     0     0     1     0
    1     1     1     0     0     0     1     0
    1     1     1     0     0     1     1     0
    1     1     1     0     0     0     0     0

   

4連通計算,方形的區域,和翻轉的L形區域,有用是對角連線,不屬於連通,所以分開標記,連通區域個數為3,就是有3個不同的連線區域。
    L = bwlabel(BW,4)
    結果如下:

    L =
    1     1     1     0     0     0     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     0     0     3     0
    1     1     1     0     0     0     3     0
    1     1     1     0     0     0     3     0
    1     1     1     0     0     3     3     0
    1     1     1     0     0     0     0     0

   
8連通標記,它們是連通的:

    [L, num] = bwlabel(BW,8)
    L =
    1     1     1     0     0     0     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     2     2     0     0
    1     1     1     0     0     0     2     0
    1     1     1     0     0     0     2     0
    1     1     1     0     0     0     2     0
    1     1     1     0     0     2     2     0
    1     1     1     0     0     0     0     0
   這裡

   num =2