高斯函数 Gaussian Function

简介: **高斯函数,或称正态分布,以数学家高斯命名,具有钟形曲线特征。关键参数包括期望值μ(决定分布中心)和标准差σ(影响分布的宽度)。当μ=0且σ²=1时,分布为标准正态分布。高斯函数广泛应用于统计学、信号处理和图像处理,如高斯滤波器用于图像模糊。其概率密度函数为e^(-x²/2σ²),积分结果为误差函数。在编程中,高斯函数常用于创建二维权重矩阵进行图像的加权平均,实现模糊效果。

高斯函数 Gaussian Function  


基础部分:


image.png

image.png

μ指的是期望,决定了正态分布的中心对称轴


正态曲线以μ为对称轴,当x=μ时,f(x)取最大值, image.png ,μ称为位置参数,σ称为形状参数

μ=0,σ平方等于1时的正态分布叫标准正态分布

image.png

σ指的是方差决定了正态分布的胖瘦,方差越大,正态分布相对的胖而矮

方差:(x指的是平均数)

image.png

标准差:方差开根号  

任何正态分布的概率密度从负无穷到正无穷积分的结果都为1















一维形式: image.png      高斯的一维图是特征对称“bell curve“(钟状)a是曲线尖峰的高度,b是尖峰中心的坐标,c称为标准方差 ,表征的是bell钟状的宽度


image.png


具有期望值μ和方差 σ平方 的归一化高斯曲线

对应的参数是 image.png



高斯函数广泛应用于统计学领域,用于表示正态分布,在信号处理领域,用于定义高斯滤波器

在图像处理领域,二维高斯核函数常应用于高斯模糊,在数学领域用于解决热力方程和扩散方程



由上图可知,高斯函数是一个指数函数,其log函数是对数凹二次函数


高斯函数的积分是误差函数,尽管如此,其在整个实线上的反常积分能够被精确的计算出来,使用如下的高斯积分

                        image.png

同理可得

                  image.png

当且仅当

                    image.png


上式积分为1,在这种情况下,高斯是正态分布随机变量的概率密度函数,期望值μ=b,

方差δ平方= c平方, 即:

                    image.png


高斯函数分析:

实际编程应用中,高斯函数中的参数有:

ksize:高斯函数的大小

sigma:高斯函数的方差

center:高斯函数尖峰中心点坐标

bias:高斯函数尖峰中心点的偏移量,用于控制截断高斯函数






对于图像处理因为图像是二维的,所以我们需要二维的正态分布


image.png



因为其一维形式是 image.png


所以根据其二维形式可以得到二维高斯函数

image.png

利用这个函数计算每个点的权重



权重矩阵 假设中心点的坐标是(0,0),那么距离它最近的8个点的坐标如下: (远点以此类推)

image.png

计算权重需要设置σ的值,假定σ=1.5,则模糊半径为1的权重矩阵如下:

image.png

这九个点的权重总和为0.4787147,如果只计算这9个点的加权平均,还必须让他们的权重之和等于1,要分因此这九个值还别除以0.4787147,得到最终的权重矩阵

image.png


计算高斯模糊

有了权重矩阵就可以计算高斯模糊得值了


假设现有9个像素值,灰度值(0-255)如下

image.png

每个点乘以自己得权重值:

image.png

得到

image.png

将这9个值加起来,就是中心点得高斯模糊得值


对所有点重复这个过程,就得到了高斯模糊后得像,如果原图是彩色图片,可以对RGB三个通道分别做高斯模糊


相关文章
|
26天前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
|
2月前
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新特性,与传统函数相比,它有更简洁的语法,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。箭头函数不适用于构造函数,不能使用new关键字调用。
|
2月前
|
数据可视化 开发者 索引
详解Wireshark LUA插件函数:function p_myproto.dissector(buffer, pinfo, tree)
在 Wireshark 中,LUA 插件通过 `function p_myproto.dissector(buffer, pinfo, tree)` 扩展协议解析能力,解析自定义应用层协议。参数 `buffer` 是 `PacketBuffer` 类型,表示原始数据包内容;`pinfo` 是 `ProtoInfo` 类型,包含数据包元信息(如 IP 地址、协议类型等);`tree` 是
84 1
|
2月前
|
JavaScript
箭头函数与普通函数(function)的区别
箭头函数是ES6引入的新语法,相比传统函数表达式更简洁,且没有自己的this、arguments、super或new.target绑定,而是继承自外层作用域。这使得箭头函数在处理回调和闭包时更加灵活方便。
|
2月前
|
C++ 容器
函数对象包装器function和bind机制
函数对象包装器function和bind机制
21 0
|
4月前
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
【Azure Durable Function】PowerShell Activity 函数遇见 Newtonsoft.Json.JsonReaderException: The reader's MaxDepth of 64 has been exceeded.
|
4月前
|
安全 JavaScript 应用服务中间件
【Azure Function App】如何修改Azure函数应用的默认页面呢?
【Azure Function App】如何修改Azure函数应用的默认页面呢?
|
4月前
|
C# C++ Python
【Azure 应用服务】Azure Durable Function(持久函数)在执行Activity Function时候,因为调用函数名称错误而导致长时间无响应问题
【Azure 应用服务】Azure Durable Function(持久函数)在执行Activity Function时候,因为调用函数名称错误而导致长时间无响应问题
|
5月前
|
C++ 运维
开发与运维函数问题之使用std::function实现回调函数的示例如何解决
开发与运维函数问题之使用std::function实现回调函数的示例如何解决
41 7
|
4月前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题

热门文章

最新文章