内容列表
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)<3
bw=imLabel;
else
bw=ismember(imLabel,index(1:3));
end
From: 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 的色彩空间为 Gray
BWimg = 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:width
for j=1:height
if(BWimg(i,j) == 0)
showImg(i,j,:)= frame(i,j,:);
else
showImg(i,j,:)= 0;
end
end
end
From: 图像分割+连通域统计与标注——MATLAB
4. 其他示例:
如果返回图像中连通域大小大于阈值的连通域,可用matlab自带函数:BW2 = bwareaopen(BW, P)
From: Matlab得到二值图像中最大连通区域
评论(0)
您还未登录,请登录后发表或查看评论