【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)
相关推荐
Aevget4 分钟前
界面组件Kendo UI for React 2025 Q3亮点 - AI功能全面提升
人工智能·react.js·ui·界面控件·kendo ui·ui开发
桜吹雪35 分钟前
LangChain.js/DeepAgents可观测性
javascript·人工智能
&&Citrus35 分钟前
【杂谈】SNNU公共计算平台:深度学习服务器配置与远程开发指北
服务器·人工智能·vscode·深度学习·snnu
乌恩大侠36 分钟前
Spark 机器上修改缓冲区大小
人工智能·usrp
STLearner38 分钟前
AI论文速读 | U-Cast:学习高维时间序列预测的层次结构
大数据·论文阅读·人工智能·深度学习·学习·机器学习·数据挖掘
数字化顾问40 分钟前
(65页PPT)大型集团物料主数据管理系统建设规划方案(附下载方式)
大数据·运维·人工智能
新知图书1 小时前
FastGPT版本体系概览
人工智能·ai agent·智能体·大模型应用开发·大模型应用
老蒋新思维2 小时前
创客匠人 2025 全球创始人 IP+AI 万人高峰论坛:AI 赋能下知识变现与 IP 变现的实践沉淀与行业启示
大数据·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
Keep_Trying_Go2 小时前
基于Zero-Shot的目标计数算法详解(Open-world Text-specified Object Counting)
人工智能·pytorch·python·算法·多模态·目标统计