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

提示:云峰

文章目录

  • 前言
  • [一、均值滤波(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()
相关推荐
HPC_fac130520678168 分钟前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
小陈phd3 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
Guofu_Liao4 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama
ZHOU_WUYI8 小时前
3.langchain中的prompt模板 (few shot examples in chat models)
人工智能·langchain·prompt
如若1238 小时前
主要用于图像的颜色提取、替换以及区域修改
人工智能·opencv·计算机视觉
老艾的AI世界8 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲
DK221518 小时前
机器学习系列----关联分析
人工智能·机器学习
Robot2518 小时前
Figure 02迎重大升级!!人形机器人独角兽[Figure AI]商业化加速
人工智能·机器人·微信公众平台
浊酒南街9 小时前
Statsmodels之OLS回归
人工智能·数据挖掘·回归
畅联云平台10 小时前
美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设
人工智能·物联网