从零开始学cv-9:图像滤波

从零开始学cv-9:图像滤波在信息化时代 图像已成为人们获取信息 沟通交流的重要载体

大家好,欢迎来到IT知识分享网。

前言

在信息化时代,图像已成为人们获取信息、沟通交流的重要载体。随着科技的飞速发展,图像处理技术在医疗、安防、航天、教育等领域发挥着越来越重要的作用。然而,在实际应用中,图像往往受到噪声、模糊等质量问题的困扰,这些问题严重影响了图像的视觉效果和后续处理。为此,图像滤波技术应运而生,它旨在改善图像质量,为图像的进一步分析和应用奠定基础。本文将围绕图像滤波这一主题,介绍其基本原理、常见算法及其在实际应用中的重要作用。

一、简介:

二、图像滤波实现:

举例:

 import cv2 import numpy as np path = r"E:\PS\sky2.jpg" img = cv2.resize(cv2.imread(path), (640,480)) kernel = np.array([[0, -1, 0], [-1, 5, -1], # 锐化 [0, -1, 0]]) dst = cv2.filter2D(img, -1, kernel) # 图像卷积 -1代表和输入图一样 cv2.imshow("img",img) cv2.imshow("dst",dst) cv2.waitKey(0) 

2.1 均值滤波:

均值滤波是典型的线性滤波算法,在图像中应用比较多,原理是以该像素点周围的八个像素点取平均操作,然后替代该像素点,均值滤波的特点是算法简单,计算速度快,缺点是去噪声的同时去除了很多细节部分,将图像变得模糊。opencv实现:dst = cv2.blur(src, ksize, dst=None, anchor=None, borderType=None)

特点:

  1. 简单性和高效性:均值滤波器的设计和实现非常简单,只需使用一个固定大小的卷积核,其中所有系数相等,这使得其计算效率较高,适合快速处理图像。
  2. 平滑效果:均值滤波通过对像素邻域内的平均值进行替换,能有效减少图像中的随机噪声,使图像整体看起来更加平滑。

2.2 高斯滤波:

  1. 权重分配:高斯滤波器为邻域内的每个像素分配不同的权重,中心像素权重最大,越远离中心权重越小。
  2. 可分离性:二维高斯函数可以分解为两个一维高斯函数的乘积,这意味着可以先沿着一个方向进行滤波,然后再沿着另一个方向滤波,从而减少计算量。
  3. 减少噪声:高斯滤波能有效减少高斯噪声,即随机分布的噪声。

其opencv函数为dst = cv2.GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

2.3 中值滤波:

  1. 去除椒盐噪声:中值滤波非常有效于去除图像中的椒盐噪声,这是因为噪声像素通常与其邻域内的像素值差异较大,而中值滤波会将这些异常值替换为中值,从而消除噪声。
  2. 边缘保持:与均值滤波不同,中值滤波在平滑图像的同时,能够较好地保持图像的边缘和细节。这是因为中值滤波不依赖于邻域像素的加权平均,而是直接选择中值,这使得边缘像素不会被过度模糊。
  3. 非线性和不变性:中值滤波是一种非线性滤波技术,它对输入信号的变化不敏感,具有一定的鲁棒性。此外,中值滤波不会改变图像的亮度均值,因此对于图像的整体亮度保持不变。

opencv函数为dst = cv2.medianBlur(src, ksize)

代码

# 1.60 彩色图像的直方图匹配 import cv2 import numpy as np path = r"E:\PS\15.png" img = cv2.resize(cv2.imread(path), (256,256)) # 读取图片并压缩 blur = cv2.blur(img,(5, 5)) # 均值滤波 gas = cv2.GaussianBlur(img, (5, 5), 1.5) # 高斯滤波 mid = cv2.medianBlur(img, 5) # 中值滤波 cv2.imshow("ori",img) cv2.imshow("mid",mid) cv2.imshow("blur",blur) cv2.imshow("gas",gas) cv2.waitKey(0) 

效果:在这里插入图片描述

2.4 锐化滤波:

代码:

# 1.60 彩色图像的直方图匹配 import cv2 import numpy as np # 1.78:图像锐化:拉普拉斯算子 (Laplacian) img = cv2.imread(r"E:\PS\shadow1.jpg") # 使用 cv2.Laplacian 实现 Laplace 卷积算子 imgLaplace = cv2.Laplacian(img, -1, ksize=3) #拉普拉斯获取细节 imgRecovery = cv2.add(img, imgLaplace) # 细节和原图叠加 cv2.imshow("lap",imgLaplace) cv2.imshow("imgRecovery",imgRecovery) cv2.waitKey(0) 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/117683.html

(0)
上一篇 2025-11-19 08:33
下一篇 2025-11-19 09:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信