摘要

图像处理领域中,高斯核函数常用于图像低通滤波,记录下原理,同时用代码实现下。

高斯函数

一维高斯函数

f(x)=ae−(x−b)22c2f(x) = ae^{\frac{-(x-b)^2}{2c^2}} f(x)=ae2c2−(x−b)2​

a,b,ca, b, ca,b,c 为实数常数, 且 a>0a>0a>0

aaa 为曲线尖峰高度,bbb 为尖峰的中心位置, ccc 为钟的宽度

由高斯积分公式,得
∫−∞∞e−x2dx=π\int_{-\infty}^{\infty}e^{-x^2}dx = \sqrt{\pi} ∫−∞∞​e−x2dx=π​
令 y=x−by=x-by=x−b, 得 dx=dydx = dydx=dy
a∫−∞∞e−y22c2dxa \int_{-\infty}^{\infty}e^{-\frac{y^2}{2c^2}}dx a∫−∞∞​e−2c2y2​dx
令 z=y2cz= \frac{y}{\sqrt{2}c}z=2​cy​, 得 dy=2cdzdy = \sqrt{2}cdzdy=2​cdz
a∫−∞∞e−z22cdz=2ac∫−∞∞e−z2dz=2π⋅ac\begin{aligned} & a\int_{-\infty}^{\infty}e^{-z^2}\sqrt{2}cdz \\ = & \sqrt{2}ac \int_{-\infty}^{\infty}e^{-z^2}dz \\ = & \sqrt{2\pi}\cdot ac \end{aligned} ==​a∫−∞∞​e−z22​cdz2​ac∫−∞∞​e−z2dz2π​⋅ac​


∫−∞∞ae−(x−b)22c2dx=2π⋅ac\int_{-\infty}^{\infty}ae^{\frac{-(x-b)^2}{2c^2}}dx = \sqrt{2\pi}\cdot ac ∫−∞∞​ae2c2−(x−b)2​dx=2π​⋅ac

令 f(x)=1f(x)=1f(x)=1,使宽度范围内所有概率为 111,得
a=12π⋅ca = \frac{1}{\sqrt{2\pi}\cdot c} a=2π​⋅c1​
令期望 μ\muμ 为 bbb,标准差 σ\sigmaσ 为 ccc,得满足正态分布的高斯函数
g(x)=1σ2πe−12(x−μσ)2g(x) = \frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{1}{2}(\frac{x-\mu}{\sigma})^{2}} g(x)=σ2π​1​e−21​(σx−μ​)2

二维高斯函数(高斯分布、正态分布)

G(x,y)=12πσ2e−(x2+y2)/2σ2G(x,y) = \frac{1}{2\pi\sigma^2}e^{-(x^2+y^2)/2\sigma^2} G(x,y)=2πσ21​e−(x2+y2)/2σ2

μ=0\mu=0μ=0,即原点为中心点

在实际编程应用中,高斯函数中的参数如下

  • ksize 核大小
  • sigma 方差
  • center 尖峰中心点坐标
  • bias 尖峰中心点的偏移量,用于控制截断高斯函数

以下程序递增高斯函数的方差,并将结果图保存为 gif 图像

import numpy as np
import cv2
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
item = 10
dt = 1
ksize = 20
sigma = 2
fig = plt.figure()
plt.ion()
for i in list(range(item)):center = round(ksize/2)bias = ksize *10/10ksigma = np.multiply(cv2.getGaussianKernel(ksize, sigma),(cv2.getGaussianKernel(ksize,sigma)).T)[m, n] = ksigma.shapefor x in list(range(m)):for y in list(range(n)):if((x<center-bias) or (x>center+bias) or (y<center-bias) or(y>center+bias)):ksigma[x, y] = 0sigma = sigma + dtax3 = plt.axes(projection='3d')ax3.set_zlim3d(0,8e-3)x = list(range(ksize))y = xax3.plot_surface(x,y,ksigma,cmap='rainbow')plt.draw()plt.pause(0.1)

图片如下

随着方差的增大,整个高斯函数的尖峰逐渐减小,整体也变的更加平缓,则对图像的平滑效果越来越明显

保持参数不变,对上述高斯函数进行截断,bias 的大小为 ksize *3/10,则结果如下

bias 的作用主要是对超过一定区域的原始图像信息不再考虑,这就保证在更加合理的利用靠近高斯函数中心点的周围像素,同时还可以改变高斯函数的中心坐标

高斯核函数卷积

径向基函数(Radial Basis Function), 就是某种沿径向对称的标量函数。 通常定义为空间中任一点 x1x_1x1​ 到某一中心 x2x_2x2​ 之间欧氏距离的单调函数,其作用往往是局部的 , 即当 x1x_1x1​ 远离 x2x_2x2​ 时函数取值很小

