1.获取原图大小
img = cv2.imread("text.jpg")h, w = img.shape[:2]
测试图片是一张256×256×3的图片
2.图像补0
#设置卷积核大小K_size = 3pad = K_size // 2out = np.zeros((h + pad * 2, w + pad * 2, 3), dtype=np.cfloat)out[pad: pad + h, pad: pad + w] = img.copy().astype(np.cfloat)
若K_size = 21,图像就会在四周补充20个像素的0:
3.创立高斯卷积核
#设置标准差sigmasigma = 1.3K = np.zeros((K_size, K_size), dtype=np.cfloat) for x in range(-pad, -pad + K_size): for y in range(-pad, -pad + K_size): K[y + pad, x + pad] = np.exp(-(x ** 2 + y ** 2) / (2 * (sigma ** 2)))K /= (2 * np.pi * sigma * sigma)K /= K.sum()
4.进行高斯滤波
tmp = out.copy() for y in range(h): for x in range(w): for z in range(3): out[pad + y, pad + x, z] = np.sum(K * tmp[y: y + K_size, x: x + K_size, z])out = np.clip(out, 0, 255)out = out[pad: pad + H, pad: pad + W].astype(np.uint8)
当卷积核的大小为3,标准差为1.3时:
5.高斯滤波使用
高斯滤波在图像处理概念下,将图像频域解决和时域解决相分割,作为低通滤波器应用,能够将低频能量(比方噪声)滤去,起到图像平滑作用,会使得图像变得含糊。因为text图是一张平滑的图片故看不出成果,应用:
能失去:
可能更加平滑,看起来也更加含糊。