matlab找連通區域的bwlabel函式的使用

2021-07-27 08:46:19 字數 1942 閱讀 4568

用法:

l = bwlabel(bw,n)

返回乙個和bw大小相同的l矩陣,包含了標記了bw中每個連通區域的類別標籤,這些標籤的值為1、2、num(連通區域的個數)。n的值為4或8,表示是按4連通尋找區域,還是8連通尋找,預設為8。

4連通或8連通是影象處理裡的基本感念:而8連通,是說乙個畫素,如果和其他畫素在上、下、左、右、左上角、左下角、右上角

或右下角連線著,則認為他們是聯通的;4連通是指,如果畫素的位置在其他畫素相鄰的上、下、左

或右,則認為他們是連線著的,連通的,在左上角、左下角、右上角或右下角連線,則不認為他們連通。請注意「或」字的含義,就是滿足其中乙個條件就認為是連通的。

[l,num] = bwlabel(bw,n)

這裡num返回的就是bw中連通區域的個數。

通俗的說,這個函式的作用是用來找這個二值影象中的連通區域的,對於不同的符合條件的連通區域(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

matlab去除大面積連通區域

在利用進行影象形態學處理的時候,經常需要去除面積較大或面積較小的連通區域。對於去除面積較小的連通區域,matlab提供了現有的函式 bw2 bwareaopen bw,p,conn 刪除二值影象bw中面積小於p的物件,預設情況下conn使用8鄰域可是matlab並沒有去除面積較大連通區域的函式,當然...

連通區域內求1的個數

include include using namespace std struct number int searchnumber int i,int j,int l,struct number phead void clearfunction struct number phead int ma...

如何對連通區域進行隨意的操作

興趣區域進行合併篩選 find k k 函式 尋找感興趣的矩陣數值 返回索引 regionprops 統計 label貼標籤 imareaopen 出去小面積的連通區域 如何對感興趣的一些連通區域進行重組,除掉不感興趣的區域?研究imareaopen函式,裡面有個bwconncomp cellfun...