文档

bwboundaries

在二值图像中跟踪区域边界

语法

B = bwboundaries(BW)
B = bwboundaries(BW,conn)
B = bwboundaries(BW,conn,options)
[B, L] = bwboundaries (___
[B,L,n,A] = bwboundaries(___

描述

例子

B= bwboundaries (BW在二值图像中跟踪对象的外部边界,以及这些对象内部的洞的边界BWbwboundaries也下降到最外层的对象(父对象),并追踪它们的子对象(完全被父对象包围的对象)。返回B,边界像素位置的单元格数组。

B= bwboundaries (BW康涅狄格州跟踪对象的外部边界,其中康涅狄格州指定跟踪父和子边界时要使用的连通性。

例子

B= bwboundaries (BW康涅狄格州选项跟踪对象的外部边界,其中选项要么是“黑洞”“noholes”,指定是否要在其他对象中包含孔的边界。

例子

Bl) = bwboundaries (___返回一个标签矩阵l标记对象和孔的地方。

例子

Bln一个= bwboundaries(___返回n,发现的物体的数量,以及一个,一个邻接矩阵。

例子

全部折叠

将灰度图像读入工作空间。

I = imread(“rice.png”);

利用局部自适应阈值将灰度图像转换为二值图像。

BW = imbinalize (I);

计算图像中区域的边界,并将边界叠加在图像上。

[B,L] = bwboundaries(BW,“noholes”);imshow(label2rgb(L, @jet, [.]5 .5 .5])等一下k = 1:长度(B)边界= B{k};情节(边界(:,2),边界(:1),' w '“线宽”, 2)结束

将二进制图像读入工作区。

BW = imread(“blobs.png”);

计算图像区域的边界。

[B,L,N,A] = bwboundaries(BW);

显示边界重叠的图像。在每个边界旁边添加区域号(基于标签矩阵)。使用缩放工具读取单个标签。

imshow (BW);持有;颜色= [“b”‘g’“r”“c”“米”“y”];k=1:长度(B),边界= B{k};Cidx = mod(k,长度(颜色))+1;情节(边界(:,2),边界(:1),...颜色(cidx),“线宽”2);%随机文本位置,以获得更好的可视性rndRow = ceil(length(border)/(mod(rand*k,7)+1));col = border (rndRow,2);row = boundary(rndRow,1);h = text(col+1,行-1,num2str(L(行,col)));集(h,“颜色”、颜色(cidx),“字形大小”14岁的“FontWeight”“大胆”);结束

属性显示邻接矩阵间谍函数。

图间谍(A);

读取二进制图像到工作区。

BW = imread(“blobs.png”);

计算边界。

[B,L,N] = bwboundaries(BW);

以红色显示对象边界,以绿色显示孔边界。

imshow (BW);持有k=1:长度(B),边界= B{k};如果(k > N) plot(boundary(:,2), boundary(:,1),‘g’“线宽”2);其他的情节(边界(:,2),边界(:1),“r”“线宽”2);结束结束

将图像读入工作区。

BW = imread(“blobs.png”);

用红色显示父边界,用绿色显示它们的洞。

[B,L,N,A] = bwboundaries(BW);图;imshow (BW);持有遍历对象边界k = 1:N如果第k列是孔的父孔邻接矩阵A的%包含一个非零元素如果(nnz(A(:,k)) > 0) border = B{k};情节(边界(:,2),...边界(:1),“r”“线宽”2);遍历边界k的子结点l = find(A(:,k))' boundary = B{l};情节(边界(:,2),...边界(:1),‘g’“线宽”2);结束结束结束

输入参数

全部折叠

二进制输入图像,指定为实的、非稀疏的2-D逻辑数组或数字数组。BW必须为二值图像,其中非零像素属于对象,零值像素构成背景。下图说明了这些组件。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑

连接性,指定为以下标量值之一:

价值

意义

4

四连接社区

8

8-connected社区。这是默认值。

数据类型:

确定是否搜索父边界和子边界,指定为以下任意一种:

选项

意义

“黑洞”

搜索对象和洞的边界。这是默认值。

“noholes”

只搜索对象(父对象和子对象)边界。这可以提供更好的性能。

数据类型:字符|字符串

输出参数

全部折叠

边界像素的行坐标和列坐标,返回为p-by-1单元格数组,其中p是物体和孔的数量。单元格数组中的每个单元格包含2矩阵。矩阵中的每一行都包含边界像素的行坐标和列坐标。对应区域的边界像素数。

连续区域的标签矩阵,返回为非负整数的二维矩阵。的k该区域包含了l有价值的k.用。表示的物体和孔的数目l等于马克斯(L (:)).的零值元素l制作背景。

数据类型:

找到的对象数,以非负整数返回。

数据类型:

边界和洞之间的父子依赖关系,返回为一个正方形、稀疏的类逻辑矩阵边长马克斯(L (:)).的行和列一个对应于存储的边界的位置B.第一个n细胞B是对象边界。(i, j) = 1也就是那个对象是object的子对象吗j包围或被包围的边界k-th边界可以使用一个如下:

enclosing_boundary = find(A(m,:));enclosed_boundaries = find(A(:,m));

算法

bwboundaries函数实现了由Jacob停止准则修改的Moore-Neighbor跟踪算法。该函数基于边界函数在第一版中给出利用MATLAB进行数字图像处理,由冈萨雷斯,R. C., R. E.伍兹,和S. L. Eddins,新泽西州,皮尔逊普伦蒂斯霍尔,2004年。

参考文献

[1] Gonzalez, R. C., R. E. Woods,和S. L. Eddins,用MATLAB进行数字图像处理,新泽西,皮尔逊·普伦蒂斯·霍尔,2004。

扩展功能

R2006a之前介绍

这个话题有用吗?