matlab寻找闭合,MatLab求取多个闭合区域的轮廓、面积和bbox
问题描述
要对如下所示的二值标签图做如下处理:
获取每一个闭合小区域的轮廓曲线坐标
获取每一个闭合小区域的面积
获取每一个闭合小区域的 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相关推荐
- MATLAB:regionprops函数求取最大连通域面积
MATLAB:regionprops函数求取最大连通域面积 regionprops统计被标记的区域的面积分布,显示区域总数. 函数regionprops语法规则为:STATS = regionprop ...
- matlab中利用xy求取多项式z,matlab基础练习题
3. 求有理分式()()()()3323230.522521x x x R x x x x ++=+-++的商多项式和余多项式 4. 一元多项式42234p x x x =-+,写出表示p 的MATL ...
- matlab 计算逆时针夹角,求取向量A逆时针到向量B的夹角
算法思路:通过余弦定理求取向量夹角的cosa,然后判断夹角是否大于180,如果大于,则向量夹角为360-arccosa*180/Pi(单位为°):否则夹角为arccosa*180/Pi.(Pi为常量3 ...
- 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+ ...
- MATLAB点云处理:读取、展示、最近邻、ICP算法求取转移矩阵、旋转
MATLAB中关于点云的几个函数的简单应用.作者使用的是MATLAB R2015b,这几个函数应该是在Computer Vison包里. 全文都是作者自己结合MATLAB文档的理解,欢迎指教. 1. ...
- 怎么用matlab分析孔隙度,基于MATLAB软件的声波测井孔隙度求取
·99·2016年 第 24 期 基于MATLAB软件的声波测井孔隙度求取 向旻 (新疆工程学院,新疆 乌鲁木齐 830091) 摘要 :目前,声波测井是一种重要的孔隙度测井方法,被各大油田广泛的使用 ...
- 使用Matlab对频繁2项集和频繁3项集的求取
使用Matlab对频繁2项集和频繁3项集的求取 一.问题描述 二.实验目的 三.实验内容 程序实现(详细代码) 运行结果截图 分析 四.总结 本文作者原创,如需转载,请注明原作者和地址,谢谢合作! 一 ...
- 信号功率谱密度matlab,Matlab2019b中常用的音频信号分析,快速傅里叶(FFT),功率谱密度(PSD),以及通过FFT求取功率谱密度的问题...
本应该为基础知识的维纳辛钦定理的证明,在matlab调试中遇到的大坑.为了验证,本人编写了一个从求取FFT,到多种方法求取PSD的matlab程序. 问题主要集中在x轴和y轴应该如何取值的问题上,单纯 ...
- Matlab中求取置信区域
Matlab中求取置信区间_warnerchang的博客-CSDN博客_matlab求置信区间一.概率密度函数.累计分布函数.逆累积分布函数在数学中,连续型随机变量的概率密度函数(在不至于混淆时可以简 ...
最新文章
- 禁止缩放safari浏览器--阻止双击放大--阻止双指掐捏放大-
- 用matlab编辑器打开.m文件
- ios应用内跳转到appstore里评分
- IDC报告:谁是桌面虚拟化的王者
- Nuxt项目中使用axios
- mysql create很多table,SQL CREATE TABLE 语句
- 有序链表转换二叉搜索树Python解法
- html如何取消盒子间的间隔,使用flexbox时,多行子元素之间的间距如何控制?
- homebrew安装mysql
- 操作系统(4)-进程间通信
- 236 Lowest Common Ancestor of a Binary Tree
- windows 哪些服务必须打开
- php模拟post方法
- 少谈设计模式,多谈基本功
- 排序问题-fastjson-JSONObject
- GBase数据库-数据转换函数
- 儒豹手机搜索发布2008年各频道关键词排行榜
- 新华书店牵手阿里云 要用云计算打造“智慧悦读”
- Excel生成满足正态分布的随机数
- 读书笔记—情商:为什么情商比智商更重要
热门文章
- 【英语学习】【Daily English】U02 Daily Routine L01 Sadly, my schedule is very tight.
- 台湾大学公开课《概率》六到九章笔记以及课程总结
- Android:应用商城
- 基于大数据的餐饮推荐系统总结
- 【Node】新手入门 基于Express,Sequelize、IIS的MVC项目
- Using Oracle Data Integrator Open Tools
- 开始工业物联网项目需要考虑的八大要点
- oracle xe 数据库用户操作
- python战斗2:看到一个页面编码
- DM8168 DMM(2)