MATLAB连通域标记函数
L = bwlabel(BW,n)
返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。
[L,num] = bwlabel(BW,n)
这里num返回的就是BW中连通区域的个数。
一些连通域处理函数,转自AmazingJack的专栏:http://m.blog.csdn.net/blog/AmazingJack/24417891
作用:删除二值图像BW中面积小于P的对象,默认情况下使用8邻域。
算法:
(1)Determine the connected components.
L = bwlabeln(BW, conn);
(2)Compute the area of each component.
S = regionprops(L, 'Area');
(3)Remove small objects.
bw2 = ismember(L, find([S.Area] >= P));
2、matlab函数bwarea──计算对象面积
格式:total = bwarea(BW)
作用:估计二值图像中对象的面积。
注:该面积和二值图像中对象的像素数目不一定相等。
3、matlab函数imclearborder──边界对象抑制
格式:IM2 = imclearborder(IM,conn)
作用:抑制和图像边界相连的亮对象。若IM是二值图,imclearborder将删除和图像边界相连的对象。默认情况conn=8。
注:For grayscale images, imclearborder tends to reduce the overall intensity level in addition to suppressing border structures.
算法:
(1)Mask image is the input image.
(2)Marker image is zero everywhere except along the border, where it equals the mask image.
4、matlab函数bwboundaries──获取对象轮廓
格式:B = bwboundaries(BW,conn)(基本格式)
作用:获取二值图中对象的轮廓,和OpenCV中cvFindContours函数功能类似。B是一个P×1的cell数组,P为对象个数,每个cell 是Q×2的矩阵,对应于对象轮廓像素的坐标。
5、matlab函数imregionalmin──获取极小值区域
格式:BW = imregionalmin(I,conn)
作用:寻找图像I的极小值区域(regional maxima),默认情况conn=8。
Regional minima are connected components of pixels with a constant intensity value, and whose external boundary pixels all have a higher value.
6、matlab函数bwulterode──距离变换的极大值
格式:BW2 = bwulterode(BW,method,conn)
作用:终极腐蚀。寻找二值图像BW的距离变换图的区域极大值(regional maxima)。用于距离变换的距离默认为euclidean,连通性为8邻域。
7、regionprops统计被标记的区域的面积分布,显示区域总数。
函数regionprops语法规则为:STATS = regionprops(L,properties)
该函数用来测量标注矩阵L中每一个标注区域的一系列属性。
L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。
返回值STATS是一个 长度为max(L()的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。
Properties可以是由逗号分割的字符串列表、包含字符 串的单元数组、单个字符串'all'或者'basic'。如果properties等于字符串'all',则表1中的度量数据都将被计算;如果properties等于字符串'basic',则属性:'Area','Centroid'和'BoundingBox'将被计算。表1就是所有有效的属性字符串。
表1 属性字符串列表
|
properties值 |
度量图像区域的属性或功能 |
|
'Area' |
图像各个区域中像素总个数 |
|
'BoundingBox' |
包含相应区域的最小矩形 |
|
'Centroid' |
每个区域的质心(重心) |
|
'MajorAxisLength' |
与区域具有相同标准二阶中心矩的椭圆的长轴长度(像素意义下) |
|
'MinorAxisLength' |
与区域具有相同标准二阶中心矩的椭圆的短轴长度(像素意义下) |
|
'Eccentricity' |
与区域具有相同标准二阶中心矩的椭圆的离心率(可作为特征) |
|
'Orientation' |
与区域具有相同标准二阶中心矩的椭圆的长轴与x轴的交角(度) |
|
'Image' |
与某区域具有相同大小的逻辑矩阵 |
|
'FilledImage' |
与某区域具有相同大小的填充逻辑矩阵 |
|
'FilledArea' |
填充区域图像中的on像素个数 |
|
'ConvexHull' |
包含某区域的最小凸多边形 |
|
'ConvexImage' |
画出上述区域最小凸多边形 |
|
'ConvexArea' |
填充区域凸多边形图像中的on像素个数 |
|
'EulerNumber' |
几何拓扑中的一个拓扑不变量——欧拉数 |
|
'Extrema' |
八方向区域极值点 |
|
'EquivDiameter' |
与区域具有相同面积的圆的直径 |
|
'Solidity' |
同时在区域和其最小凸多边形中的像素比例 |
|
'Extent' |
同时在区域和其最小边界矩形中的像素比例 |
|
'PixelIdxList' |
存储区域像素的索引下标 |
MATLAB连通域标记函数的更多相关文章
- MATLAB 提取头发(最大连通域)
I= imread('2.jpg'); figure(), imshow(I) R=I(:,:,); G=I(:,:,); B=I(:,:,); [m,n]=size(r); mask=zeros(m ...
- [matlab] 2.数据可视化
t=(0:0.01:2)*pi; x=sin(t); y=cos(t); z=cos(2*t); plot3(x,y,z,'r-','linewidth',1.5); box on; %打开坐标系边框 ...
- (原)Max Area of Island(即连通域标记)
转载请注明出处: https://www.cnblogs.com/darkknightzh/p/10493114.html 1. 问题 Given a non-empty 2D array grid ...
- matlab实现MSER(最大极值稳定区域)来进行文本定位
一.自然场景文本定位综述 场景图像中文本占据的范围一般都较小,图像中存在着大范围的非文本区域.因此,场景图像文本定位作为一个独立步骤越来越受到重视.这包括从最先的CD和杂志封面文本定位到智能交通系 ...
- matlab学习笔记之五种常见的图形绘制功能
分类: 离散数据图形绘制 函数图形绘制 网格图形绘制 曲面图形绘制 特殊图形绘制 本文重点介绍matlab五种图形绘制方法的后三种. 一.网格图形绘制 以绘制函数z=f(x,y)三维网格图为例,下面为 ...
- Matlab得到二值图像中最大连通区域
有时候要将二值化图像中最大的连通域保存下来.以下函数提供了一种方法: %function [img]=maxLianTongYu(I):求图像中最大的连通域 %输入:I 输入图像 %输出:img 仅包 ...
- Python实现MATLAB中的 bwlabel函数
最近做验证码识别,原本用MATLAB已经实现的整个识别模型,不过代码要部署在Linux服务器上还是需要用另外的语言实现,于是决定用Python + OpenCV来实现. bwlabel函数的作用是检测 ...
- 个人笔记 - MATLAB
1.教程 2.基本知识 2.1 帮助文档设置成中文:链接1 2.2 多行注释: 链接1 2.3 MATLAB基本数据类型: 链接1 链接2 2.4 matlab中的 ndims(a).length( ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
随机推荐
- undefined reference to `pthread_create'问题解决
在编译pthread有关的程序时,出现undefined reference to `pthread_create'这样的错误. 问题原因: pthread 库不是 Linux 系统默认的库,连接时需 ...
- Android IOS WebRTC 音视频开发总结(四五)-- ORTC背后的真相
本文主要介绍ORTC(Object Real-time Communication),支持原创,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help. - ...
- windows上修改路由表
1.查看电脑中的路由的命令: route print 2.修改“metric”,值越小权限越高: route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 5 ...
- 在Apache下发布ASP.NET程序
为什么要在apache下发布ASP.NET,看这篇文章您一定有自己的原因. 我是因为XP系统里面同时装IIS 和 AppServer会有问题. 步骤: 1.环境搭建,这个不废话,我安装的是.NET2. ...
- WinRt BottomAppBar
BottomAppBarDemo.xaml <Page.BottomAppBar> <AppBar> <StackPanel Orientation="Hori ...
- POJ C程序设计进阶 编程题#2:字符串中次数第2多的字母
编程题#2:字符串中次数第2多的字母 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536k ...
- CentOS 6.X版本升级PHP
#-----------------------------CentOS 6.X版本升级PHP------------------#! /bin/sh #1.关闭selinuxcp -rp /etc/ ...
- 发送Ajax请求获取JSON格式数据
Aspx前端页面: <script type="text/javascript"> $(function () { $.getJSON("Ajax/TestA ...
- 在HTML文件中加载js
js加载只分为两种: 1.全局js,放在<head>标签里面,整个页面很多都用到的,它是优先加载的. 2.局部js,放在</html>结束标签以内的任何位置,它是第二加载的.
- Visual Studio 2010 更新NuGet Package Manager出错解决办法
在Visual Studio 2010的扩展管理器中发现NuGet Package Manger有最新版本更新提示,选择更新安装提示以下错误信息: 2013/4/25 1:11:48 - Micros ...