高斯模糊的算法

转自:http://www.ruanyifeng.com/blog/2012/11/gaussian_blur.html

通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果。

"模糊"的算法有很多种,其中有一种叫做"高斯模糊"(Gaussian Blur)。它将正态分布(又名"高斯分布")用于图像处理。

本文介绍"高斯模糊"的算法,你会看到这是一个非常简单易懂的算法。本质上,它是一种数据平滑技术(data smoothing),适用于多个场合,图像处理恰好提供了一个直观的应用实例。

一、高斯模糊的原理

所谓"模糊",可以理解成每一个像素都取周边像素的平均值。

上图中,2是中间点,周边点都是1。

"中间点"取"周围点"的平均值,就会变成1。在数值上,这是一种"平滑化"。在图形上,就相当于产生"模糊"效果,"中间点"失去细节。

显然,计算平均值时,取值范围越大,"模糊效果"越强烈。

上面分别是原图、模糊半径3像素、模糊半径10像素的效果。模糊半径越大,图像就越模糊。从数值角度看,就是数值越平滑。

接下来的问题就是,既然每个点都要取周边像素的平均值,那么应该如何分配权重呢?

如果使用简单平均,显然不是很合理,因为图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远。因此,加权平均更合理,距离越近的点权重越大,距离越远的点权重越小。

二、正态分布的权重

正态分布显然是一种可取的权重分配模式。

在图形上,正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小。

计算平均值的时候,我们只需要将"中心点"作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。

三、高斯函数

上面的正态分布是一维的,图像都是二维的,所以我们需要二维的正态分布。

正态分布的密度函数叫做"高斯函数"(Gaussian function)。它的一维形式是:

其中,μ是x的均值,σ是x的方差。因为计算平均值的时候,中心点就是原点,所以μ等于0。

根据一维高斯函数,可以推导得到二维高斯函数:

有了这个函数 ,就可以计算每个点的权重了。

四、权重矩阵

假定中心点的坐标是(0,0),那么距离它最近的8个点的坐标如下:

更远的点以此类推。

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

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

五、计算高斯模糊

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

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

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

得到

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

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

六、边界点的处理

如果一个点处于边界,周边没有足够的点,怎么办?

一个变通方法,就是把已有的点拷贝到另一面的对应位置,模拟出完整的矩阵。

七、参考文献

How to program a Gaussian Blur without using 3rd party libraries

(完)

时间: 2024-11-03 21:10:11

高斯模糊的算法的相关文章

Python下尝试算法做到图片的高斯模糊

高斯模糊是什么? (先来看一下维基百科对它的定义) 高斯模糊是模糊图像的结果.它是一种广泛使用的图形软件的影响,通常会减少图像噪声和减少细节.这个模糊技术的视觉效果是一个平滑的模糊相似,查看图片通过一个半透明的屏幕,从明显不同散景在通常的照明的聚焦透镜或物体的阴影产生的影响.高斯平滑也被用来作为一个预处理阶段计算机视觉算法以提高图像在不同尺度的结构见尺度空间表示和尺度空间的实现. 在数学上,应用高斯模糊图像是一样的卷积一个图像高斯函数.这也被称为一个二维维尔斯特拉斯变换.相比之下,通过循环卷积\

高斯模糊算法的 C++ 实现

2008 年在一个 PS 讨论群里,有网友不解 Photoshop 的高斯模糊中的半径是什么含义,因此当时我写了这篇文章: 对Photoshop高斯模糊滤镜的算法总结: 在那篇文章中,主要讲解了高斯模糊中的半径的含义,是二维正态分布的方差的平方根,并且给出了算法的理论描述.现在我又打算把该算法用 c++ 实现出来,于是有了下面的这个 DEMO. 起初我是按照算法理论直接实现,即使用了二维高斯模板,结果发现处理时间很长,对一个图片竟然能达到大约数分钟之久.这样肯定是不对的,所以我百度了一下,发现这

阮一峰的网络日志 算法

http://www.ruanyifeng.com/blog/algorithm/ 2015年 理解矩阵乘法([email protected]) 蒙特卡罗方法入门([email protected]) 泊松分布和指数分布:10分钟教程([email protected]) 2013年 朴素贝叶斯分类器的应用([email protected]) 相似图片搜索的原理(二)([email protected]) TF-IDF与余弦相似性的应用(三):自动摘要([email protected])

SIFT算法详解(转)

http://blog.csdn.net/zddblog/article/details/7521424 目录(?)[-] 尺度不变特征变换匹配算法详解 Scale Invariant Feature TransformSIFT Just For Fun zdd  zddmailgmailcom or zddhubgmailcom SIFT综述 高斯模糊 1二维高斯函数 2 图像的二维高斯模糊 3分离高斯模糊 1 尺度空间理论 2 尺度空间的表示 3 高斯金字塔的构建 尺度空间在实现时使用高斯金

【转】 SIFT算法详解

尺度不变特征变换匹配算法详解Scale Invariant Feature Transform(SIFT)Just For Fun zdd  [email protected] 对于初学者,从David G.Lowe的论文到实现,有许多鸿沟,本文帮你跨越. 1.SIFT综述 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置.尺度.旋转不变量,此算法由 Da

Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途

Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途 1.1. 高斯模糊 的原理(周边像素的平均值+正态分布的权重1 1.2. 高斯模糊 的用途(磨皮,毛玻璃效果,背景虚化1 1.3. 参数radus1 1.4. 高斯模糊 的实现(第三方库)1 1.5. Java  源码1 1.1. 高斯模糊 的原理(周边像素的平均值+正态分布的权重 高斯模糊_百度百科.html 通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果 "模糊&qu

图片高斯模糊处理应用-涉及libjpeg的使用,NDK对SurfaceView的操作,图像模糊处理,附源代码

转载请保留原文链接: http://write.blog.csdn.net/postedit/42400825 当今微博.朋友圈.各种社交平台上充斥着各种照片,自拍或者各种生活记录也多以照片为其主要的手段,可见照片对生活的重要性,所以图片处理软件几乎成为人们的必备软件之一. 由于人们对图片处理的需求较大,我希望能开发一款在生活中能使用的手机图片处理软件,于是我选取了一个应用场景,即人们在各种场合拍照时,只希望照片显示的重点是自己关注的内容,而非其他事物,但照片难免包含其他不愿意让别人看到的.无关

SIFT算法详解

尺度不变特征变换匹配算法详解Scale Invariant Feature Transform(SIFT)Just For Fun zdd  [email protected] or ([email protected]) 对于初学者,从David G.Lowe的论文到实现,有许多鸿沟,本文帮你跨越. 如果你学习SIFI得目的是为了做检索,也许OpenSSE更适合你,欢迎使用. 1.SIFT综述 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一

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

1.一维高斯函数: a表示得到曲线的高度,b是指曲线在x轴的中心,c指width(与半峰全宽有关),图形如下: . 2.根据一维高斯函数,可以推导得到二维高斯函数: 在图形上,正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小. 计算平均值的时候,我们只需要将"中心点"作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值.常用作图像平滑操作. 例如:通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果. &q