数字图像处理-表示

提取区域及其边界的函数

工具箱函数bwlabel可以计算一幅二值图像中的所有连接分量

[L, num] = bwlabel(f, conn)

其中f是输入图像,conn指定期望的连接性(4或8,默认为8),num是所找到的连接分量数,L是标记矩阵,它给每个连接分量分配区间[1,num]内的一个唯一整数。
函数bwperim返回一个包含输入图像所有区域的边界像素的二值图像

g = bwperim(f,conn)

conn指定了背景的连接性:4(默认)或8,即4连接或8连接的边界。
对于bwperim的结果,函数bwboundaries可以提取其中所有区域的真实边界坐标

B = bwboundaries(f, conn, options)

其中,conn相对于边界本身,且具有值4或8(默认)。参数options的值为’holes’和’noholes’。使用第一个值时,提取区域和孔洞的边界;也可以提取包含嵌套区域(在工具箱中称为父区域和子区域)的区域边界。使用第二个值时将仅提取边界及其子区域的边界。若参数中仅包含f和conn中的一个值,则’holes’为默认。B中先列出区域,然后列出孔洞。
输出B是yigeP* 1的单元数组,其中P是物体(或孔洞)的数量。单元数组中的每个单元包含一个np* 2的矩阵,该矩阵的行是边界像素的行和列坐标,np是相应区域的边界像素数。每个边界的坐标都按顺时针排序,且边界的最后一点和第一个点相同,这样就组成了一个闭合边界。
我们使用函数flipud将边界B{k}的行顺序从顺时针方向改为逆时针方向

Breversed{k} = flipud(B{k})

函数bwboundaries的另一种有用语法为

[B, L] = bwboundaries(...)

此时L是一个标记矩阵(其大小与f相同),该矩阵用不同的整数来标记f的每个元素(而不管它是区域还是孔洞)。背景像素标记为0.区域和孔洞的数量由max(L(: ))给出。
[B, L, NR, A] = bwboundaries(…)
返回所找到的区域数(NR)和一个逻辑稀疏矩阵A,该矩阵用详细给出了父子孔洞的从属关系;也就是说,由B{k}闭合的更直接的边界由如下语句给出

boundaryEnclosed = find(A(:, k))

类似地&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值