【OpenCV】(七)—— 滤波

OpenCV 中的滤波操作用于去除图像噪声,实现图像的平滑处理,改善图像质量或提取有用的信息。使用一张有噪声的图像作为示例

均值滤波

均值滤波是一种简单的线性滤波技术,通过将像素点周围邻域内的所有像素值取平均来达到平滑图像的效果,可以用来减少噪声。opencv中均值滤波使用方法blur,其函数原型如下:

cv2.blur(src, ksize[, dst[, anchor[, borderType]]]) -> dst

参数说明

  • src: 输入图像。
  • ksize: 滤波器窗口的大小,格式为 (宽度, 高度)。例如,(5, 5) 表示一个 5x5 的滤波器窗口。
  • dst: 输出图像。如果未指定,则默认与输入图像具有相同的类型和大小。
  • anchor: 锚点位置,默认为 (-1, -1),表示锚点位于滤波器窗口的中心。
  • borderType: 边界填充方式,默认为cv2.BORDER_DEFAULT。常见的边界填充方式有:
    • cv2.BORDER_CONSTANT: 用常数值填充边界。
    • cv2.BORDER_REFLECT: 用镜像反射的方式填充边界。
    • cv2.BORDER_REPLICATE: 用边界像素值重复填充边界。
    • cv2.BORDER_WRAP: 用环绕方式填充边界。
py 复制代码
# 均值滤波 类似于平均卷积
blur = cv2.blur(img,(3,3))
cv_show('blur',blur)

运行结果:

高斯滤波

高斯滤波也是一种平滑滤波器,但它使用的是高斯权重矩阵,这样可以使滤波效果更加自然,对边缘信息的保留也更好。相当于选取一个像素点,其周围像素距离越近权重越高。高斯滤波在opencv中使用方法gaussian实现,其函数原型如下:

cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) -> dst

参数说明

  • src: 输入图像。
  • ksize: 滤波器窗口的大小,格式为 (宽度, 高度)。例如,(5, 5) 表示一个 5x5 的滤波器窗口。
  • sigmaX: 高斯核在 X 方向上的标准差。如果设置为 0,OpenCV 会根据 ksize 自动计算。
  • dst: 输出图像。如果未指定,则默认与输入图像具有相同的类型和大小。
  • sigmaY: 高斯核在 Y 方向上的标准差。如果未指定,则默认等于 sigmaX
  • borderType: 边界填充方式,默认为cv2.BORDER_DEFAULT。常见的边界填充方式有:
    • cv2.BORDER_CONSTANT: 用常数值填充边界。
    • cv2.BORDER_REFLECT: 用镜像反射的方式填充边界。
    • cv2.BORDER_REPLICATE: 用边界像素值重复填充边界。
    • cv2.BORDER_WRAP: 用环绕方式填充边界。
py 复制代码
#高斯滤波,相当于在均值滤波的基础上添加了权重,离中心点越近,权重越高,1 为标准差
gaussian = cv2.GaussianBlur(img,(5,5),1)
cv_show('gaussian',gaussian)

中值滤波

中值滤波是非线性的滤波方法,主要用于去除椒盐噪声。它的工作原理是用邻域内所有像素值的中位数替换中心像素值。中值滤波在opencv中使用medianBlur方法,其函数原型如下:

cv2.medianBlur(src, ksize[, dst]) -> dst

参数说明

  • src: 输入图像。
  • ksize: 滤波器窗口的大小,必须是大于 1 的奇数。例如,5 表示一个 5x5 的滤波器窗口。
  • dst: 输出图像。如果未指定,则默认与输入图像具有相同的类型和大小。
py 复制代码
# 中值滤波,围绕中心点的数据中从大到小排序,取中值
median = cv2.medianBlur(img,5)
cv_show('median',median)

上述三种方法各有不同,让我们将这些结果放到一起进行对比观察一下,因为opencv所有的图像信息都是numpy数组,在此处使用numpy进行拼接展示

py 复制代码
# 对比展示所有图片
res = np.hstack((blur,gaussian,median))
cv_show("res",res)
相关推荐
冬天的枫树4 分钟前
人工智能原理实验一:知识的表示与推理实验
c++·人工智能
BH0425090919 分钟前
深度学习基础(2024-10-30更新到tensor相关)
人工智能·深度学习
QQ_77813297420 分钟前
关于深度学习方向学习的一些建议
人工智能·深度学习·学习
哦哦~92137 分钟前
Fluent和深度学习算法驱动的流体力学计算与应用
人工智能·深度学习·学习·算法
板子小哥1 小时前
LuatOS学习指南:开启物联网开发之旅
运维·服务器·开发语言·人工智能·物联网·junit·lua
子午2 小时前
【果蔬识别】Python+卷积神经网络算法+深度学习+人工智能+机器学习+TensorFlow+计算机课设项目+算法模型
人工智能·python·深度学习
coldstarry2 小时前
sheng的学习笔记-AI基础-激活函数
深度学习·机器学习
z千鑫2 小时前
【AI开源项目】Botpress - 开源智能聊天机器人平台及其部署方案
人工智能·python·机器人·开源·自动化·oneapi
DisonTangor2 小时前
Flux 开源替代,他来了——Liberflux
人工智能·ai作画·开源
爱思德学术-IAAST2 小时前
中欧科学家论坛暨第六届人工智能与先进制造国际会议(AIAM 2024)在德国法兰克福成功举办,两百余名中外科学家共襄盛举
人工智能·学习·制造·学习方法·学术