如何在使用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

並且,我們將得到以下輸出視窗:

注意輸入影像和雙邊濾波後圖像之間的差異。

更新於:2022年9月28日

1K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.