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()