本文主要是介绍OpenCV(4)--HPF高通滤波器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 1. HPF高通滤波器
- 2. 低通滤波器
GitHub@ShaneHolmes
1. HPF高通滤波器
高通滤波器(HPF)是检测图像的某个区域,然后根据像素与周围像素的亮度差值来提升像素的亮度。通过高通滤波器进行滤波后,再和原图像叠加,可以增强图像中灰度级变化较快的部分,即锐化。
用于:边缘提取与增强。
高通滤波:高频信号可以通过,而低频信号不能通过。
低通滤波:低频信号可以通过,而高频信号不能通过。
安装scipy模块:
其他两个模块已经安装过了,不需要安装,如果你没有安装过,安装方法同安装scipy
pip install scipy
源代码:
import cv2
import numpy as np
from scipy import ndimagekernel_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('C://Users//47463//Desktop//2//putao2.JPG', flags=cv2.IMREAD_GRAYSCALE)#以灰度形式加载图片
#使用模板矩阵进行高通滤波
k3 = ndimage.convolve(img, kernel_3x3)
k5 = ndimage.convolve(img, kernel_5x5)
#使用OpenCV的高通滤波
GBlur = cv2.GaussianBlur(img, (11, 11), 0)
g_hpf = img - GBlurcv2.imshow('img', img)
cv2.imshow('3x3', k3)
cv2.imshow('5x5', k5)
cv2.imshow('g_hpf', g_hpf)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码解释:
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
numpy教程
scipy:Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
相关博文:
scipy函数-blog
scipy函数-简书
Scipy是由针对特定任务的子模块组成:
2. 低通滤波器
低通滤波器是像素与周围像素的亮度差值小于一个特定值时,平滑该像素的亮度。低通滤波器容许低频信号通过,减弱频率高于截止频率的信号的通过。
用于:去噪和模糊化。
更多文章:https://blog.csdn.net/qq_33208851/article/details/95237054
这篇关于OpenCV(4)--HPF高通滤波器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!