最常用的一个核函数为高斯核函数,形式为

k(∥x1−x2∥)=e−∥x1−x2∥2/2σ2k(\|x_1-x_2\|)=e^{-\|x_1-x_2\|^2/2\sigma^2} k(∥x1​−x2​∥)=e−∥x1​−x2​∥2/2σ2

也称为径向基函数

高斯核函数的代码实现如下

import numpy as npdef gaussian_kernel(x1, x2, l=1.0, sigma_f=1.0):"""Easy to understand but inefficient."""m, n = x1.shape[0], x2.shape[0]dist_matrix = np.zeros((m, n), dtype=float)for i in range(m):for j in range(n):dist_matrix[i][j] = np.sum((x1[i] - x2[j]) ** 2)return sigma_f ** 2 * np.exp(- 0.5 / l ** 2 * dist_matrix)def gaussian_kernel_vectorization(x1, x2, l=1.0, sigma_f=1.0):"""More efficient approach."""dist_matrix = np.sum(x1**2, 1).reshape(-1, 1) + np.sum(x2**2, 1) - 2 * np.dot(x1, x2.T)return sigma_f ** 2 * np.exp(-0.5 / l ** 2 * dist_matrix)x = np.array([700, 800, 1029]).reshape(-1, 1)
print(gaussian_kernel_vectorization(x, x, l=500, sigma=10))

输出

[[100.          98.01986733  80.5347031 ][ 98.01986733 100.          90.04307671][ 80.5347031   90.04307671 100.        ]]

高斯函数性质

高斯函数具有五个重要的性质,这些性质使得它在早期图像处理中特别有用。这些性质表明,高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器,且在实际图像处理中得到了有效使用。高斯函数具有五个十分重要的性质

  1. 二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的。一般来说,一幅图像的边缘方向是事先不知道的,因此,在滤波前是无法确定一个方向上比另一方向上需要更多的平滑。旋转对称性意味着高斯平滑滤波器在后续边缘检测中不会偏向任一方向。

  2. 高斯函数是单值函数。这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点权值是随该点与中心点的距离单调增减的。边缘是一种图像局部特征,如果平滑运算对离算子中心很远的像素点仍然有很大作用,则平滑运算会使图像失真。

  3. 高斯函数的傅立叶变换频谱是单瓣的。正如下面所示,这一性质是高斯函数傅立叶变换等于高斯函数本身这一事实的直接推论。图像常被不希望的高频信号所污染(噪声和细纹理)。而所希望的图像特征(如边缘),既含有低频分量,又含有高频分量。高斯函数傅立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需信号。

  4. 高斯滤波器宽度(决定着平滑程度)是由参数 σ\sigmaσ 表征的,而且 σ\sigmaσ 和平滑程度的关系是非常简单的。 σ\sigmaσ 越大,高斯滤波器的频带就越宽,平滑程度就越好。通过调节平滑程度参数 σ\sigmaσ ,可在图像特征过分模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷。

  5. 由于高斯函数的可分离性,大高斯滤波器可以得以有效地实现。二维高斯函数卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积结果与方向垂直的相同一维高斯函数卷积。因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长。

参考

  • https://zh.wikipedia.org/wiki/%E9%AB%98%E6%96%AF%E5%87%BD%E6%95%B0
  • https://blog.csdn.net/jorg_zhao/article/details/52687448
  • https://zhuanlan.zhihu.com/p/75589452
  • https://zhuanlan.zhihu.com/p/40060966
  • https://www.cnblogs.com/pacino12134/p/11372555.html

