Python OpenCV getGaussianKernel() 函數用於查找高斯濾波器係數。高斯核也用於高斯模糊。高斯模糊是一種使用低通濾波器的平滑技術,其權重來自高斯函數。事實上,這是 CV(計算機視覺)應用中使用最廣泛的低通濾波器。高斯濾波器的不同特性使算法更加高效。
用法:cv.getGaussianKernel(ksize, sigma[, ktype])
參數:
- Ksize:是光圈大小。 Ksize 值應該是奇數和正數。
- sigma:Sigma 是高斯標準差。如果它是非正數,它從 ksize 計算為 sigma = 0.3*((ksize-1)*0.5 - 1) + 0.8。
- ktype:濾波器係數的類型。它可以是 CV_32F 或 CV_64F。
返回值:
高斯濾波器係數矩陣。
getGaussianKernel() 函數計算並返回維度為 ksize×1 的高斯濾波器係數矩陣:
Gi=α∗e−(i−(ksize−1)/2)2/(2∗sigma2)
其中 i=0 到 ksize−1,α 是選擇的比例因子,因此 ∑iGi=1。
可以將兩個這樣的生成內核傳遞給 sepFilter2D。這些傳遞的函數會自動識別平滑內核(權重總和等於 1 的對稱內核)並相應地處理它們。您也可以使用 higher-level GaussianBlur。在這裏,要記住的一件事是,作為孔徑大小的 k 也應該是奇數和正數。
所以,你可能會有一個問題,什麽是高斯核,我們為什麽需要它?高斯核是線性可分的。這意味著我們可以將任何二維過濾器分解為兩個一維過濾器。正因為如此,計算複雜度從 O(n2) 到 O(n)。什麽時間在計算機科學中很重要。
應用多個連續的高斯核與應用單個更大的高斯模糊相同,其半徑等於多個核半徑平方和的平方根。使用這個特性,我們可以通過多個可分離過濾器的混合來近似一個不可分離過濾器。使用帕斯卡三角形可以快速獲得高斯核權重(1-D)。
範例1:
在這裏,在下麵的示例中,我們將找到一張圖像的高斯核。我們首先使用 cv2 讀取圖像。然後我們使用 getgaussiankernel() 函數創建大小為 3×1 的高斯核。孔徑大小的 ksize 是奇數和正數。
本例中使用了下圖:
Python3
# Python OpenCV - getgaussiankernel() Function
# import cv2
import cv2
# read image
img = cv2.imread('gfg2.jpg')
# Creates a 1-D Gaussian kernel
a = cv2.getGaussianKernel(3, 1)
# print Gaussian filter coefficients matrix
print(a)
輸出:
[[0.27406862] [0.45186276] [0.27406862]]
範例2:
在這個例子中,我們將找到一張圖像的高斯核,我們使用 getgaussiankernel() 函數創建大小為 7×1 的高斯核。
Python3
# Python OpenCV - getgaussiankernel() Function
# import cv2
import cv2
# read image
img = cv2.imread('gfg_logo.png')
# Creates a 1-D Gaussian kernel
a = cv2.getGaussianKernel(7, 1)
# print Gaussian filter coefficients matrix
print(a)
輸出:
[[0.00443305] [0.05400558] [0.24203623] [0.39905028] [0.24203623] [0.05400558] [0.00443305]]
相關用法
- Python OpenCV setWindowTitle()用法及代碼示例
- Python OpenCV resizeWindow()用法及代碼示例
- Python OpenCV waitKey()用法及代碼示例
- Python OpenCV waitKeyEx()用法及代碼示例
- Python OpenCV getRotationMatrix2D()用法及代碼示例
- Python OpenCV destroyAllWindows()用法及代碼示例
- Python OpenCV namedWindow()用法及代碼示例
- Python OpenCV selectroi()用法及代碼示例
- Python OpenCV imdecode()用法及代碼示例
- Python OpenCV getTrackbarPos()用法及代碼示例
- Python OpenCV Filter2D()用法及代碼示例
- Python OpenCV Canny()用法及代碼示例
- Python OpenCV setTrackbarPos()用法及代碼示例
- Python OpenCV haveImageReader()用法及代碼示例
注:本文由純淨天空篩選整理自rushi_javiya大神的英文原創作品 Python OpenCV – getgaussiankernel() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。