l = bwlabel(bw,n)
功能概述:返回乙個和bw大小相同的l矩陣,包含了標記了bw中每個連通區域的類別標籤,這些標籤的值為1、2、num(連通區域的個數)。n的值為4或8,表示是按4連通尋找區域,還是8連通尋找,預設為8。
用法:l = bwlabel(bw)
l = bwlabel(bw,n)
[l,num] = bwlabel(___)
[gpuarrayl,num] = bwlabel(gpuarraybw,n)
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
使用find命令得到labeld "2"的行和列序號。
[r, c] = find(l==2);
rc = [r c]
結果:
rc =
2 5
3 5
2 6
3 6
而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找連通區域的bwlabel函式的使用
用法 l bwlabel bw,n 返回乙個和bw大小相同的l矩陣,包含了標記了bw中每個連通區域的類別標籤,這些標籤的值為1 2 num 連通區域的個數 n的值為4或8,表示是按4連通尋找區域,還是8連通尋找,預設為8。4連通或8連通是影象處理裡的基本感念 而8連通,是說乙個畫素,如果和其他畫素在...
MATLAB中fopen fprintf函式的用法
matlab中fopen函式在指定檔案開啟的例項如下 1 fopen 開啟檔案,賦予檔案代號。語法1 fid fopen filename,permission 用指定的方式開啟檔案 fid n n是正整數 表示檔案開啟成功,檔案代號是n.fid 1 表示檔案開啟不成功。fid在此次檔案關閉前總是有...
Matlab實現bwlabel函式(區域標記)功能
影象預處理。對二值圖進行形態學開操作,開操作能去掉細小的塊,平滑目標區域邊界且保持面積不變 遍歷二值圖矩陣,尋找目標區域且未被標記的點,若當前畫素未標記且當前位置畫素點為1 二值圖的目標區域 將該目標點入隊,並標上區域編號label bfs,對步驟1中的求得8鄰域的畫素點,如果該點未越界,是目標點 ...