理论知识:
参考链接:
对Photoshop高斯模糊滤镜的算法总结:http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088567.html
Python计算机视觉3:模糊,平滑,去噪:https://www.cnblogs.com/smallpi/p/4562345.html
引言:
图像的模糊和平滑是同一个层面的意思,平滑的过程就是一个模糊的过程。
而图像的去噪可以通过图像的模糊、平滑来实现(图像去噪还有其他的方法)
那么怎么才能对一幅图像进行模糊平滑呢?
图像的模糊平滑是对图像矩阵进行平均的过程。相比于图像锐化(微分过程),图像平滑处理是一个积分的过程。
图像平滑过程可以通过原图像和一个积分算子进行卷积来实现。
算子介绍:
全1算子 最简单的积分算子就是全1算子
利用全1算子可以对图像进行模糊平滑操作,有一定的去噪能力。
高斯算子 利用高斯算子进行模糊处理就是我们常听到的高斯模糊。
标准差为σ的高斯分布如下式
我们可以通过numpy模块的fromfunction()方法来生成高斯算子,代码及结果如下:
import numpy as np
# 乘以100是为了使算子中的数便于观察
# sigma指定高斯算子的标准差
def func(x,y,sigma=1):
return 100*(1/(2*np.pi*sigma))*np.exp(-((x-2)**2+(y-2)**2)/(2.0*sigma**2))
# 生成标准差都2的5*5高斯算子
a = np.fromfunction(func,(5,5),sigma=2)
print(a)
'''
结果:
[[ 2.92749158 4.25947511 4.82661763 4.25947511 2.92749158]
[ 4.25947511 6.19749972 7.02268722 6.19749972 4.25947511]
[ 4.82661763 7.02268722 7.95774715 7.02268722 4.82661763]
[ 4.25947511 6.19749972 7.02268722 6.19749972 4.25947511]
[ 2.92749158 4.25947511 4.82661763 4.25947511 2.92749158]]
'''
对上面的5*5高斯算子每个元素进行四舍五入,可以得到下面矩阵
看到有些地方直接用上面的矩阵对图像进行高斯模糊,实际上是运用的是标准差为2的高斯近似算子。