当前位置: 首页 > news >正文

图像平滑处理

图像平滑处理

  • 四种常用方式
    • 1. 均值滤波 (cv2.blur())
    • 2. 高斯滤波 (cv2.GaussianBlur())
    • 3. 中值滤波 (cv2.medianBlur())
    • 4、双边滤波 (cv2.bilateralFilter())
  • 总结
  • 存图时遇到一个中文版乱码问题


四种常用方式

平滑处理(也称为模糊处理),用于减少图像中的噪声或细节。

OpenCV 提供了多种平滑处理的方法,这里展示四种常用的平滑处理技术:均值滤波、高斯滤波、中值滤波和双边滤波。

1. 均值滤波 (cv2.blur())

均值滤波是最简单的平滑处理方法之一。

均值滤波的原理是将图像中每个像素的值替换为其周围像素的平均值。

均值滤波可以有效地去除噪声,但可能会导致图像变得模糊。

	# 读取图片img = cv2.imread('D:\Word\keli.jpg')# 应用均值滤波blurred_image = cv2.blur(img, (5, 5))# 保存图片cv2.imwrite('D:\Word\keli_blurred.jpg', blurred_image)# 显示结果cv2.imshow('blurred_image', blurred_image)cv2.waitKey(0)cv2.destroyAllWindows()

在这里插入图片描述

在这里插入图片描述

2. 高斯滤波 (cv2.GaussianBlur())

高斯滤波是一种基于高斯函数的平滑处理方法。与均值滤波不同,高斯滤波在计算像素平均值时,会给中心像素赋予更高的权重,而给边缘像素赋予较低的权重。

高斯滤波在去除噪声的同时,能够更好地保留图像的边缘信息。

# 读取图片img = cv2.imread('D:\Word\keli_thres2.jpg')# 应用高斯滤波blurred_image = cv2.GaussianBlur(img, (5, 5), 0)# 保存图片cv2.imwrite('D:\Word\keli_blurred.jpg', blurred_image)# 显示结果cv2.imshow('blurred_image', blurred_image)cv2.waitKey(0)cv2.destroyAllWindows()

cv2.GaussianBlur(image, (5, 5), 0) 参数说明
image: 输入的图像。
(5, 5): 滤波核的大小。
0: 高斯核的标准差,如果为0,则根据核大小自动计算。

在这里插入图片描述
在这里插入图片描述

适用场景
高斯滤波适用于去除图像中的高斯噪声,并且在保留图像边缘信息方面表现较好。

3. 中值滤波 (cv2.medianBlur())

中值滤波是一种非线性平滑处理方法。它的原理是将图像中每个像素的值替换为其周围像素的中值。

中值滤波在去除椒盐噪声(即图像中随机出现的黑白点)时非常有效。

	# 读取图片img = cv2.imread('D:\Word\keli_thres2.jpg')# 应用中值滤波blurred_image = cv2.medianBlur(img, 5)# 保存图片cv2.imwrite('D:\Word\keli_blurred.jpg', blurred_image)# 显示结果cv2.imshow('blurred_image', blurred_image)cv2.waitKey(0)cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述

参数说明

image: 输入的图像。
5: 滤波核的大小,必须是奇数。

适用场景
中值滤波适用于去除图像中的椒盐噪声,并且在保留图像边缘信息方面表现较好。

4、双边滤波 (cv2.bilateralFilter())

双边滤波是一种非线性的平滑处理方法,它结合了空间邻近度和像素值相似度。

与高斯滤波不同,双边滤波在平滑图像的同时,能够保留图像的边缘信息。这是因为双边滤波不仅考虑像素之间的空间距离,还考虑像素值之间的差异。

# 读取图片img = cv2.imread('D:\Word\keli.jpg')# 应用双边滤波blurred_image = cv2.bilateralFilter(img, 11, 17, 17)# 保存图片cv2.imwrite('D:\Word\keli_blurred.jpg', blurred_image)# 显示结果cv2.imshow('blurred_image', blurred_image)cv2.waitKey(0)cv2.destroyAllWindows()

在这里插入图片描述

在这里插入图片描述

cv2.bilateralFilter(image, 9, 75, 75)
参数说明

