OpenCV:图像处理中的低通滤波

目录

简述

什么是低通滤波?

各种滤波器简介与实现

方盒滤波

均值滤波

中值滤波

高斯滤波

双边滤波

各种滤波的对比与应用场景


相关阅读

OpenCV基础:图像变换-CSDN博客

OpenCV:图像滤波、卷积与卷积核-CSDN博客


简述

低通滤波是一种在图像处理中广泛使用的技术,主要用于去噪和平滑处理。本文将从基础概念出发,结合 方盒滤波、均值滤波、中值滤波、高斯滤波 和 双边滤波 的具体实现与应用场景,进行详细讲解。


什么是低通滤波?

低通滤波是一种通过滤掉图像中的高频成分(如噪声和细节),保留低频成分(如平滑区域)的操作。

作用

  • 去除图像中的高频噪声。
  • 平滑图像,减少细节。

应用场景

  • 图像预处理(如降噪)。
  • 对比度减弱(用于模糊效果)。
  • 提高检测精度(用于后续图像分析)。

各种滤波器简介与实现

方盒滤波

方盒滤波是一种简单的低通滤波器,它将图像的局部像素取均值,用一个固定大小的矩形窗口滑动图像。

代码实现

import cv2# 读取图像
image = cv2.imread("image.jpg")# 方盒滤波
box_filtered = cv2.boxFilter(image, -1, (5, 5))cv2.imshow("Original", image)
cv2.imshow("Box Filter", box_filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点:简单快速,但可能引入边缘模糊。

运行效果:


均值滤波

均值滤波与方盒滤波类似,只不过它专门用于对邻域像素取均值,进行平滑处理。

代码实现

import cv2
import numpy as np# 读取图像
image = cv2.imread("D:\\resource\\filter\\lena.png")# 均值滤波
result = cv2.blur(image, (5, 5))cv2.imshow("Original", image)
cv2.imshow("Result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

 特点:效果较为简单,但容易丢失图像细节。

运行效果:


中值滤波

中值滤波是一种非线性滤波方法,用局部窗口内的中值替代中心像素值,常用于去除椒盐噪声。

代码实现

import cv2
import numpy as np# 读取图像
image = cv2.imread("D:\\resource\\huaji1.jpg")# 中值滤波, 对胡椒噪点效果好
result = cv2.medianBlur(image, 5)cv2.imshow("image", image)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点

  • 对椒盐噪声的去除效果特别好。
  • 不会显著模糊边缘。

运行效果:


高斯滤波

高斯滤波使用高斯函数作为权重,对邻域像素加权求和,权重与像素距离呈指数关系,距离越远权重越小。

代码实现

import cv2
import numpy as np# 读取图像
image = cv2.imread("D:\\resource\\filter\\lena.png")# 高斯滤波, 针对高斯噪点的效果好
result = cv2.GaussianBlur(image, (5,5), sigmaX=1)cv2.imshow("image", image)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点

  • 平滑效果更自然,常用于降噪。
  • 能够保持一定的图像边缘信息。

运行效果:


双边滤波

双边滤波是结合了高斯滤波和平滑滤波的优点,同时考虑像素的空间距离和色彩距离,既能平滑图像又能保留边缘。

代码实现

import cv2
import numpy as np# 读取图像
image = cv2.imread("D:\\resource\\filter\\lena.png")# 双边滤波
result = cv2.bilateralFilter(image, 7, 20, 50)cv2.imshow("image", image)
cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

特点

  • 边缘保留效果显著。
  • 常用于美容滤镜或去噪后保留图像细节。

 运行效果:

经过双边滤波后,图像中的皮肤部分更平滑了。 


各种滤波的对比与应用场景

滤波类型特点应用场景
方盒滤波简单高效,但模糊边缘明显快速平滑处理
均值滤波类似方盒,但更平滑自然去除轻微噪声
中值滤波去噪能力强,保护边缘去除椒盐噪声
高斯滤波平滑效果自然,速度快图像降噪,边缘检测的预处理
双边滤波平滑与边缘保留并存美颜滤镜,降噪后细节保留

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68179.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vivado生成X1或X4位宽mcs文件并固化到flash

1.生成mcs文件 01.在vivado里的菜单栏选择"tools"工具栏 02.在"tools"里选择"生成内存配置文件" 03.配置参数 按照FPGA板上的flash型号进行选型,相关配置步骤可参考下图。 注意:Flash数据传输位宽如果需要选择X4位宽&am…

TCP协议(网络)

目录 TCP协议 TCP协议段格式(报文首部) 原理图​编辑 确认应答(ACK)机制 报头介绍 超时重传机制​编辑 连接管理机制 为什么要三次握手 服务端状态转化: 客户端状态转化: 理解TIME_WAIT状态 解决TIME_WAIT状态引起的bind失败的方法(可以立即链接端口号) setsockop…

【JS|第29期】JavaScript中的事件类型

日期:2025年1月25日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

基于Java+socket实现多线程聊天室-控制台版

基于Javasocket实现多线程聊天室-控制台版 一、系统介绍二、功能展示1.运行效果 三、代码展示四、其它1.其他系统实现2.获取源码 一、系统介绍 首先启动server端,然后启动client端。任意一个client发送给server的消息都将会被转发给所有在线的client,实…

Redis-缓存

1.缓存 1.1 什么是缓存? 越野车,山地自行车,都拥有"避震器",防止车体加速后因惯性,在酷似"U"字母的地形上飞跃,硬着陆导致的损害,像个弹簧一样;同样,实际开发中,系统也需要"避震器",防止过高的数据访问猛冲系统,导致其操作线程无法…

群晖docker获取私有化镜像http: server gave HTTP response to HTTPS client].

群晖docker获取私有化镜像提示http: server gave HTTP response to HTTPS clien 问题描述 层级时间用户事件Information2023/07/08 12:47:45cxlogeAdd image from xx.xx.31.240:1923/go-gitea/gitea:1.19.3Error2023/07/08 12:47:48cxlogeFailed to pull image [Get "http…

MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log

文章目录 一、前言1.1 MySQL体系结构1.2 MySQL日志分类1.3 其他几种日志1.3.1 查询日志1.3.2 慢查询日志1.3.3 错误日志 二、bin log 二进制日志2.1 bin log简介2.2 binlog日志格式2.3 日志删除2.4 写入/刷盘机制 三、undo log 回滚日志3.1 undo log简介3.2 隐藏字段 —— 事务…

算法中的移动窗帘——C++滑动窗口算法详解

1. 滑动窗口简介 滑动窗口是一种在算法中常用的技巧,主要用来处理具有连续性的子数组或子序列问题。通过滑动窗口,可以在一维数组或字符串上维护一个固定或可变长度的窗口,逐步移动窗口,避免重复计算,从而提升效率。常…

亚博microros小车-原生ubuntu支持系列:11手指控制与手势识别

识别框架还是沿用之前的了MediaPipe Hand。 背景知识不摘重复,参见之前的:亚博microros小车-原生ubuntu支持系列:10-画笔-CSDN博客 手指控制 src/yahboom_esp32_mediapipe/yahboom_esp32_mediapipe/目录下新建文件10_HandCtrl.py&#xff…

LabVIEW太阳能照明监控系统

在公共照明领域,传统的电力照明系统存在高能耗和维护不便等问题。利用LabVIEW开发太阳能照明监控系统,通过智能控制和实时监测,提高能源利用效率,降低维护成本,实现照明系统的可持续发展。 ​ 项目背景 随着能源危机…

Linux的权限和一些shell原理

目录 shell的原理 Linux权限 sudo命令提权 权限 文件的属性 ⽂件类型: 基本权限: chmod改权限 umask chown 该拥有者 chgrp 改所属组 最后: 目录权限 粘滞位 shell的原理 我们广义上的Linux系统 Linux内核Linux外壳 Linux严格…

Redis - 数据类型与编码方式

Redis中常用的5种数据类型 包括字符串、哈希、列表、集合、有序集合 字符串,相当于Java中的String哈希,相当于Java中的HashMap列表,相当于Java中的List集合,相当于Java中的Set有序集合,多存储了一个权重 Redis承诺使…

git Bash通过SSH key 登录github的详细步骤

1 问题 通过在windows 终端中的通过git登录github 不再是通过密码登录了,需要本地生成一个密钥,配置到gihub中才能使用 2 步骤 (1)首先配置用户名和邮箱 git config --global user.name "用户名"git config --global…

如何为64位LabVIEW配置正确的驱动程序

在安装 64位 LabVIEW 后,确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动,然后安装了 64位 LabVIEW,需要确保为 64位 LabVIEW 安装和配置适当的驱动程序,才能正常访问硬件设备。以下是详细步骤&#xff1a…

BGP边界网关协议(Border Gateway Protocol)路由聚合详解

一、路由聚合 1、意义 在大规模的网络中,BGP路由表十分庞大,给设备造成了很大的负担,同时使发生路由振荡的几率也大大增加,影响网络的稳定性。 路由聚合是将多条路由合并的机制,它通过只向对等体发送聚合后的路由而…

戴尔电脑用u盘重装系统_戴尔电脑用u盘重装win10系统教程

戴尔电脑用u盘重装系统?戴尔电脑这几年默认预装win10家庭版和win11家庭版。有的用户用上了预装win11家庭版的戴尔电脑,使用一段时间依然不习惯,于是想退回win10。但不知道怎么重装win10,这几年的戴尔电脑建议采用U盘方式安装系统比…

QT TLS initialization failed

qt使用QNetworkAccessManager下载文件(给出的链接可以在浏览器里面下载文件),下载失败, 提示“TLS initialization failed”通常是由于Qt在使用HTTPS进行文件下载时,未能正确初始化TLS(安全传输层协议&…

【图文详解】lnmp架构搭建Discuz论坛

安装部署LNMP 系统及软件版本信息 软件名称版本nginx1.24.0mysql5.7.41php5.6.27安装nginx 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 关闭防火墙 systemctl stop firewalld &&a…

06、Redis相关概念:缓存击穿、雪崩、穿透、预热、降级、一致性等

Redis相关概念:缓存击穿、雪崩、穿透、预热、降级、一致性等 Redis缓存雪崩、缓存击穿、缓存预热热点key、缓存降级、短链接、分布式锁秒杀、预减库存、 堆外缓存Redis架构设计、Redis动态刷新、Redis和DB双写一致性、过期删除策略、集群数据倾斜等一、缓存雪崩 缓…

【记录自开发的SQL工具】工具字符拼接、Excel转sql、生成编码、生成测试数据

记录自己开发的一个SQL聚合工具 功能介绍: 文本加引号 给多行文本前后添加引号,并用逗号连接,直接复制到 sql 中的 in 条件中 Excel转SQL 适用于将Excel表格的数据,批量导入到数据库的场景 此工具能快速将excel表格转换为i…