非常常用的两种滤波器:高通滤波器和低通滤波器
# -*- coding: utf-8 -*-
# ——创建时间:2019.2.21——
# 高通滤波器(HPF)
# 简单的说,就是让像素突出的更加突出
# 低通滤波器(LPF)
# 像素与周围像素的亮度差值小于一个特定值时,平滑该像素的亮度
# 主要用于去噪和模糊化
import cv2 as cv
import numpy as np
from scipy import ndimage
# kernel:内核,应用在图像中的一个区域,生成目标图像的一个像素
kernel_3 = np.array([[-1,-1,-1],
[-1,8,-1],
[-1,-1,-1]]) # 定义3*3的内核
kernel_5 = 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]]) # 定义5*5的内核
img = cv.imread("image1.jpg",0)
# 给定的核与图像进行卷积(convolve)
k3=ndimage.convolve(img,kernel_3)
k5=ndimage.convolve(img,kernel_5)
blurred = cv.GaussianBlur(img,(11,11),0)
g_hpf = img - blurred
cv.imshow("image",img)
cv.imshow("3*3",k3)
cv.imshow("5*5",k5)
cv.imshow("g_hpf",g_hpf)
cv.waitKey()
cv.destroyAllWindows()
需要注意的是:numpy只接受一位数组,无法进行多维数组的卷积运算,所以用ndimage.convolve进行卷积运算
效果图: