问题描述

要对如下所示的二值标签图做如下处理:

获取每一个闭合小区域的轮廓曲线坐标

获取每一个闭合小区域的面积

获取每一个闭合小区域的 bounding box

处理方法

问题一: 获取每一个闭合小区域的轮廓曲线坐标,可以直接使用 bwboundaries 函数进行处理。

I = imread(img);

B = bwboundaries(I, 'noholes');

此时 B 为一个 n*1 的元胞数组,n 为闭合区域的个数,每个 cell 中存储了一个区域的轮廓坐标点,且坐标点是按照轮廓曲线顺时针方向存储的。

问题二: 要获取每一个小区域的面积,简单计算二值矩阵中不为 0 的元素个数已经不再适用。考虑先用 bwlabel 对标签的不同区域打上标记,默认按照 8 联通。然后可以根据标记像素值求取每个小区域的面积。

[L, num] = bwlabel(I);

area1 = sum(sum(L == 1));

area2 = sum(sum(L == 2));

这样就能分别求出两个区域的面积。

问题三: 要获取每一个小区域的 bounding box 很简单,已经知道了它们各自的轮廓坐标,求出这些坐标中 x(列坐标) 和 y(行坐标) 最小和最大的值:(ymin,xmin) 和 (ymax,xmax) 即可。

另外,又发现了一个神奇的函数 regionprops,对图形处理很有用处 ~

参考:Matlab图像处理函数:regionprops

用法:STATS = regionprops(L,properties),用于测量矩阵 L 中每一个标注区域的一系列属性。

L 中不同的正整数元素对应不同的区域。例如:标记值为 1 的所有像素点对应区域 1,标记值为 2 的所有像素点对应区域 2,以此类推。

返回值 STATS 是一个长度为 max(L) 的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。

properties 可以是由逗号分割的字符串列表、包含字符串的单元数组、单个字符串 ‘all’ 或者 ‘basic’。如果 properties 等于字符串 ‘all’,则所有下述字串列表中的度量数据都将被计算,如果 properties 没有指定或者等于 ‘basic’,则属性: ‘Area’, ‘Centroid’, 和 ‘BoundingBox’ 将被计算。下面的列表就是所有有效的属性字符串,它们大小写敏感并且可以缩写。

同样地,在使用 regionprops 前,需要先用 bwlabel 函数对矩阵不同区域进行标注。

属性

用途

返回值

Image

提取每一个小区域

二值图像

FilledImage

提取每一个小区域并做填充

二值图像

Area

计算各个区域像素总个数

1*L

FilledArea

计算各个区域填充后的像素总个数

1*L

BoundingBox

获取各个区域的最小外接矩形框

L*2

Centroid

获取各个区域的质心 (重心)

1*L

MajorAxisLength

与区域具有相同标准二阶中心矩的椭圆的长轴长度

标量

MinorAxisLength

与区域具有相同标准二阶中心矩的椭圆的短轴长度

标量

Eccentricity

与区域具有相同标准二阶中心矩的椭圆的离心率

标量

Orientation

与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角(度)

标量

ConvexArea

填充区域凸多边形图像中的像素个数

标量

ConvexHull

获取包含某区域的最小凸多边形

p*2

ConvexImage

用来画出上述的区域最小凸多边形

二值图像

