高通滤波器 python实现

高通滤波器

高通滤波器(HPF)是检测图像的某个区域,然后根据像素与周围像素的亮度差值来提升像素的亮度。
用于:边缘提取与增强。

注意:通过高通滤波器进行滤波后,再和原图像叠加,可以增强图像中灰度级变化较快的部分,即锐化。

低通滤波器

低通滤波器是像素与周围像素的亮度差值小于一个特定值时,平滑该像素的亮度。
用于:去噪和模糊化。

注意:低通滤波器容许低频信号通过,但减弱频率高于截止频率的信号的通过。

# -- coding: utf-8 --
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()

最后是显示效果;
这里写图片描述

猜你喜欢

转载自blog.csdn.net/kingroc/article/details/76271901