【Emgu CV教程】9.7、形态学常用操作之黑帽

本文介绍了黑帽滤波的概念,它是图像处理中的一个技术,用于去除前景物体内部的噪声。作者通过EmguCV库的MorphologyEx函数展示了如何使用黑帽操作,并提供了代码实例和不同参数设置下的运行结果分析。
摘要由CSDN通过智能技术生成


一、相关概念

1.什么叫黑帽

顶帽,英文名称是Black Hat,就是用 闭运算的原图(先膨胀后腐蚀) - 原始图像,前面介绍了,闭运算是先膨胀后腐蚀,因此能除去前景物体内部的小黑点、胡椒噪声,所以黑帽的作用就是获得前景物体内部的小黑点、胡椒噪声

2.黑帽的函数

Emgu CV中,黑帽的函数定义如下:

public static void MorphologyEx(
	IInputArray src,  // 输入图像
	IOutputArray dst, // 输入图像
	MorphOp Blackhat, // 操作方式,顶帽是MorphOp.Blackhat
	IInputArray kernel, // 结构元素大小
	Point anchor, // 锚点位置,默认为中心new Point(-1, -1)
	int iterations, // 迭代次数
	BorderType borderType, // 边界填充方式,一般取默认
	MCvScalar borderValue // 边界值,使用时一般写成new MCvScalar()
)

二、演示

1.原始素材

原始素材srcMat如下图:
在这里插入图片描述
这张图片的白色前景物体内,有很多黑色的胡椒噪声。

2.代码

Emgu CV黑帽演示代码如下:

Mat tempMat = srcMat.Clone();
Mat gray = new Mat();
Mat dstMat = new Mat();
int kernelX = Convert.ToInt16(TextBoxX.Text.Trim().ToString()); // structuring element结构元素 或者 kernel 内核的X值,水平方向
int kernelY = Convert.ToInt16(TextBoxY.Text.Trim().ToString()); // structuring element结构元素 或者 kernel 内核的X值,垂直方向
int iterations = Convert.ToInt16(TextBoxIterations.Text.Trim().ToString()); // 需要执行运算的次数

// 要转成灰度图
CvInvoke.CvtColor(tempMat, gray, ColorConversion.Bgr2Gray);

// 定义结构元素,其中元素的形状是矩形,size大小由两个文本框决定,默认锚点new Point(-1,-1)是指在中心
Mat element = CvInvoke.GetStructuringElement(ElementShape.Rectangle, new System.Drawing.Size(kernelX, kernelY), new System.Drawing.Point(-1, -1));

// 黑帽操作,其中锚点位置new Point(-1, -1)代表中心
CvInvoke.MorphologyEx(gray, dstMat, MorphOp.Blackhat, element, new System.Drawing.Point(-1, -1), iterations, BorderType.Default, new MCvScalar());
CvInvoke.Imshow("Gray, " + gray.Size.ToString(), gray);
CvInvoke.Imshow("Close, " + dstMat.Size.ToString(), dstMat);

注意哈,结构元素的内核要对水平方向和垂直方向分别定义。

3.运行结果

假设kernelX = 3,kernelY = 3,iterations = 1, 黑帽运算结果如下所示:
在这里插入图片描述
黑帽运算后,原始图像内的黑色胡椒噪声,在输出的图像中变成了白色,而前景物体基本消失。如果 kernelX = 19,kernelY =1,iterations = 1, 黑帽运算结果如下所示:
在这里插入图片描述
怎么变成了这样呢,我们先看一下原始图像用kernelX = 19,kernelY =1,它闭运算的结果及原始图像的对比是这样的:
在这里插入图片描述
闭运算导致右上角垂直方向的矩形连在一起,因此再减去原图就出现了垂直部分。而闭运算对水平部分的外部边缘改变不大,再减去原图只能得到位于内部的白色噪声。


原创不易,请勿抄袭。共同进步,相互学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值