高斯函数与高斯核函数相关推荐

  1. 高斯分布(正态分布)(高斯函数)(Gaussian)(高斯噪声)

    高斯分布就是正态分布 有两个参数,期望μ和方差σ^2, N(μ,σ^2) 当μ = 0,σ = 1时的正态分布是标准正态分布 一维高斯函数 二维高斯函数 高斯噪声 高斯噪声是指它的概率密度函数服从高斯 ...

  2. AI笔记: 计算机视觉之SIFT特征检测: 尺度空间、二维高斯函数、高斯金字塔

    SIFT概述 SIFT的全称是Scale Invariant Feature Transform(尺度不变特征变换),是由加拿大教授David G.Lowe在1999年发表于计算机视觉国际会议,200 ...

  3. 随机过程:高斯函数导数、梯度

    一.说明 高斯函数广泛应用于统计学领域,随机过程,谱分析等.在信号处理领域,用于定义高斯滤波器,在图像处理领域,二维高斯核函数常用于高斯模糊Gaussian Blur,在数理方程领域,主要是用于解决热 ...

  4. matlab 高斯一阶导,高斯函数及其各阶导数

    [使用Matlab进行拟合是图像处理中线条变换的一个重点内容,本文将详解Matlab中的直线拟合和曲线拟合用法.关键函数:fittypeFit type for curve and surface f ...

  5. 高斯函数以及在图像处理中的应用总结

    1.一维高斯函数: a表示得到曲线的高度,b是指曲线在x轴的中心,c指width(与半峰全宽有关),图形如下: . 2.根据一维高斯函数,可以推导得到二维高斯函数: 在图形上,正态分布是一种钟形曲线, ...

  6. 图像处理中的数学基础--高斯函数(Gaussian Function)分析

    摘要 论文中遇到很重要的一个元素就是高斯核函数,但是必须要分析出高斯函数的各种潜在属性,本文首先参考相关材料给出高斯核函数的基础,然后使用matlab自动保存不同参数下的高斯核函数的变化gif动图,同 ...

  7. 高斯函数(Gaussian function)的详细分析

    摘要 论文中遇到很重要的一个元素就是高斯核函数,但是必须要分析出高斯函数的各种潜在属性,本文首先参考相关材料给出高斯核函数的基础,然后使用matlab自动保存不同参数下的高斯核函数的变化gif动图,同 ...

  8. 高斯函数的matlab表达式,高斯函数在图像处理中的应用

    高斯函数简介 谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数. 通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数 , 可记作 k ...

  9. 使用二维高斯函数模糊图片

    这篇文章以通俗易懂的语言和方式解释了如何使用高斯函数模糊一张图片. 1.一维高斯函数: a表示得到曲线的高度,b是指曲线在x轴的中心,c指width(与半峰全宽有关),图形如下: 2.根据一维高斯函数 ...

  10. python高斯函数表达式_Python实现高斯函数的三维显示方法

    在网上查阅资料,发现很少用python进行高斯函数的三维显示绘图的,原因可能是其图形显示太过怪异,没有matlab精细和直观. 回顾一下二维高斯公式: σ此处取3. 在matlab下的程序为: u=[ ...

最新文章

  1. mysql 遍历_MySQL 实现树的遍历详解及简单实现示例
  2. jenkins配置邮箱服务器发送构建结果
  3. java虚拟机和javaGC_Java虚拟机(三):GC算法和种类
  4. 2020暨阳学院园林计算机考研考场,【图片】2020考研,老学长教你如何规划!【计算机考研吧】_百度贴吧...
  5. 结对-五子棋游戏-测试过程
  6. Vijos P1398 奖学金【排序】
  7. 36. Element length 属性
  8. Mysql常见的引擎
  9. python体验课是上纯代码_附实战代码|告别OS模块,体验Python文件操作新姿势!...
  10. Java 拾遗补阙 ----- 数据类型
  11. MFC界面布局、效果
  12. php 点击电话号码直接拨打,在网站上为手机用户提供”点击拨打电话”功能
  13. 【DBC专题】-4-DBC文件中的Signal信号字节顺序Motorola和Intel介绍
  14. 传教士与野人过河问题 人工智能实验算法
  15. Flak 解析json数据不完整?
  16. 工作点滴1 - Cisco IOS ver12.4 dampening bug - 思科路由器端口抑制漏洞
  17. NRF24L01多发单收配置
  18. 【表白神器】Python超火隐藏表白图 你能看出来吗?【附源码】
  19. Android R(11)为自定义HIDL接口添加DMFCM(六)
  20. 中国大陆总体健康指数高于全球和亚太水平;洲际集团旗下九寨英迪格酒店将于9月开业 | 美通社头条...

热门文章

  1. 计算机所建造全过程,Midas 桥梁设计建模计算,全过程图文解析!
  2. 【英语学习工具】学习英语硬背硬记太难了, 在这里解说 LeHoCat 提供免费的 视频集 工具的使用方法, 看视频学英语的工具, 制作英语教学课件的工具, 帮助自学英语(详细图文)第2版
  3. 万能地图下载器如何下载屏幕之外的谷歌卫星地图
  4. nginx集群配置流程
  5. 各省简称 拼音 缩写_中国各省市的简称读音
  6. 花书笔记2——线性代数 线性组合Ax = b的解 线性相关/线性无关 举例说明 简单易懂
  7. 照相机成像原理 数码相机的成像原理
  8. 基于Vue实现魔方矩阵排列效果
  9. FPGA代码规则检查工具
  10. IT 运营管理 (ITOM)解决方案-OpManager Plus