opencv 删除二值图中小面积连通区域(matlab的regionprops)

背景
我在matlab中用了 regionprops来统计二值图的连通区域的性质, 并删除小面积的二值图区域. 在opencv中找了好久, 有说用第三方库的cvblob,感觉配置起来好麻烦. 最终发现opencv(3.1)有个类似功能的函数;connectedComponentsWithStats
(不知道这个函数所在的最低版本是多少)

这篇博客写的更仔细,有需求的可以看看


两个相关函数

connectedComponentsconnectedComponentsWithStats. 前者是后者的简化版本,这里只介绍后者, 也就是connectedComponentsWithStats

int cv::connectedComponentsWithStats	(	InputArray 	image,
OutputArray 	labels,
OutputArray 	stats,
OutputArray 	centroids,
int 	connectivity = 8,
int 	ltype = CV_32S 
)	

参数说明

InputArray image 输入图, 8UC1类型的图
OutputArray labels label图, 针对不同的连通区域给与不同的标签
OutputArray stats 对各个连通区域的统计信息(这个变量会是CV_32S类型)
OutputArray centroids 每个连通区域的中心(这个我不清楚它的计算公式是什么, 行,列均值?)数据类型是CV_64F.
int connectivity 连通区域的类型 8连通或者4连通
int ltype label的数据类型CV_32S 或者CV_16U

注意要点

一 \color{Blue}{\text{一}} stats返回的是一个n × 5 的矩阵 , n表明了连通区域的个数:
1st 列~ 4th 列分别是: 此连通区域的外接矩形 的: 左上角点的x坐标, y坐标, 宽, 高, ;
5th 列是 连通区域的面积.
注意,state不描述连通区域的精确位置, 只描述外接矩形的位置, 与regionprops略有不同。如果需要连通区域的精确位置,需要去返回的labels去确认。

二 \color{Blue}{\text{二}} stats所返回的连通区域中也包含背景本身这一连通区域例子如下:

0 0 0 0 0 0
0 0 1 1 0 0
0 0 1 1 0 0
0 0 0 0 0 0

针对以上连通区域, stats返回一个 2 ×5的矩阵, 第一行统计的是背景(0)这一连通区域, 第二行才是中间4个1这一连通区域

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值