高斯滤波原理及应用_数字图像处理高斯滤波器

高斯滤波原理及应用_数字图像处理高斯滤波器1一维高斯分布 1.1一维高斯分布的定义 若连续型随机变量X的概率密度为:其中,为常数,则称X服从参数为,的正态分布或高斯分布,记为 1.2一维高斯分布的曲线 横轴表示可能的取值x,竖轴表示概率分布密度F(x),那么不难理解这样一个曲线与x轴围…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

  • 1   一维高斯分布

  • 1.1  一维高斯分布的定义

若连续型随机变量X的概率密度为:

                                                   \tiny f(x)=\frac{1}{\sqrt{2\pi }\sigma }e^{-\frac{(x-u)^{2}}{2\sigma ^{2}}}

其中\tiny u\tiny uX~N(u,\sigma ^{2})

  • 1.2  一维高斯分布的曲线

高斯滤波原理及应用_数字图像处理高斯滤波器

横轴表示可能的取值x,竖轴表示概率分布密度F(x),那么不难理解这样一个曲线与x轴围成的图形面积为1。因其曲线呈钟形,因此人们又经常称之为钟形曲线。正态分布的期望值\tiny u决定了曲线的位置,标准差\sigma决定了分布的幅度。

\sigma越大,则图形越宽,分布越分散,尖峰越小;

\sigma越小,则图形越窄,分布越集中,尖峰越大;

  • 1.3  标准一维高斯分布

\tiny u=0\sigma=1时称随机变量X服从标准正态分布:

                                                                          \tiny f(x)=\frac{1}{\sqrt{2\pi } }e^{-\frac{x^{2}}{2}}

  • 2   二维高斯分布

  • 2.1  二维高斯分布的定义

二维高斯分布函数为X,Y两个方向的一维高斯函数的乘积:

                                         f(x,y)=f(x)f(y)=\frac{1}{\sqrt{2\pi }\sigma_{x} }e^{-\frac{(x-u_{x})^{2}}{2\sigma_{x} ^{2}}}\frac{1}{\sqrt{2\pi }\sigma_{y} }e^{-\frac{(x-u_{y})^{2}}{2\sigma_{y} ^{2}}}

根据二维高斯函数具有旋转对称性得出:

                                                                          \tiny \sigma _{x}=\sigma _{y}

\tiny u_{x}=u_{y}=0时,二维高斯函数如下:

                                                    f(x,y)=f(x)f(y)=\frac{1}{2\pi \sigma^{2} }e^{-\frac{x^{2}+y^{2}}{2\sigma ^{2}}}

  • 2.2  二维高斯分布的曲线

高斯滤波原理及应用_数字图像处理高斯滤波器

  • 3   二维高斯滤波器

  • 3.1  高斯滤波器简介

高斯滤波器是一种线性滤波器,能够有效的抑制噪声,平滑图像。其作用原理和均值滤波器类似,都是取滤波器窗口内的像素的均值作为输出。但其窗口模板的系数和均值滤波器不同,均值滤波器的模板系数都是相同的为1,而高斯滤波器的模板系数则随着距离模板中心的增大而减小。所以,高斯滤波器相比于均值滤波器对图像个模糊程度较小。

  • 3.2  生成高斯滤波器模板(掩模)

要产生一个3×3的高斯滤波器模板,以模板的中心位置为坐标原点进行取样。模板在各个位置的坐标,如下所示(x轴水平向右,y轴竖直向下)。

高斯滤波原理及应用_数字图像处理高斯滤波器

其中(x,y)为点坐标,在图像处理中可认为是整数,\sigma是标准差。将各个位置的坐标带入到高斯函数中,得到的值就是模板的系数,模板中各个元素值的计算公式如下:

                                                                  f(x,y)=\frac{1}{2\pi \sigma^{2} }e^{-\frac{x^{2}+y^{2}}{2\sigma ^{2}}}

\sigma =0.8时,计算出来的模板有两种形式:小数和整数

1)小数形式的模板,就是直接计算得到的值,没有经过任何的处理;

2)整数形式的模板需要进行归一化处理,即将模板左上角的值归一化为1。

                                                               \begin{bmatrix} 1 & 2.1842 & 1\\ 2.1842& 4.7707& 2.1842 \\ 1 & 2.1842 & 1 \end{bmatrix}

取整后为:

                                                                             \begin{bmatrix} 1 & 2 & 1\\ 2& 4& 2 \\ 1 & 2 & 1 \end{bmatrix}

使用整数的模板时,需要在模板的前面加一个系数,该系数为模板系数和的倒数,最终得到模板如下:

                                                                      \frac{1}{16}\begin{bmatrix} 1 & 2 & 1\\ 2& 4& 2 \\ 1 & 2 & 1 \end{bmatrix}

注意:由于最后要进行归一化处理,因此在计算模板中各个元素的值时,可以去掉高斯函数的系数\frac{1}{2\pi \sigma ^{2}}

  • 3.3  \sigma值的意义及选取

