【Matlab 图像】bwlabel() 连通域及图像分割
【Matlab 圖像】bwlabel 連通域及圖像分割
- 1. 函數含義:
- 2. 示例代碼:
- 2.1 regionprops() 函數
- 2.1.1 語法如下:
- 2.1.2 說明如下:
- 2.2 sort() 函數
- 2.2.1 語法如下:
- 2.2.2 說明如下:
- 2.3 ismember
- 2.3.1 語法如下:
- 2.3.2 說明如下:
- 3. 其他示例:
- 4. 其他示例:
bwlabel() 函數
1. 函數含義:
MATLAB圖像處理工具箱中的函數bwlabel是把四連通或八連通的區域連接起來,調用語法為:
[L, NUM] = bwlabel(BW, N)其中,
- BW 為輸入二值化圖像;
- N 可取值為4或8表示連接四連通或八連通區域;
- NUM 為找到的連通區域數目;
- L 為輸出圖像矩陣,其元素值為整數,背景被標記為0,第一個連通區域被標記為1,第二個連通區域被標記為2,依此類推.所以你不明白的1,2,3即為第1,2,3個連通區域的標記
From: matlab中bwlabel函數的含義
2. 示例代碼:
提取圖像中,排名前 3 的連通域,如果需要提取前 5 個連通域,更改兩處的 3 為 15 即可。
% 提取二值化圖前三個最大連通域 imLabel = bwlabel(HHCInv); % 對連通區域進行標記 stats = regionprops(imLabel,'Area'); [b,index]=sort([stats.Area],'descend'); if length(stats)<3bw=imLabel; elsebw=ismember(imLabel,index(1:3)); endFrom: matlab二值圖保留最大的幾個連通域
2.1 regionprops() 函數
Regionprops()
用途是 get the properties of region,即用來度量圖像區域屬性的函數。
2.1.1 語法如下:
STATS = regionprops(L,properties)2.1.2 說明如下:
測量標注矩陣 L 中每一個標注區域的一系列屬性,L 中不同的正整數元素對應不同的區域。
例如:L 中等于整數1的元素對應區域1;L 中等于整數2的元素對應區域2;以此類推。
- 返回值 STATS 是一個長度為 max?(L(:))\max(L(:))max(L(:)) 的結構數組,結構數組的相應域定義了每一個區域相應屬性下的度量。
- properties 可以是由逗號分割的字符串列表、飽含字符串的單元數組、單個字符串 ‘all’ 或者 ‘basic’。如果 properties 等于字符串 ‘all’,則所有下述字串列表中的度量數據都將被計算,如果 properties 沒有指定或者等于 ‘basic’,則屬性: ‘Area’, ‘Centroid’, 和 ‘BoundingBox’ 將被計算。
下面的列表就是所有有效的屬性字符串,它們大小寫敏感并且可以縮寫。
From: matlab的Regionprops詳解
2.2 sort() 函數
2.2.1 語法如下:
B = sort(A) B = sort(A,dim) B = sort(___,direction) B = sort(___,Name,Value) [B,I] = sort(___)2.2.2 說明如下:
B = sort(A) 按升序對 A 的元素進行排序。
如果 A 是向量,則 sort(A) 對向量元素進行排序。
如果 A 是矩陣,則 sort(A) 會將 A 的列視為向量并對每列進行排序。
如果 A 是多維數組,則 sort(A) 會沿大小不等于 1 的第一個數組維度計算,并將這些元素視為向量。
B = sort(A,dim) 返回 A 沿維度 dim 的排序元素。例如,如果 A 是一個矩陣,則 sort(A,2) 對每行中的元素進行排序。
B = sort(___,direction) 使用上述任何語法返回按 direction 指定的順序顯示的 A 的有序元素。'ascend' 表示升序(默認值),'descend' 表示降序。
B = sort(___,Name,Value) 指定用于排序的其他參數。例如,sort(A,‘ComparisonMethod’,‘abs’) 按模對 A 的元素進行排序。
[B,I] = sort(___) 還會為上述任意語法返回一個索引向量的集合。I 的大小與 A 的大小相同,它描述了 A 的元素沿已排序的維度在 B 中的排列情況。例如,如果 A 是一個向量,則 B = A(I)。
示例:
From: 對數組元素排序-MATLAB sort-Math Works 中國
2.3 ismember
2.3.1 語法如下:
Lia = ismember(A,B) Lia = ismember(A,B,'rows') [Lia,Locb] = ismember(___) [Lia,Locb] = ismember(___,'legacy')2.3.2 說明如下:
如果 A 中某位置的數據能在 B 中找到,Lia = ismember(A,B) 將返回一個在該位置包含邏輯值 1 (true) 的數組。數組中的其他位置將包含邏輯值 0 (false)。
如果 A 和 B 是表或時間表,ismember 將為每一行返回一個邏輯值。對于時間表,ismember 在確定相等性時會考慮行時間。輸出 Lia 是一個列向量。
From: 判斷數組元素是否為集數組成員-MATLAB ismember-Math Works 中國
3. 其他示例:
grayimg = rgb2gray(flag_yellow); % 灰度圖像 % grayimg 的色彩空間為 GrayBWimg = grayimg; [width,height]=size(grayimg);% 二值化 BWimg = im2bw(grayimg, 0.8);%先閉運算 再開運算 se=strel('disk',5); BWimg = imclose(BWimg,se); BWimg = imopen(BWimg,se);%分割出連通域內的圖像 showImg = frame; for i=1:widthfor j=1:heightif(BWimg(i,j) == 0)showImg(i,j,:)= frame(i,j,:);else showImg(i,j,:)= 0;endend end
From: 圖像分割+連通域統計與標注——MATLAB
4. 其他示例:
如果返回圖像中連通域大小大于閾值的連通域,可用matlab自帶函數:BW2 = bwareaopen(BW, P)
From: Matlab得到二值圖像中最大連通區域
總結
以上是生活随笔為你收集整理的【Matlab 图像】bwlabel() 连通域及图像分割的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Matlab 图像】开闭运算 imop
- 下一篇: 【数理知识】《矩阵论》方保镕老师-目录及