图像处理算法--高斯模糊

感谢@阮一峰
摘录自原文地址:

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

高斯模糊相信很多学习p图的人并不陌生,它能够让一张图片产生需要的模糊效果.
提起高斯模糊,我们应该联想到正态分布
高斯模糊的本质--"数据平滑技术"


高斯模糊的原理:

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

图像处理算法--高斯模糊_第1张图片
bg2012111403.png

上图中,2是中间点,周边点都是1。
图像处理算法--高斯模糊_第2张图片
bg2012111404.png

"中间点"取"周围点"的平均值,就会变成1。在数值上,这是一种"平滑化"。在图形上,就相当于产生"模糊"效果,"中间点" 失去细节
显然,计算平均值时,取值范围越大,"模糊效果"越强烈。
图像处理算法--高斯模糊_第3张图片
bg2012111406.jpg

上面分别是原图、模糊半径3像素、模糊半径10像素的效果。模糊半径越大,图像就越模糊。从数值角度看,就是数值越平滑。
那么,每个点都要取周边像素的平均值,该如何 分配权重是个问题.

图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远

遵循以上原则,加权平均则更加稳妥.

距离越近的点权重越大,距离越远的点权重越小

此时,正太分布就起作用了.


图像处理算法--高斯模糊_第4张图片
bg2012111407.png

三维高斯分布就是下面这样的:


图像处理算法--高斯模糊_第5张图片
bg2012110708.png

其函数表达式如下:
chart.png

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


计算权重矩阵
演算图示如下:

图像处理算法--高斯模糊_第6张图片
bg2012111410.png

假定σ=1.5
图像处理算法--高斯模糊_第7张图片
bg2012111411.png

归一化,得到最终的 权重矩阵:
图像处理算法--高斯模糊_第8张图片
bg2012111412.png

计算高斯模糊

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


图像处理算法--高斯模糊_第9张图片
bg2012111413.png

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


图像处理算法--高斯模糊_第10张图片
bg2012111414.png

得到:
图像处理算法--高斯模糊_第11张图片
bg2012111416.png

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

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

边界点怎么处理?

如果一个点处于边界,周边没有足够的点,怎么办?
一个变通方法,就是把已有的点拷贝到另一面的对应位置,模拟出完整的矩阵

你可能感兴趣的:(图像处理算法--高斯模糊)