通过上述的实现过程发现,生成高斯滤波器模板最重要的参数就是高斯分布的标准差\sigma,标准差代表着数据的离散程度。

\sigma小,模板的中心系数越大,周围的系数越小,这样对图像的平滑效果就不是很明显;

\sigma大,模板的各个系数相差就不是很大,比较类似均值模板,对图像的平滑效果比较明显。

  • 3.4高斯函数的五个性质

高斯平滑滤波器,无论在空间域还是在频率域都是十分有效的低通滤波器,高斯函数具有五个十分重要的性质:  

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

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

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

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

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

  • 4.  Opencv中的高斯函数

opencv中只给出了构建一维垂直方向上的高斯卷积核的函数:

Mat getGaussianKernel( int ksize,         //一维垂直方向上高斯核的行数
                       double sigma,      //标准差
                       int ktype = CV_64F //返回值的数据类型
                      )

Jetbrains全家桶1年46,售后保障稳定

对于一维水平方向上的高斯卷积核,可以通过对垂直方向上的卷积核进行转置得到。对于二维的高斯卷积核可以通过两个一维的卷积核卷积得到。(opencv中没有找到合适的卷积的函数,这里用乘积代替)

                                       高斯滤波原理及应用_数字图像处理高斯滤波器       高斯滤波原理及应用_数字图像处理高斯滤波器      高斯滤波原理及应用_数字图像处理高斯滤波器

                                     一维垂直方向                 一维水平方向                                二维卷积核

	//构建一维垂直方向上的卷积核
	Mat y = getGaussianKernel(3, 1);
	//构建一维水平方向上的卷积核
	Mat x = getGaussianKernel(3, 1);
	x = x.t();//转置
	//构建二维卷积核
	Mat K = y*x;

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/200910.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 如何训练一个词向量

    如何训练一个词向量现在在NLP领域,词向量是一切自然语言处理的基础,有了词向量我们就可以进行数据分析,文本聚类分类的一系列操作了。接下来我们就开始学习如何训练词向量,之前我们有介绍关于word2vec的博文word2vec算法理解和数学推导,这篇博文我们就一起来学习如何实现词向量的训练。首先我们运用的语料是我之前爬取的京东小米9的好评,训练一个关于手机类的词向量。数据如下所示:首先我们需要给数据进行分词…

  • java实现编译器_实现一个简单的编译器

    java实现编译器_实现一个简单的编译器简单的说编译器就是语言翻译器,它一般将高级语言翻译成更低级的语言,如GCC可将C/C++语言翻译成可执行机器语言,Java编译器可以将Java源代码翻译成Java虚拟机可以执行的字节码。编译器如此神奇,那么它到底是如何工作的呢?本文将简单介绍编译器的原理,并实现一个简单的编译器,使它能编译我们自定义语法格式的源代码。(文中使用的源码都已上传至GitHub以方便查看)。自定…

  • 设备树格式[通俗易懂]

    设备树格式[通俗易懂]基本数据格式  设备树是一个简单的包含节点和属性的树结构。属性通过键值对形式描述,一个节点可以包含多个属性或子节点,一个简单的.dts格式设备树如下所示。/dts-v1/;/{node1{a-string-property=”Astring”;a-string-list-property=”firststring”,

  • pycharm怎么关闭科学模式_pycharm关闭科学模式

    pycharm怎么关闭科学模式_pycharm关闭科学模式PyCharm在2017.3版本之后加入了ScientificMode,在科学计算时,可以方便的追踪变量变化等。使用NumPy的时候,系统会提示usescientificmode,但进去后就运行程序的在控制台中,很麻烦,想改回来的话按下面步骤取反即可.有时打开了scientificmode时,但文件中引入了numpy等科学计算包时并没有被自动识别,以scientific…

  • 卡方线性趋势检验_SPSS:趋势卡方检验

    卡方线性趋势检验_SPSS:趋势卡方检验SPSS:趋势卡方检验毕业季接近尾声,通过答辩的各位同学们即将开始新的旅程。回顾论文点滴,想必既有心酸又充满欣慰。回顾毕业生咨询论文写作得到一个启示与各位分享:论文完成的过程也是还原临床研究的过程,论文收集资料后进行统计分析时,可以用的统计方法有很多,至于用什么统计方法,决定于临床研究的目的。举个例子:某同学收集到一些数据:近五年某医院胃镜报告提示胃溃疡的男性、女性患者人数,根据数据得到类似下面的…

  • HibernateTemplate的常用方法「建议收藏」

    HibernateTemplate的常用方法「建议收藏」HibernateTemplate提供非常多的常用方法来完成基本的操作,比如通常的增加、删除、修改、查询等操作,Spring2.0更增加对命名SQL查询的支持,也增加对分页的支持。大部分情况下,使用Hibernate的常规用法,就可完成大多数DAO对象的CRUD操作。 下面是HibernateTemplate的常用方法简介:     voiddelete(Objecte…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号