matlab寻找闭合,MatLab求取多个闭合区域的轮廓、面积和bbox相关推荐

  1. MATLAB:regionprops函数求取最大连通域面积

    MATLAB:regionprops函数求取最大连通域面积 regionprops统计被标记的区域的面积分布,显示区域总数. 函数regionprops语法规则为:STATS = regionprop ...

  2. matlab中利用xy求取多项式z,matlab基础练习题

    3. 求有理分式()()()()3323230.522521x x x R x x x x ++=+-++的商多项式和余多项式 4. 一元多项式42234p x x x =-+,写出表示p 的MATL ...

  3. matlab 计算逆时针夹角,求取向量A逆时针到向量B的夹角

    算法思路:通过余弦定理求取向量夹角的cosa,然后判断夹角是否大于180,如果大于,则向量夹角为360-arccosa*180/Pi(单位为°):否则夹角为arccosa*180/Pi.(Pi为常量3 ...

  4. matlab中利用xy求取多项式z,将(x y z)^10展开为多项式,经过合并同类项

    如何在matlab中展开多项式 symssps=((s^2+1))^3*(s+5)^2*(s^4+4*s^2+7)ps1=expand(ps)结果:ps=(s^2+1)^3*(s+5)^2*(s^4+ ...

  5. MATLAB点云处理:读取、展示、最近邻、ICP算法求取转移矩阵、旋转

    MATLAB中关于点云的几个函数的简单应用.作者使用的是MATLAB R2015b,这几个函数应该是在Computer Vison包里. 全文都是作者自己结合MATLAB文档的理解,欢迎指教. 1. ...

  6. 怎么用matlab分析孔隙度,基于MATLAB软件的声波测井孔隙度求取

    ·99·2016年 第 24 期 基于MATLAB软件的声波测井孔隙度求取 向旻 (新疆工程学院,新疆 乌鲁木齐 830091) 摘要 :目前,声波测井是一种重要的孔隙度测井方法,被各大油田广泛的使用 ...

  7. 使用Matlab对频繁2项集和频繁3项集的求取

    使用Matlab对频繁2项集和频繁3项集的求取 一.问题描述 二.实验目的 三.实验内容 程序实现(详细代码) 运行结果截图 分析 四.总结 本文作者原创,如需转载,请注明原作者和地址,谢谢合作! 一 ...

  8. 信号功率谱密度matlab,Matlab2019b中常用的音频信号分析,快速傅里叶(FFT),功率谱密度(PSD),以及通过FFT求取功率谱密度的问题...

    本应该为基础知识的维纳辛钦定理的证明,在matlab调试中遇到的大坑.为了验证,本人编写了一个从求取FFT,到多种方法求取PSD的matlab程序. 问题主要集中在x轴和y轴应该如何取值的问题上,单纯 ...

  9. Matlab中求取置信区域

    Matlab中求取置信区间_warnerchang的博客-CSDN博客_matlab求置信区间一.概率密度函数.累计分布函数.逆累积分布函数在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简 ...

最新文章

  1. 禁止缩放safari浏览器--阻止双击放大--阻止双指掐捏放大-
  2. 用matlab编辑器打开.m文件
  3. ios应用内跳转到appstore里评分
  4. IDC报告:谁是桌面虚拟化的王者
  5. Nuxt项目中使用axios
  6. mysql create很多table,SQL CREATE TABLE 语句
  7. 有序链表转换二叉搜索树Python解法
  8. html如何取消盒子间的间隔,使用flexbox时,多行子元素之间的间距如何控制?
  9. homebrew安装mysql
  10. 操作系统(4)-进程间通信
  11. 236 Lowest Common Ancestor of a Binary Tree
  12. windows 哪些服务必须打开
  13. php模拟post方法
  14. 少谈设计模式,多谈基本功
  15. 排序问题-fastjson-JSONObject
  16. GBase数据库-数据转换函数
  17. 儒豹手机搜索发布2008年各频道关键词排行榜
  18. 新华书店牵手阿里云 要用云计算打造“智慧悦读”
  19. Excel生成满足正态分布的随机数
  20. 读书笔记—情商:为什么情商比智商更重要

热门文章

  1. 【英语学习】【Daily English】U02 Daily Routine L01 Sadly, my schedule is very tight.
  2. 台湾大学公开课《概率》六到九章笔记以及课程总结
  3. Android:应用商城
  4. 基于大数据的餐饮推荐系统总结
  5. 【Node】新手入门 基于Express,Sequelize、IIS的MVC项目
  6. Using Oracle Data Integrator Open Tools
  7. 开始工业物联网项目需要考虑的八大要点
  8. oracle xe 数据库用户操作
  9. python战斗2:看到一个页面编码
  10. DM8168 DMM(2)