OpenCV3 5.3 用形态学滤波器开启和闭合图像

用形态学滤波器开启和闭合图像

开启和闭合滤波器的定义只与基本的腐蚀和膨胀运算有关。

开启和闭合滤波器常用于目标检测闭合滤波器可把错误分裂成小碎片的物体连接起来,而开启滤波器可以移除图像噪声产生的斑点。

如果优先考虑过滤噪声,可以先开启后闭合,但会消除部分物体碎片

原图

在这里插入图片描述

开启图像

开启图像是对图像先腐蚀后膨胀
在这里插入图片描述
开启滤波器消除了背景中的几个小物体,所有小到不能容纳完整结构元素的物体都会被移除。

//开启图像(腐蚀+膨胀)
cv::Mat opened;
cv::morphologyEx(binary, opened, cv::MORPH_OPEN, cv::Mat());
cv::imshow("opened", opened);

函数签名

CV_EXPORTS_W void morphologyEx( InputArray src, OutputArray dst,
                                int op, InputArray kernel,
                                Point anchor = Point(-1,-1), int iterations = 1,
                                int borderType = BORDER_CONSTANT,
                                const Scalar& borderValue = morphologyDefaultBorderValue() );

开启和闭合等滤波器共用同一个函数cv::morphologyEx

参数分别为:输入矩阵,输出矩阵,运算符(预定义常量),结构元素,原点坐标,迭代次数,后面默认即可。

闭合图像

闭合图像是对图像先膨胀后腐蚀
在这里插入图片描述
闭合滤波器滤波后,白色前景小物体的空隙已经被填满,也会把邻近物体连接起来,所有小到不能容纳完整结构元素的空隙或间隙都会被闭合滤波器消除。

//闭合图像(膨胀+腐蚀)
cv::Mat closed;
cv::morphologyEx(binary, closed, cv::MORPH_CLOSE, cv::Mat());
cv::imshow("closed", closed);

函数同开启滤波器,运算符改为cv::MORPH_CLOSE即可。

开启和闭合运算的基本性质

对同一副图像进行多次同样的开启运算无效,闭合也一样,事实上,第一次使用开启了滤波器时已经填充了空隙,这些运算是幂等的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值