openCV实现高通滤波器

import cv2
import numpy as np
from scipy import ndimage

#高通滤波器,这些滤波器中所有的值加起来为0
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]])

img = cv2.imread('img2.jpg', 0)
k3 = ndimage.convolve(img, kernel_3x3)  #卷积运算
k5 = ndimage.convolve(img, kernel_5x5)

blurred = cv2.GaussianBlur(img, (11,11), 0) #将图像转化为灰度格式
g_hpf = img - blurred

cv2.imshow("3x3", k3)
cv2.imshow("5x5", k5)
cv2.imshow("g_hpf", g_hpf)
cv2.waitKey()
cv2.destroyAllWindows()

'''高通滤波器是根据像素与邻近像素的亮度差值来提升像素的亮度
低通滤波器是在像素与周围像素的亮度差值小于一个特定值时,平滑该像素的亮度。
他主要用于去噪和模糊化。比如高斯模糊是常见的模糊滤波器(平滑滤波器)之一,
它是一个削弱高频信号强度的低通滤波器。'''

 

你可能感兴趣的:(openCV)