首页 > 其他分享 >【计算机视觉】---高斯滤波

【计算机视觉】---高斯滤波

时间:2023-05-27 18:31:53浏览次数:41  
标签:高斯 卷积 滤波 像素 --- 图像 sigma

简介

高斯滤波是一种常用的图像处理技术,用于平滑图像并减少噪声。在计算机视觉中,高斯滤波通常用于图像预处理,以减少噪声和平滑图像,以便更好地进行后续处理,如边缘检测或目标检测。

1.确定高斯滤波的卷积核大小和标准差:

  • 卷积核大小决定了滤波器的范围。一般而言,卷积核是一个正方形矩阵,大小为N x N,其中N为一个奇数,如3、5、7等。
  • 标准差(sigma)决定了高斯分布的形状。较大的标准差会产生更大的模糊效果。通常情况下,标准差的选择与图像的噪声水平和所需平滑程度相关。

2.生成高斯滤波的卷积核:

  • 根据卷积核大小和标准差,可以使用高斯函数来生成卷积核的权重。
  • 高斯函数的数学表达式为:G(x, y) = (1 / (2 * π * σ^2)) * exp(-(x^2 + y^2) / (2 * σ^2)),其中x和y表示卷积核中每个位置的坐标,σ表示标准差。
  • 根据高斯函数,计算卷积核中每个位置的权重,构成一个二维矩阵。卷积核的中心位置具有最大的权重,周围位置的权重逐渐减小。

3.将生成的卷积核应用于图像:

  • 对于图像中的每个像素,将卷积核与其周围的邻域像素进行卷积操作。
  • 卷积操作可以通过将卷积核与对应像素周围的邻域像素进行逐元素相乘,并将乘积求和得到结果。
  • 卷积核滑动到图像的每个位置,对每个位置进行卷积操作,得到滤波后的像素值。

4.重复步骤3,对图像的所有像素进行卷积操作:

  • 遍历图像的每个像素,并将卷积核应用于其周围的邻域像素。
  • 在图像的边缘像素处,可以选择忽略超出图像范围的邻域像素,或者通过在图像边缘进行填充来处理。

5.输出滤波后的图像:

  • 将卷积操作得到的结果作为滤波后的图像输出。

6.代码实现

  • c++实现
cv::Mat applyGaussianFilter(const cv::Mat& inputImage, int kernelSize, double sigma)
{
    cv::Mat outputImage;
    cv::GaussianBlur(inputImage, outputImage, cv::Size(kernelSize, kernelSize), sigma);
    return outputImage;
}

int main
{
 // 应用高斯滤波
    int kernelSize = 5;  // 卷积核大小
    double sigma = 1.0;  // 标准差
    cv::Mat outputImage = applyGaussianFilter(inputImage, kernelSize, sigma);
}
  • Python实现
def apply_gaussian_filter(image, kernel_size, sigma):
    blurred_image = cv2.GaussianBlur(image, (kernel_size, kernel_size), sigma)
    return blurred_image
    
# 应用高斯滤波
kernel_size = 5  # 卷积核大小
sigma = 1.0      # 标准差
smoothed_image = apply_gaussian_filter(input_image, kernel_size, sigma)

高斯滤波可以有效地平滑图像,消除噪声,并提供更好的图像质量,为后续的计算机视觉任务(如边缘检测、目标检测等)提供更准确的输入。在实际应用中,可以使用图像处理库(如OpenCV、PIL)或计算机视觉库来实现高效的高斯滤波算法。

标签:高斯,卷积,滤波,像素,---,图像,sigma
From: https://blog.51cto.com/u_16104273/6362886

相关文章

  • 读取WINCC归档数据-WPF程序-2
       读取WINCC归档数据-可以读取实时WINCC数据和以往的数据,本文介绍读取实时数据的方法。  读取实际运行PLC的方法要简单些,这里介绍的是仿真读取。  1.运行博图并仿真程序 2.运行WINCC 3.用MicrosoftSQLServerManagementStudio18监视连接  ......
  • 小迪安全7-11集重要知识总结
    1.CDNCDN的全称是ContentDeliveryNetwork,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目......
  • RabbitMQ系列-Exchange介绍
    RabbitMQ系列RabbitMQ系列-概念及安装   1.ExchangeRabbitMQ系列-概念及安装提到AMQP0-9-1协议默认支持四种exchange,分别是DirectExchange,FanoutExchange,TopicExchange,HeadersExchange除了交换类型之外,交换还声明了许多属性Name,交换机名称,唯一的Durability,持久......
  • Oracle Linux 8.8 发布 - Oracle 提供支持 RHEL 兼容发行版
    OracleLinux8.8发布-Oracle提供支持RHEL兼容发行版OracleLinuxwithUnbreakableEnterpriseKernel(UEK)&RedHatcompatiblekernel(RHCK)请访问原文链接:https://sysin.org/blog/oracle-linux-8/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgOracle......
  • Oracle Linux 9.2 发布 - Oracle 提供支持 RHEL 兼容发行版
    OracleLinux9.2发布-Oracle提供支持RHEL兼容发行版OracleLinuxwithUnbreakableEnterpriseKernel(UEK)&RedHatcompatiblekernel(RHCK)请访问原文链接:https://sysin.org/blog/oracle-linux-9/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgOracle......
  • Doris(二) -- 基本概念和数据表模型
    字段类型数据类型字节范围TINYINT1字节-2^7+1~2^7-1SMALLINT2字节-2^15+1~2^15-1INT4字节-2^31+1~2^31-1BIGINT8字节-2^63+1~2^63-1LARGEINT16字节-2^127+1~2^127-1FLOAT4字节支持科学计数法DOUBLE......
  • elasticsearch-7.12.1集群设置账号密码(亲测可用)
    ES7.7以后的版本将安全认证功能免费开放了。并将X-pack插件集成了到了开源的ElasticSearch版本中。1.在集群的“主节点”上生成证书切换到elastsearch的目录下,使用下列命令生成证书bin/elasticsearch-certutilcert-outconfig/elastic-certificates.p12-pass""2.将生成......
  • C语言课程设计[2023-05-27]
    C语言课程设计[2023-05-27]C语言课程设计综合性设计实验说明设计要求:(1)功能完备,实现用户需求(2)用户界面友好易用(3)必须调试通过,能够正常运行(4)驼峰命名、合理注释、模块化程序功能实现等规范化编程(5)保证源程序可读性。对系统常量等数据要求规范处理,对于常用......
  • APP自动化-不同项目之间导包
    新建一个项目,复制原项目需要导包的文件,直接在新项目的项目文件下粘贴,点确定完成复制。在旧项目中的终端输入pip-h,查找项目帮助。可以找到一个freeze的命令,是导出所需依赖安装包并给新项目安装。 终端输入命令 pipfreeze>requirements.txt  可以把文件所需的包导入到一......
  • 题解 P5597【【XR-4】复读】
    一道好题!挺对我脑回路的,于是秒掉了,来写个题解。下文称执行一遍指令的过程为一个周期。例如指令是LRU,那么LRULRULRULRU共执行了四个周期。看到平方的数据范围,不难想到枚举第一个周期的终点。作为一台优秀的复读机,我们知道每个周期在树上发生的相对位移是相同的。例如,如下的一......