OpenCV 入门教程:中值滤波和双边滤波

OpenCV 入门教程:中值滤波和双边滤波

  • 导语
  • 一、中值滤波
  • 二、双边滤波
  • 三、示例应用
    • 3.1 图像去噪
    • 3.2 图像平滑
  • 总结

导语

在图像处理和计算机视觉领域,中值滤波和双边滤波是两种常见的滤波方法,用于平滑图像、去除噪声等。 OpenCV 提供了中值滤波和双边滤波的实现函数,使得图像处理更加灵活和高效。本文将以中值滤波和双边滤波为中心,为你介绍使用 OpenCV 进行滤波操作的基本步骤和实例。

😃😄 ❤️ ❤️ ❤️

一、中值滤波

中值滤波是一种非线性滤波方法,它通过将像素周围邻域内的像素值排序,并取中值作为滤波后的像素值,从而实现平滑图像的效果。以下是一个中值滤波的示例代码:

import cv2

# 读取图像文件
image = cv2.imread('image.jpg')

# 进行中值滤波
kernel_size = 5  # 设置滤波器的大小
blurred_image = cv2.medianBlur(image, kernel_size)

在上述示例中,我们使用 medianBlur 函数对图像进行中值滤波。 kernel_size 参数指定了滤波器的大小,用于控制滤波的程度。较大的滤波器大小将产生更明显的平滑效果。

二、双边滤波

双边滤波是一种保边平滑的滤波方法,它考虑了像素之间的空间关系和像素值之间的差异,从而在平滑图像的同时保留边缘信息。以下是一个双边滤波的示例代码:

import cv2

# 读取图像文件
image = cv2.imread('image.jpg')

# 进行双边滤波
d = 15  # 邻域直径
sigmaColor = 75  # 颜色空间标准差
sigmaSpace = 75  # 坐标空间标准差
blurred_image = cv2.bilateralFilter(image, d, sigmaColor, sigmaSpace)

在上述示例中,我们使用 bilateralFilter 函数对图像进行双边滤波。 d 参数指定了邻域直径, sigmaColor 参数和 sigmaSpace 参数分别指定了颜色空间和坐标空间的标准差。通过调整这些参数,可以控制滤波的程度和保边效果。

三、示例应用

现在,我们来看一些常见的示例应用,演示中值滤波和双边滤波的操作:

3.1 图像去噪

中值滤波和双边滤波都可以用于去除图像中的噪声。以下是一个示例代码:

import cv2

# 读取图像文件
image = cv2.imread('image.jpg')

# 进行中值滤波
kernel_size = 5  # 设置滤波器的大小
median_blurred_image = cv2.medianBlur(image, kernel_size)

# 进行双边滤波
d = 15  # 邻域直径
sigmaColor = 75  # 颜色空间标准差
sigmaSpace = 75  # 坐标空间标准差
bilateral_blurred_image = cv2.bilateralFilter(image, d, sigmaColor, sigmaSpace)

这个示例将加载名为" image.jpg "的图像文件,并分别使用中值滤波和双边滤波对图像进行去噪处理。

3.2 图像平滑

中值滤波和双边滤波还可以用于图像的平滑处理,使图像更加柔和。以下是一个示例代码:

import cv2

# 读取图像文件
image =

cv2.imread('image.jpg')

# 进行中值滤波
kernel_size = 10  # 设置滤波器的大小
median_blurred_image = cv2.medianBlur(image, kernel_size)

# 进行双边滤波
d = 15  # 邻域直径
sigmaColor = 75  # 颜色空间标准差
sigmaSpace = 75  # 坐标空间标准差
bilateral_blurred_image = cv2.bilateralFilter(image, d, sigmaColor, sigmaSpace)

这个示例将加载名为" image.jpg "的图像文件,并分别使用中值滤波和双边滤波对图像进行平滑处理。

总结

