OpenCV 模糊 (图像平滑)

2025年3月17日 | 阅读 3 分钟

模糊是图像处理中常用的去噪技术。它通常用于消除高频内容,例如图像中的噪声、边缘。当我们在图像上应用模糊时,边缘会被模糊化。模糊的优点如下

模糊的优点

模糊的好处如下

  • 它消除了低强度边缘。
  • 它有助于平滑图像。
  • 它有助于隐藏细节;例如,在许多情况下都需要模糊,例如警察故意想隐藏受害者的脸。

OpenCV 提供了主要以下类型的模糊技术。

OpenCV 平均模糊

在这种技术中,图像与一个盒式滤波器(标准化)卷积。它计算内核区域下所有像素的平均值,并将中心元素替换为计算出的平均值。 OpenCV 提供了 cv2.blur()cv2.boxFilter() 来执行此操作。 我们应该定义内核的宽度和高度。 cv2.blur() 函数的语法如下。

参数

src - 它表示源(输入)图像。

dst - 它表示目标(输出)图像。

ksize - 它表示内核的大小。

anchor - 它表示锚点。

borderType - 它表示用于输出的边框类型。

请看以下示例

输出

OpenCV Blur

OpenCV 中值模糊

中值模糊操作与高斯模糊非常相似。 OpenCV 提供了 medianblur() 函数来执行模糊操作。它获取内核区域下所有像素的中值,并将中心元素替换为此中值。 它对于图像中的椒盐噪声非常有效。 内核大小应该是一个正奇整数。以下是此方法的语法。

参数

src- 它表示源(输入图像)。

dst - 它表示目标(输出图像)。

ksize - 它表示内核的大小。

请看以下示例

输出

OpenCV Blur

OpenCV高斯模糊

图像平滑是一种有助于减少图像中噪声的技术。由于相机传感器,图像可能包含各种类型的噪声。它基本上从图像中消除了高频(噪声,边缘)内容,因此在此操作中,边缘会略微模糊。 OpenCV 提供了 gaussianblur() 函数来对图像应用平滑处理。 语法如下

参数

  • src -用于输入图像。
  • dst -它是一个变量,用于存储输出图像。
  • ksize -它定义高斯核大小[高度 宽度]。高度和宽度必须是奇数 (1,3,5,..) 并且可以具有不同的值。如果 ksize 设置为 [0,0],则 ksize 由 sigma 值计算。
  • sigmaX -沿 X 轴(水平方向)的内核标准差。
  • sigmaY -沿 Y 轴(垂直方向)的内核标准差。如果 sigmaY = 0,则 sigmaX 值用于 sigmaY。

borderType - 这些是当内核应用于图像边界时指定的图像边界。可能的边框类型是

  • cv.BORDER_CONSTANT
  • cv.BORDER_REPLICATE
  • cv.BORDER_REFLECT
  • cv.BORDER_WRAP
  • cv.BORDER_REFLECT_101
  • cv.BORDER_TRANSPARENT
  • cv.BORDER_REFLECT101
  • cv.BORDER_DEFAULT
  • cv.BORDER_ISOLATED

请看以下示例

输出

OpenCV Gaussian Blur