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

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

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

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


高斯模糊的原理:

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

bg2012111403.png

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

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

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

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

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

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

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


bg2012111407.png

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


bg2012110708.png

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

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


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

bg2012111410.png

假定σ=1.5
bg2012111411.png

归一化,得到最终的权重矩阵:
bg2012111412.png

计算高斯模糊

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


bg2012111413.png

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


bg2012111414.png

得到:
bg2012111416.png

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

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

边界点怎么处理?

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容