高斯平滑 高斯模糊 高斯滤波器 ( Gaussian Smoothing, Gaussian Blur, Gaussian Filter ) C++ 实现

本文介绍了高斯平滑的概念,它是带权平均滤波器的一种,通过高斯模板对图像进行平滑处理。文章展示了1D和2D高斯分布公式,并提供了一个5x5高斯滤波器的C++实现示例,用于从噪声图像中去除噪声,但无法消除椒盐噪声。
摘要由CSDN通过智能技术生成

发展到现在这个平滑算法的时候, 我已经完全不知道如何去命名这篇文章了, 只好罗列出一些关键字来方便搜索了.

在之前我们提到过了均值滤波器, 就是说某像素的颜色, 由以其为中心的九宫格的像素平均值来决定. 在这个基础上又发展成了带权的平均滤波器, 这里的高斯平滑或者说滤波器就是这样一种带权的平均滤波器. 那么这些权重如何分布呢? 我们先来看几个经典的模板例子:

尝试了使用这些滤波器对我们原来的图进行操作, 得到了这样的一组结果:

原图:

raw

3x3 高斯:

3x3

5x5 高斯:

  • 5
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
是的,高斯平滑和中值平滑都可以使用卷积运算对矩阵进行处理。 在使用卷积运算进行图像平滑时,需要先定义一个卷积核。对于高斯平滑,卷积核通常是一个二维的高斯函数,可以使用`cv2.getGaussianKernel()`函数生成。对于中值平滑,卷积核通常是一个正方形的窗口,窗口大小可以根据需要进行调整。 以下是使用numpy库进行高斯平滑和中值平滑的示例代码: ```python import numpy as np # 定义输入矩阵 matrix = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) # 定义高斯卷积核 gaussian_kernel = cv2.getGaussianKernel(3, 1) # 进行高斯平滑 gaussian = cv2.filter2D(matrix, -1, gaussian_kernel) # 定义中值卷积核 median_kernel = np.ones((3, 3)) # 进行中值平滑 median = cv2.medianBlur(matrix, 3) # 显示结果 print('Original matrix:\n', matrix) print('Gaussian smoothing:\n', gaussian) print('Median smoothing:\n', median) ``` 这段代码首先定义了一个输入矩阵,然后分别定义高斯卷积核和中值卷积核。对于高斯卷积核,使用`cv2.getGaussianKernel()`函数生成一个大小为3x3的高斯核。对于中值卷积核,使用`np.ones()`函数生成一个大小为3x3的全1矩阵。然后使用`cv2.filter2D()`函数对输入矩阵进行高斯平滑。最后使用`cv2.medianBlur()`函数对输入矩阵进行中值平滑。可以根据需要调整卷积核的大小和类型来得到不同的平滑结果。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值