通过本文的介绍,你已经了解了使用 OpenCV 进行中值滤波和双边滤波的基本步骤。你学会了使用 medianBlur 函数进行中值滤波和使用 bilateralFilter 函数进行双边滤波,并通过示例应用了解了去噪和图像平滑的操作。

滤波是图像处理中常用的一种操作,可以用于平滑图像、去除噪声等。中值滤波适用于去除椒盐噪声等随机噪声,而双边滤波在平滑图像的同时保留边缘信息。继续深入学习和实践,你将能够熟练运用 OpenCV 的滤波功能,并将其应用于实际项目中。

[ 专栏推荐 ]
😃 《视觉探索:OpenCV 基础入门教程》😄
❤️【简介】:Opencv 入门课程适合初学者,旨在介绍 Opencv 库的基础知识和核心功能。课程包括图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪等内容。学员将通过学习基本操作和编程技巧,掌握 Opencv 在图像处理和计算机视觉任务中的应用。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sap abap,forms,smartforms 导出pdf

4种方法: 1.安装pdf程序,Foxit Reader,先敲回车 自动带出,如下图: 直接打印就会弹出保存pdf文档路径,点保存。这种方式是最简单的,可 forms 和 smartforms 。 2. forms 和 smartforms 打印到spool 中&…

Maven工程开发中的继承与聚合

1. 聚合工程概念 设置一个空的maven工程,工程里面只有pom文件,另外将这个工程的打包方式设置为pom。 在聚合工程里面添加聚合工程里面管理的模块 2.聚合总结 3.继承 例如下面02工程继承上面的01工程,在02工程的pom文件中要配置要继承的父工…

保护你的JavaScript代码:深入了解JS混淆加密及其特点

当涉及到JavaScript代码的保护和隐藏时,混淆加密是一种常见的技术。它通过对代码进行转换和重组,使其难以理解和逆向工程。以下是JS混淆加密的几个特点以及它们各自的优缺点: 变量和函数名压缩: 特点:将代码中的变量和…

Hystrix熔断器

雪崩 当山坡积雪内部的内聚力抗拒不了它所受到的重力拉引时,积雪便向下滑动,引起⼤量雪体崩塌,人们把这种自然现象称作雪崩 微服务中,一个请求可能需要多个微服务接口才能实现,会形成复杂的调用链路 …

Holoens证书过期

1. 删除Assets\WSATestCertificate.pfx证书文件。 2. 在Player Settings的Publishing Settings下找到Certificate,选择一个有效的证书。 3. 如果没有其他有效证书,需要生成一个新的测试证书: - Windows: MakeCert.exe -r -pe -n "CNTemporary Certificate" -ss MY …

Linux--操作系统进程的状态

【Linux】进程概念 —— 进程状态_linux d状态进程_Hello_World_213的博客-CSDN博客 新建:字面意思,将你的task_struct创建出来并且还未入队列 运行:task_struct结构体在运行队列中排队,就叫做运行态 阻塞: 等待非C…

GPT(Generative Pre-Training)论文解读及实现(一)

1 GPT Framework 1.1 Unsupervised pre-training Given an unsupervised corpus of tokens U {u1, . . . , un}, we use a standard language modeling objective to maximize the following likelihood: 在给定语料上下文环境下,目标时最大化下面的语言模型&…

OpenCV 图像处理算法和技术的应用实践

OpenCV 图像处理算法和技术的应用实践 导语一、图像滤波算法二、图像分割技术三、特征提取与描述算法四、实践示例:图像风格转换总结 导语 图像处理算法和技术在计算机视觉和图像处理领域发挥着重要作用,通过对图像进行分析、增强和转换,可以…

实验二 常用网络命令

文章目录 实验目的实验原理1. 通过 ping 命令检测网络故障2. ipconfig 命令3. arp 命令4. tracert 命令5. netstat 命令 实验内容1. ping命令2. ipconfig命令3. arp命令 实验总结 实验目的 了解常用网络命令及其使用方法。通过网络命令了解网络状态,并利用网络命令…

