必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-08-12 00:44:16来源:IT技术作者:seo实验室小编阅读:67次「手机版」
 

regionprops

参见链接:http://www.iloveMatlab.cn/thread-262603-1-1.html

regionprops统计被标记的区域的面积分布,显示区域总数。

函数regionprops语法规则为:STATS = regionprops(L,properties)

该函数用来测量标注矩阵L中每一个标注区域的一系列属性。

L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推。

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

Properties可以是由逗号分割的字符串列表、包含字符 串的单元数组、单个字符串'all'或者'basic'。如果properties等于字符串'all',则表4.1中的度量数据都将被计算;如果properties等于字符串'basic',则属性:'Area','Centroid'和'BoundingBox'将被计算。表1就是所有有效的属性字符串。

表1 属性字符串列表----度量图像区域的属性或功能

'Area' 图像各个区域中像素总个数

'BoundingBox'  包含相应区域的最小矩形

'Centroid' 每个区域的质心(重心)

'MajorAxisLength' 与区域具有相同标准二阶中心矩的椭圆的长轴长度(像素意义下)

'MinorAxisLength' 与区域具有相同标准二阶中心矩的椭圆的短轴长度(像素意义下)

'Eccentricity' 与区域具有相同标准二阶中心矩的椭圆的离心率(可作为特征)

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

'Image' 与某区域具有相同大小的逻辑矩阵

'FilledImage' 与某区域具有相同大小的填充逻辑矩阵

'FilledArea' 填充区域图像中的on像素个数

'ConvexHull' 包含某区域的最小凸多边形

'ConvexImage' 画出上述区域最小凸多边形

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

'EulerNumber' 几何拓扑中的一个拓扑不变量——欧拉数

'Extrema' 八方向区域极值点

'EquivDiameter' 与区域具有相同面积的圆的直径

'Solidity' 同时在区域和其最小凸多边形中的像素比例

'Extent' 同时在区域和其最小边界矩形中的像素比例

'PixelIdxList' 存储区域像素的索引下标

'PixelList' 存储上述索引对应的像素坐标

参见链接:http://blog.csdn.net/shaoxiaohu1/article/details/40272531

有这样一幅图,

我们想获取其中的连通区域,可以使用以下代码

[plain] view plain copy  print?

  1. src_img_name = 'blue_sky_white_clound_002594.jpg';  
  2. img = imread(src_img_name);  
  3.   
  4. % get binary image  
  5. gray_img = rgb2gray(img);  
  6. T = graythresh(gray_img);  
  7. bw_img = im2bw(gray_img, T);  
  8.   
  9. % find the largest connected region  
  10. img_reg = regionprops(bw_img,  'area', 'boundingbox');  
  11. areas = [img_reg.Area];  
  12. rects = cat(1,  img_reg.BoundingBox);  

显示所有连通区域,

[plain] view plain copy  print?

  1. figure(1),  
  2. imshow(bw_img);  
  3. for i = 1:size(rects, 1)  
  4.     rectangle('position', rects(i, :), 'Edgecolor', 'r');  
  5. end  

显示最大连通区域,

[plain] view plain copy  print?

  1. [~, max_id] = max(areas);  
  2. max_rect = rects(max_id, :);  
  3.   
  4. % show the largest connected region  
  5. figure(2),   
  6. imshow(bw_img);  
  7. rectangle('position', max_rect, 'EdgeColor', 'r');  

相关阅读

基于matlab的傅里叶变换

基于matlab的傅里叶变换 例子1 作用:使用傅里叶变换找出隐藏在噪声中的信号的频率成分。(指定信号的参数,采样频率为1 kHz,信号持

ubuntu:窗口/终端最大化或者全屏快捷键设置

窗口最大化:ctrl+win窗+↑窗口还原:ctrl+win窗+↓ 也可以通过自定义快捷键添加 1,打开“系统设置”==>“键盘”==>“自定义快捷键”

Matlab plotyy画双纵坐标图实例

原文地址:Matlab plotyy画双纵坐标图实例作者:gypsy Matlab plotyy画双纵坐标图实例x = 0:0.01:20;y1 = 200*exp(-0.05*x).*sin(x)

Matlab数模笔记(10)--线性规划、非线性规划 与 0/1规划

@1、背景举例:Lingo软件:非线性规划 lingo :lingo code:solve:0/1 规划 线性:举例:分析:模型:lingo code:结果:

matlab里面的取整函数

在对数据进行处理时,有时需要对含有小数的数据进行取整处理,matlab里面常用的几种取整函数:round、fix、floor、ceil。 1.round函数

分享到:

栏目导航

推荐阅读

热门阅读