本文记录 Python 中二维高斯核的生成方法。
生成思路 {#生成思路}
- 使用
cv2.getGaussianKernel(ksize, sigma[, ktype])
函数 - 该函数用于生成一维高斯核
- 生成一维高斯核后乘以自己的转置得到二维高斯核
核心函数 {#核心函数}
-
cv2.getGaussianKernel(ksize, sigma[, ktype])
,函数生成一维高斯核 -
参数说明
| 参数 | 描述 | 限制 |
|-------|--------------------------------------------------------------------------------------------------|-----------------------------|
| ksize | 核尺寸(文档中要求奇数,使用时可以是偶数) | 正整数 |
| sigma | 高斯函数的标准差 | 正数 |
| ktype | 滤波器系数的类型,可以是 cv2.CV_32f
或 cv2.CV_64f
,配置参数后生成数据会分别表示为 float32
和 float64
类型,默认为cv2.CV_64f
| cv2.CV_32f
或 cv2.CV_64f
|
- 公式:
$$
\mathrm{G}_{\mathrm{i}}=\alpha * e^{-(\mathrm{i}-(\mathrm{ksize}-1) / 2)^{2} /(2 * \mathrm{sigma})^{2}}
$$
生成方法 {#生成方法}
- 生成一维高斯核
- 计算得到二维高斯核
- 如果需要将其归一化到 0 - 1,可以使用
mtutils
中的min_max_normalize
函数:
参考资料 {#参考资料}
- https://docs.opencv.org/3.0-beta/modules/imgproc/doc/filtering.html?highlight=getgaussiankernel#Mat getGaussianKernel(int ksize, double sigma, int ktype)
- https://blog.csdn.net/qq_16013649/article/details/78784791
- https://blog.csdn.net/weixin_41563746/article/details/114199025
文章链接:
https://www.zywvvd.com/notes/coding/python/2d-gaussian-kernel/2d-gaussian-kernel/