opencv&python——高通滤波器和低通滤波器

非常常用的两种滤波器:高通滤波器和低通滤波器

# -*- 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进行卷积运算

效果图:

你可能感兴趣的:(计算机视觉)