如何在使用Python的OpenCV中对图像执行双边滤波操作?
双边滤波操作在图像平滑和去除噪声方面非常有效。双边滤波的主要优点是它可以保留边缘,这与平均滤波和中值滤波不同。与其他滤波器相比,双边滤波操作速度较慢。我们可以使用`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', bilateral) 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()
我们将在本程序中使用以下图像作为**输入文件**:
输出
执行上述代码后,将产生以下输出:
We applied bilateral filter with d=9, sigmaColor=55 and sigmaSpace=55
并且,我们将得到以下输出窗口:
注意输入图像和双边滤波后图像之间的差异。
广告