You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于高斯核卷积与高斯模糊结果差异的技术疑问

关于高斯核卷积与高斯模糊结果差异的技术疑问

我在寻找生成空间变化噪声的方法时,找到了一个能实现需求的方案,但对其中代码的工作原理有点困惑。

根据我的理解,代码第一步是生成高斯核:

import numpy as np
import scipy.signal
import matplotlib.pyplot as plt

# Compute filter kernel with radius correlation_scale (can probably be a bit smaller)
correlation_scale = 150
x = np.arange(-correlation_scale, correlation_scale)
y = np.arange(-correlation_scale, correlation_scale)
X, Y = np.meshgrid(x, y)
print(X.shape,Y.shape)
dist = np.sqrt(X*X + Y*Y)
filter_kernel = np.exp(-dist**2/(2*correlation_scale))

这个核可视化后呈现出中心明亮、向外逐渐变暗的圆形渐变效果。

第二步是生成随机噪声网格:

n = 512
noise = np.random.randn(n, n)

这个噪声图是布满随机明暗斑点的网格,没有明显规律。

第三步是将第二步生成的随机噪声与第一步的滤波器进行卷积:

noise1 = scipy.signal.fftconvolve(noise, filter_kernel, mode='same')

这一步的输出呈现出大尺度的平滑明暗区域变化,看起来像是缓慢起伏的“云状”图案。

我的疑问是:为什么第三步的输出会是这个样子,而不是随机噪声的平滑版本?卷积高斯核不就相当于高斯模糊吗?比如,如果我用高斯滤波器处理生成的随机噪声:

from scipy.ndimage import gaussian_filter
noise  = gaussian_filter(noise , sigma=1, radius=10)

得到的结果是模糊后的细密斑点,和第三步的“云状”图案差异很大。

为什么这两张结果图会如此不同?

备注:内容来源于stack exchange,提问作者MollieVX

火山引擎 最新活动