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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。