matlab中的bwlabel函數

L = bwlabel(BW,n)
返回一個和BW大小相同的L矩陣,包含了標記了BW中每個連通區域的類別標籤,這些標籤的值爲1、2、num(連通區域的個數)。n的值爲4或8,表示是按4連通尋找區域,還是8連通尋找,默認爲8。
四連通或八連通是圖像處理裏的基本感念:而8連通,是說一個像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角連接着,則認爲他們是聯通的;4連通是指,如果像素的位置在其他像素相鄰的上、下、左或右,則認爲他們是連接着的,連通的,在左上角、左下角、右上角或右下角連接,則不認爲他們連通。注(matlab中的矩陣都是從列開始的)
[L,num] = bwlabel(BW,n)
這裏num返回的就是BW中連通區域的個數。

補充:我聽說過16連通,這應該是在三維空間裏的概念了吧。bwlabel能從一個讀入二值圖像後產生的BW數組(也可能自己創建,只要符合元素是0或者1就行)中,區別出其中的1有多少塊(注:在BW數組中,0代表黑背景,1代表白)
舉例說明:
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

 

 


[L,numb] = 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
numb=3;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章