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