opencv之图像滤波

本文介绍了OpenCV中的图像滤波技术,包括图像滤波分类、2D卷积概念,详细探讨了LPF滤波(如方框滤波、均值滤波、高斯滤波和中值滤波)和HPF滤波(高斯双边滤波和均值迁移滤波)。还讲解了在OpenCV中如何使用这些滤波器进行图像模糊和平滑,同时提供了各种滤波的Python实现。
摘要由CSDN通过智能技术生成

图像滤波

图像滤波分类

卷积简介

图片来自【http://www.elecfans.com/d/920675.html】

image.png

卷积的实质对某个像素的领域内的所有像素与卷积核逐像素进行线性加权平均值
如图所示,原图为6*6的输入图像,经过3*3的卷积核变成4*4的输出图像【(6-3)//1+1】

计算公式:
(input.size-kernel.size)//step+1

如果我们想要输入图像与输出图像一样大,常见的做法就是在输入图像的边界进行0填充/临近像素

设填充填充的行(列)数为padding
根据公式
(input.size + 2*padding-kernel.size)//step+1==input.size --->解出padding即可

image.png


opencv的2D卷积

#此处只给出常用的参数
cv2.filter2D(src,ddepth,kernel)--->dst
src:输入图像
ddepth:输出通道
kernel:卷积核
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('happy.jpeg')
kernel = np.array([[-1,-2,-1],[0,0,0],[1,2,1]])
dst = cv2.filter2D(img,-1,kernel)
plt.subplot(121),plt.imshow(img),plt.title('raw')
plt.subplot(122),plt.imshow(dst),plt.title('filter')

 

常见LPF滤波

1.方框(盒子)滤波-----线性滤波

应用:一切要求求某个邻域内的像素之和,如均值滤波,引导滤波,计算Haar特征

原理:使用一个卷积核与图像进行卷积

如果进行归一化就是均值滤波,当不进行归一化可以计算每个像素领域上的各种积分特性【方差,协方差,平方和】

2.均值滤波

原理:利用领域内的像素均值代替中心像素的值,体现该邻域的像素特征

应用:模糊图像,能部分去噪

缺陷:均值滤波不能很好保存图像细节,不能很好去除椒盐噪声

ksize:kszie一般取奇数

3.高斯滤波

原理:按照高斯分布给中心像素邻域内的像素分配权重后加权平均计算,相当于卷积核的值不是类似于均值滤波的全1,而是按照距离中心像素越远,权重越小

应用:有效去除呈高斯分布的噪声且平滑数据

计算公式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值