如何在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()
我们将使用以下图像作为 输入文件 在此程序中−
输出
当我们执行以上代码时,它将产生以下输出 **** −
我们使用d = 9,sigmaColor = 55和sigmaSpace = 55应用了双边滤波
我们得到以下输出窗口−
注意输入图像和经过双边滤波后的图像之间的区别。