本文最后更新于:2024年1月14日 晚上

本文记录 Python 中二维高斯核的生成方法。

生成思路

  • 使用 cv2.getGaussianKernel(ksize, sigma[, ktype]) 函数
  • 该函数用于生成一维高斯核
  • 生成一维高斯核后乘以自己的转置得到二维高斯核

核心函数

  • cv2.getGaussianKernel(ksize, sigma[, ktype]) ,函数生成一维高斯核

  • 官方函数文档

  • 参数说明

参数 描述 限制
ksize 核尺寸(文档中要求奇数,使用时可以是偶数) 正整数
sigma 高斯函数的标准差 正数
ktype 滤波器系数的类型,可以是 cv2.CV_32fcv2.CV_64f,配置参数后生成数据会分别表示为 float32float64类型,默认为cv2.CV_64f cv2.CV_32fcv2.CV_64f
  • 公式:
    $$
    \mathrm{G}_{\mathrm{i}}=\alpha * e^{-(\mathrm{i}-(\mathrm{ksize}-1) / 2)^{2} /(2 * \mathrm{sigma})^{2}}
    $$

生成方法

  • 生成一维高斯核
1
2
import cv2
data = cv2.getGaussianKernel(300, 100, cv2.CV_32F)
  • 计算得到二维高斯核
1
2
3
4
5
6
7
import cv2 
from mtutils import PIS

data = cv2.getGaussianKernel(300, 100, cv2.CV_32F)

gaussian_kernel = data * data.T
PIS(gaussian_kernel)

  • 如果需要将其归一化到 0 - 1,可以使用 mtutils 中的 min_max_normalize 函数:
1
2
3
4
5
6
7
8
9
10
11
import cv2 
from mtutils import PIS
from mtutils import min_max_normalize

data = cv2.getGaussianKernel(300, 100, cv2.CV_32F)

gaussian_kernel = data * data.T
gaussian_kernel = min_max_normalize(gaussian_kernel)
PIS(gaussian_kernel)

pass

参考资料



文章链接:
https://www.zywvvd.com/notes/coding/python/2d-gaussian-kernel/2d-gaussian-kernel/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

Python 生成 2D 高斯核
https://www.zywvvd.com/notes/coding/python/2d-gaussian-kernel/2d-gaussian-kernel/
作者
Yiwei Zhang
发布于
2022年2月11日
许可协议