Python OpenCV – getgaussiankernel()函数
Python OpenCV getGaussianKernel()函数用于查找高斯滤波器系数。高斯核也用于高斯模糊。高斯模糊是一种使用低通滤波器的平滑技术,其权重源自高斯函数。事实上,这是 CV(计算机视觉)应用中使用最广泛的低通滤波器。高斯滤波器的不同特性使算法更加高效。
Syntax: cv.getGaussianKernel(ksize, sigma[, ktype])
Parameters:
- Ksize: It is the Aperture size. Ksize value should be odd and positive.
- sigma: Sigma is the Gaussian standard deviation. It is computed from ksize as sigma = 0.3*((ksize-1)*0.5 – 1) + 0.8 if it is non-positive.
- ktype: It is the type of filter coefficients. It can be CV_32F or CV_64F.
Returns:
matrix of Gaussian filter coefficients.
getGaussianKernel()函数计算并返回维度为 ksize×1 的高斯滤波器系数矩阵:
Gi=α∗e−(i−(ksize−1)/2)2/(2∗sigma2)
其中 i=0 到 ksize−1,α 是选择的比例因子,因此 ∑iGi=1。
可以将两个这样的生成内核传递给 sepFilter2D。这些传递的函数会自动识别平滑内核(权重总和等于 1 的对称内核)并相应地处理它们。您也可以使用更高级别的 GaussianBlur。在这里,要记住的一件事是,作为孔径大小的 k 也应该是奇数和正数。
所以,你可能会有一个问题,什么是高斯核,我们为什么需要它?高斯核是线性可分的。这意味着我们可以将任何二维过滤器分解为两个一维过滤器。因此,计算复杂度从 O(n 2 ) 降低到 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)
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.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]]