第二十八节高斯模糊

news/2024/10/28 12:56:05/

均值模糊 是卷积核的系数完全一致,高斯模糊考虑了中心像素距离的影响,对距离中心的像素使用高斯分布公式生成不同的权重系数给卷积核,然后用此卷积核完成图像卷积得到输出结果就是图像高斯模糊之后的输出。

均值模糊和高斯模糊都是常见的图像模糊技术,它们有以下区别和联系:

原理方面

• 均值模糊:

• 是一种简单的算术平均操作。比如使用一个3×3的滤波器,计算这个滤波器覆盖的9个像素值的总和,然后除以9(像素个数),得到的平均值就是中心像素的新值。它对滤波器覆盖范围内的所有像素一视同仁,同等对待每个像素对中心像素的影响。

• 高斯模糊:

• 基于高斯函数(正态分布函数)来确定每个像素的权重。在滤波器范围内,中心像素的权重最高,离中心像素越远的像素权重越低。例如,在一个3×3的高斯滤波器中,中心像素的权重可能是0.4,相邻像素权重可能是0.2,边缘像素权重可能是0.1。计算中心像素新值时,要将每个像素值乘以其权重后相加。

模糊效果方面

• 均值模糊:

• 会产生比较均匀的模糊效果。因为是简单平均,所以对图像细节的模糊程度比较一致。当滤波器尺寸增大时,模糊效果更明显,但也更容易丢失细节,使图像看起来很“平”。

• 高斯模糊:

• 产生的模糊效果更自然。由于考虑了像素的权重,在模糊的同时能够更好地保留图像的边缘和细节信息。即使使用相对较大的滤波器,边缘部分也不会像均值模糊那样被过度模糊。

应用场景方面

• 均值模糊:

• 常用于对细节要求不高,主要目的是快速降低图像噪声的情况。例如,对一些监控视频进行初步的噪声去除,让画面看起来更平滑一些。

• 高斯模糊:

• 应用更广泛。在图像编辑软件中,常用于制作背景虚化效果,突出主体。比如在人像摄影中,将背景高斯模糊,使人物更加突出;还用于一些需要保留一定细节的图像预处理过程。

GaussianBlur(src, dst, ksize, sigmaX[, sigmaY[, borderType]])。

• src:这是输入图像,即需要进行高斯模糊的原始图像,可以是彩色图像或者灰度图像。

• dst:是输出图像,也就是经过高斯模糊后的图像。如果不指定,函数会自动创建一个合适的输出图像。

• ksize:它代表高斯核的大小。高斯核是一个二维矩阵,大小必须是奇数,例如Size(3,3)或Size(5,5)。这个核会在图像上滑动,按照高斯函数的规则来计算每个像素的新值。

• sigmaX:表示高斯核在X(水平)方向的标准差。标准差决定了高斯函数的形状,进而影响像素权重的分布。较大的标准差会使像素的权重分布更分散,产生更强烈的模糊效果。

• sigmaY(可选):代表高斯核在Y(垂直)方向的标准差。如果这个参数为0,那么它的值会自动被设置为和sigmaX一样,这种情况适用于生成圆形对称的高斯核。

• borderType(可选):用于处理图像边界的像素,因为高斯核可能会超出图像边界。和blur函数中的borderType类似,不同的边界类型有不同的处理方式,比如复制边界像素、反射边界像素等



void QUickdemo::Gaussian_Blur(Mat& image) {
    Mat dst;

Mat dstImage;
GaussianBlur(image, dstImage, Size(0, 0), 15);
imshow("高斯模糊", dstImage);
    // 使用 GaussianBlur 函数对输入图像 image 进行高斯模糊处理,结果存储在 dst 中。
    // Size(5, 5) 表示高斯核的大小为 5×5。
    // 15 是高斯核在水平方向的标准差,垂直方向标准差默认为 0,此时与水平方向标准差相同。
    GaussianBlur(image, dst, Size(5, 5), 15);
    // 在名为 "高斯模糊" 的窗口中显示经过高斯模糊处理后的图像 dst。
    imshow("高斯模糊", dst);
}


http://www.ppmy.cn/news/1542583.html

相关文章

chrome商店下载的插件转crx安装包

获取插件ID 2. 构造下载链接 https://clients2.google.com/service/update2/crx?responseredirect&oswin&archx64&os_archx86_64&nacl_archx86-64∏chromecrx&prodchannel&prodversion77.0.3865.90&acceptformatcrx2,crx3&xid%3D[插件ID]%…

安全运营 -- 监控linux命令history

0x00 背景 最近,有个IT的同事给我提了一个需求,说想监控/root/.ssh/ 文件夹下的文件变动,于是我灵机一动,这个需求只要对执行过的历史命令做审计就可以了。 0x01 实践 我实现这个功能使用 rsyslog 和 firewalld 两个组件。 我的…

MATLAB|怎么存储Simulink运行过程中的变量呢?m语言persistent变量代替C语言Static变量

做实验时,例如使用ARM或者DSP实现控制,时常会定义全局变量,来存储需要的值,以保存某一状态。 做MATLAB/Simulink仿真时,想要实现上述功能则不容易实现(可以,但不容易)。往往这样的需求只需要通过局部静态变…

【STM32 Blue Pill编程实例】-I2C主从机通信(中断、DMA)

I2C主从机通信(中断、DMA) 文章目录 I2C主从机通信(中断、DMA)1、STM32的I2C介绍2、I2C模式3、STM32 I2C 数据包错误检查4、STM32 I2C 错误情况5、STM32 I2C中断6、STM32 I2C 主发送和接收(Tx 和 RX)6.1 I2C 轮询模式6.2 I2C 中断模式6.3 I2C DMA 模式6.4 STM32 I2C 设备…

GO语言的数据结构

Go语言(Golang)具有丰富的内建数据类型和一些基本的数据结构。以下是一些常见的数据结构: 1、基本数据类型: 整数类型:int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64 浮点数类型&#xff1…

【GO实战课】第七讲:电子商务网站(7):性能优化和测试

1. 简介 本课程将探讨电子商务网站的性能优化和测试,以及使用GO语言实现。在本课程中,我们将介绍如何设计一个高性能、可扩展和可靠的电子商务网站,并演示如何使用GO语言编写相关代码。 本课程的目标是帮助学生理解电子商务网站的性能优化和测试原则,并提供一个实际的项目…

fastboot解锁操作

有时候会遇到这样的场景:设备需要解锁才能remount 操作如下: adb reboot bootloader 进入fastboot fastboot device 查看是否有fastboot设备 fastboot flashing unlock 解锁 fastboot reboot 重启生效 然后就能正常的root和remount&#xff1…

2024年,Rust开发语言,现在怎么样了?

Rust开发语言有着一些其他语言明显的优势,但也充满着争议,难上手、学习陡峭等。 Rust 是由 Mozilla 主导开发的通用、编译型编程语言,2010年首次公开。 在 Stack Overflow 的年度开发者调查报告中,Rust 连续多年被评为“最受喜爱…