【图像处理】-021 开运算和闭运算

【图像处理】-021 开运算和闭运算

  上一篇中说到了图像的形态学操作,介绍了腐蚀和膨胀。由于腐蚀和膨胀都会对目标的面积产生较大的影响(依据操作元素的大小),影响图像中正常目标的判断。在形态学操作中,还有开运算和闭运算操作,操作结果对目标的尺寸只有较小的影响。开运算一般会平滑物体的轮廓、断开较窄的狭颈并消除细的突出物。闭运算也会平滑轮廓的一部分,通常会弥合较窄的间断和细长的沟壑,消除小的孔洞,填补轮廓线中的断裂。

1 开运算

  结构元 B B B对集合 A A A的开操作,表示为 A ∘ B A\circ B AB,其定义如下:
(1) A ∘ B = ( A ⊝ B ) ⨁ B A \circ B =(A\circleddash B)\bigoplus B \tag{1} AB=(AB)B(1)
B B B A A A的开操作就是 B B B A A A的腐蚀,紧接着用B对结果进行膨胀,也就是用结构元素B,先对A进行腐蚀操作,在对腐蚀结果进行膨胀操作。

2 闭运算

  用结构元B对集合A的闭运算,表示为 A ⋅ B A\cdot B AB,其定义如下:
(2) A ⋅ B = ( A ⨁ B ) ⊝ B A\cdot B=(A\bigoplus B)\circleddash B \tag{2} AB=(AB)B(2)
B对集合A的闭运算,就是先用B对A进行膨胀,然后对结果用B进行腐蚀,先膨胀后腐蚀。

3 实现

#include "../Include/baseOps.h"
int main()
{
	//OutputDebugString(L"AB");
	SetCurrentDirectoryToExePath();
	cv::Mat src = cv::imread("../images/72.png");
	cv::imshow("原图", src);

	cv::Mat bw;
	cv::threshold(src, bw, 125, 255, cv::THRESH_BINARY);
	cv::imshow("125阈值二值化", bw);

	cv::Mat m = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));
	cv::Mat dst;
	cv::morphologyEx(bw, dst, cv::MORPH_ERODE, m);
	cv::imshow("腐蚀", dst);

	cv::morphologyEx(bw, dst, cv::MORPH_DILATE, m);
	cv::imshow("膨胀", dst);

	cv::morphologyEx(bw, dst, cv::MORPH_OPEN, m);
	cv::imshow("开运算", dst);

	cv::morphologyEx(bw, dst, cv::MORPH_CLOSE, m);
	cv::imshow("闭运算", dst);
	cv::waitKey(0);

	return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值