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

图像滤波处理

  滤波处理是图像处理中常用的技术之一,用于去除图像中的噪声、平滑图像、边缘检测等。以下是几种常见的滤波处理方法:

1. 均值滤波 (Mean Filtering)

原理:

  均值滤波使用一个固定大小的滤波器,在图像上滑动并取周围像素的平均值来替代中心像素值。这有助于减少图像中的高频噪声。

公式:

  对于图像上的一个区域,以 I I I 表示原始图像, I smooth I_{\text{smooth}} Ismooth表示滤波后的图像,滤波器大小为 n × n n \times n n×n
I smooth ( x , y ) = 1 n 2 ∑ i = 0 n − 1 ∑ j = 0 n − 1 I ( x + i , y + j ) I_{\text{smooth}}(x, y) = \frac{1}{n^2} \sum_{i=0}^{n-1} \sum_{j=0}^{n-1} I(x+i, y+j) Ismooth(x,y)=n21i=0n1j=0n1I(x+i,y+j)

作用和适用场景:

  适用于去除轻度噪声,如盐和胡椒噪声,但可能会导致图像细节丢失。

代码:
import cv2

# 读取图像
img = cv2.imread('input_image.jpg')

# 应用均值滤波
filtered_img = cv2.blur(img, (3, 3))  # 参数 (3, 3) 表示滤波器大小

# 显示原始图像和滤波后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Mean Filtered Image', filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 高斯滤波 (Gaussian Filtering)

原理:

  高斯滤波与均值滤波类似,但是采用了加权平均值,周围像素对中心像素的影响根据距离中心像素的位置以高斯分布加权。这种滤波器更多地保留了图像的细节。

公式:

I smooth ( x , y ) = 1 ∑ i = 0 n − 1 ∑ j = 0 n − 1 h ( i , j ) ∑ i = 0 n − 1 ∑ j = 0 n − 1 I ( x + i , y + j ) ⋅ h ( i , j ) I_{\text{smooth}}(x, y) = \frac{1}{\sum_{i=0}^{n-1} \sum_{j=0}^{n-1} h(i, j)} \sum_{i=0}^{n-1} \sum_{j=0}^{n-1} I(x+i, y+j) \cdot h(i, j) Ismooth(x,y)=i=0n1j=0n1h(i,j)1i=0n1j=0n1I(x+i,y+j)h(i,j)

  其中, h ( i , j ) h(i, j) h(i,j) 是高斯核函数的值。

作用和适用场景:

  适用于去除噪声并保留图像细节,常用于图像平滑和预处理。

代码:
import cv2

# 读取图像
img = cv2.imread('input_image.jpg')

# 应用高斯滤波
filtered_img = cv2.GaussianBlur(img, (5, 5), 0)  # 参数 (5, 5) 表示滤波器大小,0 表示标准差

# 显示原始图像和滤波后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Gaussian Filtered Image', filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

3. 中值滤波 (Median Filtering)

原理:

  中值滤波采用一个固定大小的滤波器,在图像上滑动并取周围像素的中值来替代中心像素值。对于去除椒盐噪声效果非常好。

作用和适用场景:

  适用于去除椒盐噪声或脉冲噪声,能够有效保留图像细节。

代码:
import cv2

# 读取图像
img = cv2.imread('input_image.jpg')

# 应用中值滤波
filtered_img = cv2.medianBlur(img, 5)  # 参数 5 表示滤波器大小

# 显示原始图像和滤波后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Median Filtered Image', filtered_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

http://www.kler.cn/news/136825.html

相关文章:

  • 轻松掌握Win10录屏技巧:四大神器推荐!
  • Python常见问题处理
  • 075_基于springboot的万里学院摄影社团管理系统
  • 免费开源AI助手,颠覆你的数字生活体验
  • Zookeeper面试整理-实践与应用
  • proteus中没有STM32F103C8(已解决)
  • 企业微信将应用安装到工作台
  • LeetCode算法题解(动态规划)|LeetCoed62. 不同路径、LeetCode63. 不同路径 II
  • Go语言读取文件内容
  • 基于饥饿游戏算法优化概率神经网络PNN的分类预测 - 附代码
  • Threejs_08 纹理颜色的调整(颜色空间的设置)
  • 系列一、介绍
  • 【旅游行业】Axure旅游社交平台APP端原型图,攻略门票酒店民宿原型案例
  • 【经验分享】Ubuntu如何设置swap交换
  • 数据结构【DS】队列的应用
  • V8引擎隐藏类(VIP课程)
  • 2023亚太杯数学建模思路 - 案例:感知机原理剖析及实现
  • Web3 分布式存储 IPFS(Web3项目一实战之四)
  • 轻量封装WebGPU渲染系统示例<36>- 广告板(Billboard)(WGSL源码)
  • “伙伴计划·伙伴领航站”春晖团队在蟠龙社区开展青少年书香阅读陪伴活动
  • 动态顺序表
  • 科大讯飞 vue.js 语音听写流式实现 全网首发
  • 程序员有必要考个 985 非全日制研究生嘛?
  • Linux 时区设置
  • 信息系统项目管理师-范围管理论文提纲
  • house of husk