image: 输入的图像。
9: 滤波核的大小。
75: 颜色空间的标准差,控制像素值相似度的权重。
75:坐标空间的标准差,控制空间距离的权重。

适用场景
双边滤波适用于在去除噪声的同时保留图像的边缘信息,常用于图像美化或预处理。

总结

OpenCV 提供了多种图像平滑处理方法,每种方法都有其独特的优势和适用场景。
均值滤波简单易用,但可能导致图像模糊;
高斯滤波在去除噪声的同时能较好地保留边缘信息;
中值滤波特别适合去除椒盐噪声;
双边滤波则在保留边缘信息方面表现出色。
根据具体的应用场景,选择合适的平滑处理方法,可以显著提升图像处理的效果。

存图时遇到一个中文版乱码问题

当使用cv2.imwrite保存带有中文路径或名称的图片时,可能会出现乱码问题。这是因为cv2.imwrite在处理非ASCII字符时存在限制

# 保存图片cv2.imwrite(r'D:\Word\keli_均值滤波.jpg', blurred_image1)cv2.imwrite(r'D:\Word\keli_高斯滤波.jpg', blurred_image2)cv2.imwrite(r'D:\Word\keli_中值滤波.jpg', blurred_image3)cv2.imwrite(r'D:\Word\keli_双边滤波.jpg', blurred_image4)# 使用cv2.imencode和tofile保存图片,避免中文路径乱码cv2.imencode('.jpg', blurred_image1)[1].tofile('D:\Word\keli_均值滤波.jpg')cv2.imencode('.jpg', blurred_image2)[1].tofile('D:\Word\keli_高斯滤波.jpg')cv2.imencode('.jpg', blurred_image3)[1].tofile('D:\Word\keli_中值滤波.jpg')cv2.imencode('.jpg', blurred_image4)[1].tofile('D:\Word\keli_双边滤波.jpg')

第一种会中文乱码,第二种就不会

http://www.lryc.cn/news/604774.html

相关文章:

  • 9.项目起步(3)
  • OpenCV学习day1
  • 实习小记(个人中心的编辑模块)
  • 商标注册后可以随意更改字体和颜色吗!
  • 怎么理解锁相环主时钟(PLL)怎么做到对时钟进行倍频?
  • Keil STM32工程各文件作用
  • AI框架工具FastRTC快速上手2——整体框架及Stream类详解
  • 方块世界:失落文明的遗产
  • Deforum Stable Diffusion,轻松实现AI视频生成自由!
  • 语音识别dolphin 学习笔记
  • UE5多人MOBA+GAS 番外篇:将冷却缩减属性应用到技能冷却中
  • 设计模式十四:适配器模式(Adapter Pattern)
  • Linux ps -ef 命令解析
  • 基于成像空间转录组技术的肿瘤亚克隆CNV原位推断方法
  • composer 常用命令
  • 智慧城市SaaS平台|市政公用管理系统
  • 从单机到分布式:Redis如何成为架构升级的胜负手
  • 串口接收数据包(协议带帧头帧尾)的编程实现方法:1、数据包格式定义结构体2、使用队列进行数据接收、校验解包
  • 三十二、【Linux网站服务器】搭建httpd服务器演示虚拟主机配置、网页重定向功能
  • uni-app webview 的message无法触发的解决方案
  • MacTex+Vscode数学建模排版
  • 字节跳动“扣子”(Coze)开源:AI智能体生态的技术革命
  • AI Compass前沿速览:可灵创意工坊、字节Coze StudioCoze Loop、通义万相2.2 、智谱GLM-4.5、腾讯混元3D世界模型开源
  • 添加捕捉吸附标识(使用QT+OpenGL开发三维CAD)
  • 【翻译】Label Studio——开源标注工具README.md
  • 2025年DDoS攻防战:六层防护体系构建业务“数字免疫”
  • ADA4622-2ARMZ-R7 ADI双通道精密运算放大器 ±0.25μV超低失调+0.1μV/°C温漂
  • K8s 备份与恢复利器:Velero 实战指南
  • click和touch事件触发顺序 糊里糊涂解决的奇怪bug
  • VUE -- 基础知识讲解(三)