高通滤波器(HPF)是检测图像的某个区域,然后根据像素与周围像素的亮度差值来提升像素的亮度。
用于:边缘提取与增强。
注意:通过高通滤波器进行滤波后,再和原图像叠加,可以增强图像中灰度级变化较快的部分,即锐化。
低通滤波器是像素与周围像素的亮度差值小于一个特定值时,平滑该像素的亮度。
用于:去噪和模糊化。
注意:低通滤波器容许低频信号通过,但减弱频率高于截止频率的信号的通过。
import cv2
import cv2
import numpy as np
from scipy import ndimage
#这个是滤波器使用的模板矩阵
kernel_3x3 = np.array([[-1, -1, -1],
[-1, 8, -1],
[-1, -1, -1]])
kernel_5x5 = np.array([[-1, -1, -1, -1, -1],
[-1, 1, 2, 1, -1],
[-1, 2, 4, 2, -1],
[-1, 1, 2, 1, -1],
[-1, -1, -1, -1, -1]])
#显示原始图像
cv2.imshow("org", cv2.imread("./pic_01.jpg"))
#以灰度的方式加载图片
img = cv2.imread("./pic_01.jpg", 0)
cv2.imshow("img", img)
#通过使用模板矩阵进行高通滤波
k3 = ndimage.convolve(img, kernel_3x3)
k5 = ndimage.convolve(img, kernel_5x5)
#使用OpenCV的高通滤波
blurred = cv2.GaussianBlur(img, (11, 11), 0)
g_hpf = img - blurred
cv2.imshow("3x3", k3)
cv2.imshow("5x5", k5)
cv2.imshow("blurred", blurred)
cv2.imshow("g_hpf", g_hpf)
cv2.waitKey()
cv2.destroyAllWindows()