python opencv3 滤波器 卷积核

git:https://github.com/linyi0604/Computer-Vision

 1 # coding:utf8
 2 
 3 import cv2
 4 import numpy as np
 5 from scipy import ndimage
 6 
 7 # 3*3 的高通卷积核
 8 kernel_3x3 = np.array([
 9     [-1, -1, -1],
10     [-1, 8, -1],
11     [-1, -1, -1]
12 ])
13 # 5*5 高通卷积核
14 kernel_5x5 = np.array([
15     [-1, -1, -1, -1, -1],
16     [-1, 1, 2, 1, -1],
17     [-1, 3, 4, 2, -1],
18     [-1, 1, 2, 1, -1],
19     [-1, -1, -1, -1, -1]
20 ])
21 
22 # 按灰度值读入图像
23 img = cv2.imread("../data/mm1.jpg", 0)
24 
25 # 进行卷积运算
26 k3 = ndimage.convolve(img, kernel_3x3)
27 k5 = ndimage.convolve(img, kernel_5x5)
28 """
29 高通滤波器: 根据像素与临近像素的亮度差值来提升像素的亮度
30 """
31 
32 
33 # 原图像运用高斯低通滤波器
34 blurred = cv2.GaussianBlur(img, (11, 11), 0)
35 """
36 低通滤波器: 像素周围亮度小于一个特定值时候,平滑该像素的亮度,主要用于去噪和模糊化
37     高斯滤波器是最常用的模糊滤波器之一,他是一个削弱强度的低通滤波器
38 """
39 # 原图像减去低通
40 g_hpf = img - blurred
41 
42 cv2.imshow("3x3", k3)
43 cv2.imshow("5x5", k5)
44 cv2.imshow("g_hpf", g_hpf)
45 cv2.imshow("origin", img)
46 cv2.waitKey()
47 cv2.destroyAllWindows()