如何使用 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
并且,我们得到以下输出 窗口 -
注意输入之间的差异图像与双边滤波后的图像。