用opencv进行一些图像处理的操作非常的简单和便捷了,但是对于想要了解详细内容的同学来说,最好是可以手写一下滤波核的生成以及滤波函数。了解高斯函数的变化过程,对我们深入学习图像处理有很大的帮助。
图像滤波的作用
总的来说有平滑(使图像边缘和图像轮廓变得模糊)以及锐化(边缘、轮廓线细节变得清晰)两大作用。
数学基础
高斯滤波实际上是用我们生成的高斯滤波核在图片上做的一个空间卷积,根据滤波核的不同达到我们不同的处理效果,重点是要理解高斯核怎么生成,以及高斯函数的特点。
接下来用代码解释下滤波核是怎么生成的,可以对照一下上面的公式,更好理解。
def gausskernel(size,k,sigma):
gausskernel = np.zeros((size,size),np.float32)
for i in range (size):
for j in range (size):
norm = math.pow(i-k,2) + pow(j-k,2)
gausskernel[i,j] = math.exp(-norm/(2*math.pow(sigma,2)