高速入门知识02:降低串扰和维持信号完整性的布线方法

文章目录 前言一、单端走线布线1.1.带有短截线的菊花链布线1.2.没有短截线的菊花链布线1.3.星型布线1.4.蛇型布线 二、差分走线布线 前言 串扰是并行走线间不需要的信号耦合。微带线和带状线正确的布线和叠层布局能够降低串扰。 双带线布局有两个靠近的信号层,为降…

Hbase drop 表卡住没有响应

在实际工作中遇到过重新创建一个hbase的hive外部表,在 disable table_name; drop table_name 在drop table_name卡住 最后有提示报错。 建议各位查看下表有无lock的情况, 查看和释放hbase lock可以通过如下方式来查看 pid获取: 在 Ma…

Python学习笔记-基于socket基础的http服务端程序

通过HTTP协议可以进行通信可以规范化的进行网络间通信。下面技术第一个http服务器小程序。简单的记录第一个试手程序。 1.http通信的基本流程 整个流程对应四层网络架构:应用层、传输层、网络层、链路层。有的部分已经封装,不需要我们再行处理。 2.服务…

轻松玩转Python正则表达式

引言 正则表达式是一种强大的文本匹配和处理工具,广泛应用于各种编程语言中。在Python中,我们可以使用内置的re模块来处理正则表达式。本文将带您从入门到精通,逐步介绍Python中的正则表达式用法,并提供实例演示。 1. 正则表达式…

JVM理论(二)类加载子系统

类加载流程 类加载流程 类加载器子系统负责从文件系统或者网络中加载class文件,class文件的文件头有特定的文件标识(CAFEBABE是JVM识别class文件是否合法的依据)classLoader只负责文件的加载,而执行引擎决定它是否被执行加载类的信息存放在运行时数据区的方法区中,方法区还包括…

VBA代码如何切换word和excel(3)

【分享成果,随喜正能量】人不能因为一件好事,高兴一整年,却能因为一个创伤,郁郁终生。痛苦给人的刺激,总是远远大于快乐。成年人的烦恼,和谁说都不合适,悲喜自渡,他人难悟。人最强大…

4-软件错误(BUG)

目录 1.什么是bug? 2.如何描述一个bug? ①发现问题的版本 ②问题出现的环境 ③错误重现的步骤 ④预期行为的描述 ⑤错误行为的描述 ⑥其他 ⑦不要把多个bug放到一起 PS:案例1 PS:案例2 3.如何定义bug的级别? ①Blocker&#x…

springboot+mysql财务管理系统

财务管理系统的开发运用java技术、springboot框架,MIS的总体思想,以及Mysql等技术的支持下共同完成了该系统的开发,实现了财务管理的信息化,使员工体验到更优秀的财务管理,管理员管理操作将更加方便,实现目…

10.3.2 【Linux】历史命令:history

[dmtsaistudy ~]$ alias hhistory 在正常的情况下,历史命令的读取与记录是这样的: 当我们以 bash 登陆 Linux 主机之后,系统会主动的由主文件夹的 ~/.bash_history 读取以前曾经下过的指令,那么 ~/.bash_history 会记录几笔数据呢…

网络编程7——IP协议(子网掩码,NAT机制,IPv6协议) + 以太网

文章目录 前言一、IP协议协议头格式认识IP地址格式组成子网掩码 地址管理1.动态分配2.NAT机制3.IPv6协议 路由选择 二、以太网以太网帧格式认识MTU 总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也对编程感兴趣的话&#x…

MongoDB【MongoDB索引Index (索引概述、索引类型、复合索引、)】(三)-全面详解(学习总结---从入门到深化)

目录 MongoDB索引Index 聚合操作 通过聚合操作可以处理多个文档,并返回计算后的结果。 对多个文档进行分组对分组的文档执行操作并返回单个结果分析数据变化 聚合管道 分别由多个阶段来处理文档,每个阶段的输出是下个阶段的输入, 返回的是…