Gaussian Smoothing(高斯平滑)

高斯平滑操作是一个二维卷积操作,用于**“模糊”**图像,去除细节和噪音。它类似于均值滤波器(假如3X3,则全部相加取均值,即成为中间点的像素值),但它使用不同的核表示高斯驼峰的形状。

  • 二维高斯公式
    在这里插入图片描述
  • 平均值(0,0) 和σ=1
    在这里插入图片描述
    高斯平滑的思想就是使用2维分布作为点扩展函数,可以通过卷积实现。因为图像存储为离散像素的集合,因此,在执行卷积之前,需要把高斯函数进行离散近似。理论上,高斯分布在任何地方都是非零的,这需要无限大的卷积核,实际中,0值比平均的三个标准差更为有效,所以在这一点上我们可以缩短内核。
    下图为一个整数值卷积核,近似于σ=1时的高斯分布。
    在这里插入图片描述
    一旦计算出合适的核,高斯平滑可以利用标准的卷积方法实现。事实上,卷积可以快速的实现,2维同向高斯公式如上面显示,可以分为x和y方向上的分量。2维卷积可以首先通过x方向上求卷积,然后在y方向上求卷积执行得到。(事实上,高斯平滑就是完整的园对称操作按同样的方式进行分解。)图4示出了一维x分量内核,图可以生成如图3所示的完整的内核
是的,高斯平滑和中值平滑都可以使用卷积运算对矩阵进行处理。 在使用卷积运算进行图像平滑时,需要先定义一个卷积核。对于高斯平滑,卷积核通常是一个二维的高斯函数,可以使用`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()`函数对输入矩阵进行中值平滑。可以根据需要调整卷积核的大小和类型来得到不同的平滑结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值