主要内容

边界

二值图像的迹区域边界

描述

例子

B.= bwboundaries(BW.在二值图像中跟踪对象的外部边界以及这些对象内部孔的边界BW.边界也下降到最外面的对象(父母),并跟踪他们的孩子(对象由父母完全封闭)。回报B.,边界像素位置的单元阵列。

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

例子

B.= bwboundaries(BW.康涅狄格州选择权跟踪对象的外部边界,其中选择权要么“洞”'noholes',确定是否要包括其他物体内孔的边界。

例子

[B.L.] = bwboundaries(___返回一个标签矩阵L.标记对象和孔的位置。

例子

[B.L.N一种]=边界(___回报N,找到的对象数,以及一种,邻接矩阵。

例子

全部崩溃

将灰度图像读取到工作区中。

I=imread(“rice.png”);

使用本地自适应阈值转换的灰度图像二值图像。

BW=imbinarize(I);

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

[B,L]=BW边界(BW,'noholes');imshow(label2rgb(L,@jet,[0.5 0.5 0.5]))保持在…上为了k=1:长度(B)边界=B{k};绘图(边界(:,2),边界(:,1),'W'“线宽”,2)结尾

图中包含一个轴。该轴包含152个图像、直线类型的对象。

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

BW=imread('blobs.png');

在图像中的区域的边界计算。

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

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

等待在…上;颜色=['B'“g”'R''C'“我是“是的”];为了k=1:length(B),boundary=B{k};cidx=mod(k,length(colors))+1;plot(boundary(:,2),boundary(:,1),......颜色(CIDX),“线宽”,2);%随机化文本位置以获得更好的可见性rndRow=ceil(长度(边界)/(mod(rand*k,7)+1));col=边界(rndRow,2);行=边界(rndRow,1);h=文本(列+1,行-1,num2str(行,列));设置(h,“颜色”,颜色(CIDX),'字体大小'14,'fontWeight设置''胆大');结尾

图形包含一个轴。轴包含79个图像、线、文本类型的对象。

使用间谍功能。

图间谍(A);

图形包含一个轴。轴包含一个line类型的对象。

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

BW=imread('blobs.png');

计算边界。

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

在绿色和红色边界孔Display对象边界。

等待在…上;为了k=1:长度(B),边界=B{k};如果(K> N)情节(边界(:,2),边界(:,1),“g”“线宽”,2);其他的情节(边界(:,2),边界(:,1),'R'“线宽”,2);结尾结尾

图中包含一个轴。这些轴包含40个图像、线条类型的对象。

读出的图像到工作区。

BW=imread('blobs.png');

在红色显示父边界及其在绿色的孔。

[B,L,N,A] = bwboundaries(BW);数字;等待在…上;%通过对象边界循环为了K = 1:N%边界K是空穴的父,如果第k列%邻接矩阵的A包含一个非零元素如果(NNZ(A(:,k))的> 0)边界= B {K};情节(边界(:,2),......边界(:,1),'R'“线宽”,2);%遍历边界K的孩子为了升=发现(A(:,k))的”边界= B {1};情节(边界(:,2),......边界(:,1),“g”“线宽”,2);结尾结尾结尾

图包含轴。轴包含类型的图像,线23级的对象。

输入参数

全部崩溃

二进制输入图像,指定为2-d的逻辑或数字矩阵。BW.必须是其中非零像素属于对象和零值像素构成的背景上的二进制图像。下图说明这些组件。

数据类型:单身的|双重的|INT8|int16|int32|int64|uint8.|uint16|UINT32|UINT64|逻辑

像素连接性,指定为此表中的一个值。

价值

意思

二维连通性

4连通

如果他们边摸像素连接。两个相邻的象素是同一物体的一部分,如果它们都上并沿水平或垂直方向被连接。

8连通

如果像素的边或角接触,则它们是连接的。如果两个相邻像素都在同一对象上,并且沿水平、垂直或对角方向连接,则它们是同一对象的一部分。

数据类型:双重的

确定是否要搜索两个父母和孩子的界限,指定为以下几点:

选项

意思

“洞”

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

'noholes'

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

数据类型:烧焦|细绳

输出参数

全部崩溃

边界像素的行和列坐标,返回为P.×1单元阵列,其中P.是对象和孔的数量。在单元阵列中每个单元包含一个问:-by-2矩阵。矩阵中的每行包含一个边界象素的行和列坐标。问:是用于对应的区域边界的像素的数量。

连续区域的标签矩阵,作为非负整数的二维矩阵返回K.个区域包括的所有元素L.有价值的K..表示的对象和孔的数量L.等于MAX(L(:))。的零值元素L.构成背景。

数据类型:双重的

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

数据类型:双重的

边界与孔之间的父子相依,返回为正方形,疏,一流的逻辑矩阵双重的边长MAX(L(:))。行和列一种与存储在中的边界位置相对应B..第一N细胞B.是对象边界。A(i,j)=1装置,其目的一世为对象的子j…包围或被边界包围的边界K.个边界可以使用发现一种如下:

enclosing_boundary =查找(A(M,:));enclosed_boundaries =发现(A(:,米));

算法

边界函数实现由Jacob停止标准修改的Moore邻居跟踪算法界限第一版中介绍的函数基于MATLAB的数字图像处理,冈萨雷斯,R. C.,R. E.伍兹和S. L. Eddins,新泽西州,皮尔森Prentice Hall出版社,2004年。

参考文献

[1] 冈萨雷斯,R.C.,R.E.伍兹和S.L.埃丁,基于MATLAB的数字图像处理,新泽西州,皮尔森Prentice Hall出版社,2004年。

扩展能力

在R2006a之前引入