OpenCV库的学习笔记(五)Smoothing Images

目标:

  • 使用各种低通滤波器模糊图像。
  • 将定制过滤器应用于图像(2D 卷积)。

2D卷积(图像滤波)

与一维信号一样,图像也可以使用各种低通滤波器 (LPF)高通滤波器 (HPF) 等进行滤波。LPF 有助于去除噪声、模糊图像等。HPF 滤波器有助于在图像中找到边缘图片

OpenCV 提供了一个函数 cv.filter2D() 来将内核与图像进行卷积。例如,我们将在图像上尝试平均滤波器。 5x5 均值滤波器内核如下所示: 

操作是这样的:将这个内核保持在一个像素之上,将这个内核下面的所有 25 个像素相加,取平均值,并用新的平均值替换中心像素。对图像中的所有像素继续执行此操作。

图像模糊(图像平滑)

图像模糊是通过将图像与低通滤波器核进行卷积来实现的。它对于消除噪音很有用。它实际上从图像中去除了高频内容(例如:噪声、边缘)就是像素变化大的地方。所以边缘在这个操作中有点模糊(也有不模糊边缘的模糊技术)。 OpenCV 提供了四种主要类型的模糊技术。

均值滤波

这是通过将图像与归一化盒式滤波器进行卷积来完成的。它只是取内核区域下所有像素的平均值并替换中心元素。这是由函数 cv.blur() 或 cv.boxFilter() 完成的。我们应该指定内核的宽度和高度。一个 3x3 的归一化盒式过滤器如下所示:

高斯滤波

在这种方法中,使用高斯核而不是盒式滤波器。它是通过函数 cv.GaussianBlur() 完成的。我们应该指定内核的宽度和高度,它们应该是正数且奇数。我们还应该指定 X 和 Y 方向的标准偏差,分别为 sigmaX 和 sigmaY。如果仅指定 sigmaX,则 sigmaY 与 sigmaX 相同。如果两者都为零,则它们是根据内核大小计算的。高斯模糊在去除图像中的高斯噪声方面非常有效。

中值滤波

这里,函数 cv.medianBlur() 取内核区域下所有像素的中值,中心元素被这个中值替换。这对图像中的椒盐噪声非常有效。有趣的是,在上述过滤器中,中心元素是新计算的值,它可能是图像中的像素值或新值。但在中值模糊中,中心元素总是被图像中的某个像素值所取代。它有效地降低了噪音。它的内核大小应该是一个正奇数。

双边过滤 

cv.bilateralFilter() 在去除噪声方面非常有效,同时保持边缘锐利。但与其他过滤器相比,操作速度较慢。我们已经看到高斯滤波器获取像素周围的邻域并找到其高斯加权平均值。这个高斯滤波器是单独的空间函数,即在过滤时考虑了附近的像素。它不考虑像素是否具有几乎相同的强度。它不考虑像素是否为边缘像素。所以它也模糊了边缘,这是我们不想做的。

双边滤波在空间上也是取一个高斯滤波器,但是多了一个高斯滤波器,它是像素差的函数。空间的高斯函数确保只考虑附近的像素进行模糊处理,而像素差的高斯函数确保只考虑与中心像素具有相似强度的那些像素进行模糊处理。所以它保留了边缘,因为边缘处的像素会有很大的强度变化。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值