感谢@阮一峰
摘录自原文地址:
高斯模糊相信很多学习p图的人并不陌生,它能够让一张图片产生需要的模糊效果.
提起高斯模糊,我们应该联想到正态分布
高斯模糊的本质--"数据平滑技术"
高斯模糊的原理:
所谓"模糊",可以理解成每一个像素都取周边像素的平均值。
上图中,2是中间点,周边点都是1。
"中间点"取"周围点"的平均值,就会变成1。在数值上,这是一种"平滑化"。在图形上,就相当于产生"模糊"效果,"中间点"失去细节。
显然,计算平均值时,取值范围越大,"模糊效果"越强烈。
上面分别是原图、模糊半径3像素、模糊半径10像素的效果。模糊半径越大,图像就越模糊。从数值角度看,就是数值越平滑。
那么,每个点都要取周边像素的平均值,该如何分配权重是个问题.
图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远
遵循以上原则,加权平均则更加稳妥.
距离越近的点权重越大,距离越远的点权重越小
此时,正太分布就起作用了.
三维高斯分布就是下面这样的:
其函数表达式如下:
有了这个函数 ,就可以计算每个点的权重了。
计算权重矩阵
演算图示如下:
假定σ=1.5
归一化,得到最终的权重矩阵:
计算高斯模糊
假设现有9个像素点,灰度值(0-255)如下:
每个点乘以自己的权重值:
得到:
将这9个值加起来,就是中心点的高斯模糊的值。
对所有点重复这个过程,就得到了高斯模糊后的图像。如果原图是彩色图片,可以对RGB三个通道分别做高斯模糊。
边界点怎么处理?
如果一个点处于边界,周边没有足够的点,怎么办?
一个变通方法,就是把已有的点拷贝到另一面的对应位置,模拟出完整的矩阵。