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

中值滤波、方框滤波、高斯滤波、均值滤波、膨胀、腐蚀、开运算、闭运算

1.1 常见图像噪声类型
  • 高斯噪声:符合正态分布的随机噪声

  • 椒盐噪声:随机出现的黑白像素点

  • 泊松噪声:光子计数噪声

  • 量化噪声:模拟信号数字化过程中产生

2.1 均值滤波(Averaging Filter)

原理:用邻域像素的平均值替换中心像素值

blur_3x3 = cv2.blur(noisy_img, (3,3))  # 3×3小窗口

效果分析

  • 窗口越大,去噪效果越强,但图像越模糊

  • 计算速度快,适合实时处理

  • 会模糊边缘和细节

2.2 方框滤波(Box Filter)

原理:均值滤波的通用形式,可选择是否归一化

# 非归一化方框滤波(像素值可能溢出)
box_nonorm = cv2.boxFilter(noisy_img, -1, (3,3), normalize=False)
# 归一化方框滤波
box_norm = cv2.boxFilter(noisy_img, -1, (3,3), normalize=True)

特殊应用

  • 非归一化滤波可用于局部对比度增强

  • 归一化时与均值滤波效果相同

2.3 高斯滤波(Gaussian Filter)

原理:使用高斯函数作为权重,距离中心越近权重越大

# 不同标准差的高斯滤波
gauss_small = cv2.GaussianBlur(noisy_img, (5,5), 1)  # 小标准差
gauss_large = cv2.GaussianBlur(noisy_img, (5,5), 3)  # 大标准差

参数选择技巧

  • 标准差σ与窗口大小关系:ksize ≈ (6σ+1)

  • σ越大,平滑效果越强,但计算量也越大

2.4 中值滤波(Median Filter)

原理:用邻域像素的中值替换中心像素值

# 中值滤波去噪
median_3 = cv2.medianBlur(sp_noisy, 3)
median_5 = cv2.medianBlur(sp_noisy, 5)

适用场景

  • 对椒盐噪声效果显著

  • 能较好保持边缘锐利度

  • 计算复杂度高于线性滤波

1、膨胀:

其原理是:将核在原始图像中进行遍历,然后将原始图像遍历到的像素点的值与自定义卷积核(全为1的二维矩阵)得值进行与运算,像素点与对应核一 一对应进行与,当卷积核对应的元素值只要有一个为1时,设置卷积核中心值的像素点为1,如果全为0,,则其值设置为0.

2、腐蚀:

其原理是:将核在原始图像中进行遍历,然后将原始图像遍历到的像素点的值与自定义卷积核(全为1的二维矩阵)得值进行与运算,像素点与对应核一 一对应进行与,当卷积核对应的元素值均为1时,设置卷积核中心值的像素点为1,否则其值设置为0.

3、开运算原理

1)原理:图像开运算是图像依次经过腐蚀、膨胀处理后的过程。

2)特点:图像被腐蚀后,去除了噪声,但是也压缩了图像;接着对腐蚀过的图像进行膨胀处理,可以去除噪声,并保留原有图像

在OpenCV中,同样提供开运算的库函数,函数原型如下所示


1)、函数原型:result =cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

  • img:需要进行开运算处理的图像
  • cv2.MORPH_OPEN:图像进行开运算需要填写的参数(进行开运算时,该参数为固定参数不可改变)
  • kernel:卷积核模板,例如kernel = np.ones((5,5), np.uint8),5x5的卷积核

4、闭运算原理

1)、原理:图像开运算是图像依次经过膨胀、再腐蚀处理后的过程
2)、特点:图像先膨胀,后腐蚀,它有助于关闭前景物体内部的小孔,或物体上的小黑点。

  • 闭运算可以消除图像轮廓内部的噪声

OpenCV中,也提供了图像闭运算的函数,和开运算库函数一样,唯一不同则为闭运算对应自己的参数,函数原型如下:
1)、函数原型:result =cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

    img:需要进行开运算处理的图像
cv2.MORPH_CLOSE:图像进行闭运算需要填写的参数(进行闭运算时,该参数为固定参数不可改变)
kernel:卷积核模板,例如kernel = np.ones((5,5), np.uint8),5x5的卷积核

http://www.xdnf.cn/news/1454131.html

相关文章:

  • 2025年数学建模国赛C题超详细解题思路
  • [免费]基于Python的Django+Vue图书借阅推荐系统【论文+源码+SQL脚本】
  • 设计模式最佳实践 - 模板模式 + 责任链模式
  • PyTorch 学习率调度器(LR Scheduler)
  • HTB Sau
  • MySQL数据库和SQL语言
  • 具身智能多模态感知与场景理解:多模态3D场景理解
  • Linux基础知识(一)
  • AGX Orin平台RTC驱动导致reboot系统卡住问题调试
  • 微信小程序-day4
  • 微信小程序日历事件添加实现
  • IO_HW_9_4
  • 基于飞算JavaAI的学生成绩综合统计分析系统
  • Android Zygote 源码剖析
  • webpack scope hositing 和tree shaking
  • 谷歌修复安卓120个漏洞,含两个正遭利用的零日漏洞
  • 一文吃透 C#中异步编程Task
  • 鸿蒙权限崩溃:网络文件访问全攻略
  • CentOS系统如何查看当前内存容量
  • android View详解—View的刷新流程源码解析
  • 惊!printf 不往屏幕输?都是 fd 在搞鬼!爆肝拆解 Linux 文件描述符 + 重定向底层,学会直接在终端横着走
  • STM32-UART-中断
  • Qt QJsonObject
  • 数据库集成:使用 SQLite 与 Electron
  • uni 拍照上传拍视频上传以及相册
  • jenkins调用ansible部署lnmp平台-Discuz论坛
  • Java 流程控制:从入门到面试的全方位指南
  • C语言(长期更新)第14讲:指针详解(四)
  • 【图像处理基石】如何在频域对图像进行处理和增强?
  • VSCode中的扩展Extension说明