十七、计算机视觉-图像平滑处理

提示:云峰

文章目录

  • 前言
  • [一、均值滤波(Mean Filtering)](#一、均值滤波(Mean Filtering))
  • [二、高斯滤波器(Gaussian Filter):](#二、高斯滤波器(Gaussian Filter):)
  • [三、中值滤波器(Median Filter)](#三、中值滤波器(Median Filter))

前言

在本节中,我们将探讨图像处理中的平滑处理技术。与之前介绍的膨胀、腐蚀以及其他几种算子一样,平滑处理同样是通过卷积核的运算实现的。如果在之前的课程中已经理解了卷积核的概念,以及他的原理,那么本课就会变得简单许多。我们已经学习了如何使用卷积核对图像进行膨胀、腐蚀等操作,这些操作都是通过将卷积核与图像进行某种运算来实现的。接下来,我们将探讨如何利用不同的卷积核和运算方式来实现平滑处理,从而改善图像质量并减少噪声的影响。常见的滤波有 ,均值滤波、方框滤波 高斯滤波等。用过photoshop的可能就感觉熟悉了,这不是ps滤镜中的模糊吗?是的,你可以吧平滑当成ps中的模糊操作。他们底层实现方式应该都是一样的。


提示:以下是本篇文章正文内容,下面案例可供参考

一、均值滤波(Mean Filtering)

1、均值滤波(Mean Filtering)

将像素点周围的像素值取平均值,从而减少噪声的影响。

我们看下图

图像平滑处理和之前课程讲的其他操作原理差不多,通过卷积操作将图像中每个像素点周围的像素值进行加权平均,从而减少图像中的噪声并平滑图像。

比如上面的红框是一个3x3的卷积核覆盖的图像的9个像素点。卷积核本身内容都是1,代表他的权重都是1,所以计算均值滤波的计算方式就是(20+10+189+251+12+89+151+231+221)/9=130

通过计算 上图卷积核中心位置的12的最新值就是130.

比如一张图片上有很多噪声点。我们上图其中卷积核中心的12 颜色明显和周围有很大的差距,可能就是一个噪声点,通过我们的平滑操作,中间的点就和其他点颜色比较接近了,这样这个噪声点就看不到了。

但是均值滤波卷积核的每个元素都是相同的权重,因此它会将每个像素点周围的像素值取平均。这意味着,图像中每个像素的值都会受到周围像素值的影响,从而导致图像中的高频信息(例如边缘、细节等)被平滑掉,使得图像变得模糊。

均值滤波的方法是blur,是模糊的意思,所以也可以说是一种模糊的操作。

我们看下 代码怎么实现:

python 复制代码
# 定义卷积核大小
kernel_size = (3, 3)

# 使用OpenCV的均值滤波函数进行滤波
output_image = cv2.blur(input_image, kernel_size)

# 显示原始图像和经过均值滤波后的图像
cv2.imshow('Input Image', input_image)
cv2.imshow('Output Image (Average Filter)', output_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

我们看下 上图第一张是原图 上面有很多椒盐噪点,通过操作 是不是噪点就不太明显了。

二、高斯滤波器(Gaussian Filter):

使用高斯函数来计算像素周围邻域的权重,然后将权重化为卷积核。

高斯函数是一种数学函数,它描述了自然界中许多现象的分布情况。简单来说,高斯函数可以让我们知道某些东西的值在均值附近是最常见的,而离均值越远,出现的概率就越低。

我们想一下上面说的均值滤波,最终值是9个像素点的平均值。这样是不是有个问题。比如下图中心点12 距离89、251、10、231最近,正常情况中心点的的新值应该更接近这4个点的颜色才对,但是均值滤波不管这些 把周围全部的点都平等加进来计算了。

而高斯滤波的卷积核中的数值是由高斯函数计算得到的,他有一个合理的权重,离中心点越近他的权重越高。我们看下高斯函数,如下图

卷积核的中心点对应着高斯函数的峰值,即具有最大的权重。从卷积核的中心向外部扩展,权重逐渐减小。钟形曲线中心代表着中心点 具有最高的权重,随着距离越远,他的权重逐渐下降。这就是高斯滤波的卷积核的计算方式。

高斯滤波的实现

python 复制代码
# 高斯滤波
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)

# 显示原始图像和滤波后的图像
cv2.imshow("Original Image", image)
cv2.imshow("Blurred Image", blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、中值滤波器(Median Filter)

在图像中的某个区域内,大多数像素都是由同一种类型的物体或背景所组成的,因此该区域内的像素值应该是相似的。而噪声通常以异常值的形式出现在图像中,例如椒盐噪声(salt-and-pepper noise)会使部分像素的值变为最大或最小值。

所以中值滤波的操作方式是 一个卷积核在图像上滑动,把卷积核内的所有像素值按照大小进行排序,找到其中间位置的像素值,即中值。当前像素的值就是中值。还是刚才的图 我们看一下

上图卷积核中心的12 的新值 应该是这些值中间的一个值 也就是151. 这样做的效果是,噪声点的像素值不再对图像产生影响,而且在相邻像素值相似的区域中,中值滤波器可以有效地保留图像的边缘信息。

在图像中,如果存在一片区域内的像素值非常相似,即使这些像素值不是由噪声引起的,中值滤波器也会对这些区域进行平滑处理。这是因为中值滤波器会在滑动窗口中对所有像素值进行排序,并将窗口中间位置的像素值替换为中值,这样做会导致在相邻像素值相似的区域中,中值滤波器也会对图像进行平滑处理。

然而,与其他平滑滤波器(如高斯滤波器)不同的是,中值滤波器在保留图像边缘信息方面表现更好。这是因为中值滤波器只是简单地取中间位置的像素值,而不像其他滤波器那样对像素值进行加权平均,因此它在处理图像边缘时不会引入过多的模糊效果,能够更好地保留图像的边缘信息。

我们看下实现代码和效果

python 复制代码
# 中值滤波
blurred_image = cv2.medianBlur(image, 5)  # 5 是滤波器的核大小

# 显示原始图像和滤波后的图像
cv2.imshow("Original Image", image)
cv2.imshow("Blurred Image", blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
AI军哥15 分钟前
MySQL8的安装方法
人工智能·mysql·yolo·机器学习·deepseek
余弦的倒数29 分钟前
知识蒸馏和迁移学习的区别
人工智能·机器学习·迁移学习
Allen Bright29 分钟前
【机器学习-线性回归-2】理解线性回归中的连续值与离散值
人工智能·机器学习·线性回归
青松@FasterAI1 小时前
【程序员 NLP 入门】词嵌入 - 上下文中的窗口大小是什么意思? (★小白必会版★)
人工智能·自然语言处理
AIGC大时代1 小时前
高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
数据库·人工智能·算法·aigc·智能写作·deepseek
硅谷秋水1 小时前
GAIA-2:用于自动驾驶的可控多视图生成世界模型
人工智能·机器学习·自动驾驶
偶尔微微一笑2 小时前
AI网络渗透kali应用(gptshell)
linux·人工智能·python·自然语言处理·编辑器
深度之眼2 小时前
2025时间序列都有哪些创新点可做——总结篇
人工智能·深度学习·机器学习·时间序列
晓数2 小时前
【硬核干货】JetBrains AI Assistant 干货笔记
人工智能·笔记·jetbrains·ai assistant
jndingxin2 小时前
OpenCV 图形API(60)颜色空间转换-----将图像从 YUV 色彩空间转换为 RGB 色彩空间函数YUV2RGB()
人工智能·opencv·计算机视觉