如何使用 Python 在 OpenCV 中对图像执行双边滤波操作?

opencvpythonserver side programmingprogramming

双边滤波操作在平滑图像和去除噪声方面非常有效。双边滤波的主要优点是它保留了边缘,这与平均值和中值滤波不同。与其他滤波器相比,双边滤波操作速度较慢。我们可以使用 cv2.bilateralFilter() 方法对图像执行双边滤波。

语法

以下是此方法的语法。

cv2.bilateralFilter(img, d, sigmaColor, sigmaSpace)

此方法接受以下 参数

  • img − 要应用双边滤波操作的输入图像。

  • d − 表示像素邻域直径的整数类型变量。

  • sigmaColor − 表示颜色空间中的滤波器 sigma 的整数值。值越大,相距较远的颜色将开始混合。

  • sigmaSpace − 一个整数值,表示坐标空间中的滤波器 sigma。其值越大,像素混合在一起的距离越远,前提是它们的颜色位于 sigmaColor 范围内。

步骤

要执行双边滤波操作,您可以按照以下步骤操作 −

导入所需的库。在以下所有 Python 示例中,所需的 Python 库是 OpenCV。确保您已经安装了它。

import cv2

读取输入图像。

img = cv2.imread('birds.jpg')

对输入图像应用双边滤波。我们将 d、sigmaColor 和 sigmaSpace 分别作为 9、15 和 15 传递给函数。

bilateral = cv2.bilateralFilter(img, 9, 75, 75)

显示双边滤波后的图像。

cv2.imshow('bilateral.jpg', opposite)
cv2.waitKey(0)
cv2.destroyAllWindows())

示例

让我们看一个对输入图像执行双边滤波操作的示例。

import cv2 # Read the image. img = cv2.imread('birds.jpg') # Apply bilateral filter with d = 9, # sigmaColor = sigmaSpace = 75. bilateral = cv2.bilateralFilter(img, 9, 75, 75) # display the output cv2.imshow('bilateral.jpg', bilateral) cv2.waitKey(0) cv2.destroyAllWindows()

我们将使用以下图像作为此程序中的输入文件 -

输出

当我们执行上述代码时,它将产生以下输出 -

我们应用了双边滤波器,d=9,sigmaColor=55 和 sigmaSpace=55

并且,我们得到以下输出 窗口 -

注意输入之间的差异图像与双边滤波后的图像。


相关文章